Light and Water Reactive Raincoat Using Arduino


This semester at college, I am in a class called Computing and Craft which is about incorporating circuitry and micro-controllers and craft to bring our projects to the next level.


For our first big project, I decided to make a raincoat the reacted to light and water.  Being from California and going to school in Massachusetts has been a big transition and the sudden downpours can catch you unaware.  This raincoat has built in light and water sensors so when it gets dark the raincoat lights up so the wearer will be visible in the dark, and when it gets wet, a warning beep sounds so the wearer can head for cover.

Step 1: Raincoat


For the coat itself, I used a very cheap plastic one that my professor had around.  I reinforced all the seams on the sewing machine because they had all just been melted together and were coming apart.  The coat also had pockets which was convenient for storing the arduino.

Step 2: Circuitry

For the circuitry, I tried everything on a solderless breadboard even though everything did end up being soft circuits.  8 LEDs (4 on each sleeve) are attached by poking the leads through the plastic, winding the leads around needle-nose pliers, and then stitching them together using conductive thread.  I didn’t realize just how resistive the thread was and in the future I would recommend wiring in series, not parallel as I did.
The circuits I used were based on the digram below which I got from this board.  For my water sensor I ended up using a 1M resistor instead of 10k.
For the light sensor, I based my circuit off of this SparkFun inventor’s guide for the light sensor on page 24.

Step 3: Code

I wrote two programs, one to control the light sensor and LEDs and one to control the water sensor and speaker.  I based to code off the tutorials found here for the light sensor and speaker tutorials.

Light Sensor Code:
int LEDPin = 13;

int CDSPin = 0;

void setup(){
pinMode(LEDPin, OUTPUT);

void loop(){
int lightLevel;
lightLevel = analogRead(CDSPin);
if (lightLevel < 300)
digitalWrite (LEDPin, HIGH);
else if (lightLevel > 300)
{digitalWrite (LEDPin, LOW);

Read more: Light and Water Reactive Raincoat

Leave a Comment

Your email address will not be published. Required fields are marked *