Settings
top

Growing Fresh Produce with Rise Garden Hydroponics

Growing fresh produce with hydroponics has been a game-changer for many people, especially those who live in urban areas or have limited space. Hydroponics allows you to grow plants without soil, which means you don’t have to worry about soil-borne pests or diseases. Instead, you can provide your plants with all the nutrients they need through a nutrient solution that is added to the water.

One hydroponic system that I have been using with great success is the Rise Garden. This system is designed to make hydroponics gardening easy and accessible for everyone. It comes with everything you need to get started, including the grow lights, water pump, and nutrient solution. All you have to do is set it up, add water and the nutrient solution, and start planting.

Green Beans

Currently, I have six different plants growing in my Rise Garden: cilantro, green beans, cherry tomatoes, sweet peppers, mini cucumbers, and rainbow chard. The cilantro is growing extremely well, and I have more than I know what to do with. It’s great to have fresh cilantro on hand for all my cooking needs.

The green beans are also doing really well, and I can see many beans now showing up on the plant. The cherry tomato plant has so many flowers on it, and I am seeing the first of these flowers starting to go to fruit. It won’t be long before I am enjoying fresh cherry tomatoes in my salads.

My sweet pepper plant is starting to produce its first flowers, and I am looking forward to having some fresh peppers to use in my cooking. The new mini cucumber plant is also starting to grow quite well, and I am excited to see how it does.

New 2nd level for my garden.

One of the best things about the Rise Garden is that it is so customizable. I recently added a second layer to my garden to grow more leafy greens, and it has been a great addition. Now, I can grow even more fresh produce in the same space.

The newly planted rainbow chard is coming up quite nicely, and I am excited to see how it does in the coming weeks. I can’t wait to harvest it and use it in some delicious recipes.

Hydroponics gardening with the Rise Garden has been a great experience. It is so easy to use, and it’s great to be able to grow fresh produce right in my own home. If you’re interested in hydroponics gardening, I highly recommend giving the Rise Garden a try. It’s a great way to grow fresh produce, even if you don’t have a lot of space.

3D Printed Parts Boxes for days…

Twitter

WiFi controlled LED scarf

Twitter

This is what happens when manufacturers embrace personal 3D printing.

Twitter

Installing LEDfx Windows

To get started on Windows it is highly recommended that you use Anaconda to make installation of Cython components easier.

Install Microsoft Visual Studio

https://visualstudio.microsoft.com/downloads/

Start Anaconda

Once open, start a terminal session and run the following:

conda create -n ledfx
conda activate ledfx

Install LedFx and all the dependencies using pip and the conda package manager

conda config --add channels conda-forge
conda install aubio portaudio pywin32
pip install pipwin
pipwin install pyaudio
pip install ledfx

Launch LedFx (with the ‘open-ui’ option to launch the browser):

ledfx --open-ui

Trubleshooting:

https://stackoverflow.com/questions/52283840/i-cant-install-pyaudio-on-windows-how-to-solve-error-microsoft-visual-c-14

Load a text file from the SD card for the Adafruit PyPortal.

This is some basic code that will print a list of files on the SD card and load a given text files contents. Then it converts the JSON text into a dictionary that makes it easy to list out and display values.

import time
import json

import os
import board
from adafruit_pyportal import PyPortal

# Create the PyPortal object
pyportal = PyPortal(status_neopixel=board.NEOPIXEL)

# Default location to look is in internal memory
FILE_DIRECTORY = "/sd"

RECIPE_FILE = "Cookies"

def print_directory(path, tabs=0):
    for file in os.listdir(path):
        stats = os.stat(path + "/" + file)
        filesize = stats[6]
        isdir = stats[0] & 0x4000

        if filesize < 1000:
            sizestr = str(filesize) + " by"
        elif filesize < 1000000:
            sizestr = "%0.1f KB" % (filesize / 1000)
        else:
            sizestr = "%0.1f MB" % (filesize / 1000000)

        prettyprintname = ""
        for _ in range(tabs):
            prettyprintname += "   "
        prettyprintname += file
        if isdir:
            prettyprintname += "/"
        print('{0:<20} Size: {1:>6}'.format(prettyprintname, sizestr))

        # recursively print directory contents
        if isdir:
            print_directory(path + "/" + file, tabs + 1)

try:
    print_directory(FILE_DIRECTORY)
except OSError as error:
    raise Exception("No files found on flash or SD Card")
    
try:
    with open("/sd/" + RECIPE_FILE + ".txt", "r") as fp:
        x = fp.read()
        # parse x:
        y = json.loads(x)
        ingredients = y["ingredients"]
        for i in ingredients:
            print('{} - {}'.format(i.get("quantity"), i.get("ingredient")))
        
except OSError as e:
    raise Exception("Could not read text file.")

On the MicroSD card there is a file named Cookies.txt that is made up of the following JSON.

{
   "ingredients":[
      {
         "quantity":"1 cup",
         "ingredient":"butter, softened"
      },
      {
         "quantity":"1 cup",
         "ingredient":"white sugar"
      },
      {
         "quantity":"1 cup",
         "ingredient":"packed brown sugar"
      },
      {
         "quantity":"Two",
         "ingredient":"eggs"
      },
      {
         "quantity":"2 tsp",
         "ingredient":"vanilla extract"
      },
      {
         "quantity":"1 tsp",
         "ingredient":"baking soda"
      },
      {
         "quantity":"2 tsp",
         "ingredient":"hot water"
      },
      {
         "quantity":"1/2 tsp",
         "ingredient":"salt"
      },
      {
         "quantity":"3 cups",
         "ingredient":"all-purpose flour"
      },
      {
         "quantity":"2 cups",
         "ingredient":"semisweet chocolate chips"
      },
      {
         "quantity":"1 cup",
         "ingredient":"chopped walnuts"
      }
   ]
}

This should result in the following output:

code.py output:
ESP firmware: bytearray(b'1.2.2\x00')
Set background to  0
Coleslaw Dressing.txt Size: 426 by
Bread Dough.txt      Size: 426 by
Pancakes.txt         Size: 426 by
Cookies.txt          Size: 1.0 KB
1 cup - butter, softened
1 cup - white sugar
1 cup - packed brown sugar
Two - eggs
2 tsp - vanilla extract
1 tsp - baking soda
2 tsp - hot water
1/2 tsp - salt
3 cups - all-purpose flour
2 cups - semisweet chocolate chips
1 cup - chopped walnuts

Just a little Garden UI

This week I made a bit of progress with my garden monitoring system and figured out how to add a bunch of sensors connected to an ESP8266 that sends updates to my MQTT server. The hardwear is still being finished, but basically I am using four I2C expanders to add 16 Analog inputs to the NodeMCU along with a few other sensors attached to digital pins. This is all solar powered and I just got a controllable watering system that is working well. I will cover all of that once I have my system up and running.

Today I have been playing around with Home Assistant to make the user interface that I will use to help figure out and test automations later.

The first tab is a basic overview of the planter boxes with sensor data displayed over the aria that the actual sensor is placed. This also has a button to run a script that pulses water to the garden boxes so that the soil soaks up the water and a switch that lets you manually control the water pump. Though the pump switch is just for my testing because if you just turn the pump on it tends to flood the boxes that lets a bunch of water dripping out from the bottom and it is better for the script to pulse water over time. After that there is a graph with local weather report data along with data from my DHT11 sensor and the forecast for the week.

The Sensors tab shows each of the sensor readings using the Plant Status cards for Lovelace so that I can set alert triggers later for things like low water levels, freezing temperatures, or over exposure to sunlight. This tab also shows predicted rainfall for the day in inches. This information will be used to tell the system if it needs to water the garden or let nature do its thing.

Now we get to a lovely display of data graphing that would make any researcher proud. The first graph compares the air humidity with the soil humidity for the last 48 hours so you can see how the day’s heat affects the soil moisture. If you look closely on the right side of this graph, you can see two spikes where the water pump did it’s thing. The next graph is for the light sensors, but I only have one connected right now. The last graph will show the soil temperature for each of the planter boxes as soon as I get those wired into the ESP8266.

Later I will be adding a water level sensor that tells me to fill the water tank and will not let the pump run if the water level gets below the pump’s intake level.

I am hoping to have more about this project later next week including how I built the electronics and 3D printed a solar radiation shield to get more accurate weather data.

Garden Data Logging with Adafruit IO

I threw together a sensor node to collect some more detailed soil moisture data in my planter boxes. This is using an ESP32 with 3 capacitive soil moisture sensors. I connected that to Adafruit IO to collect and graph the data.

https://io.adafruit.com/richa1/dashboards/analog?kiosk=true

It’ that time of the year…

Twitter

Making Robot Friends with RemoTV

Years ago at Maker Fair I saw a person followed by a rather impressive robot that seemed to have a mind of it’s own. Later I found out that the robot was being controlled by people through the internet using a site called LetsRobot. While that project is no more, that same person, Jillian Ogle, that I met is the creator of it’s successor RemoTV.

Continue reading Making Robot Friends with RemoTV