Modular Aquarium Controller Project for RaspberryPi and similar devices
- RaspberryPi or similar device
- Apache (or web server of choice)
- PHP (7.0 recommended)
- Wiring Pi GPIO Utility: http://wiringpi.com/the-gpio-utility/
- RaspberryPi3 (or whatever you have with GPIO output and runs linux more-or-less). Cannakit is good.
- Relay Board (Use as large a board as you can based on your control board) such as this one: https://www.amazon.com/gp/product/B00KTEN3TM/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1
- Female-to-Femail Breadboard Jumper Wires such as these: https://www.amazon.com/gp/product/B01EV70C78/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1
- Project Enclosure such as this one: https://www.amazon.com/gp/product/B00O9YY1G2/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
- Various electrical components such as wire, outlets, boxes, etc. PLEASE DO NOT WIRE 120/220 Volt circuits if you are not knowledgeable and comfortable with the safety requirements. YOU CAN BURN YOUR HOUSE DOWN. PLEASE DONT BURN YOUR HOUSE DOWN.
- If using WiringPi utility, then run the command:
gpio readall
- This will output a diagram of your board's specific GPIO mapping. For RaspberryPi 3 it looks like this (use the "wPi" columns):
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | |
| 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 |
| | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 |
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | OUT | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | OUT | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 0 | OUT | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | OUT | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
- Intentionally not providing wiring guidance for the AC circuits as this can be applied in many ways and should only be done by those who are competent. See earlier warnings about amateur electrical work. YOU CAN BURN YOUR HOUSE DOWN. PLEASE DONT BURN YOUR HOUSE DOWN. THIS IS AT YOUR OWN RISK
- See prerequisites above
- Copy to web directory
- Configure the config.json file according to your tank and accessory specs, location, etc. Use the provided file as an example.
- Ensure that config.json and state.json are both writeable by your web server.
- Add a command to
rc.local
so that ./utils/init.php runs at startup. For example:php /var/www/html/utils/init.php
- Add a command to the root crontab to run ./utils/schedule.php every minute. For example:
* * * * * php /var/www/html/utils/schedule.php >/dev/null 2>&1