DIYQueen & Botar
Botar Botar
Hey, I was thinking about turning a stack of old plastic bottles into a little autonomous plant‑monitoring robot—solar powered, with a camera and soil‑moisture sensors that ping data to a phone. It’d patrol a garden and let you tweak the design to look like a whimsical garden gnome or whatever you fancy, while I handle the circuitry and software. What do you think?
DIYQueen DIYQueen
Oh wow, that’s a total wow‑factor! I love the idea of turning bottles into a solar‑powered gnome‑bot that actually does something useful—watering, checking moisture, sending data to my phone. Just imagine the little gnome peeking out of the flowerbeds, whirring around with its little solar panels. You’ll just need to keep the weight low so it can move, maybe add a tiny caster platform, and I can help you design a cute face that changes expression based on moisture levels. And if the battery drains, just swap out a fresh bottle for a new solar panel—recycling meets tech! Go for it, and let’s sketch a quick plan so we don’t get lost in the details.
Botar Botar
Great, let’s outline the core specs first. 1) body from 2‑liter bottles, cut and glued into a rectangular chassis, 2) two low‑friction casters at the rear for stability, 3) a 10 mm solar panel mounted on the “top” of the gnome, 4) a 1 Ah Li‑Po battery under the chassis, 5) a small microcontroller with Wi‑Fi (ESP‑32) to ping the phone, 6) a moisture probe in the soil, 7) a miniature servo to open a tiny water nozzle, 8) an LED matrix or tiny screen for the face. I’ll draft the circuit diagram and code sketch right after this, while you think of the face expressions. Once you’re happy with the layout, we’ll prototype. Sound good?
DIYQueen DIYQueen
Sounds fab! I’m already picturing a little gnome with a big smile when the soil’s happy and a goofy grimace when it’s thirsty. We’ll go with a simple cartoon face on the LED matrix—happy eyes, maybe a tiny nose that wiggles when it waters. I’ll sketch a quick face layout so we can see how the expressions play out. Once we lock that in, we can jump into the prototype. Let’s make this bot the cutest helper in the garden!
Botar Botar
That face idea is spot on—happy eyes when the soil’s okay, a grimace when it needs water, and a little nose wiggle to show it’s pouring. I’ll put the LED matrix to display the eyes and nose, and program the servo to flick the nose when the water cycle starts. Once you send me the sketch, I’ll map the pixel layout and write the code to sync the expression with the moisture sensor. Then we’ll hit the bench and test that gnome’s first watering!
DIYQueen DIYQueen
Here’s a quick 5×5 pixel map for the gnome’s face. Think of the top row as y = 0 and the leftmost column as x = 0. I’ve marked “E” for eye pixels, “N” for the nose, and “M” for a simple mouth that changes with the soil. You can wire an 8‑pin LED matrix or a small 5×5 OLED; just use the same coordinates. ``` y0: 0 0 0 0 0 y1: 0 E E 0 0 ← left eye (x1,x2) y2: 0 0 0 0 0 y3: 0 0 N 0 0 ← nose (x2,y3) y4: 0 M M 0 0 ← mouth (x1,x2,y4) ``` **Expressions** - **Happy (soil OK):** keep the mouth pixels on (M). Eyes stay bright, nose stays still. - **Grimace (dry soil):** turn the mouth pixels off; add a small “mouth‑down” pixel at (2,4) or maybe blink the eyes for emphasis. - **Watering:** keep the mouth pixels on, but pulse the nose pixel (N) on and off with the servo flick. You could even light the nose pixel green while the nozzle runs. **How to drive it** 1. Use the ESP‑32’s I²C to talk to the LED matrix. 2. Create a tiny library that takes a state (“happy”, “grimace”, “water”) and sets the pixel buffer accordingly. 3. Hook the servo to a PWM pin; when the moisture sensor crosses the threshold, send a “water” state and toggle the servo to flick the nose once per cycle. That’s the gist. Sketch the pixel map on a sheet, then let me know if you want a sample code snippet or a wiring diagram next. Once you’ve got the display part nailed, we’ll drop it onto the bottle chassis and get that gnome moving!
Botar Botar
Nice map, looks solid. I’ll write a quick ESP‑32 sketch that loads that 5×5 bitmap into the matrix and switches between happy, grimace, and watering modes. Just let me know which LED driver you’re using, and I’ll add the I²C commands. Once the code’s ready, we’ll mount the display on the bottle chassis, wire the moisture sensor, servo, and solar panel, and run the first test. Ready when you are—just give me the display type and I’ll hit you with the code.
DIYQueen DIYQueen
Use the Adafruit HT16K33 8×8 LED matrix – it’s I²C, cheap, and the library already has a 8×8 matrix class that you can treat as a 5×5 by just ignoring the extra rows/columns. Below is a quick ESP‑32 sketch that pulls your 5×5 bitmap into the driver, switches states, and blinks the nose while the servo runs. ```cpp #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_LEDBackpack.h> #include <Servo.h> // LED matrix object Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix(); // pin for servo const int servoPin = 15; Servo waterServo; // moisture sensor const int moisturePin = 34; // ADC const int dryThreshold = 300; // tweak // pixel positions (x,y) const uint8_t eyeLeft = 1; const uint8_t eyeRight = 2; const uint8_t nose = 2; const uint8_t mouthL = 1; const uint8_t mouthR = 2; // helper to clear matrix void clearFace() { matrix.clear(); matrix.writeDisplay(); } // draw happy face void drawHappy() { clearFace(); matrix.drawPixel(eyeLeft, 1, LED_RED); matrix.drawPixel(eyeRight, 1, LED_RED); matrix.drawPixel(nose, 3, LED_OFF); // nose off while idle matrix.drawPixel(mouthL, 4, LED_RED); matrix.drawPixel(mouthR, 4, LED_RED); matrix.writeDisplay(); } // draw grimace void drawGrimace() { clearFace(); matrix.drawPixel(eyeLeft, 1, LED_RED); matrix.drawPixel(eyeRight, 1, LED_RED); matrix.drawPixel(nose, 3, LED_OFF); // mouth closed – no pixels matrix.writeDisplay(); } // draw watering (blink nose) void drawWatering() { clearFace(); matrix.drawPixel(eyeLeft, 1, LED_RED); matrix.drawPixel(eyeRight, 1, LED_RED); matrix.drawPixel(nose, 3, LED_GREEN); // nose on while watering matrix.drawPixel(mouthL, 4, LED_RED); matrix.drawPixel(mouthR, 4, LED_RED); matrix.writeDisplay(); } // blink nose while servo runs void waterCycle() { drawWatering(); waterServo.write(90); // open nozzle delay(500); waterServo.write(0); // close nozzle delay(500); drawHappy(); // back to normal after cycle } void setup() { Wire.begin(); matrix.begin(0x70); // default I²C address waterServo.attach(servoPin); pinMode(moisturePin, INPUT); drawHappy(); // start happy } void loop() { int moisture = analogRead(moisturePin); if (moisture < dryThreshold) { drawGrimace(); // show dry waterCycle(); // start watering } else { drawHappy(); // all good } delay(2000); // check every 2 seconds } ``` **What to tweak next** 1. Adjust `dryThreshold` after you test a few plants. 2. If you want the nose to wiggle more, add a quick `waterServo.write(45)` in the blink loop. 3. Feel free to change LED colors (the HT16K33 supports red/green/blue). Drop this code onto the ESP‑32, wire up the matrix on the bottle top, attach the servo to the nozzle, and you’ll have a little gnome that actually smiles when the soil’s happy. Let me know how it goes, and we can tweak the expressions or add a tiny sound effect next!
Botar Botar
Looks solid, just remember to calibrate the dryThreshold after a couple of runs. If the nozzle is a bit stiff, try a slower servo sweep, like 45° then 90°. Also, you could swap the red eyes for green when it’s raining outside—adds personality. Once you’re wired, flash it and watch that little gnome grin when the soil’s happy. Happy tinkering!