Project Name: AquaCare

Project Functional Description:

Our project aims to develop a smart fish tank system designed to simplify fish care by automating key maintenance tasks and monitoring tank conditions for pet owners to ensure fish health. Implemented using an STM32 microcontroller, this solution is targeted at both hobbyists and families, aiming to reduce the effort required for fishkeeping while promoting healthier environments for aquatic life. AquaCare is powered through wallpower and has a simple user interface. This device can be mounted on any size fishtank between 3 and 15 gallons. The AquaCareHQ, which houses the PCB and main control of the design, will mount to the fishtank lid. The water level and temperature sensors will be placed in the water near the AquaCareHQ. The interactive screen and keyboard will be mounted on the front glass of the fishtank for ease of use. Finally, the feeder will sit on the edge of the tank with the feeder opening above the water.

The key components of our design are:
- Live tank condition monitoring
- Filter health monitoring
- Historical data of tank conditions
- Interactive screen navigated using a keyboard
- Alerts with unhealthy tank conditions
- An automatic feeder
See below for further detail into these features.

Tank Condition Monitoring
AquaCare continuously monitors the health of your fish tank using a Waterproof 1-Wire DS18B20 Digital temperature sensor. This sensor is extremely accurate for measuring tank temperature, providing a +/- 0.5 degrees Celsius margin of error. This sensor operates in a range of 3-5.5 V and can be easily interfaced to our microcontroller using I2C.

Filter Health Monitoring
AquaCare saves users from the extra expense of specialized tank filters with built-in alerts. The sensor instantly detects water and, when placed at a certain height in the tank, can indicate when a filter is clogged or malfunctioning. The sensor used in this design is the Adafruit Water Level Sensor that operates on 3-5 V and is an Analog device.

Historical Data of Tank Conditions
AquaCare features a built-in SD card (size not yet determined) that stores tank data readings for up to 24 hours. The data stored on this card will be displayed in a graph on the interactive screen.

Interactive Screen
AquaCare features an interactive screen, navigated using a 4x4 keypad, allowing users to seamlessly browse through its menus. The main screen displays live tank data in real time, while another screen presents a graphical view of historical data stored on the SD card, helping users track trends. Additionally, a settings screen enables users to customize tank condition thresholds and set feeding intervals, providing full control over their aquarium’s environment. The screen used in AquaCare is an EVE2 graphical LCD that interfaces via SPI. This screen operates at 3.3V and has RGB color capability to efficiently display the graphical information.

Alerts with Unhealthy Tank Conditions
AquaCare continuously compares sensor readings to user-set thresholds to assess tank health. If any parameter falls outside the defined range, the screen will instantly alert users to the specific issue, ensuring timely adjustments for a healthy aquatic environment. The screen used in this design has audio capabilities to alert the user both visually and audibly if they choose.

Automatic Feeder
AquaCare’s automatic feeder dispenses the ideal amount of food based on the user-set feeding schedule, ensuring a well-balanced tank environment. The dispensing action will be operated by a latch controlled by a Nema 17 Stepper Motor. This motor operates on 12V and has a holding torque of 2kg-cm, making it efficient for keeping the dispenser latch shut when not dispensing. The feeder also has the capability to alert the user when the food level is getting low. Built internally into the design is an ultrasonic sensor that can sense, using distance, when the food level is too low. Once this certain distance is reached, the screen will alert the user to replenish the food level.

**POTENTIAL STRETCH FUNCTIONALITIES**
A considered stretch functionality for AquaCare would be to utilize extra components to not only monitor temperature, but regulate it as well. Instead of users purchasing their own heat lamp, AquaCare would come packaged with a heat lamp that works synchronously with its server to regulate temperature based on user thresholds. This would require powering a heat lamp and interfacing it with the rest of the sensors.

A second stretch functionality is to create an app or a server so that users could check on tank readings while they are away. By implementing this capability, AquaCare would provide users complete ease of mind when away. This would require implementing some Bluetooth or Internet capabilities into our design.

Project Specific Design Requirements (PSDRs):

  1. PSDR #1 (Hardware): Ability for a waterproof temperature sensor to interface with the microcontroller via I2C. The DS18B20 temperature sensor interfaces to our microcontroller via I2C. It is important that the sensor and the microcontroller properly interact so the users can determine when the water temperatures are dangerous for the fish.
  2. PSDR #2 (Hardware): Ability for an SD card to interface with the microcontroller via SPI to communicate historical sensor data. The microcontroller will report live data to the SD card via SPI. Similarly, the SD card will report this stored data back to the microcontroller to display on the LCD.
  3. PSDR #3 (Hardware): Ability for a graphical LCD to communicate with the microcontroller via SPI. The LCD and the microcontroller will have to communicate constantly, via SPI, to read from the sensors to display live data, to fetch stored data from the SD card to display historical data, and to report if the user has interacted with the screen and changed any thresholds for temperature or feeding levels.
  4. PSDR #4 (Software): Utilzing the capabilities of a graphical LCD to display historical sensor data. We will utilize the LCD's complex capabilities to graphically display historical tank data.
  5. PSDR #5 (Software): Creating a simple user interface to navigate the various menus of the LCD. The user will be interacting with the LCD to view live and historical data and changing tank thresholds. It is important that the LCD and keyboard are programmed so that the user can navigate through the menus and change thresholds easily and without much instruction.