This Project is to document the progress of a joint project between myself and my good buddy Liam O'Reilly. The aim is to create an automated aquarium monitor to control and maintain several tanks, and provide feedback and manual control to the user via an easy to use interface. The project started as a college project, but we are extremely interested in taking our rough-and-ready proof of concept and creating a professional looking unit suitable for industrial or commercial use.
The initial plan was something like this:
The aim was to use a Raspberry Pi as a Webserving I2C master. This would provide a user interface accessible over the network on any device, and also the ability to relay commands to multiple I2C devices.
These slave devices contain Arduino Nanos operating as I2C slaves, with multiple relays (for controlling a tank's lights, heaters, pumps etc), and also pH and temperature sensors for monitoring the tank's current state.
All data collected by the slaves would be returned to the master when requested for display on the web GUI when the page is requested. For example if the user were to access page /23 on the web interface the device would make a request to the slave configured for Tank 23.
In theory I would like the master to be able to provide a set of parameters to the slave; things such as temperature and pH thresholds, to be saved to the Arduino's EEPROM. This would allow the Arduino to constantly monitor the Tank's state and respond to some any anomalies:
- Trigger the heater if the temperature drops below the provided threshold
- Send warning messages back to the Pi if anything is amiss.
This would allow the user to preset configure each individual slave for the type of fish they are keeping in that tank. Ideal for a multi tank setup, or even a pet store.
Once the prototype for the slave had been assembled and was working using the sensors, relays and screen alongside the Arduino Nano I started to look at more modular solutions; using relay shields or LCD shields to simplify the build process.
With the emergence of the IOT2020 it would be incredible to use it as the slave device in this project, replacing the Arduino non-based prototype. Taking advantage of the IOT2020's feature set we could make the slave devices wireless and communicate with the webserver wireless over the network using websockets. It could even be used to remove the need to have the Pi running the web interface and become the master unit in the set up. This would be tremendously advantageous, making replication so much simpler!
I have been working further on this project in recent weeks; buying new hardware, revising my communication protocols, and generally making this device much more user friendly. So far the changes cover:
- Brand New enclosures, giving a more professional finish.
- Pi Zero W-based hub, reduces the footprint and has integrated wifi!
- New Wireless Control Units, reducing messy wiring and allowing a further reaching setup
- Onboard Oled display and buttons, to allow for improved feedback at the Control Unit
- Expanded IoT possibilities using the Hub to transmit data to cloud based services.
More information to follow once it's all working as planned!