Abstract
Aquacontrol32 is an open-source Internet of Things (IoT) project. 5 channel aquarium LED controller with web interface for ESP32 boards. Supports DS18B20, SSD1306, ILI9341, XPT2046 and SmartConfig. Arduino IDE. Aquacontrol32 can control 5 led strips to create gradual sunrises and sunsets in your aquarium. It is developed for and tested on MH-ET LIVE MiniKit ESP32 MCUs. It is built using C, ESP32. Key capabilities include: 5 channels led dimming (common anode) through 1.22kHz PWM at 16 bit (65535 steps) resolution. The dimming control task runs at 100Hz to ensure smooth dimming; Lunar cycle night light; 50 timers per channel with a 1 minute resolution. The complete source code is publicly available on GitHub under the MIT License, making it a useful reference for students building an Internet of Things (IoT) mini project or final-year project.
1. Introduction
Aquacontrol32 can control 5 led strips to create gradual sunrises and sunsets in your aquarium. It is developed for and tested on MH-ET LIVE MiniKit ESP32 MCUs. Other than the led dimming hardware, no additional hardware is needed to control the device.
With some modifications and provided there are enough pins broken out, Aquacontrol32 should run on basically any ESP32 based board. The built-in web interface already gives access to most functions. The goal is v2.0 as a single binary with all functions accessible via the web interface.
The minimum hardware would be a ESP32 board with at least 5 free output pins connected via 100R gate resistors to 5 NPN mosfets that drive the led lights. You will need logic level mosfets for example IRLZ44N mosfets.
2. Objective
5 channel aquarium LED controller with web interface for ESP32 boards. Supports DS18B20, SSD1306, ILI9341, XPT2046 and SmartConfig. Arduino IDE.
This project demonstrates how C, ESP32 can be applied to a real-world Internet of Things (IoT) problem.
3. Key Features / Modules
- 5 channels led dimming (common anode) through 1.22kHz PWM at 16 bit (65535 steps) resolution. The dimming control task runs at 100Hz to ensure smooth dimming.
- Lunar cycle night light.
- 50 timers per channel with a 1 minute resolution.
- SNTP timekeeping with timezone support.
- 3x OneWire DS18B20 sensor support and FFat storage with a 30 day temperature history.
- SSD1306 128x64 OLED over I2C support.
- ILI9341 320x240 TFT with XPT2046 touchscreen over SPI support.
- All device settings are saved in NVS.
- Easily connect your controller to WiFi with the Espressif EsptouchForAndroid app.
- Get a notification in the web interface if a new release is available.
4. Technology Stack
- OneWire 2.3.3 - Use this library instead of the standard Arduino OneWire library.
- AsyncTCP 1.0.3
- ESPAsyncWebServer 1.2.3
- MoonPhase 1.0.0
- Task 1.0.0
- FFatSensor 1.0.2
- jQuery 3.4.1 which is available under MIT license.
- jCanvas 21.0.1 which is available under MIT license.
5. System Requirements
General requirements for this technology stack — check the README for exact versions.
- Arduino IDE / PlatformIO or a C compiler (gcc)
- Target board where applicable
- Git (to clone the repository)
6. Installation & Setup
git clone https://github.com/CelliesProjects/aquacontrol32.git
cd aquacontrol32- Download and unpack the latest release.
- Check if all libraries are installed and the correct version. (in aquacontrol32.ino)
- (Optional) Adjust the wifi_password and wifi_network. (in aquacontrol32.ino)
- Check and adjust device specific setup in deviceSetup.h and devicePinSetup.h.
- Flash your device. Remember to use a FFat partition!
- On the first boot ( or after a flash erase ) the internal flash drive will be formatted so first boot will take a little longer. Updating aquacontrol to a new version will not format the drive.
- If your ESP32 has connected to your WiFi router before you flash Aquacontrol to your device, it will probably connect automagically .
- If you try to connect to an unknown WiFi network or changed your WiFi router settings, Aquacontrol will fail to connect and start SmartConfig.
Full setup instructions are in the project README.
7. Future Enhancements
Suggested extensions you can add to make this your own project.
- Add a mobile dashboard using Blynk or Firebase
- Store readings in a cloud database for history charts
- Add alerts via SMS / Telegram when thresholds are crossed
8. Viva / Review Questions
Common questions examiners ask for projects in this domain.
- Which microcontroller / board and sensors are used and why?
- How does the device send data (Wi-Fi, MQTT, HTTP, Bluetooth)?
- Where is the sensor data stored and visualised?
- How is power consumption managed?
- How would you secure the device and its communication?
9. Source Code & License
This project is developed by CelliesProjects and published on GitHub under the MIT License. Please follow the license terms and credit the original author when you use or modify this code.
Want to build this as your internship project?
Work on an Internet of Things (IoT) project like this with mentor guidance, weekly reviews and an internship certificate from Training Trains, Erode — online or offline.
Apply for Internet of Things (IoT) Internship