Portable Plant Home
Making a light system for a plant home that can be portable. Great for basil and other plants used in the kitchen. The next addition will have a water pump that is dependent on the soil moisture level. Have made the pump and code, just working on creating more power and suction for the pump to get water from a water bottle. This information can be sound on another site which is linked at the bottom.
Supplies
- $7.95 - 5v DC motor
- 1/8'' plywood- from FabLab- can get at a Home Depot (enough to make a 6.5in X 5in X 9in box)
- 0.20mm PLA for 3D printer- FabLab
- 1 D1 Mini WeMos Board- FabLab, amazon link
- many wires- FabLab
-1 Arduino Uno Board and kit with wires, transistors...
- FabLab, amazon link
-1 bottle of wood glue- FabLab, amazon link
-1 breadboard- FabLab, amazon link
-2 output pins (8 pins)- FabLab
First
Gather all the materials listed above- order online if do not have (other useful tools are wire cutter, wire strippers, hdmi cable
Download Fusion 360, Inkscape, CorelDraw, and Prusa on your computer and blynk on your iPhone.
Making the NeoPixel Design in Fusion
Links To 3D prints:
First make the prints for the NeoPixel and waterpump. You can download my files which are above for both or make your own with these instructions below.
NeoPixel Light Holder 3D print: (my dimensions for the print are based off prefrence of height and the width of the NeoPixel which was 37 mm wide- dimensions and design can be seen above)
1. Use Fusion 360 and make sure you units are in mm.
2. Go to create, sketch, and then circle and click the center of the bottom plane and create a big circle that's diameter is 56 mm and then finish the sketch. Click create again and hit extrude the circle 32 mm.
3. Create a smaller sketch on the center on the same bottom plane that's diameter is 26 mm wide and extrude it to the top of the big circle and make the opperation in the extrude settings cut. Construct a plane 6 mm above the x-axis through construct and offset plane. Create another sketch of another centered circle that's diameter is 37 mm and extrude all the way through the top of the orginal big cylinder. Construct another plane that is 10 mm above the bottom x-axis and create again a centered circle that's diameter is 46mm wide and extrude it to the top. Finally create the last plane to be 30 mm from the bottom x-axis and create a circle that's diameter is 50 mm wide. Extrude it to the top of the cylinder.
4. Use the steps from section "What tools did you use?" to convert and print the file on the 3D printers.
3D printer machine guide:
First convert your Fusion360 design to a STL file and download to your computer. Upload this file into the shared Google Drive engineering folder. On the computer connected to the 3D printer, donwload the STL file from google drive. Then uploaded it into Prusa (which is an app downloaded on the computer) through clicking file, important, then select important STL/OBJ. In Prusa, convert the STL file into to Gcode through clicking slice, and then export the Gcode to downloads of the computer. Remeber the name of this file. Turn on the 3D printer and click on the printer you have connected to from this link which has all the printers in FabLab on the document. Connect the printer on OctoPrint (site where printers are) and the upload the file on to the site. Check to make sure you have the correct printer and a printer not in use by looking at the camera on the site which is connected on the printer. Next change the tool target temperature to 220º and the bed target tempature to 60º. After both have reached the target tempature, click print and wait.
Code for NeoPixel
Next start working on the wemos board and the neopixel
1. Get a D1 Mini WeMos Board, two sets of 8 pins, and a Flora RGB NeoPixel
2. Solder the two pins to the WeMos board and plug the board into a breadboard. Cut a red, black, and blue wire with wirecutters and strip the edges. Connect the on the ground on the NeoPixel to the G on the wemos board, the power from the NeoPixel to the 5v on the Wemos, and the Input on Neo to the D6 pin on the wemos.
3. Download blynk on your phone and plug in the Mini WeMos Board to your computer. On blynk, add the new device of wemos board when you sign in and create a new project and name the project, choose the device WeMos D1 mini, and have the connection type WiFi.
4. Open up Ardunio and download a new board manager. This is the link. In ardunio, create a new project and paste in the code from below called "Multi NeoPixel changing colors". Change the wifi and password and plug in your own information (char ssid[] = "__"; char pass[] = "__") and plug in your own auth token which will be sent to your email when you create add a new device (char auth[] = "__"). Make sure your WeMos board connects to your phone (the Project "should be online")
5. On Blynk, add 3 sliders and make the output V1, V2, and V3 and the range from 0 to 255. For V1 name it red, for v2 name it Blue, and for V3 name it white. Hit play!
6. After this works, unplug the board and solder the wemos board to a protoboard. Solder two smaller wires as well running from the ground strip on the side to the ground on the WemosBoard and do the same with the power. Strip a USB cable and solder the ground and power to the ground and power strip on the protoboard. Keep the other wiring from the wemos board and neopixel the same. Plug in the USB to power up the board.
CODE:
Multi NeoPixel changing colors:
#define BLYNK_PRINT Serial #include #include #include // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "9hF4pCV9--PSDlgqJD6O4w3w8X8v0QuC"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "ClsDevices"; char pass[] = "CL$-I0tD3v!c3$"; //char ssid[] = "Hunter"; //char pass[] = "tommy3817"; #define PIN D6 #define NUMPIXELS 12 Adafruit_NeoPixel strip = Adafruit_NeoPixel(30, PIN, NEO_GRB + NEO_KHZ800); uint32_t Wheel(byte WheelPos) { if (WheelPos == 0) { WheelPos == 0; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 50) { WheelPos = 2; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 75) { WheelPos = 4; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 100) { WheelPos = 6; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 125) { WheelPos = 8; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 150) { WheelPos = 10; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 175) { WheelPos = 15; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 200) { WheelPos == 17; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 220) { WheelPos == 20; return strip.Color(255, WheelPos, WheelPos); } else if (WheelPos < 250) { WheelPos == 45; return strip.Color(255, WheelPos, WheelPos); } else { strip.clear(); }} uint32_t Wheel2(byte WheelPos2) { if (WheelPos2 == 0) { WheelPos2 == 0; return strip.Color(WheelPos2, WheelPos2, 255); } else if (WheelPos2 < 50) { WheelPos2 = 5; return strip.Color(WheelPos2, WheelPos2, 255); } else if (WheelPos2 < 90) { WheelPos2 = 20; return strip.Color(WheelPos2, WheelPos2, 240); } else if (WheelPos2 < 130) { WheelPos2 = 40; return strip.Color(WheelPos2, WheelPos2, 240); } else if (WheelPos2 < 170) { WheelPos2 = 50; return strip.Color(WheelPos2, WheelPos2, 220); } else if (WheelPos2 < 210) { WheelPos2 = 62; return strip.Color(WheelPos2, WheelPos2, 235); } else if (WheelPos2 < 230) { WheelPos2 = 95; return strip.Color(WheelPos2, WheelPos2, 242); } else if (WheelPos2 < 250) { WheelPos2 = 118; return strip.Color(WheelPos2, WheelPos2, 255); } else { strip.clear(); }} uint32_t Wheel3(byte WheelPos3) { if (WheelPos3 == 0) { WheelPos3 == 255; return strip.Color(255, 255, 255); } else if (WheelPos3 < 80) { WheelPos3 = 250; return strip.Color(255, WheelPos3, WheelPos3); } else if (WheelPos3 < 150) { WheelPos3 = 245; return strip.Color(WheelPos3, WheelPos3, 255); } else if (WheelPos3 < 250) { WheelPos3 = 242; return strip.Color(WheelPos3, 243 , 244); } else { strip.clear(); }} BLYNK_WRITE(V1) { int shift = param.asInt(); for (int i = 0; i < strip.numPixels() ; i+=2) { strip.setPixelColor(i, Wheel(shift & 255));} strip.setPixelColor(11, Wheel(shift & 255)); strip.show(); } BLYNK_WRITE(V2) { int shift = param.asInt(); for (int i = 3; i < 11; i+=2) { strip.setPixelColor(i, Wheel2(shift & 255)); } strip.show(); } BLYNK_WRITE(V3) { int shift = param.asInt(); for (int i = 1; i < 2; i+=1) { strip.setPixelColor(i, Wheel3(shift & 255)); } strip.show(); } void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); strip.begin(); strip.show(); } void loop() { Blynk.run(); }
Creating the Tabbed Box
Next work on the box.
1. Download inkscape and create a new rectangle 6in x 5in and add three .5in x .25in boxes to both of the short sides and four .5in x .25in boxes to the long side. Go to path and union the whole object together. Create two copies of this side and for one add a hole with a diameter of 2.5in.
2. Create a 9in by 5in box and create tabs in the bottom by lining up the rectangle just created and slecting diffrence when all lined up. Do this to two and bottom of the short side. Add 6 .5in x .25in boxes to one long side. Then place 3 .125in x .5in boxes on the 3/4 mark of the height and create a hole at each spot. Create a copy of this side.
3. Create another box 9x6.5in. Use the smaller boxes to create 4 tabs on the bottom and top side of this new rectangle. And use the 6 side of the bigger rectangle to create holes on this new rectangle by doing the feature difference. at the 3/4 mark of the height, add 4 .125in x .5in boxes and create holes. Right above create a hole 1x3in. Also make 4 small holes that are .21in around a circle where the holes would be for the water pump. Create holes here.
4. Change eveything to have a clear fill and a stroke to be .01 and blue. Follow the rest of the rules for the a laser cutter below.
Final
For more details and steps please visit this site where all the documentation is published (daily journal, steps in deciding how to make project, recourses for project, and so on...)
I am working on figuring out a water system. The water pump 3D print designs and information on the coding is all on the site. Working on how to figure out to get the water to actually flow- the pump needs to get stronger so water can flow through but code for changing the pump speed depending on soil moisture level works and so does the water pump file. I think I need a stronger motor. Check site for updates.