Introduction: Automato, the Echo Flower
Automato, the Echo Flower is a cyborg plant that loves darkness and sleeps in the day. It gets quite angry when you try to wake it up and chirps through a buzzer affected by 3 light senors controlling different sound elements; frequency & pitch, duration of the tone, and the pauses. It will fade its lights according to the amount of light it reads, but its favourite is full on shine!!
What you need to make your own Cyborg Darkness Loving Plant!
- Arduino Uno
- breadboard
- USB cable
- 3 LED Photodiods
- 3 1M Ω resistors
- 3 LED lights (or more) - we used 2 greens and 1 white
- 3 220 Ω resistors
- 1 passive or piezo buzzer
- a ton of wires
- regular male-to-male jumper wires
- 2 male-to-female connection for the buzzer
- 2m of solid white wire
- 2m of stranded green wire (we recommend solid if you can find it)
- heat-shrink tube
- soldering iron
- DIY soldering station/set-up
- transparent plastic (leaves and planter pot)
- 2mm chipboard
- paper with perforated holes
Step 1: Circuit
We provide the Eagle source files for the schematic and the board above. The files also include PDF renderings of the board and schematic for quick reference.
Solder the RGB sensor, resistors, and pin headers to the board as indicated.
Step 2: Code
The code is pretty straightforward.
To control the buzzer it uses the pitches library and the tone function. Values of the separate elements are read by the different sensors. So pitch is read by sensor attached to A01, duration to sensor attached to A02, and the delay value between the tones by the thirst LED photo-diode attached to A03.
//define the voltage value of photo diode in digital pin 0
int val2 = 0; //led photodiode 1 - control pitch / frequency/ note
int val3 = 0; //led photodiode 2 - control duration int val4 = 0; //led photodiode 3 - control delay
In the void loop, we map the values getting read from the sensors to the target values of each variable.
//BUZZER
int pitch = map(val2,0,1023,40,4000);
int duration = map(val3, 0,1023, 2000,5);
int delayVal = map(val4, 0,1023,300,1);
tone(buzzPin, pitch, duration);
delay(5);
noTone (buzzPin);
delay(delayVal);
In order to not get messed up results, we realized that the sensors needed to be read twice with a delay in between, otherwise the readings of the sensors would get mixed up and the controls would not be separate.
val2 = analogRead(1);
delay(5);
val2 = analogRead(1);
val3 = analogRead(2);
delay(5);
val3 = analogRead(2);
val4 = analogRead(3);
delay(5);
val4 = analogRead(3);
LED's are written as a class, so that you can decide the pin and which sensor should influence each LED separately, and to avoid the copy paste. We are using 3 LED's in our code, but with this set-up you could create more LED's.
//LedLight(int pin, int analogPin)
//fading LED's
LedLight led1(6,2);
LedLight led2(5,2);
LedLight led3(10,1);
Attachments
Step 3: Test Your Code Frequently!
When changing the code, or working step by step, don't forget to keep testing the code and the sensitivity of the sensors to different resistors etc. Check LED's, the buzzer and all sensors first separately. The results will also be different during the day vs. during the night and will change between the LED photo-diodes attached directly to the breadboard and the one soldered into the leaves.
Step 4: Start Model. Create Base
Measure the necessary volume for your arduino and breadboard to create a base for the plant. Hide circuits in the box, and extend the sensors, LEDs, and buzzer to create the top of the plant.
Box sides out of 2mm chipboard, perforated paper top piece (removable). Remember to cut a whole on one of the sides to match your usb cable to arduino.
Step 5: Soldering
You will have to do a fair bit of repetitive soldering here to make your photodiodes and LEDs long enough to make the stem and branches of your plant.
You can create a soldering setup (or purchase a standard one) to hold your wires in place. For our plant, we soldered the jumper wire to the photodiode or LED, then we soldered that cable to a base pin.
Make sure that when you attach the two wires to be connected together, create a good twist to bind the two together before soldering.
Tip: We chose not to cover all of our connections with shrink tube because we wanted to have nice details at the top of our plant, but for the bottom areas inside the box (think roots inside ground) we covered the soldered areas with shrink tube. It helps to keep the connections more intact especially due to the overcrowding on our breadboard.
Step 6: Create Planter and Leaves.
Cut out the planter and leaves out of transparent plastic. Small cutouts give curvature to the leaves.
Staple the planter and put through the wires. You might have to poke the holes a bit to make them larger. Then carefully staple the leaves so you do not damage the sensor connections.
Step 7: Automato
Enjoy your cyborg plant!
Step 8: Hot Tip!
We recommend not trying to solder and create your own color sensor the first time you are trying to make something.
The Kingbright KPS-5130PD7C color sensor we got is extremely small, get a few when you are buying because you will ruin them as you go while trying to make them. Without the proper equipment (smaller solder) you will lose one of the connections and break it of during soldering. If you need a color sensor we recommend getting the Adafruit TCS34725 RGB color sensor _ there are plenty of resources and codes available online for setting it up!