In Sanskrit, "Mina" (เคฎเฅเคจ) represents the fish, symbolizing freedom, fluidity, and the eternal flow of life. As the twelfth and final sign of the zodiac (known as "Pisces" in Western astrology), Mina embodies adaptability and spiritual wisdom. Just as fish navigate the depths with graceful purpose, this project aims to create harmony between technology and aquatic life. The name embodies our philosophy of maintaining balance in the artificial ecosystems we create, guided by ancient wisdom yet powered by modern innovation.
Inspired from this project, ESP8266 versions have been developed and running successfully. These are actively being developed and are simpler versions without complex sensors. Check them out:
ยฉ 2025 desiFish. This project is protected by copyright law. All rights reserved unless explicitly stated under the GPL v3 license terms.
New Interface |
|
Tentative Circuit Schematic V4.0 |
DANGER: This project involves HIGH VOLTAGE (240V AC) which can be LETHAL!
This project interfaces with mains electricity which poses serious risks including:
- โก Electric shock
- ๐ฅ Fire hazard
- ๐ง Water + electricity dangers
-
Circuit Protection:
- Install appropriate MCB (Miniature Circuit Breaker)
- Use RCCB (Residual Current Circuit Breaker) rated 30mA
- Proper fusing for each circuit (max 6A)
-
Grounding:
- All metal parts must be properly grounded
- Use ground fault protection
- Double-check ground connections
-
Installation:
- Must be installed by qualified electrician
- Follow local electrical codes
- Use proper junction boxes
- Keep high voltage components away from water
-
Operation:
- Never operate with wet hands
- Keep electronics sealed from moisture
- Regular safety inspections
- Disconnect power before maintenance
DISCLAIMER: Author (desiFish) is not responsible for any damage or injury. Proceed at your own risk.
Project under development ๐ ๏ธ
A cutting-edge aquarium control system that will revolutionize your underwater world! ๐ฎ Advanced control for aquariums using ESP32, Preference Lib. and LittleFS.
๐ 20x4 LCD Display for on-device status- Real-time relay status- Current time and schedules- Basic system information- No WiFi required for essential monitoring
Note: Since this version is using webserver, I am putting away the LCD option, since all controls are available in web server. Rather I will use 4 WS2812B RGB LEDs for simple status purpose. The LCD version along with buttons will feature in Smart Aquarium V4.1
- ๐ก 4x WS2812B RGB LEDs for status indication
- Visual relay status indication
- Network connection status
- System status alerts
- Error condition warnings
- ๐ค Better Web UI
- ๐ฑ Mobile-friendly interface
- ๐ Automatic Controls
- โก Dual-core ESP32 support only (ESP32, ESP32-WROOM, etc.)
- ๐พ Uses LittleFS for storing web interface files
- ๐ฝ Preferences library for persistent settings storage
- ๐ Real-time scheduling with DS3231 RTC
- ๐ NTP time synchronization
- ๐ Controls up to 4 independent relays (easily scalable)
- ๐๏ธ Three operating modes per relay
- ๐ก State persistence across power cycles
- ๐ฑ Mobile-first responsive interface
- โก Runs on both CPU cores for reliability
- ๐ Automatic status updates every second
- ๐ Async web server for better performance
- ๐ JSON-based API endpoints
- โจ Backend code is fully scalable - just modify NUM_RELAYS and RELAY_PINS array
- ๐ง Web UI JavaScript is scalable - all functions work with any relay ID
โ ๏ธ HTML components need manual duplication with correct ID numbers for additional relays- ๐ Default pin configuration: GPIO 26, 27, 14, 12
- ๐ง Max relay count limited only by available GPIO pins
Project_Mina offers three versatile operating modes for each relay:
Default operating mode for all relays.
- Toggle relay ON/OFF directly through the web interface
- State persists until manually changed
- Ideal for direct control of equipment
- Settings are saved and restored after power cycles
Temporary timed operation for specific durations.
- Set desired duration in seconds
- Relay automatically toggles after duration expires
- Returns to manual mode after completion
- Perfect for temporary operations (feeding, maintenance)
- Timer state persists through power cycles
Scheduled operation based on time of day.
- Set ON time and OFF time (24-hour format, e.g., "14:30")
- Supports both same-day schedules (ON: 09:00, OFF: 17:00)
- Handles overnight schedules (ON: 22:00, OFF: 06:00)
- Checks schedule every second
- Schedule persists through power cycles
๐ก Tip: For equipment that needs to run overnight, set the ON time after the OFF time (e.g., ON: 22:00, OFF: 06:00)
If you find this project useful, consider:
- โญ Giving it a star on GitHub
- ๐ Forking it for your own projects
- ๐ข Sharing it with fellow aquarium enthusiasts
- ๐ฑ Click the "Fork" button at the top right
- ๐ Clone your fork:
git clone https://github.com/desiFish/Project_Mina.git - ๐จ Make your changes
- ๐ Share your improvements through Pull Requests
When using this project, please:
- ๐ Link back to the original repository
- ๐ Keep the GPL-3.0 license intact
- ๐ Mention in your README: "Based on Project_Mina by desiFish"
- ๐ฆ Share on Twitter/X
- ๐ฑ Post on aquarium forums
- ๐ฅ Tell your fish-keeping friends
- Install Arduino IDE 2.3.6 or newer
- Install ESP32 board package:
- Add
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.jsonto Additional Board URLs - Install "ESP32 by Espressif Systems" from Boards Manager
- Add
โ ๏ธ Hardware Compatibility: Currently tested only on ESP32 DevKit V1 (30-pin version). Other ESP32 boards may work but are untested.
Install these from Arduino Library Manager:
- ESPAsyncWebServer - Async HTTP and WebSocket server
- AsyncTCP - Required by ESPAsyncWebServer
- RTClib - RTC support by Adafruit
- ArduinoJson
- NTPClient
- Preferences (built-in)
- WiFi (built-in)
- Select Board: ESP32 Dev Module
- Upload Speed: 921600
- CPU Frequency: 240MHz
- Flash Frequency: 80MHz
- Flash Mode: QIO
- Flash Size: 4MB (32Mb)
- Partition Scheme: Default 4MB with spiffs
See Resources section for LittleFS installation guide.
-
Clone repository:
git clone https://github.com/desiFish/Project_Mina.git
-
Open
Project_Mina.inoin Arduino IDE -
Edit WiFi credentials in code:
const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD";
-
Connect ESP32 via USB
-
Select correct COM port in Tools menu
-
Upload sketch (
โถ๏ธ button) -
Upload web interface:
- Press
Ctrl + Shift + P - Type "littlefs" and select "Upload LittleFS image to Pico/ESP8266/ESP32"
- Wait for "LittleFS image uploaded" message
If you encounter any errors:
- Close Serial Monitor
- Restart Arduino IDE
- See Resources section for detailed troubleshooting
- Press
- Connect DS3231 RTC:
- SDA โ GPIO 21
- SCL โ GPIO 22
- VCC โ 3.3V
- GND โ GND
- Connect relays to specified pins:
- Relay 1 โ GPIO 26
- Relay 2 โ GPIO 27
- Relay 3 โ GPIO 14
- Relay 4 โ GPIO 12
- Power up the device
- Connect to your WiFi network
- Find ESP32's IP address in Serial Monitor
- Access web interface:
http://<ESP32-IP-ADDRESS> - Update RTC time using the Settings page
- ๐ฅ Installing LittleFS Uploader in Arduino IDE 2 Essential for uploading the web interface files to ESP32
This project is licensed under the GNU General Public License v3.0 (GPL-3.0):
- โ Commercial use
- โ Modify and distribute
- โ Patent use
- โ Private use
- ๐ข Disclose source
- ๐ License and copyright notice
- ๐ State changes
- ๐ Same license
- โ Hold liable
- โ Sublicense
- โ Remove copyleft
See LICENSE for the full license text.
Made with โค๏ธ in India
I love Open Source! This project is my way of giving back to the amazing developer community that taught me everything I know. Happy coding! ๐ฎ๐ณ

