For the controller:

  • Sodaq board with WiFi bee
  • water temperature sensor
  • pH sensor
  • air temperature and humidity sensor
  • light sensor
  • relays
  • buzzer
  • OLED display
  • Grove cables
  • acrylic base plate
  • mounting hardware
  • battery back-up power (optional)
  • conductivity sensor (optional)
  • water level (optional)

For the aquaponics system:

  • large food-safe containers
  • stand
  • lava rock or ceramic spheres (do not use gravel unless you are certain it is pH neutral)
  • plants, such as mint, tomatos, or strawberries
  • goldfish
  • grow light
  • 120V AC timer
  • 12V pump and 12V power supply
  • DC connector wire
  • 3/8" inner diameter hose
  • filters
  • solenoid valve for drain (optional)

Aquaponics introduction

Aquaponic systems use a combination of fish and plants. The fish provide fertilizer to the plants and the plants clean the water for the fish. Bacteria live with the plants to help convert the fish waste into useable plant food.

The inputs to the system are light, fish food, and occasionally small amounts of water. The systems do not use conventional fertilizers or pesticides (these would be harmful to the fish). The systems are quite water efficient (compared to conventional growing) and produce little waste.

For classrooms we recommend a minimalist setup using one plant container placed above a fish container. We use goldfish because they are small, robust, and easy to obtain.

How the controller works

The system checks the sensor values once per second. These values include water properties (temperature and pH, plus optionally conductivity and water level) and air properties (light, temperature, and humidity). The Arduino displays the values on an OLED display and sends the values to a server via WiFi.

Assembly instructions

  1. Follow the instructions for the fish tank monitor.

  2. Add a pump as described in the plant watering project. (You will not use a separate water supply; the pump will move water from the fish tank into the plants.) Be sure to have a guard on the water intake so that it does not injure the fish.

  3. Modify the fish tank monitor sketch to turn on the pump periodically. If you are using a solenoid valve for the drain, configure the code to open the valve once the pump is done running. (Of course always have an overflow line so that an electrical malfunction does not flood your workspace.)

Advanced version

In the future we'd like to provide a web interface for configuring the controller, including the minimum/maximum values for the sensors and timing patterns for turning on relays (to run pumps, lights, etc.). We would like to have it turn on a buzzer and/or send a notification when any of the sensor values is out of the specified range. We haven't implemented these features yet. If you'd like to help, contact