PRE2023 3 Group12: Difference between revisions
(47 intermediate revisions by 6 users not shown) | |||
Line 40: | Line 40: | ||
Many homeowners have aquatic pets of certain kinds either for aesthetic reasons or out of genuine compassion for the animals. In the world of aquariums and fish, one of the most important things is ensuring healthy water conditions. There can be various reasons for people to wanting to own an aquatic pet. It can be difficult to ensure these parameters with insufficient knowledge or time constraints. An aquarium owner comes across various tasks and problems. Owning and maintaining a fish tank can be difficult. These include feeding schedules, water parameters, pH-levels and temperature. It can be difficult to test regularly and keep values on certain levels. All these factors can have negative impact on the fish their health and happiness. For many aquatic pet owners, it can be helpful to have a tool that takes care of the fish during periods of absence. This will prevent stress and illness among the animals in the tank. | Many homeowners have aquatic pets of certain kinds either for aesthetic reasons or out of genuine compassion for the animals. In the world of aquariums and fish, one of the most important things is ensuring healthy water conditions. There can be various reasons for people to wanting to own an aquatic pet. It can be difficult to ensure these parameters with insufficient knowledge or time constraints. An aquarium owner comes across various tasks and problems. Owning and maintaining a fish tank can be difficult. These include feeding schedules, water parameters, pH-levels and temperature. It can be difficult to test regularly and keep values on certain levels. All these factors can have negative impact on the fish their health and happiness. For many aquatic pet owners, it can be helpful to have a tool that takes care of the fish during periods of absence. This will prevent stress and illness among the animals in the tank. | ||
Our proposed solution is an aquarium robot, that will be able to monitor and maintain water parameters. Our system aims to take away most difficulties that arise when owning an aquarium. This enables the user to ensure optimal chemical levels and temperature. Our system will be able to sense the tank its temperature, pH, turbidity and ammonia levels. The sensors are selected such that they will withstand the constant exposure to water and give accurate results. A microcontroller acts when certain levels get out of balance. Dispensing the correct amount of food on certain times during the day can be important too. The system will be able to dispense food when needed. By using Wi-Fi and an application, the system will be able to contact the user and send real-time values to the user. This and other actuators will ensure safe, preset values inside the aquarium. The user will get notified when a problem arises, and inform the user about its actions. | Our proposed solution is an aquarium robot, that will be able to monitor and maintain water parameters, as well as feeding the fish. Our system aims to take away most difficulties that arise when owning an aquarium. This enables the user to ensure optimal chemical levels and temperature. Our system will be able to sense the tank its temperature, pH, turbidity and ammonia levels. The sensors are selected such that they will withstand the constant exposure to water and give accurate results. A microcontroller acts when certain levels get out of balance. Dispensing the correct amount of food on certain times during the day can be important too. The system will be able to dispense food when needed. By using Wi-Fi and an application, the system will be able to contact the user and send real-time values to the user. This and other actuators will ensure safe, preset values inside the aquarium. The user will get notified when a problem arises, and inform the user about its actions. | ||
'''Objectives:''' | '''Objectives:''' | ||
Line 141: | Line 141: | ||
The rapid development of new, cheaper sensors makes it possible to create systems that can support aquarium owners [14]. This development is crucial in allowing the creating of these systems. More extended sensors are also worked on, to allow the monitorization of fish farms [12]. | The rapid development of new, cheaper sensors makes it possible to create systems that can support aquarium owners [14]. This development is crucial in allowing the creating of these systems. More extended sensors are also worked on, to allow the monitorization of fish farms [12]. | ||
==== Current products on the market: ==== | |||
<u>Superfish Aquarium Start 70:</u> This is a self-contained automated aquarium specifically targeted to beginners with tropical fish. It contains a heater, thermometer, filter and LED lighting. However only nothing is automated except for the filter, and everything coming with the actual tank means no possibility for the user to choose a different size. The whole kit costs €90. | |||
<u>ReefATO+</u>: This is a system to add to an already existing tank. It monitors water level and temperature, and sends notification to the user via a mobile app in case these values are out of a predefined range. It also pumps the water and detects leak. It costs €200. | |||
The company Neptune Systems also provides a large range of Aquarium automation products, among which one can find: | |||
<u>A3 Apex Jr Aquarium Controller:</u> This system is composed of water and pH sensors, a water level sensor and a leak detector. It sends all of the collected information to a mobile app via wi-fi. It costs €300. | |||
<u>DOS Dosing and Fluid Metering System:</u> This system performs automatic water changes by pumping water while injecting chemicals thanks to a precise fluid metering and dosing system. The price is €325. | |||
<u>Trident - Marine Aquarium Water Analyzer:</u> This system regularly tests the alkalinity, calcium, and magnesium of the water and sends notifications to the user when they are out of range via an app. It can be combined with the previous system to automatically release chemicals when the water parameters are abnormal. As a standalone, it costs €625. | |||
<u>Automatic Feed System:</u> This system releases fish food at a fixed frequency. It costs €145 | |||
According to our research there exists no product yet that monitors water parameters, regulates them and feeds the fish, so our product would bring an important improvement in the market. The addition of a mobile app also seems a very appreciable feature for the user. Moreover, most of the products have a very high price due to the small number of companies selling them, so the ability to manufacture a system at a reasonable price would be another improvement, especially since our product is partially targeted towards everyday users and beginners. | |||
== USE Analysis == | |||
=== Users === | |||
'''''Homeowners with Aquatic Pets''''' | |||
These users need a reliable system that is easy to use and maintains the optimal conditions within their aquariums. Ideally, the solution can minimize the effort and time that is required for regular maintenance while also ensuring the health and well-being of their pets. This group can range from beginners who may have little knowledge about aquatic pets to experienced enthusiasts. The system should be user-friendly and provide educational resources for less experienced users. They need to be able to regularly check the app for updates on the aquarium's condition. Regular monitoring and adjusting of water parameters like pH, temperature, and ammonia levels can be tedious and time-consuming. There's also a risk of human error, leading to unhealthy conditions for the fish. | |||
'''''Aquarium stores''''' | |||
These users require a system that can manage multiple tasks efficiently, ensuring optimal conditions for the health and breeding of fish. They value accuracy and reliability, and most importantly, the system has to adapt to different species. Professional users have a deeper understanding of aquaculture and may require advanced features and greater control over the system. Some of the challenges may include consistent water quality across multiple tanks. Also, any issues that may occur have to be quickly addressed to prevent loss of stock. Therefore, these users need an alert system that can immediately send notifications for any parameters that fall outside safe ranges. | |||
=== Society === | |||
Society values products that prioritize sustainability and environmental responsibility. When it comes to a device for aquarium monitoring, there is a desire for energy-efficient solutions that minimize environmental impact. By reducing energy consumption and promoting responsible fishkeeping practices, such a device tries to limits it's impact on climate. Ensuring the safety aquatic environments is as important for society. Therefore, there is a need for monitoring devices that can quickly detect and respond to emergencies or fluctuations in water quality. By providing real-time monitoring and alerts, these devices help minimize risks to marine life and promote the overall safety of aquatic ecosystems. Fish shouldn't be harmed by the equipment, as holds for the user. Electronics should be kept dry, off-contact with the water. Innovation is highly valued in society, driving progress and advancements in various fields. A device that pushes the boundaries of technological advancement in aquarium monitoring resonates with society's appetite for innovation. By inspiring further exploration in environmental monitoring and conservation, such products contribute to the ongoing quest for innovative solutions to global challenges. | |||
=== Enterprise === | |||
Many systems that take care of this are designed to be user-friendly, offering various options for monitoring and controlling a wide range of parameters including temperature, pH level, ammonia concentration, ensuring optimal conditions for aquatic life. These systems provide programming and control capabilities through both computers and mobile devices, allowing for remote management<ref>Ash, E. (2024, February 26). ''Aquarium Controllers: 8 systems to control, monitor & Test your tank''. Fish Tank Advisor. <nowiki>https://fishtankadvisor.com/best-aquarium-controller-reviews/</nowiki></ref>. This is particularly beneficial for aquarium stores managing multiple tanks and homeowners who need to maintain their aquariums while away. A product like described could lower costs for these stores. Data security is a critical concern for enterprises handling sensitive information. In the context of aquarium monitoring devices, robust data security measures are essential to protect monitoring data from unauthorized access or breaches. By implementing encryption protocols and secure storage mechanisms, these devices ensure the integrity and confidentiality of sensitive information, maintaining user trust and confidence. | |||
== Results From User Survey And Discussions == | |||
[[File:Survey Results 1.png|thumb|Fish Health Monitoring Survey Results]] | |||
[[File:Image 2.png|thumb|Concerns From Users Survey Results]] | |||
[[File:Image 3.png|thumb|App Preferance Survey Results]] | |||
As previously mentioned, owning an aquarium can be a lot of work. There are certain tasks that need to be checked multiple times each month, as well as feeding and water filtering. This can be a burden for people, mostly during times of absence. This can be seen from the survey results with more than 55% of aquarium users not monitoring the health of their fish. | |||
Owners that go on a long trip or vacation will need to ask someone else to monitor their aquarium for them. Remembering to feed every day can be hard for some users too. An elderly women mentions that it can a lot of work to check and learn all important water parameters. Good information on how to keep certain species of fish would be useful. A automated system could be created to notify the user when a change of filter is needed. Many aquarium users in our survey said they don't know when to clean the wateer as there is no specified time to do this, the standard is every month but the truth is sometimes due to temperature, PH, climate and all other environmental, external and other factors this can vary a lot. This will be a better solution (notifying the user when a change of filter / water is needed) than just changing it once every month or so, as the filter may be clean enough to be us. | |||
This can be seen from the survey result where 81% of aquarium owners say the cleanliness of the water concerns their fish the most hence as mentioned above a system to notify when cleaning the water is required is crucial. Furthermore 72% of aquarium owners say temperature concerns their fish and as well as PH (~45%) the other factors are a mintory and only make up around 27% or less. Therefore a system to monitor and regulate temperature as well as PH would be ideal as this was a suggestion by more than 72% of users for the product to mintor PH, temperature and the cleanliness of water and display the data on the app whereas the other factors such as dissolved oxygen or ammonia levels were a mintory (approximately less than 18% of aquarium users were interested in that). Moreover, more than 55% of aquarium users want temperature to be regulated automatically on top of already monitoring it and more than 72% of aquarium users want the same for PH as well, due to these being the most crucial aspects to cover and the most concerning according to aquarium users.[[File:Reg.png|thumb|Automated Regulating Survey Results]]Major fish community websites and blogs post information on the most common tasks of an aquarium owner. Some water parameters should be checked weekly to ensure good water quality. Most aquarium owners don't keep track of these parameters, or only measure the most important ones. There are owners that enjoy the work they get from owning an aquarium, but this is different for users who own these aquatic pets for their esthetics or their addition to a calm environment. For these users it would be useful to create a system that takes care of the fish, such that the user can enjoy their fish not worrying about anything. A common response as well for any other extra functionaly in the system was to incoperate feeding facilities this is a good option and can be implemented using the <Time.h> library in Arduino alongside a servo motor, the time library in Arduino can "count" time in a background thread whilst the servo motor can spin and "drop" food at the time specified on the app which the information for this is sent to the Arduino via BLE. | |||
_____________________________________________________________________________________________________________________________________ | |||
== Research on aquarium environment parameters and optimal conditions for ornamental fish == | |||
As the selected user group for this project is home owners with ornamental fish aquariums and aquarium stores that may also breed their indoor ornamental fish, the optimal conditions coincide for these user groups as they all involve small scale indoor freshwater aquariums as the environment. The water condition factors that affect general living and breeding conditions of ornamental fish are temperature, hardness/softness, pH, ammonia concentration, chlorine concentration, carbon dioxide and oxygen. | |||
'''Temperature of the water''' | |||
The temperature of a fish tank is usually a main concern during the transport and introduction of new fish due to risks of thermal shocks the fish can get that can be caused when a rapid change to the temperature in their environment occurs<ref name=":1">https://www.researchgate.net/publication/268195853_Aquarium_Water_Quality_Management</ref>. For general health and well being of fish, temperature requirements are split into two types: cold water fish and tropical fish. Common cold water fish include gold fish, Koi and certain species of barbs, tetras and loaches. Common tropical fish include bettas, Guppies, Mollys and certain species of laches and tetras. These two types different types of fish should generally not be in the same aquarium due to the different temperature needs. While tropical fish can tolerate 21 °C up to 30 °C, the optimal conditions for tropical fish are 24°C to 27°C with 27°C to 28 °C being suitable for breeding of many types of tropical fish<ref name=":2"><nowiki>https://courseware.cutm.ac.in/wp-content/uploads/2020/06/Session-7-1.pdf</nowiki> short good info with table</ref>. Temperatures above 32°C, are detrimental to the health of most fish. As for cold water fish, they can tolerate from 15°C up to 24°C. With some specifies preferring temperatures lower than 15°C<ref>https://www.thesprucepets.com/aquarium-water-temperature-1381896</ref>. | |||
In cases of the fish tank temperature getting too low for the fish types, solutions include simply increasing the temperature of the room or installing water heaters that are generally heating coils enclosed in a glass tube. A water heater of 5 to 6 watts is required per gallon of water<ref name=":1" />. | |||
In cases of the fish tank’s temperature being too high, solutions include reducing artificial lighting over the tank or blocking out natural lighting, cooling down the room that the tank is present in, installing better filtration systems to cycle water faster and even simply running a fan on the water’s surface<ref><nowiki>https://fishlab.com/aquarium-temperature/</nowiki> non research paper website mainly about temperature and fish</ref>. | |||
'''Hardness of the water''' | |||
General hardness or total hardness refers to the measure of calcium and magnesium salts as well as other ions such as sulphites and chlorides of magnesium and calcium present in the water. Below 75 ppm water is considered as soft. From 75 to 150 ppm is moderately hard and 150 to 300 ppm is hard. Beyond that water is considered very hard. Most freshwater fish can thrive in a wide range of hardness and most of the time does not require any water treatment unless fish known to come from regions of extreme total hardness (either soft or very hard) is being raised (6). Water hardness anywhere from 100 to 300 ppm is known to be optimal for growth of most ornamental fish. Only when general hardness is below 12 ppm would require liming<ref name=":2" />. | |||
'''pH''' | |||
pH refers to a logarithmic scale of hydrogen ion (H<sup>+</sup>) concentration in aqueous solutions. For most ornamental fish, a pH of 7 to 8 is suitable for growth, breeding and general health<ref name=":3">https://www.researchgate.net/publication/339285368_Importance_of_Optimum_Water_Quality_Indices_in_Successful_Ornamental_Fish_Culture_Practices</ref>. But the pH levels must never fall below 5 and raise above 8.5 for aquarium water. Certain ornamental fish prefer slightly acidic water (with pH of 6.2 to 7) such as rosy barb, tiger barb, tetra, angel and daino. Fishes like koi, goldfish and cichlids prefer slightly alkaline water<ref name=":2" />. pH can be increased if necessary with doses of calcium hydroxide and decreased if necessary with acids like hydrochloric acid. | |||
'''Ammonia concentration''' | |||
Fish waste contains many end products of nitrogen metabolism such as uric acid, urea ammonia. With ammonia being one of the most hazardous to fish. In water, ammonia exists as either NH<sub>3</sub> in its gaseous state or in an ionized state as NH<sub>4</sub>+. It is the unionized state (NH<sub>3</sub>) that is harmful to fish as it damages gills and causes fish to gape for air at the water surface (although other issues could also lead to similar symptoms). According to Subhendu Datta’s paper on aquarium water quality management, 0.4 ppm of NH<sub>3</sub> is considered acute toxicity level meaning a short term or single dose can be lethal. While 0.05 ppm of NH<sub>3</sub> with long term exposure can lead to the above mentioned symptoms. Damage to gills can already occur at 0.25 mg/lt <ref name=":1" />. Ammonia poisoning is mainly a concern when the fish tank is first established and still lacks a strong cultivation of bacteria that break down these harmful compounds. These bacteria mainly reside in the filters of the water cycling and filtering system and hence require ample time with batches of feeder fish before the ornamental fish can be introduced to an aquarium. The ideal ammonia concentration in the system should be trace amounts (it should be noted that ammonia testing kits usually measure both NH<sub>3</sub> and NH<sub>4</sub> combined). In events of sudden ammonia spikes, fish should be transferred to other tanks (being mindful of the necessary procedures to avoid thermal shocks) and allow the bacteria load to increase and break down the ammonia. Other discouraged solutions include using ammonia detoxifiers<ref name=":1" />. | |||
Other than when the aquarium is first established, ammonia concentrations can also increase when too many fish are added at once, the fish tank is heavily populated, the filtration system is not functioning properly or is insufficient and when the fish are being overfed. Apart from factors that increase ammonia concentration, the toxicity of ammonia can also increase at higher water temperatures and pH levels above 7.0<ref>https://www.aqueon.com/articles/freshwater-aquarium-water-quality</ref>. This is because the equilibrium between NH<sub>3</sub> and NH<sub>4</sub>+ is dependant of pH and temperature and yield of NH<sub>3</sub> is preferred at higher temperatures and pH which should be taken into account as NH<sub>3</sub> is 300 to 400 times more toxic to fish than NH<sub>4</sub>+<ref name=":3" />. | |||
'''Chlorine concentration''' | |||
Tap water is a readily available source of clean water that can be used to fill fish tanks. However, the main issue with this is chlorine content in tap water. Chlorine amounts as low as 0.1 ppm is enough to be considered toxic for most ornamental fish<ref name=":2" />. However, this can easily be solved by letting the water sit in the tank for a few days to let the chlorine escape and make the water suitable for fish. Aerating the water with air pumps can greatly help this process. Alternatively, if time is of concern then the water can also be treated with commercially available chemicals such as sodium thiosulphate<ref name=":1" />. Once initially dealt with, chlorine concentrations do not need to be monitored unless more tap water is added when water changes. | |||
'''Dissolved Oxygen''' | |||
For warm water fishes, the recommended level of dissolved oxygen is 4 to 5 mg per litre. Dissolved oxygen may be a crucial to monitor as low dissolved oxygen levels may stunt growth, affect feeding and can lead to hypoxia. This causes high levels of stress for the fish and cellular damage (1). To prevent this, most aquarium systems have a aerators. The capacity and amount of aerators required depends on the volume of water and is always indicated by the product’s description. So as long as ample aeration is occurring in the system, the use of analog dissolved oxygen monitors may be omitted as they are expensive and inessential for home users keeping ornamental fish. | |||
'''Refrences:''' | |||
== Functional specifications and requirements == | == Functional specifications and requirements == | ||
Due to the limited time and resources for this project, we decided to only focus on a few water parameters to monitor and control. Our system will therefore monitor pH, temperature and turbidity, and will act upon temperature via a heater. It will also dispense a certain quantity of food at a certain interval of time indicated by the user. | |||
'''Sensors''' | '''Sensors''' | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 149: | Line 236: | ||
|- | |- | ||
|R1 | |R1 | ||
|The system senses pH with an accuracy of at most ± 0. | |The system senses pH with an accuracy of at most ± 0.3pH | ||
|Must have | |Must have | ||
|- | |- | ||
Line 166: | Line 253: | ||
|R5 | |R5 | ||
|The system senses turbidity with an accuracy of at most ± 40 NTU | |The system senses turbidity with an accuracy of at most ± 40 NTU | ||
| | |Must have | ||
|- | |- | ||
|R6 | |R6 | ||
|The system senses turbidity at intervals of at most 1 minute | |The system senses turbidity at intervals of at most 1 minute | ||
| | |Must have | ||
|- | |- | ||
|R7 | |R7 | ||
|The system senses ammonia (NH3) concentration with an accuracy of at most ± 0.005 ppm | |The system senses ammonia (NH3) concentration with an accuracy of at most ± 0.005 ppm | ||
| | |Could have | ||
|- | |- | ||
|R8 | |R8 | ||
|The system senses ammonia (NH3) concentration at intervals of at most 1 minute | |The system senses ammonia (NH3) concentration at intervals of at most 1 minute | ||
| | |Could have | ||
|- | |- | ||
|R9 | |R9 | ||
Line 196: | Line 283: | ||
|- | |- | ||
|R11 | |R11 | ||
|The system dispenses the quantity of food specified by the user, with an precision of ± 0. | |The system dispenses the quantity of food specified by the user, with an precision of ± 0.25g | ||
|Must have | |Must have | ||
|- | |- | ||
Line 238: | Line 325: | ||
|- | |- | ||
|R20 | |R20 | ||
|The app allows the user to set food quantity and frequency | |||
|Must have | |||
|- | |||
|R21 | |||
|The app displays the time the fish have last been fed | |The app displays the time the fish have last been fed | ||
|Should have | |Should have | ||
|- | |- | ||
| | |R22 | ||
|In case of abnormal values, the app displays information on how to fix the problem | |In case of abnormal values, the app displays information on how to fix the problem | ||
|Should have | |Should have | ||
|- | |- | ||
| | |R23 | ||
|The app has different parameter presets for cold water and tropical fish | |The app has different parameter presets for cold water and tropical fish | ||
|Could have | |Could have | ||
|- | |- | ||
| | |R24 | ||
|The app displays information on different species of fish | |The app displays information on different species of fish | ||
|Could have | |Could have | ||
Line 259: | Line 350: | ||
!Priority | !Priority | ||
|- | |- | ||
| | |R25 | ||
|The main case have IPx4 water resistance | |The main case have IPx4 water resistance | ||
|Must have | |Must have | ||
|- | |- | ||
| | |R26 | ||
|The wires have IPx8 water resistance | |The wires have IPx8 water resistance | ||
|Must have | |Must have | ||
|- | |- | ||
| | |R27 | ||
|The system is powered by 12 V 2A barrel connector power supply | |The system is powered by 12 V 2A barrel connector power supply | ||
|Must have | |Must have | ||
|- | |- | ||
| | |R28 | ||
|The | |The system can easily and safely be attached to any cover-less, rectangular tank | ||
| | |Must have | ||
|} | |} | ||
Line 285: | Line 376: | ||
Actuators/sensors on all important water parameters. | Actuators/sensors on all important water parameters. | ||
== | == Design Of Our System == | ||
The choice has been made to make a all-in-one connected fish tank automation system. The system would keep track of the water temperature, pH, turbidity and ammonia levels. Temperature would be adjusted automatically with the activation of a heater if it falls below a threshold. Furthermore the system would dispense a certain amount of fish food at a certain frequency given by the user. The system would be a box to be attached at the top of a wall of the tank, just above the water. Temperature, pH, turbidity and ammonia sensors, as well as the heater would at the bottom of the system, submerged in the water. Inside of the box would be a microcontroller, a wi-fi module, and the food dispensing system, composed of an Archimedes screw controlled by a servo motor and a food tank. All of this would be enclosed in a 3D-printed case taking as less space as possible. | |||
We chose to let the pH control as a could have because of the difficulty to implement it. Indeed, there is no real way to automate with an actuator. The only possibility would be to dispensed pH product, but this would require a whole pumping system, making the system larger and significantly more expensive. Moreover the dosage would have to be extremely precise not to harm the fish. More generally, pH change in a aquarium is something that is usually done very precautiously, only a few times in a year, and often with a portion of the water being replaced as well, so it does not seem to really profit from automation. | |||
Likewise, we decided to let ammonia monitoring aside, since we already have quite a few parameters to monitor, and that ammonia sensors are quite expensive. | |||
This system would be coupled with a mobile app, on which the user would be able to see the parameters in real time and be notified if one of them is out of its normal range, with advice to fix them. The user would also be able to input parameters to decide on the quantity and frequency of food dispensed. It would also access other information on the fish tank like the time the fishes were last fed, or any alert if the system is malfunctioning. The communication between the app and the system can be done remotely from anywhere with the use of a database that stores the water parameters and other values of every device, which would be constantly updated by data from the respective sensors or user inputs. | This system would be coupled with a mobile app, on which the user would be able to see the parameters in real time and be notified if one of them is out of its normal range, with advice to fix them. The user would also be able to input parameters to decide on the quantity and frequency of food dispensed. It would also access other information on the fish tank like the time the fishes were last fed, or any alert if the system is malfunctioning. The communication between the app and the system can be done remotely from anywhere with the use of a database that stores the water parameters and other values of every device, which would be constantly updated by data from the respective sensors or user inputs. | ||
== App Design == | == App Design == | ||
[[File:Screenshotss.png|thumb|800x800px|The different pages of the app]] | |||
'''Design of the app''' | '''Design of the app''' | ||
To facilitate the user experience, the device is connected to an Android app. | |||
''First Design:'' | |||
The app contains eight possible pages, which include: the start page, a log-in and sign-up page, a profile page, page that contains all of the monitored aquariums, a page that shows graphs about parameters and an extra page that can be used to ask questions in case any problems arise. | |||
''' | ''Second design''The original design of the app has been modified according to the most important features for the user. The app was developed in Android Studio using Kotlin as the programming language. The final version of the app has four different pages. When first opening the app the user will be introduced to the main page ('Dashboard') where it can find all of the aquariums that were introduces on the profile. The user can always add aquariums if necessary. By clicking on an aquarium the user will be taken to a separate page that will contain statistics about the aquarium such as pH level, temperature etc. | ||
For a more personalized experience, the user can create a profile, where it can add personal details and a profile picture. It can also use Google accounts do directly create a profile. The profiles are added to a data base. The app is very easy to use. The user can navigate from page to page using the menu that can be found at the bottom of the page. | |||
The notifications of the app will be displayed on a separate page. In this way the user will be up-to-date to any modifications regarding the parameters, or in case any interventions may arise. | |||
== IP-code for safeness == | == IP-code for safeness == | ||
Our design will have to meet certain standard to be able to operate safely close to the water. This is needed for the fish’s and user’s protection. There are certain requirements defined by the European union on levels of protection against multiple factors. This ingress protection code is useful for finding viable sensors and actuators for our project. The IP-code is build up out of multiple layers. Generally the code looks like : IPXXA, with X being a number and A a letter. If there isn't any specified value, the x will either remain or be left out (if on the end of the code). The first X can have levels from 0 to 6, representing different levels of dust-resistance. The second 0-9 levels is for water-resistance. | Our design will have to meet certain standard to be able to operate safely close to the water. This is needed for the fish’s and user’s protection. There are certain requirements defined by the European union on levels of protection against multiple factors. This ingress protection code is useful for finding viable sensors and actuators for our project. The IP-code is build up out of multiple layers. Generally the code looks like : IPXXA, with X being a number and A a letter. If there isn't any specified value, the x will either remain or be left out (if on the end of the code). The first X can have levels from 0 to 6, representing different levels of dust-resistance. The second 0-9 levels is for water-resistance. | ||
Line 411: | Line 420: | ||
|} | |} | ||
If the microcontroller is placed on the outside of the tank, there will only be splashing water from time to time. Therefor there will be less need for good water resistance. IPx8 requires an object to be functional when submerged for longer periods. This should always be specified by the manufactures. For our project, it will be necessary to aim for the longest durability possible. A 3d printed casing for the microcontroller and small tubes for the wires will be useful for their water resistance. It is important to create no expose from the copper wires or any other electrical connection to the water, as this could have consequences. | If the microcontroller is placed on the outside of the tank, there will only be splashing water from time to time. Therefor there will be less need for good water resistance. IPx8 requires an object to be functional when submerged for longer periods. This should always be specified by the manufactures. For our project, it will be necessary to aim for the longest durability possible. A 3d printed casing for the microcontroller and small tubes for the wires will be useful for their water resistance. It is important to create no expose from the copper wires or any other electrical connection to the water, as this could have consequences. | ||
Different materials could be used to ensure a water-resistant casing. High density plastics created in a vacuum are particularly good at keeping out water. | |||
Other materials like wood could be used, but need a coating to ensure water resistance. | |||
To create a watertight seal, there are multiple options. We could choose to apply a liquid coating, which is quite cheap, but needs to be applied multiple times. | |||
The liquid tape should be applied with a brush, and should rest for half an hour before applying the next layer. | |||
Another option would be to use self fusing silicon tape. This tape is made from a special cured rubber, which sticks to itself with ease. It is easy to apply and could be used to protect the wires from water. | |||
The wires can be wrapped in the tape, which will create a water tight seal after a couple minutes. The tape should be used to seal of connections, as it only sticks to itself. | |||
Multiple layers should be applied, this will create a firm watertight connection. | |||
epoxy gels or coatings are used in a lot of different situations. These are applied when liquid, but get solid to create a watertight seal. | |||
Rubber rings or strips are also watertight. They could be used to seal of the entrances as well. it will be hard producing such rings that fit, as a bundle of wires could have a irregular shape. | |||
<nowiki>https://thecavepearlproject.org/2023/03/17/waterproofing-your-electronics-project/</nowiki> | |||
Like shown in the following article, water and living creatures have an influence on the materials. Hard casings with connections like screwcaps are good options. | |||
The final options for sealing the electronics are potting them, coating them or using a hard casing. | |||
Tape can be used to seal of excess gaps or connections. | |||
== Sensors == | == Sensors == | ||
Line 556: | Line 592: | ||
The database could be organised in the following way: each record would be uniquely identified by a deviceID that is bound to a physical deviced and is shipped with it to users. Users could then enter it in the app when they set up the device to reference it. This way they are able to control several different devices from the app. In each record there would also be all the current and desired water parameter values, as well as other useful values such as the time the parameters were last measured, the time the food was last dispensed, or a boolean value indicating if the system is still functioning correctly. These values can then be accessed to read or write by both the Arduino and the mobile app, which are linked by the deviceID. | The database could be organised in the following way: each record would be uniquely identified by a deviceID that is bound to a physical deviced and is shipped with it to users. Users could then enter it in the app when they set up the device to reference it. This way they are able to control several different devices from the app. In each record there would also be all the current and desired water parameter values, as well as other useful values such as the time the parameters were last measured, the time the food was last dispensed, or a boolean value indicating if the system is still functioning correctly. These values can then be accessed to read or write by both the Arduino and the mobile app, which are linked by the deviceID. | ||
The Firebase Real Time Database is organized in a tree-like manner where each node is a associated with a number of children nodes, the database object being the root node. In this format, each device is a direct children of the root node, identified by its unique deviceID, and its children are the following attributes: | |||
- ''desiredTemp,'' the desired water temperature set by the user, | |||
- ''currentTemp'', the last recorded water temperature, | |||
- ''pH,'' the last recorded pH, | |||
- ''turbidity'', the last recorded turbidity | |||
- ''desiredFoodMass'', the desired food mass to de dispensed at each cycle of the feeding process, | |||
- ''desiredFoodInterval'', the desired interval at which fishes are fed. | |||
- ''malfunction,'' a boolean indicating if the device is malfunctioning | |||
-''lastFedTime'', the date and time at which the fish have last been fed | |||
== Equations To Model Temperature == | == Equations To Model Temperature == | ||
Line 582: | Line 636: | ||
Q<sub>ev</sub>/dt is the amount of heat lost due to evaporation. Evaporation will be the main cause of heat loss, and will cause drops below room temperature. Therefor the heater will need to help bring the system back to room temperature. | Q<sub>ev</sub>/dt is the amount of heat lost due to evaporation. Evaporation will be the main cause of heat loss, and will cause drops below room temperature. Therefor the heater will need to help bring the system back to room temperature. | ||
'''Q<sub>ev</sub>/dt = h<sub>fg</sub> * A* (P-P<sub>vapor</sub>)''' | '''Q<sub>ev</sub>/dt = h<sub>fg</sub> * A* (P-P<sub>vapor</sub>) = c2''' | ||
H<sub>fg</sub> is the evaporation heat of water, O the evaporation coefficient, A the surface area and P the humidity ratio. This is specific for each water temperature, which creates a difficult differential equation (as the formula for P is difficult). It is better to take an average value for the temperatures the system will lay around. | H<sub>fg</sub> is the evaporation heat of water, O the evaporation coefficient, A the surface area and P the humidity ratio. This is specific for each water temperature, which creates a difficult differential equation (as the formula for P is difficult). It is better to take an average value for the temperatures the system will lay around. | ||
Line 588: | Line 642: | ||
The heater will be able to transfer a certain amount of energy into the tank. For this it will need to heat up and cool down. We can use the formula to predict when to power the heater to end up at the right temperature each time. When the power is switches off, there is an finite amount of heat or energy still left inside the plate, this plate will then cool off until it reaches the same temperature as the water, during which this energy transfers into the water. This could be tested, so the formula is adjusted/shifted. | The heater will be able to transfer a certain amount of energy into the tank. For this it will need to heat up and cool down. We can use the formula to predict when to power the heater to end up at the right temperature each time. When the power is switches off, there is an finite amount of heat or energy still left inside the plate, this plate will then cool off until it reaches the same temperature as the water, during which this energy transfers into the water. This could be tested, so the formula is adjusted/shifted. | ||
'''T(t) = (e^(-k t) P)/(-A U + c k m) + (-c2 + P)/(A U) + e^(-((A U t)/(c m))) ((c2 - P)/(A U) + P/(A U - c k m) + T0 - Te) + Te''' | |||
P is the maximum power of the heater, A the surface area the tank could lose heat through. A bigger tank will lose less heat relative to a smaller tank, as the surface area / volume ratio is bigger. c2 is the energy lost per time due to evaporation. As stated this should be constant for small disturbances in T. Te is the environmental temperature, and T0 the starting temperature. | |||
t=0 gives T0 and t-> inf gives T=Te +(P-c2)/(A U) | |||
A and U can be large, which shows that sufficient power is needed to heat a system to a high temperature. Normally U lays around 10, as air does not take up a lot of heat due to conduction. | |||
The model does not make any sense for t < 0, so this can be left out. For aquarium that remain room temperature, a material like glass should be chosen, as it lets through heat more easily. IF the desired temperature is above room temperature, a strong heater and a different material is needed, like acrylic. Heating for longer periods will eventually reach the limit temperature. | |||
temperature spreading through a body can be described by the heat equation. If u(t,x,y,z) gives the temeprature in time and space, du/dt = a*▼<sup>2</sup> u , with ▼<sup>2</sup> the Laplacian operator. Heat spread can be influenced by a lot of factors, like movement of the water through the tank. Therefor it is hard to estimate the temperature in different parts of the tank. Therefor no exact calculation can be done. As can be seen in the temperature model, it is hard to reach a high temperature/ it will take long. If the heater is heating too much for a short period of time, this wont have any big influence. | |||
The heater plate itself is small in size. When the power of the heater is turned of, the only energy that will still enter the water is that which is already inside the plate, determined by its temperature, specific heat and mass. The temperature could be big, but the mass and specific heat won't be, and so an overshoot will not happen. | |||
== Equations To Model PH == | == Equations To Model PH == | ||
'''pH = -log(H+)''' | '''pH = -log(H+)''' | ||
Line 660: | Line 728: | ||
'''Q<sub>mass</sub> =''' '''π/4*φ*(D<sub>o</sub><sup>2</sup>-D<sub>i</sub><sup>2</sup>)*S*n/60*ρ''' | '''Q<sub>mass</sub> =''' '''π/4*φ*(D<sub>o</sub><sup>2</sup>-D<sub>i</sub><sup>2</sup>)*S*n/60*ρ''' | ||
Finally, to determine the amount of time t the motor is activated for in seconds, assuming a fixed rotational speed, we divide the needed food mass m by the conveyor capacity: | Finally, to determine the amount of time t the motor is activated for in seconds, assuming a fixed rotational speed, we divide the needed food mass m by the conveyor capacity: | ||
Line 672: | Line 738: | ||
== Circuit Diagram == | == Circuit Diagram == | ||
work | [[File:Circuit Diagram.png|thumb|475x475px|Circuit Diagram]] | ||
To work the whole system, different compoents are invovled. For the PID control a S8050 npm transistor was used with the left terminal being connected to a 10k ohm resistor to the VIN pin (to get 12V power supply) and the gate of the IRFZ44N mosfet. The middle terminal was chosen to be connected to the digital PWN pin 2 and the right terminal is connected to the source of the mosfet. The mosfets drain is connected to one terminal of the 12V heeating plate and the other temrinal of the heating plate is also connected to the VIN pin for 12V power supply. The other components such as the turbidity sensor, servo motor and the ph sensor were connected as expected to the arduino with one wire to a common ground (shared on a breadboard taken from the Arduino) and another wire to a common 5V output (shared on a breadboard taken from the Arduino) and the last wire to a chosen digital PWN pin on the arduino. The temperature sensor was a little different, the ground was connected to the common ground (shared on a breadboard taken from the arduino) however in between the 5V pin of the temperature sensor and the data pin there was a 4.7k ohm resistor placed to allow the temperature sensor to "read the data" and then the data pin was connected to any digital PWN pin and the 5V pin was connected to the common 5V channel on the breadboard. | |||
== Power Source == | == Power Source == | ||
The power source that will be used for this project depends on factors around the specification of the project as well as the parts that are going to be used in order to create the final prototype. We specify the constraints that will determine what kind of power source will be appropriate for this project below. | The power source that will be used for this project depends on factors around the specification of the project as well as the parts that are going to be used in order to create the final prototype. We specify the constraints that will determine what kind of power source will be appropriate for this project below. | ||
Line 684: | Line 750: | ||
- temperature sensor | - temperature sensor | ||
- Turbidity sensor | - Turbidity sensor | ||
Line 693: | Line 757: | ||
The microcontroller chosen will be a variant of the Arduino board, Arduino boards including both nano and uno require a minimum input voltage of 7V and a maximum of 12V. Arduino uno models all have a 5V output pin as well as 3.3V pins. The pH, turbidity and ammonia sensors can all operate with 5V minimum however the temperature sensor can operate using just the 3.3 volt pin. Based on these power requirements, we can power all of the sensors in two configurations, either powering all of the sensors in parallel off the 5V pin or powering all sensors but the temperature sensor with 5V pin while powering the temperature sensor with the 3.3V pin. This can be done on all uno boards, some IoT nano boards however only have a 3.3V pin, these can hence not be used. | The microcontroller chosen will be a variant of the Arduino board, Arduino boards including both nano and uno require a minimum input voltage of 7V and a maximum of 12V. Arduino uno models all have a 5V output pin as well as 3.3V pins. The pH, turbidity and ammonia sensors can all operate with 5V minimum however the temperature sensor can operate using just the 3.3 volt pin. Based on these power requirements, we can power all of the sensors in two configurations, either powering all of the sensors in parallel off the 5V pin or powering all sensors but the temperature sensor with 5V pin while powering the temperature sensor with the 3.3V pin. This can be done on all uno boards, some IoT nano boards however only have a 3.3V pin, these can hence not be used. | ||
The prototype also requires additional components that will draw power outside of the sensors. These components are the heater plate as well as the servo motor. The servo motor requires 5V of power and can hence be connected to the 5V pin as well along with the other sensors. The heater plate requires 12V of power meaning that it cannot be powered by the Arduino. The heater needs to be powered by an external power supply. It is a possibility to use a step up buck convertor to convert the 5V input to 12V but then the current drawn by the 5V pin would exceed the | The prototype also requires additional components that will draw power outside of the sensors. These components are the heater plate as well as the servo motor. The servo motor requires 5V of power and can hence be connected to the 5V pin as well along with the other sensors. The heater plate requires 12V of power meaning that it cannot be powered by the Arduino. The heater needs to be powered by an external power supply. It is a possibility to use a step up buck convertor to convert the 5V input to 12V but then the current drawn by the 5V pin would exceed the Arduino’s limit potentially and also buck convertors generate a lot of heat under such intense application which would not be desirable. | ||
A good solution in order to power the entire circuit would be to power both the Arduino and it’s connected sensors and components as well as the heater in parallel. This can be done as both the Arduino as well as the heater can take 12V of power. The maximum rating of the Arduino is 12V, hence the rating can be met. | A good solution in order to power the entire circuit would be to power both the Arduino and it’s connected sensors and components as well as the heater in parallel. This can be done as both the Arduino as well as the heater can take 12V of power. The maximum rating of the Arduino is 12V, hence the rating can be met. | ||
There are two ways to power the entire circuit and they depend on the use cases, one would be if the product can be connected to a power outlet, in that case it would be possible to use a cheap 12 V 2A barrel connector power supply that can be connected to the wall. The cable would need to be sliced and an additional wire would need to be soldered to the power supply in order to power the heater plate in parallel. Another possibility could be to use a pack or rechargeable cells that have a total power output of 12V. This could be done using regular alkaline battery cells/ rechargeable cells in parallel. Another solution could be to use a Li-Po battery pack however these would require a BMS circuit in order to prevent the battery from overcharging and undervoltage problems. | There are two ways to power the entire circuit and they depend on the use cases, one would be if the product can be connected to a power outlet, in that case it would be possible to use a cheap 12 V 2A barrel connector power supply that can be connected to the wall. The cable would need to be sliced and an additional wire would need to be soldered to the power supply in order to power the heater plate in parallel. Another possibility could be to use a pack or rechargeable cells that have a total power output of 12V. This could be done using regular alkaline battery cells/ rechargeable cells in parallel. Another solution could be to use a Li-Po battery pack however these would require a BMS circuit in order to prevent the battery from overcharging and undervoltage problems. | ||
== Acceptance test plan == | |||
Requirements 1, 3, 5, 7, 14, 15 and 27 are internal to the already existing components and are therefore satisfied, since the components have been chosen based on them. | |||
Requirements 7, 8, 13, 23 and 24 are could haves and were not implements. They are still included in the test plan for completeness. | |||
{| class="wikitable" | |||
!ID | |||
!Description | |||
!Precondition | |||
!Action | |||
!Expected Output for Success | |||
|- | |||
|R2 | |||
|The system senses pH at intervals of at most 1 minute | |||
|The system is correctly positioned with the pH sensor submerged in water, and the system is powered. | |||
|Pour pH product in the water, and monitor the pH value on the app. | |||
|The pH value changed after at most 60 seconds. | |||
|- | |||
|R4 | |||
|The system senses temperature at intervals of at most 1 minute | |||
|The system is correctly positioned with the temperature sensor submerged in water, and the system is powered. | |||
|Pour boiling water in the tank, and monitor the temperature value on the app. | |||
|The temperature value changed after at most 60 seconds. | |||
|- | |||
|R6 | |||
|The system senses turbidity at intervals of at most 1 minute | |||
|The system is correctly positioned with the turbidity sensor submerged in water, and the system is powered. | |||
|Pour some colored powder (e.g. coffee powder) in the water, and monitor the temperature value on the app. | |||
|The turbidity value changed after at most 60 seconds. | |||
|- | |||
|R8 | |||
|The system senses ammonia at intervals of at most 1 minute | |||
|The system is correctly positioned with the ammonia sensor submerged in water, and the system is powered. | |||
|Pour ammonia solution in the water, and monitor the ammonia value on the app. | |||
|The ammonia value changed after at most 60 seconds. | |||
|- | |||
|R9 | |||
|The sensors have IPx8 water resistance | |||
|None | |||
|Submerge the sensors in water for an hour. | |||
|The sensors show no water damage or moisture on them, and they output the correct values. | |||
|- | |||
|R10 | |||
|The system always stabilizes the water temperature at at most 3 ° C below the temperature set by the user, | |||
assuming this temperature is between 10° C and 30° C, the room temperature is at least 25° C | |||
|The room temperature is at least 25° C, and the system is powered. | |||
|Set a desired temperature on the app between 10° C and 30° C, and monitor the temperature value on the app. | |||
|The water temperature increases continuously before staying higher than ''desiredTemperature'' - 3. | |||
|- | |||
|R11 | |||
|The system dispenses the quantity of food specified by the user, with an precision of ± 0.25g | |||
|The food container contains at least the quantity specified in the app, and the system is powered. | |||
|Input a desired food quantity in the app, with a small feeding interval (e.g 1 min). Collect the dispensed food and weigh it. | |||
|The mass of the dispensed food is between ± 0.5g of the given interval. | |||
|- | |||
|R12 | |||
|The system dispenses food a the interval specified by the user | |||
|The food container contains at least twice the quantity specified in the app, and the system is powered. | |||
|Input a desired food quantity and feeding interval in the app. Start a timer when the food is dispensed a first time, and stop it when the food is dispensed a second time. | |||
|The measured interval is equal to the one specified in the app. | |||
|- | |||
|R13 | |||
|The system keeps the pH within ± 0.5pH of the value specified by the user | |||
|The system is correctly positioned with the temperature sensor submerged in water, and the system is powered. | |||
|Set a desired pH in the app | |||
|The pH increases/decreases continuously before staying within ± 0.5pH of the desired value | |||
|- | |||
|R16 | |||
|The heater plate has IPx8 water resistance | |||
|None | |||
|Submerge the heater plate in water for an hour. | |||
|The heater plate shows no water damage or moisture on it, and still produces heat. | |||
|- | |||
|R17 | |||
|The app displays the last registered water parameter values | |||
|The system is correctly positioned with the sensors submerged in water, the system is powered and connected to a computer. | |||
|Add a line in the code to print the water parameters when they are sensed, then run the program. | |||
|The pH, temperature and turbidity values in the app are the same than the respective one printed on the computer. | |||
|- | |||
|R18 | |||
|The app allows the user to preset water parameters | |||
|None | |||
|Add an aquarium in the app and open its dashboard page. Fill the desired temperature. Close the app, open it again and go back to the aquarium dashboard. | |||
|The previously filled in value is still in the app, and is enforced by the system (see R10) | |||
|- | |||
|R19 | |||
|In case of abnormal value, the app sends a notification to the user | |||
|The system is correctly positioned with the sensors submerged in water, and the system is powered. | |||
|Register the aquarium in the app. Then pour boiling/cold water, pH product or colored powder in the water, open the notification panel of the aquarium in the app. | |||
|A push notification appears on the phone, with a message containing the corresponding abnormal parameter. The notification also appears in the panel. | |||
|- | |||
|R20 | |||
|The app allows the user to set food quantity and frequency | |||
|None | |||
|Add an aquarium in the app and open its dashboard page. Fill the desired feeding quantity and interval. Close the app, open it again and go back to the aquarium dashboard. | |||
|The previously filled in values are still in the app, and are enforced by the system (see R11, R12) | |||
|- | |||
|R21 | |||
|The app displays the time the fish have last been fed | |||
|The system is powered. | |||
|Add an aquarium in the app and open its dashboard page. Fill the desired feeding quantity and interval. Monitor the value displayed in the "last feeding time" field. Wait for the device to dispense food, monitor the current time and look at the value again. | |||
|The "last feeding time" value changed and now displays the time when the food was dispensed. | |||
|- | |||
|R22 | |||
|In case of abnormal values, the app displays information on how to fix the problem | |||
|The system is correctly positioned with the sensors submerged in water, and the system is powered. | |||
|Register the aquarium in the app. Then pour boiling/cold water, pH product or colored powder in the water, open the notification panel of the aquarium in the app. | |||
|The push notification and the notification in the panel display a message on how to fix the corresponding problem. | |||
|- | |||
|R23 | |||
|The app has different parameter presets for cold water and tropical fish | |||
|None | |||
|Add an aquarium in the app and open its dashboard page, then the preset button, and choose a fish type. | |||
|The displayed desired water parameters have changed for the ones of the chosen fish type, and these parameters are enforced by the system (see R10, R13) | |||
|- | |||
|R24 | |||
|The app displays information on different species of fish | |||
|None | |||
|Add an aquarium in the app and open its dashboard page, then the information button, and choose a fish species. | |||
|Information on the chosen fish species is displayed | |||
|- | |||
|R25 | |||
|The main case have IPx4 water resistance | |||
|The case is closed. | |||
|Spray water from all directions on the main case for 10 minutes. | |||
|The inside of the case contains no water, and does not show signs of discoloration, deformation, or other physical changes. | |||
|- | |||
|R26 | |||
|The wires have IPx8 water resistance | |||
|None | |||
|Submerge the wires in water for an hour, leaving both ends above the surface. | |||
|The wires show no water damage or moisture on it, and the wire still transmits current. | |||
|- | |||
|R28 | |||
|The system can easily and safely be attached to any cover-less, rectangular tank at least 15cm deep | |||
|None | |||
|Position the system on a cover-less, at least 15cm deep rectangular tank | |||
|The system stays horizontal and does not move. | |||
|} | |||
== Implementation and Testing == | |||
After printing the 3d model, we sanded the parts and glued them together. We then attached the sensors to the case by putting them through their corresponding hole and gluing them with waterproof sealant, before we tidied the wires and attached them together. We also drilled a hole for the Arduino power jack and the sensors and motor wires. After that we calibrated the sensors to get the correct values. | |||
[[File:Prototypee.jpg|thumb|800x800px|The prototype on a box simulating a fish tank (the tape is temporary while waiting to glue the lid)]] | |||
==== Testing ==== | |||
Most of the requirements (2, 4, 9, 12 ,16, 17, 18, 19, 20, 21, 22, 25, 26, 28) were satisfied at the first testing iteration, however more work was needed to satisfy 6, which is the turbidity sensing. | |||
This was due to the fact that the turbidity sensor was really sensitive which made the output values very inconsistent, independent of the actual water cleanliness. After trying the different relationships between the actual turbidity and the output voltage, we finally reached coherent results. The testing was done by progressively pouring coffee powder in the water. | |||
Requirement 10 was difficult to test because the heating process takes a long time in a real sized fish tank. This is due to the relatively low power of the heater plate, which is rather undersized for the kind of aquariums we are aiming for. Due to time constraints we decided to test is in a smaller water volume (4L) and use the equations described before to estimate the heating time in a real fish tank environment. Our estimation is that for a normal sized tank (40L), it would take approximately 1.5h to heat the aquarium by 1°C at around 24°C. This seems rather long but is actually better for the fish, as it would reduce the risk of thermal shock. Nonetheless, a more powerful heater would have given more adaptability and scalability of the system. | |||
Requirement 11 is on the food actual quantity dispensed compared to the value specified by the user in the app. Because fish usually require very low quantities of food, the dosage needs to be precise, so we decided to do 10 tests with different values. We used the equation described above to compute the time the motor has to rotate for. We measured the loading ratio, diameters and blade pitch and imputed them in the equation, but changed the values several times to get more accurate results. These are the results we got after tweaking the parameters, with a precise scale: | |||
{| class="wikitable" | |||
|+ | |||
!Expected value (g) | |||
!Actual value (g) | |||
|- | |||
|0.5 | |||
|0.74 | |||
|- | |||
|0.75 | |||
|0.96 | |||
|- | |||
|1 | |||
|1.17 | |||
|- | |||
|1.25 | |||
|1.48 | |||
|- | |||
|1.5 | |||
|1.72 | |||
|- | |||
|1.75 | |||
|1.89 | |||
|- | |||
|2 | |||
|1.90 | |||
|- | |||
|2.25 | |||
|2.34 | |||
|- | |||
|2.5 | |||
|2.34 | |||
|- | |||
|2.75 | |||
|2.53 | |||
|- | |||
|3 | |||
|2.78 | |||
|} | |||
This makes the mean absolute difference between the expected and actual value 0.2g, which is smaller than 0.25. Moreover no absolute difference exceeded 0.25g, so the requirement is satisfied. | |||
== Discussion and Conclusion == | |||
The goal of this project was to demonstrate that, although there is none on the market yet, it is possible to create an all-in-one aquarium manager robot. Our prototype achieves water monitoring, autonomous feeding, and water heating, all of this controlled by a mobile app, meaning that is actually improves the existing solutions in the market. It firstly took us some time to decide on the actual scope of the project, and we had to make several iterations and design decisions such as which water parameters to monitor and control, but we finally made a design that addressed the most important problems of fish tank managing and automating. We managed to physically implement all of the must and should have requirements and test them, all of this supported by litterature and physical equations. Moreover the final prototype should be relatively cheap, especially compared to the other products on the market, since the parts costed us around €150, which could be reduced by scale economies of scale if it were to be mass produced. The prototype nonetheless presents a few limitations. | |||
==== Limitations ==== | |||
The most important possible improvement of the system would be to automate other parameters such as the pH. However as stated above pH is quite hard to automate as it requires a lot of precaution and a lot more hardware such as pumps, which is not worth it considering that it only needs to be done once in a while, and often with a water change. A more feasible improvement would be to monitor the other parameters that we studied, such as ammonia or dissolved oxygen. This would give the user a more complete overview of the state of the tank, though it would make the system significantly for expensive, at least a few hundred euros more, as this is the price for the needed sensors. However, it would be relatively easy to add these functionalities, as most of the implementation could be reused from the other sensors. The Arduino and App code would be almost exactly the same, and our database design is easily expandable. Only the calibrating equations would have to be figured out. | |||
Another limitations of the current prototype is the heater plate. Because we wanted to power it together with the Arduino, we chose a small one with limited power. This causes the water to heat up quite slowly, which is not necessarily bad as it prevents thermal chocks. However this impacts the adaptability of the system, especially for larger tanks, as now the heater needs to always be on full power to be efficient. A larger plate would be a significant improvement to the system, however it would require a larger power supply, probably independent of the Arduino's, which would increase the cost and make the device larger. | |||
Moreover, another good improvement would be a notification on the app when the food container is nearly empty. This would make the system even more autonomous, since the user won't have top check regularly the food level. However to be require some sort of pressure or weight sensor in the funnel to check the amount of remaining food, which would be difficult to implement due to the steep slope of the funnel and the fact that the food is quite light, making it difficult to sense small amount of it. Another option would be to compute the total capacity of the container and substract the dispensed quantity, but this would require a) that the user always refills the container entirely, which is not guaranteed, b) that the amount of food dispensed is exactly as expected, and c) that the user indicated on the app that they have refilled the container. | |||
Finally, a limitation in our approach is the lack of feedback from potential users. Even though we made a survey to determine user needs, it only has a few answer, and me way need specific feedback from more involved people, such as fish shop employees or fish hobbyists. This would confirm or invalidate our assumptions on the most needed functionalities for our product.To address, this problem, it would be nice to support the technical tests with usability tests in order to get feedback from actual users and improve the design. | |||
==== Conclusion ==== | |||
During this project, we have explored in depth the issues in fish tank automating, which is way deeper than it seems as it involves many different areas and subjects. We had to learn about which water parameters affect the quality of life of fish, what are their suitable ranges, how to control them and which physical equations control them. We also learned a lot on databases, wi-fi communication, and application design and building. This multidisciplinary aspect of the project made it very interesting and engaging, though also quite challenging, as we had to gain knowledge in computer science, physics and biology at the same time, while also having the requirements of delivering a complete, working physical prototype. The initial idea was very broad and ambitious, and we did not implement every idea we had at the beginning, and an important part of the challenge was to decide on the scope and functionalities of the product. | |||
Our final prototype successfully addressed the main functionalities to automate a fish tank, combining hardware building and experimenting, physical theory and software design. We believe that it makes a significant improvement in the area by relieving the user from the most frequent and important tasks, which are now automated, while ensuring a good care of the animals. We also make all of this easy and intuitive for the user with the help of the app. All of this addresses our original problem of making fish caring easy and accessible to people with skills and time limitations. Furthermore, we think that it brings a lot of novelty on the market since there is simply no other device that monitors the water while controlling the temperature and also feeding the fish, all controlled by a mobile app. To improve it further, we suggest to conduct more testing and surveys from prototype user to improve it and make it for suitable to real situations. | |||
== Final Presentation == | |||
[[File:PresSlide2.jpg|thumb|391x391px]] | |||
[[File:PresSlide1.jpg|left|thumb|391x391px]] | |||
[[File:PresSlide3.jpg|left|thumb|391x391px]] | |||
[[File:PresSlide4.jpg|thumb|391x391px]] | |||
[[File:PresSlide6.jpg|thumb|391x391px]] | |||
[[File:PresSlide5.jpg|left|thumb|391x391px]] | |||
[[File:PresSlide7.jpg|left|thumb|391x391px]] | |||
[[File:PresSlide8.jpg|thumb|391x391px]] | |||
[[File:PresSlide10.jpg|thumb|391x391px]] | |||
[[File:PresSlide9.jpg|left|thumb|391x391px]] | |||
[[File:PresSlide11.jpg|left|thumb|391x391px]] | |||
[[File:PresSlide13.jpg|none|thumb|391x391px]] | |||
_____________________________________________________________________________________________________________________________________ | |||
== Sources With Summaries == | == Sources With Summaries == | ||
Line 935: | Line 1,284: | ||
|- | |- | ||
|Mara | |Mara | ||
| | |Feedback session (0.5 hrs), Research for app(2 hrs), Worked on the design in Figma (4 hrs) | ||
| | |6.5 | ||
|- | |- | ||
|Aseem | |Aseem | ||
Line 985: | Line 1,334: | ||
|- | |- | ||
|Mara | |Mara | ||
| | |Research on app development (2hrs), App development (5hrs), Meeting session (1 hrs) | ||
| | |8 hrs | ||
|- | |- | ||
|Aseem | |Aseem | ||
|Feedback session (0.5 hrs), meeeting (1 h), research on pH regulation for fish tanks (2 h), arduino code review (1 h), research on PDI for temperature control (5 hrs) | |Feedback session (0.5 hrs), meeeting (1 h), research on pH regulation for fish tanks (2 h), arduino code review (1 h), initial research on PDI for temperature control (5 hrs) | ||
| | |9.5 hrs | ||
|- | |- | ||
|Adrien | |Adrien | ||
|Feedback session (0.5 hrs), meeting (1 h), research on feeding mechanism (5h), formalize requirements (6h) | |Feedback session (0.5 hrs), meeting (1 h), research on feeding mechanism (5h), formalize requirements (6h) | ||
|12. | |12.5 hrs | ||
|- | |- | ||
|Nout | |Nout | ||
|feedback (0.5h), theory research and formula work(11h) | |feedback (0.5h), theory research and formula work(11h) | ||
|11. | |11.5 hrs | ||
|- | |- | ||
|Sanshray | |Sanshray | ||
|Conceptual Designing (4 hrs), Design Sketches (1 h), Component prototype modelling (8 hrs) | |Conceptual Designing (4 hrs), Design Sketches (1 h), Component prototype modelling (8 hrs) | ||
| | |13 hrs | ||
|- | |- | ||
| rowspan="6" |5 | | rowspan="6" |5 | ||
|Saqib | |Saqib | ||
| | |Feedback session (0.5 hrs), Meeting session (1.5 hrs), Learning about Firebase and the realtime Database (2 hrs), Implementing PID in code (2 hrs), Implementing connecting Arduino to Firebase via WIFI (2 hrs), Ziegler and Nichols Tuning Methods Learning (1 hrs) | ||
| | |9 hrs | ||
|- | |- | ||
|Mara | |Mara | ||
| | |Meeting session(1.5 hrs), App designs (features related to the design of the app using Photoshop) (1hrs), App development (6.5 hrs) | ||
| | |9 hrs | ||
|- | |- | ||
|Aseem | |Aseem | ||
| | |Feedback session (0.5 hrs), learning systems and control, PID and tuning (8 hrs), | ||
| | |8.5 hrs | ||
|- | |- | ||
|Adrien | |Adrien | ||
| | |Feedback session (0.5 hrs), Meeting session (1.5 hrs), Research on Firebase and realtime Database (3hrs), working on the app backend (4hrs) | ||
| | |9 hrs | ||
|- | |- | ||
|Nout | |Nout | ||
| | |Feedback session(0.5 hrs), Temperature modelling and plotting (8 hrs) | ||
| | |8.5 hrs | ||
|- | |- | ||
|Sanshray | |Sanshray | ||
| | |Feedback session(0.5 hrs), prototyping (7hrs) | ||
| | |7.5 hrs | ||
|- | |- | ||
| rowspan="6" |6 | | rowspan="6" |6 | ||
|Saqib | |Saqib | ||
| | |Feedback session (0.5 hrs), Meeting session (1 hrs), Worked on building circuit for PID and temperature (6 hrs), Verified and checked components and circuit for PH and turbidity (4.5 hrs) | ||
| | |12 hrs | ||
|- | |- | ||
|Mara | |Mara | ||
| | |App development (10hrs), Final presentation (0.5 hrs) | ||
| | |10.5 hrs | ||
|- | |||
|Aseem | |||
|Feedback session (0.5 hrs), Worked on building circuit for PID and temperature (6 hrs), research for arduino pinout and powering system in stand-alone mode and laptop connected (4 hrs) | |||
|11.5 hrs | |||
|- | |||
|Adrien | |||
|Feedback session (0.5 hrs), Meeting session (1 hrs), Database (2hrs), Connecting Arduino to Firebase (3hrs), Final presentation (4hrs) | |||
|10.5 hrs | |||
|- | |||
|Nout | |||
|feedbck session (0,5 hrs), improving wiki (5 hrs), waterproofing research (3 hrs) | |||
|8.5 hrs | |||
|- | |||
|Sanshray | |||
|Feedback session(0.5 hrs), circuit implementation(5 hrs), physical prototype construction(4 hrs) | |||
|9.5 hrs | |||
|- | |||
| rowspan="6" |7 | |||
|Saqib | |||
|Feedback session (0.5 hrs), Meeting and working in innovation space (4.5 hrs), Implementing code (5 hrs), Circuit diagram (1 hrs) | |||
|11 hrs | |||
|- | |||
|Mara | |||
|Feedback session(0.5 hrs), Implemented code (9hrs) | |||
|9.5 hrs | |||
|- | |||
|Aseem | |||
|Feedback session (0.5 hrs), Meeting and working in innovation space (4.5 hrs), assemble product (3 hrs) | |||
|8 hrs | |||
|- | |||
|Adrien | |||
|Feedback session (0.5 hrs), Meeting and working in innovation space (4.5 hrs), Connecting Arduino to Firebase (2 hrs), App coding (6 hrs), Building prototype (4hrs) | |||
|17 hrs | |||
|- | |||
|Nout | |||
|Feedback session (0.5 hrs), meeting (2 hrs), working on presentation (3 hrs), improving wiki (4 hrs) | |||
|9.5 hrs | |||
|- | |||
|Sanshray | |||
|Feedback session(0.5 hrs), Cad modelling(3 hrs), assembling final product in innovation space(6 hrs) | |||
|9.5 hrs | |||
|- | |||
| rowspan="6" |8&9 | |||
|Saqib | |||
|Connecting parts, creating product, glueing, soldering, optimizing code and paramters (feeding, temperature), testing, presentation work, demo video (15 hrs), Wiki Cleanup (2 hrs) | |||
|17 hrs | |||
|- | |||
|Mara | |||
|Prepared slides final presentation (4hrs), presentations session(2hrs), Preparation final presentation (2hr) | |||
|8 hrs | |||
|- | |- | ||
|Aseem | |Aseem | ||
| | |Working in innovation space on final product (assembly, tweaking, optimizing, testing etc.) (15 hrs), presentation session (2 hrs) | ||
| | |17 hrs | ||
|- | |- | ||
|Adrien | |Adrien | ||
| | |Working in innovation space on final product (assembly, tweaking, optimizing, testing etc.) (6 hrs), Shooting video demo (5 hrs), App coding (12 hrs), presentation session (2 hrs), working on wiki page (8 hrs) | ||
| | |33 hrs | ||
|- | |- | ||
|Nout | |Nout | ||
| | |working on wiki page (6hrs) | ||
| | |6hrs | ||
|- | |- | ||
|Sanshray | |Sanshray | ||
| | |Feedback session(0.5 hrs), assembling final product(8 hrs), testing final product(3 hrs), recording video(2 hrs), presentation session (2 hrs) | ||
| | |15.5 hrs | ||
|} | |} |
Latest revision as of 00:40, 12 April 2024
Members
Name | Student ID | |
---|---|---|
Aseem Mahamood | 1789767 | a.mahamood.aseem@student.tue.nl |
Sanshray Malhotra | 1792318 | s.malhotra1@student.tue.nl |
Nout Van Bommel | 1842110 | n.g.h.v.bommel@student.tue.nl |
Saqib Khan | 1783432 | s.a.s.khan@student.tue.nl |
Mara Pop | 1671820 | m.pop@student.tue.nl |
Adrien Verriele | 1710303 | a.a.m.verriele@student.tue.nl |
Introduction
Problem Statement:
Many homeowners have aquatic pets of certain kinds either for aesthetic reasons or out of genuine compassion for the animals. In the world of aquariums and fish, one of the most important things is ensuring healthy water conditions. There can be various reasons for people to wanting to own an aquatic pet. It can be difficult to ensure these parameters with insufficient knowledge or time constraints. An aquarium owner comes across various tasks and problems. Owning and maintaining a fish tank can be difficult. These include feeding schedules, water parameters, pH-levels and temperature. It can be difficult to test regularly and keep values on certain levels. All these factors can have negative impact on the fish their health and happiness. For many aquatic pet owners, it can be helpful to have a tool that takes care of the fish during periods of absence. This will prevent stress and illness among the animals in the tank.
Our proposed solution is an aquarium robot, that will be able to monitor and maintain water parameters, as well as feeding the fish. Our system aims to take away most difficulties that arise when owning an aquarium. This enables the user to ensure optimal chemical levels and temperature. Our system will be able to sense the tank its temperature, pH, turbidity and ammonia levels. The sensors are selected such that they will withstand the constant exposure to water and give accurate results. A microcontroller acts when certain levels get out of balance. Dispensing the correct amount of food on certain times during the day can be important too. The system will be able to dispense food when needed. By using Wi-Fi and an application, the system will be able to contact the user and send real-time values to the user. This and other actuators will ensure safe, preset values inside the aquarium. The user will get notified when a problem arises, and inform the user about its actions.
Objectives:
The objectives of our device are that:
- It should be slash resistant, only the sensors will get submerged.
- It should be safe for the fishes
- It should continuously collect sensor data (PH, temperature and ammonia concentration)
- It should be able to act when an issue arises
- It should inform the user via an app if there is an issue detected and state its action (high or low PH level, unstable water temperature, unsuitable ammonia concentration)
- The user should be able to set the optimal environment parameters for the aquarium (with initial recommendations for new users, maybe per species of fish)
- App should inform the user of potential solutions for the issue (if there are major issues/ problems)
- Inform the user once a time that everything is fine.
- Inform the user supplies are low (in case of pH control system, chemicals)
Users:
- Homeowners with Aquatic Pets: These users keep fish or any other aquatic creature simply for the sake of aesthetic enjoyment or as a hobby. They may have various levels of expertise when it comes to maintaining an aquarium's optimal condition, from beginners, who might lack detailed knowledge about the different needs of their aquatic pets, to enthusiasts with plenty of experience.
- Veterinary Clinics: Professionals who provide medical care or rehabilitation for aquatic animals could use the system to monitor and ensure the health of their aquatic patients.
- Educational institutions: Institutions such as schools and universities that use aquariums for educational purposes may benefit from the device to teach students about marine life care
- Maintenance Services: Experts who have to maintain aquariums for clients could use the device to provide excellent quality services while ensuring long-term health and stability to the aquariums.
What Do The Users Require:
- Ability to remotely track and monitor environmental changes such as pH, water temperature and ammonia concentration in the fish tank through an application on their phone or websites.
- Ability for them to set their own ideal parameters in the application (with suggestions of what these ideal parameters could be for certain scenarios).
- Alerts and suggestions on what to do when parameters are far from ideal.
- Autonomy and trustworthiness of the system
Planning:
The planning is provisional and will most likely change slightly to further complement with the project and the limited time.
week 2:
Specify exact scope of the project (use papers to select a project we will build upon or improve)
create plan, find feasible assignments for everyone to work on
Come up with idea/concept (everyone should think about new, out-of-the-box designs)
Functional specifications should be made based on the needs of our users, underpinned by arguments
week 3:
deadline for finishing full planning
a final design should be selected to work on
tasks should be divided for each to work on
research on parts and software
research on concepts and specifications
write formal technical specifications and requirements
week 4:
Create UML diagrams
Design user interface
Order parts
Work on the wiki
arduino code
week 5,6&7:
Implement software
Build hardware
Testing
week 8:
Improve prototype base on testing
Work on final presentation
Finalize prototype and wiki
State-of-the-art
As long as there exists a problem, people will try to fix it. There have been numerous researches that have addressed this problem. Of course there is a big economic part in the world of fish farming and large aquariums. These large lakes, ponds or tanks need big quantities of supplements and equipment. The famers can have a hard time keeping track of tank-parameters. There have been multiple researchers addressing this problem, mostly by creating a monitoring system, which monitors one or multiple parameters in the tank. Paper [1] highlights another problem in this world, which has to do with food and waste reduction. For farmers it can be economically beneficial if less food is needing. This can be achieved by a system of sensors and actuators. In all problems, the measured water parameters get send to the user, an can be accessed using an app [2].
Likewise, researchers have done projects on aquarium monitoring. These projects address the same problem, stating the difficulties an aquarium owner can encounter. Again most projects focus on monitoring one or more parameters and sending these to the user [6],[13]. Small sensors are boing used to measure pH and ammonia. These sensors are useful because of there size, price and accuracy. There are various ways to build upon the existing research in aquarium management. Automation of the control of these parameters is a good build upon the existing ideas. There has been a team that tried to achieve this, creating an automating feeding system [8]. This system is able to add food to the tank when needed, and results show active control on the food supplied.
The rapid development of new, cheaper sensors makes it possible to create systems that can support aquarium owners [14]. This development is crucial in allowing the creating of these systems. More extended sensors are also worked on, to allow the monitorization of fish farms [12].
Current products on the market:
Superfish Aquarium Start 70: This is a self-contained automated aquarium specifically targeted to beginners with tropical fish. It contains a heater, thermometer, filter and LED lighting. However only nothing is automated except for the filter, and everything coming with the actual tank means no possibility for the user to choose a different size. The whole kit costs €90.
ReefATO+: This is a system to add to an already existing tank. It monitors water level and temperature, and sends notification to the user via a mobile app in case these values are out of a predefined range. It also pumps the water and detects leak. It costs €200.
The company Neptune Systems also provides a large range of Aquarium automation products, among which one can find:
A3 Apex Jr Aquarium Controller: This system is composed of water and pH sensors, a water level sensor and a leak detector. It sends all of the collected information to a mobile app via wi-fi. It costs €300.
DOS Dosing and Fluid Metering System: This system performs automatic water changes by pumping water while injecting chemicals thanks to a precise fluid metering and dosing system. The price is €325.
Trident - Marine Aquarium Water Analyzer: This system regularly tests the alkalinity, calcium, and magnesium of the water and sends notifications to the user when they are out of range via an app. It can be combined with the previous system to automatically release chemicals when the water parameters are abnormal. As a standalone, it costs €625.
Automatic Feed System: This system releases fish food at a fixed frequency. It costs €145
According to our research there exists no product yet that monitors water parameters, regulates them and feeds the fish, so our product would bring an important improvement in the market. The addition of a mobile app also seems a very appreciable feature for the user. Moreover, most of the products have a very high price due to the small number of companies selling them, so the ability to manufacture a system at a reasonable price would be another improvement, especially since our product is partially targeted towards everyday users and beginners.
USE Analysis
Users
Homeowners with Aquatic Pets
These users need a reliable system that is easy to use and maintains the optimal conditions within their aquariums. Ideally, the solution can minimize the effort and time that is required for regular maintenance while also ensuring the health and well-being of their pets. This group can range from beginners who may have little knowledge about aquatic pets to experienced enthusiasts. The system should be user-friendly and provide educational resources for less experienced users. They need to be able to regularly check the app for updates on the aquarium's condition. Regular monitoring and adjusting of water parameters like pH, temperature, and ammonia levels can be tedious and time-consuming. There's also a risk of human error, leading to unhealthy conditions for the fish.
Aquarium stores
These users require a system that can manage multiple tasks efficiently, ensuring optimal conditions for the health and breeding of fish. They value accuracy and reliability, and most importantly, the system has to adapt to different species. Professional users have a deeper understanding of aquaculture and may require advanced features and greater control over the system. Some of the challenges may include consistent water quality across multiple tanks. Also, any issues that may occur have to be quickly addressed to prevent loss of stock. Therefore, these users need an alert system that can immediately send notifications for any parameters that fall outside safe ranges.
Society
Society values products that prioritize sustainability and environmental responsibility. When it comes to a device for aquarium monitoring, there is a desire for energy-efficient solutions that minimize environmental impact. By reducing energy consumption and promoting responsible fishkeeping practices, such a device tries to limits it's impact on climate. Ensuring the safety aquatic environments is as important for society. Therefore, there is a need for monitoring devices that can quickly detect and respond to emergencies or fluctuations in water quality. By providing real-time monitoring and alerts, these devices help minimize risks to marine life and promote the overall safety of aquatic ecosystems. Fish shouldn't be harmed by the equipment, as holds for the user. Electronics should be kept dry, off-contact with the water. Innovation is highly valued in society, driving progress and advancements in various fields. A device that pushes the boundaries of technological advancement in aquarium monitoring resonates with society's appetite for innovation. By inspiring further exploration in environmental monitoring and conservation, such products contribute to the ongoing quest for innovative solutions to global challenges.
Enterprise
Many systems that take care of this are designed to be user-friendly, offering various options for monitoring and controlling a wide range of parameters including temperature, pH level, ammonia concentration, ensuring optimal conditions for aquatic life. These systems provide programming and control capabilities through both computers and mobile devices, allowing for remote management[1]. This is particularly beneficial for aquarium stores managing multiple tanks and homeowners who need to maintain their aquariums while away. A product like described could lower costs for these stores. Data security is a critical concern for enterprises handling sensitive information. In the context of aquarium monitoring devices, robust data security measures are essential to protect monitoring data from unauthorized access or breaches. By implementing encryption protocols and secure storage mechanisms, these devices ensure the integrity and confidentiality of sensitive information, maintaining user trust and confidence.
Results From User Survey And Discussions
As previously mentioned, owning an aquarium can be a lot of work. There are certain tasks that need to be checked multiple times each month, as well as feeding and water filtering. This can be a burden for people, mostly during times of absence. This can be seen from the survey results with more than 55% of aquarium users not monitoring the health of their fish.
Owners that go on a long trip or vacation will need to ask someone else to monitor their aquarium for them. Remembering to feed every day can be hard for some users too. An elderly women mentions that it can a lot of work to check and learn all important water parameters. Good information on how to keep certain species of fish would be useful. A automated system could be created to notify the user when a change of filter is needed. Many aquarium users in our survey said they don't know when to clean the wateer as there is no specified time to do this, the standard is every month but the truth is sometimes due to temperature, PH, climate and all other environmental, external and other factors this can vary a lot. This will be a better solution (notifying the user when a change of filter / water is needed) than just changing it once every month or so, as the filter may be clean enough to be us.
This can be seen from the survey result where 81% of aquarium owners say the cleanliness of the water concerns their fish the most hence as mentioned above a system to notify when cleaning the water is required is crucial. Furthermore 72% of aquarium owners say temperature concerns their fish and as well as PH (~45%) the other factors are a mintory and only make up around 27% or less. Therefore a system to monitor and regulate temperature as well as PH would be ideal as this was a suggestion by more than 72% of users for the product to mintor PH, temperature and the cleanliness of water and display the data on the app whereas the other factors such as dissolved oxygen or ammonia levels were a mintory (approximately less than 18% of aquarium users were interested in that). Moreover, more than 55% of aquarium users want temperature to be regulated automatically on top of already monitoring it and more than 72% of aquarium users want the same for PH as well, due to these being the most crucial aspects to cover and the most concerning according to aquarium users.
Major fish community websites and blogs post information on the most common tasks of an aquarium owner. Some water parameters should be checked weekly to ensure good water quality. Most aquarium owners don't keep track of these parameters, or only measure the most important ones. There are owners that enjoy the work they get from owning an aquarium, but this is different for users who own these aquatic pets for their esthetics or their addition to a calm environment. For these users it would be useful to create a system that takes care of the fish, such that the user can enjoy their fish not worrying about anything. A common response as well for any other extra functionaly in the system was to incoperate feeding facilities this is a good option and can be implemented using the <Time.h> library in Arduino alongside a servo motor, the time library in Arduino can "count" time in a background thread whilst the servo motor can spin and "drop" food at the time specified on the app which the information for this is sent to the Arduino via BLE.
_____________________________________________________________________________________________________________________________________
Research on aquarium environment parameters and optimal conditions for ornamental fish
As the selected user group for this project is home owners with ornamental fish aquariums and aquarium stores that may also breed their indoor ornamental fish, the optimal conditions coincide for these user groups as they all involve small scale indoor freshwater aquariums as the environment. The water condition factors that affect general living and breeding conditions of ornamental fish are temperature, hardness/softness, pH, ammonia concentration, chlorine concentration, carbon dioxide and oxygen.
Temperature of the water
The temperature of a fish tank is usually a main concern during the transport and introduction of new fish due to risks of thermal shocks the fish can get that can be caused when a rapid change to the temperature in their environment occurs[2]. For general health and well being of fish, temperature requirements are split into two types: cold water fish and tropical fish. Common cold water fish include gold fish, Koi and certain species of barbs, tetras and loaches. Common tropical fish include bettas, Guppies, Mollys and certain species of laches and tetras. These two types different types of fish should generally not be in the same aquarium due to the different temperature needs. While tropical fish can tolerate 21 °C up to 30 °C, the optimal conditions for tropical fish are 24°C to 27°C with 27°C to 28 °C being suitable for breeding of many types of tropical fish[3]. Temperatures above 32°C, are detrimental to the health of most fish. As for cold water fish, they can tolerate from 15°C up to 24°C. With some specifies preferring temperatures lower than 15°C[4].
In cases of the fish tank temperature getting too low for the fish types, solutions include simply increasing the temperature of the room or installing water heaters that are generally heating coils enclosed in a glass tube. A water heater of 5 to 6 watts is required per gallon of water[2].
In cases of the fish tank’s temperature being too high, solutions include reducing artificial lighting over the tank or blocking out natural lighting, cooling down the room that the tank is present in, installing better filtration systems to cycle water faster and even simply running a fan on the water’s surface[5].
Hardness of the water
General hardness or total hardness refers to the measure of calcium and magnesium salts as well as other ions such as sulphites and chlorides of magnesium and calcium present in the water. Below 75 ppm water is considered as soft. From 75 to 150 ppm is moderately hard and 150 to 300 ppm is hard. Beyond that water is considered very hard. Most freshwater fish can thrive in a wide range of hardness and most of the time does not require any water treatment unless fish known to come from regions of extreme total hardness (either soft or very hard) is being raised (6). Water hardness anywhere from 100 to 300 ppm is known to be optimal for growth of most ornamental fish. Only when general hardness is below 12 ppm would require liming[3].
pH
pH refers to a logarithmic scale of hydrogen ion (H+) concentration in aqueous solutions. For most ornamental fish, a pH of 7 to 8 is suitable for growth, breeding and general health[6]. But the pH levels must never fall below 5 and raise above 8.5 for aquarium water. Certain ornamental fish prefer slightly acidic water (with pH of 6.2 to 7) such as rosy barb, tiger barb, tetra, angel and daino. Fishes like koi, goldfish and cichlids prefer slightly alkaline water[3]. pH can be increased if necessary with doses of calcium hydroxide and decreased if necessary with acids like hydrochloric acid.
Ammonia concentration
Fish waste contains many end products of nitrogen metabolism such as uric acid, urea ammonia. With ammonia being one of the most hazardous to fish. In water, ammonia exists as either NH3 in its gaseous state or in an ionized state as NH4+. It is the unionized state (NH3) that is harmful to fish as it damages gills and causes fish to gape for air at the water surface (although other issues could also lead to similar symptoms). According to Subhendu Datta’s paper on aquarium water quality management, 0.4 ppm of NH3 is considered acute toxicity level meaning a short term or single dose can be lethal. While 0.05 ppm of NH3 with long term exposure can lead to the above mentioned symptoms. Damage to gills can already occur at 0.25 mg/lt [2]. Ammonia poisoning is mainly a concern when the fish tank is first established and still lacks a strong cultivation of bacteria that break down these harmful compounds. These bacteria mainly reside in the filters of the water cycling and filtering system and hence require ample time with batches of feeder fish before the ornamental fish can be introduced to an aquarium. The ideal ammonia concentration in the system should be trace amounts (it should be noted that ammonia testing kits usually measure both NH3 and NH4 combined). In events of sudden ammonia spikes, fish should be transferred to other tanks (being mindful of the necessary procedures to avoid thermal shocks) and allow the bacteria load to increase and break down the ammonia. Other discouraged solutions include using ammonia detoxifiers[2].
Other than when the aquarium is first established, ammonia concentrations can also increase when too many fish are added at once, the fish tank is heavily populated, the filtration system is not functioning properly or is insufficient and when the fish are being overfed. Apart from factors that increase ammonia concentration, the toxicity of ammonia can also increase at higher water temperatures and pH levels above 7.0[7]. This is because the equilibrium between NH3 and NH4+ is dependant of pH and temperature and yield of NH3 is preferred at higher temperatures and pH which should be taken into account as NH3 is 300 to 400 times more toxic to fish than NH4+[6].
Chlorine concentration
Tap water is a readily available source of clean water that can be used to fill fish tanks. However, the main issue with this is chlorine content in tap water. Chlorine amounts as low as 0.1 ppm is enough to be considered toxic for most ornamental fish[3]. However, this can easily be solved by letting the water sit in the tank for a few days to let the chlorine escape and make the water suitable for fish. Aerating the water with air pumps can greatly help this process. Alternatively, if time is of concern then the water can also be treated with commercially available chemicals such as sodium thiosulphate[2]. Once initially dealt with, chlorine concentrations do not need to be monitored unless more tap water is added when water changes.
Dissolved Oxygen
For warm water fishes, the recommended level of dissolved oxygen is 4 to 5 mg per litre. Dissolved oxygen may be a crucial to monitor as low dissolved oxygen levels may stunt growth, affect feeding and can lead to hypoxia. This causes high levels of stress for the fish and cellular damage (1). To prevent this, most aquarium systems have a aerators. The capacity and amount of aerators required depends on the volume of water and is always indicated by the product’s description. So as long as ample aeration is occurring in the system, the use of analog dissolved oxygen monitors may be omitted as they are expensive and inessential for home users keeping ornamental fish.
Refrences:
Functional specifications and requirements
Due to the limited time and resources for this project, we decided to only focus on a few water parameters to monitor and control. Our system will therefore monitor pH, temperature and turbidity, and will act upon temperature via a heater. It will also dispense a certain quantity of food at a certain interval of time indicated by the user. Sensors
ID | Description | Priority |
---|---|---|
R1 | The system senses pH with an accuracy of at most ± 0.3pH | Must have |
R2 | The system senses pH at intervals of at most 1 minute | Must have |
R3 | The system senses temperature with an accuracy of at most ± 0,5 ° C | Must have |
R4 | The system senses temperature at intervals of at most 1 minute | Must have |
R5 | The system senses turbidity with an accuracy of at most ± 40 NTU | Must have |
R6 | The system senses turbidity at intervals of at most 1 minute | Must have |
R7 | The system senses ammonia (NH3) concentration with an accuracy of at most ± 0.005 ppm | Could have |
R8 | The system senses ammonia (NH3) concentration at intervals of at most 1 minute | Could have |
R9 | The sensors have IPx8 water resistance | Must have |
Actuators
ID | Description | Priority |
---|---|---|
R10 | The system always keeps the water temperature at at most 3 ° C below the temperature set by the user,
assuming this temperature is between 10° C and 30° C, the room temperature is at least 25° C |
Must have |
R11 | The system dispenses the quantity of food specified by the user, with an precision of ± 0.25g | Must have |
R12 | The system dispenses food a the interval specified by the user | Must have |
R13 | The system keeps the pH within ± 0.5pH of the value specified by the user | Could have |
R14 | The heater plate does not harm the fish | Must have |
R15 | The pH products do not harm the fish | Must have |
R16 | The submerged actuators have IPx8 water resistance | Must have |
ID | Description | Priority |
---|---|---|
R17 | The app displays the last registered water parameter values | Must have |
R18 | The app allows the user to preset water parameters | Must have |
R19 | In case of abnormal value, the app sends a notification to the user | Must have |
R20 | The app allows the user to set food quantity and frequency | Must have |
R21 | The app displays the time the fish have last been fed | Should have |
R22 | In case of abnormal values, the app displays information on how to fix the problem | Should have |
R23 | The app has different parameter presets for cold water and tropical fish | Could have |
R24 | The app displays information on different species of fish | Could have |
ID | Description | Priority |
---|---|---|
R25 | The main case have IPx4 water resistance | Must have |
R26 | The wires have IPx8 water resistance | Must have |
R27 | The system is powered by 12 V 2A barrel connector power supply | Must have |
R28 | The system can easily and safely be attached to any cover-less, rectangular tank | Must have |
Won’t have:
Fish tracking on movement and eating cycle.
Long term data storage.
Actuators/sensors on all important water parameters.
Design Of Our System
The choice has been made to make a all-in-one connected fish tank automation system. The system would keep track of the water temperature, pH, turbidity and ammonia levels. Temperature would be adjusted automatically with the activation of a heater if it falls below a threshold. Furthermore the system would dispense a certain amount of fish food at a certain frequency given by the user. The system would be a box to be attached at the top of a wall of the tank, just above the water. Temperature, pH, turbidity and ammonia sensors, as well as the heater would at the bottom of the system, submerged in the water. Inside of the box would be a microcontroller, a wi-fi module, and the food dispensing system, composed of an Archimedes screw controlled by a servo motor and a food tank. All of this would be enclosed in a 3D-printed case taking as less space as possible.
We chose to let the pH control as a could have because of the difficulty to implement it. Indeed, there is no real way to automate with an actuator. The only possibility would be to dispensed pH product, but this would require a whole pumping system, making the system larger and significantly more expensive. Moreover the dosage would have to be extremely precise not to harm the fish. More generally, pH change in a aquarium is something that is usually done very precautiously, only a few times in a year, and often with a portion of the water being replaced as well, so it does not seem to really profit from automation.
Likewise, we decided to let ammonia monitoring aside, since we already have quite a few parameters to monitor, and that ammonia sensors are quite expensive.
This system would be coupled with a mobile app, on which the user would be able to see the parameters in real time and be notified if one of them is out of its normal range, with advice to fix them. The user would also be able to input parameters to decide on the quantity and frequency of food dispensed. It would also access other information on the fish tank like the time the fishes were last fed, or any alert if the system is malfunctioning. The communication between the app and the system can be done remotely from anywhere with the use of a database that stores the water parameters and other values of every device, which would be constantly updated by data from the respective sensors or user inputs.
App Design
Design of the app
To facilitate the user experience, the device is connected to an Android app.
First Design:
The app contains eight possible pages, which include: the start page, a log-in and sign-up page, a profile page, page that contains all of the monitored aquariums, a page that shows graphs about parameters and an extra page that can be used to ask questions in case any problems arise.
Second designThe original design of the app has been modified according to the most important features for the user. The app was developed in Android Studio using Kotlin as the programming language. The final version of the app has four different pages. When first opening the app the user will be introduced to the main page ('Dashboard') where it can find all of the aquariums that were introduces on the profile. The user can always add aquariums if necessary. By clicking on an aquarium the user will be taken to a separate page that will contain statistics about the aquarium such as pH level, temperature etc.
For a more personalized experience, the user can create a profile, where it can add personal details and a profile picture. It can also use Google accounts do directly create a profile. The profiles are added to a data base. The app is very easy to use. The user can navigate from page to page using the menu that can be found at the bottom of the page.
The notifications of the app will be displayed on a separate page. In this way the user will be up-to-date to any modifications regarding the parameters, or in case any interventions may arise.
IP-code for safeness
Our design will have to meet certain standard to be able to operate safely close to the water. This is needed for the fish’s and user’s protection. There are certain requirements defined by the European union on levels of protection against multiple factors. This ingress protection code is useful for finding viable sensors and actuators for our project. The IP-code is build up out of multiple layers. Generally the code looks like : IPXXA, with X being a number and A a letter. If there isn't any specified value, the x will either remain or be left out (if on the end of the code). The first X can have levels from 0 to 6, representing different levels of dust-resistance. The second 0-9 levels is for water-resistance.
Type | IP-requirement |
---|---|
fully submerged sensors | IPx8 |
submerged actuators | IPx8 |
wires (or casing wires) | IPx8 |
casing microcontroller&servo | IPx4 |
If the microcontroller is placed on the outside of the tank, there will only be splashing water from time to time. Therefor there will be less need for good water resistance. IPx8 requires an object to be functional when submerged for longer periods. This should always be specified by the manufactures. For our project, it will be necessary to aim for the longest durability possible. A 3d printed casing for the microcontroller and small tubes for the wires will be useful for their water resistance. It is important to create no expose from the copper wires or any other electrical connection to the water, as this could have consequences.
Different materials could be used to ensure a water-resistant casing. High density plastics created in a vacuum are particularly good at keeping out water.
Other materials like wood could be used, but need a coating to ensure water resistance.
To create a watertight seal, there are multiple options. We could choose to apply a liquid coating, which is quite cheap, but needs to be applied multiple times.
The liquid tape should be applied with a brush, and should rest for half an hour before applying the next layer.
Another option would be to use self fusing silicon tape. This tape is made from a special cured rubber, which sticks to itself with ease. It is easy to apply and could be used to protect the wires from water.
The wires can be wrapped in the tape, which will create a water tight seal after a couple minutes. The tape should be used to seal of connections, as it only sticks to itself.
Multiple layers should be applied, this will create a firm watertight connection.
epoxy gels or coatings are used in a lot of different situations. These are applied when liquid, but get solid to create a watertight seal.
Rubber rings or strips are also watertight. They could be used to seal of the entrances as well. it will be hard producing such rings that fit, as a bundle of wires could have a irregular shape.
https://thecavepearlproject.org/2023/03/17/waterproofing-your-electronics-project/
Like shown in the following article, water and living creatures have an influence on the materials. Hard casings with connections like screwcaps are good options.
The final options for sealing the electronics are potting them, coating them or using a hard casing.
Tape can be used to seal of excess gaps or connections.
Sensors
Temperature Sensor
An appropirate temperature sensor would be the DS18b20 waterproof temperature sensor, this is waterproof and is compatible to use with Arduino IDE. It requires a breadboard / soldering of wires (to be done at a later stage). This temperature sensor has three wires which all connect to a different pin in the Arduino. The black pin connects to a ground port, red pin connects to a VCC port which is powered by either 5v or 3.3v power supply. The yellow pin is connected to any chosen digital IO pin on the Arduino. The connections can be made using a breadboard or by using jumper wires with soldering of the loose wires on the temeprature sensor to the jumper wires (and then connecting the jumper wires to the Arduino itself). The coding with this sensor is relatively straightforward and involves using the libraries <OneWire.h> and <DallasTemperature.h>. A simple call to an in built method of the libraries after proper setting up (the call is sensors.requestTemperatures()) checks the temperature of the water the temperature sensor is inside and the values can be retrieved by calling: sensors.getTempCByIndex(0).
For more information see:
https://www.sensingthecity.com/water-temperature-sensor-with-arduino/
Possible purhcasing link(s):
https://www.hobbyelectronica.nl/product/ds18b20-waterdicht/
_
PH Sensor
An appropirate PH sensor would be the Gravity analog PH sensor kit. This contains a PH probe and a signal conversion board. The PH probe is what is immersed in the liquid which is being tested for it's PH value whereas the signal conversion board acts like a communication mechanism between the PH sensor and the Arduino board, sending the read PH values to the Arduino. The wiring of this is as follows: the blue wire on the image on the right should be connected to any digital IO pin on the Arduino, the red wire requires to be connected to a 5V VCC pin and the last black wire should be connected to a ground pin. The connections are easier to be made using female to male jumper wires. The code works by setting the chosen digital IO pin to HIGH and LOW and using a formula to calculate the PH based on the transmitters response.
For more information see:
https://how2electronics.com/ph-meter-using-ph-sensor-arduino-oled/
Possible purchasing link(s):
https://store.arduino.cc/products/gravity-analog-ph-sensor-meter-kit
https://elektronicavoorjou.nl/product/ph-sensor-kit-v2/
_
Turbidity Sensor
This is a sensor to check the "clearness" of the water. There are two types of turbidity sensors which are linked below, both principly work the same. Turbidity is measured in terms of NTU which is a "Nephelometric Turbidity Unit". The lower this NTU value the better the water quality, higher NTU values mean worse water quality as there is an increased scattering of light (more particples and dirt in the water). The connections are simple but differ based on the turbidity sensor purchased in principle it requires a 5V VCC pin, a ground pin and any digital IO pin on the Arduino. The code works by running a for loop over 800 iterations to read the required sensor input which the result of the input is added to another local variable. After this the value is converted to NTU and can be viewed on the serial monitor or an external LCD (optional, not for our project).
For more information see:
https://www.esclabs.in/how-to-make-a-turbidity-meter-using-arduino/
https://www.youtube.com/watch?v=Bu8y-6Bpv0U
https://how2electronics.com/diy-turbidity-meter-using-turbidity-sensor-arduino/
Possible purchasing link(s):
https://elektronicavoorjou.nl/product/troebelheid-sensor/
_
Ammonia Sensor
The most suitable sensor to detect any ammonia presence in the fish water is the Mq137 ammonia sensor. Before using this sensor it must be calibrated to the environment around it therefore using an external program to do so. The wiring is simple in principle it requires a 5V VCC pin on the arduino to be connected to the VCC pin on the sensor, a ground pin on the arduino to be connected to the GND pin on the sensor and any digital IO pin on the Arduino to be connected to the AO pin on the sensor. A 47k ohm resistor is also needed to be used for the connection between the AO pin on the sensor and any digital IO pin. The code works by taking in the parameters set above after calibration and thereafter uses a logarithmic formula to calulate the PPM (parts per million) of ammonia present in the air around (also can measure ammonia in water, it is important to not put the sensor underwater).
For more information see:
https://circuitdigest.com/microcontroller-projects/arduino-mq137-ammonia-sensor
https://www.reddit.com/r/arduino/comments/fvspdn/working_on_a_project_with_ammonia_gas_sensor/
Possible purchasing link(s):
Actuators
Heater Plate
This is need for the "actuator" side of our autoamted fish care system. This heater plate will turn on whenever necessary (when the temperature of the aquarium is detected to be too high) and thereafter it will stay on until the temperature of the aquarium has reached the desired temperature. This works simply by connecting to an external 12v power source (so just a plug point), this will have to be controlled (turned on or off) by an external switch connected to the arduino to control this. It cannot be connected directly to the Arduino as the Arduino only supports providing power upto 5v hence this heater plate requires 12v. The arduino code will be simple logic ie (if sensors.getTempCByIndex(0) <= threshold1 THEN switch.on() and thereafter if sensors.getTempCByIndex(0) >= threshold2 THEN switch.off()).
For more information see:
https://www.electroniclinic.com/12v-dc-heater-plate-80w-ptc-heater-plate-12v-solar-heater/
https://www.youtube.com/watch?v=eWrkHLmWQJU
Possible purchasing link(s):
https://www.amazon.nl/-/en/Heating-Thermostat-Aluminum-Tempering-Optional/dp/B07Y5DKHBH
_
Servo motor
For the precise quantity of food to be dispensed a part must be moving for a certain amount of time to push or release the food into the water, and then stop. After some research it appear that a common way to achieve that is with an Archimedes screw rotated by a servo motor for a specific amount of time. This method as several advantages: it provides a continuous flow of food, such that any desired quantity can be precisely delivered, it only takes a small amount of space, and is relatively easy to implement as 3d models of Archimedes screws compatible with servo motors are available online. The servo motor can be directly connected to an Arduino via a 5V VCC and a ground pin. It is controlled very precisely, which allows for a very specific amount of food to be dispensed. It then suffices to write a line of code that sends power to the motor pin for a certain amount of time every x seconds, which are to be determined based on parameters given by the user (number of fishes, size of fishes...).
For more information see:
https://en.wikipedia.org/wiki/Servomotor
https://www.youtube.com/watch?v=tHOH-bYjR4k
Possible purchasing link:
Microcontroller and communication
Microcontroller
A microcontroller is needed to activate the actuators based on the data received by the sensors and the user. A very popular line of products for this kind of projects is the Arduino line, which provides rather cheap microcontrollers that are very modular and compatible with plenty of sensors and actuators via serial communication with pins. The most popular Arduino model is the UNO Rev3 which is based on a ATmega328P processor with 14 digital and 6 analog inputs/outputs. However it does not have built-in wi-fi, so another module such as the ESP8266 must be connected to it. Another option would be the Arduino Uno R4, which directly has wi-fi connectivity. Both products are compatible with the Arduino IDE software that is used for development, with a simple language to control the pins.
For more information see:
https://store.arduino.cc/products/arduino-uno-rev3
https://store.arduino.cc/collections/boards-modules/products/uno-r4-wifi
Possible purchasing links:
_
Wi-fi module
In order to communicate with the mobile app the device must have a way to send and receive the data. A common way to achieve this with an Arduino is with the use of an ESP8266 module for Arduino. This modules enables wi-fi transmission and then transmits the data via serial communication to the microcontroller. Wi-fi is ideal for our user target group because personal fish tanks are generally in houses, meaning that a router will always be nearby to send the data over the internet. Another option would be to directly use an Arduino model that has wi-fi connection integrated, such as the Arduino Uno R4.
For more information see:
https://docs.arduino.cc/arduino-cloud/guides/esp32/
https://docs.arduino.cc/hardware/uno-r4-wifi/
Possible purchasing links:
Database
In order for users to control the device remotely, there needs to be a server that takes requests from the mobile app and transfer them to the Arduino over the internet. A popular database for this kind of application is Google's Firebase. It is very easy to use, is already integrated in Android Studio, the software used to develop android apps, and also has its own Arduino library. An the Android side, it suffices to call FirebaseDatabase database = FirebaseDatabase.getInstance() and DatabaseReference myRef = database.getReference() to instantiate connection with the database. The database would consist of a set of values for each parameter, such as the optimal value, the current value, or the time when it was least measured. The application code would then use Firebase's API functions such as setValue to change these values on user input, or functions like onDataChange or valueEventListener to trigger an action when a value has been changed. On the Arduino side, we connect to the database with its url and authentication key, by calling Firebase.begin(url, key), and then use Firebase.getString() to get values from it, or Firebase.getString() to set the values.
The database could be organised in the following way: each record would be uniquely identified by a deviceID that is bound to a physical deviced and is shipped with it to users. Users could then enter it in the app when they set up the device to reference it. This way they are able to control several different devices from the app. In each record there would also be all the current and desired water parameter values, as well as other useful values such as the time the parameters were last measured, the time the food was last dispensed, or a boolean value indicating if the system is still functioning correctly. These values can then be accessed to read or write by both the Arduino and the mobile app, which are linked by the deviceID.
The Firebase Real Time Database is organized in a tree-like manner where each node is a associated with a number of children nodes, the database object being the root node. In this format, each device is a direct children of the root node, identified by its unique deviceID, and its children are the following attributes:
- desiredTemp, the desired water temperature set by the user,
- currentTemp, the last recorded water temperature,
- pH, the last recorded pH,
- turbidity, the last recorded turbidity
- desiredFoodMass, the desired food mass to de dispensed at each cycle of the feeding process,
- desiredFoodInterval, the desired interval at which fishes are fed.
- malfunction, a boolean indicating if the device is malfunctioning
-lastFedTime, the date and time at which the fish have last been fed
Equations To Model Temperature
The temperature of the water inside the tank can be predicted by the use of Physics. On every moment of time, we can predict future temperatures. The temperature at a time t, will be influenced by the temperature at t=0, the heater and any external factors like room temperature. The temperature change caused by the heater will also depend on the amount of water in the tank and the specific heat capacity. This specific heat capacity will determine how much energy is needed to warm up the tank 1°.
The surrounding environment can have an influence on the temperature. Newton’s cooling law explains the transfer of heat from or to the surroundings. The rate of change in temperature will be equal to k(M-T) with M and T being the temperature of the surroundings and of the water respectively. k is a positive proportional constant. Solving this equation yields T = M + e^(-k*t) for a cooler environment, and minus the exponential for a warmer environment. This only holds if the environment was the only factor in the system causing temperature changes.
The heater plate is a ptc heater plate, characterized by a exponential heating curve. We can estimate the power of the heater plate using the following equation:
P(t) = Pmax(1-e^(-kt))
This is for heating the plate, the cooling down will look similar but decays exponentially. Pmax is given by the seller. with around 25W you should have enough to heat a 20l tank. k is a constant specific for the plate. It characterizes the speed of the heating up.
The total temperature of the water can be captured in the following differential equation:
P(t) = m*c*dT/dt + U*A*(T(t)-Tenv)+Qev/dt
Here P(t) represents the power of the heater, m the mass, c the specific heat, U the overall heat transfer coefficient and A the surface area. This U could be different for each material and location of the tank, so should be estimated. It depends on the thickness of the glass and the properties of water and glass. The equation only holds for heating above room temperature.
1/U = 1/hwater + dglass/kglass
With h being the transfer coefficient for water, d the thickness of the glass and k the thermal conductivity, being around 0.8-1.2. This is the coefficient for the 4 sides of the aquarium. The top side doesn’t have glass in contact with the water, should be seen as air-water surface. The bottom will have strong thicker support, like table or other stand, which will cause minor temperature loss.
The specific heat of water is a known constant, as it represents the amount of energy needed to heat up a kg 1 kelvin. The difference between T and Tenv influences the amount of heat lost to the environment.
Qev/dt is the amount of heat lost due to evaporation. Evaporation will be the main cause of heat loss, and will cause drops below room temperature. Therefor the heater will need to help bring the system back to room temperature.
Qev/dt = hfg * A* (P-Pvapor) = c2
Hfg is the evaporation heat of water, O the evaporation coefficient, A the surface area and P the humidity ratio. This is specific for each water temperature, which creates a difficult differential equation (as the formula for P is difficult). It is better to take an average value for the temperatures the system will lay around.
The heater will be able to transfer a certain amount of energy into the tank. For this it will need to heat up and cool down. We can use the formula to predict when to power the heater to end up at the right temperature each time. When the power is switches off, there is an finite amount of heat or energy still left inside the plate, this plate will then cool off until it reaches the same temperature as the water, during which this energy transfers into the water. This could be tested, so the formula is adjusted/shifted.
T(t) = (e^(-k t) P)/(-A U + c k m) + (-c2 + P)/(A U) + e^(-((A U t)/(c m))) ((c2 - P)/(A U) + P/(A U - c k m) + T0 - Te) + Te
P is the maximum power of the heater, A the surface area the tank could lose heat through. A bigger tank will lose less heat relative to a smaller tank, as the surface area / volume ratio is bigger. c2 is the energy lost per time due to evaporation. As stated this should be constant for small disturbances in T. Te is the environmental temperature, and T0 the starting temperature.
t=0 gives T0 and t-> inf gives T=Te +(P-c2)/(A U)
A and U can be large, which shows that sufficient power is needed to heat a system to a high temperature. Normally U lays around 10, as air does not take up a lot of heat due to conduction.
The model does not make any sense for t < 0, so this can be left out. For aquarium that remain room temperature, a material like glass should be chosen, as it lets through heat more easily. IF the desired temperature is above room temperature, a strong heater and a different material is needed, like acrylic. Heating for longer periods will eventually reach the limit temperature.
temperature spreading through a body can be described by the heat equation. If u(t,x,y,z) gives the temeprature in time and space, du/dt = a*▼2 u , with ▼2 the Laplacian operator. Heat spread can be influenced by a lot of factors, like movement of the water through the tank. Therefor it is hard to estimate the temperature in different parts of the tank. Therefor no exact calculation can be done. As can be seen in the temperature model, it is hard to reach a high temperature/ it will take long. If the heater is heating too much for a short period of time, this wont have any big influence.
The heater plate itself is small in size. When the power of the heater is turned of, the only energy that will still enter the water is that which is already inside the plate, determined by its temperature, specific heat and mass. The temperature could be big, but the mass and specific heat won't be, and so an overshoot will not happen.
Equations To Model PH
pH = -log(H+)
The pH depends on the concentration of H+ ions in the water. Certain substances react with water and give an H+ ion to the water. The pH will slightly increase when the temperature decreases. Because the conditions change, the equilibrium does too.
Relationship Between Turbidity And Voltage
By definition, turbidity is defined as total suspended solids (TSS)[8]. It is primarily a mechanism to measure how clear the water is (measure the particles bigger than 10 microns in the water). Turbidity is essential to test water quality and to ensure the water is clean which is especially important for aquatic life as it can impact their growth, quality of life, affecting gill functions and reproductive abilities[9]. Turbidity is measured in a unit called Nephelometric Turbidity Unit (NTU), this is judged by the amount of “scattering of light”, if there is more scattering of light there is higher turbidity (meaning the water is more dirty) and likewise a lower scattering of light indicates a lower turbidity and therefore cleaner water[10].
The sensor used to measure turbidity (gravity Arduino Turbidity sensor from DFRobot) actually sees the amount of light transmitted and received when the sensor is activated and this is measured in voltage, then a special relationship between voltage and turbidity is established to determine the turbidity in NTU of the water.
The relationship between the voltage measured and the turbidity of the water can be represented as:
y = -0.0012x + 4.0769 with an R squared coefficient of 0.998[12]. The graph for this can be seen from the right:
Where y is the voltage (in volts) and x is the turbidity (in NTU). From this there is a clear inverse relationship between turbidity and voltage due to the negative slope and the high R squared value indicates the reliability in this function therefore showing the negative gradient is not due to “chance” or unreliability in the data used.
Therefore, once the sensor retrieves the analog read in the code from performing an “Analog read” from the pin which the turbidity sensor is connected to, we can use the equation above to convert it to the appropriate turbidity level once we have converted it to an appropriate voltage:
float sensorValue = analogRead(turbidity_sensor); //This line retrieves the “analog” reading from the sensor
float voltage = sensorValue * (5.0 / 1024.0); //This line converts that analog reading to a voltage we use 5.0 / 1024.0, since 5 is the max voltage which can be measured, and it takes 1024 steps hence 5.0 / 1024.0 gives the maximum voltage per steps (the voltage).
float turbidity = (4.0769 – voltage) / 0.0012 //This is using the equation above to represent turbidity as a function of voltage.
However, there is also an alternative quadratic formula proposed for the relationship between turbidity and voltage, which is the following:
y = -1120.4x2 + 5742.3x – 4352.9[14].
Where y is the turbidity (in NTU) and y is the voltage (in volts). From this there is a clear inverse relationship between turbidity and voltage due to the negative slope and the concave down, negative graph given.
This would change the last line of code (the conversion from voltage to float) to the following:
double num1 = -1120.4 * (voltage) * (voltage)
double num2 = 5742.3 * voltage
float turbidity = (float) num1 + num2 - 4352.9
Keep in mind for this you would need to use the following import for both above calculations: #include <math.h>
Feeding mechanism
The feeding mechanism is composed of an Archimedes screw conveyor which is rotated by a servo motor for a certain amount of time at a certain speed each time the fishes need to be fed. To determine the right speed and amount of time to activate the motor based on the desired food quantity, we need to know the flow rate of the screw.
The flow rate Q is defined as the volume of a fluid per unit of time passing through an area, in m²/s. For an uniform flow with velocity V through an area A, the flow rate of an incompressible fluid can be calculated using the continuity equation[15]:
Q = AV
We assimilate the fish food as a fluid due to the small size of the food grains. A similar assumption as been made for modeling a livestock feed conveyor.[16] However as the screw cylinder is never completely full of the fluid, the area it passes through is smaller than the cylinder cross section area. We call this real area the effective area AE. Moreover the velocity of the fluid is equal to the screw axial transition speed VT, which is given in rotation/s as:
VT = Sω/2π = Sn/60[15]
With S being the pitch of the blades in meters and ω the angular velocity in radiant per second, or n being the number of rotations per minute. Therefore we can express the flow rate as:
Q = AEVT = AESn/60
To determine AE, we can also view the flow rate as the volume of fluid evacuated in one rotation of the screw multiplied by the rotational speed of the screw[17]. That is, it is the volume of fluid contained between two blades of the screw, multiplied by its rotational speed. We call the space between two blades a bucket. The effective area is thus the cross section area of the cylinder multiplied by a loading ratio φ, determining which proportion of a bucket is actually filled by the fluid. This is multiplied by the inclination coefficient C which here is 1 as the screw is horizontal The effective area is therefore:
AE= φA = φ*(Do2-Di2)*π/4*C = φ*(Do2-Di2)*π/4
With Do being the outer diameter of the screw (i.e. the diameter of the cylinder) and Di the inner diameter (i.e. the diameter of the axis of the screw).
Combining the last two equations gives:
Q = π/4*φ*(Do2-Di2)*S*n/60
However because recommendations on food quantity is often expressed as a mass, we convert the volumetric flow rate to the mass flow rate, also called conveyor capacity, by multiplying with the fluid density ρ:
Qmass = π/4*φ*(Do2-Di2)*S*n/60*ρ
Finally, to determine the amount of time t the motor is activated for in seconds, assuming a fixed rotational speed, we divide the needed food mass m by the conveyor capacity:
t = m/Qmass
State Machine Diagram
On the right hand side we see our initial approach at our automated aquarium manager represented clearly using a state machine diagram. In this initially the manager is off and when it is turned on (assuming there is power) it sends a notification to the user that it is on. It stays in a so called "checking state" in which the sensors are continuosly run until an issue is detected. For example if the temperature is too low, it exists the checking state (which turns off all the sensors), and enters the heater on state which turns on the heaters and only exits this state when the target temperature is reached (the event temphigh is met) then it turns off the heater. Similarly whenever the ph is too low it goes to the PHLow state subclassed in PHControl and releases the required chemicals to improve the ph and thereafter it goes back to the checking state (similar for PHHigh). Whenever there is high ammonia concentration detected it sends a notification to the user about this so it can be resolved as soon as possible in the NotifyAmmonia state subclassed in Notify User, once this notification is sent it goes back to the checking state again (similar for NotifyDirt). It ensures these NotifyUser substates are only entered if the notification hasn't already been sent (otherwise it will keep sending the same notification again). In the do/ in the checking state we check if the user has resolved the notification about high ammonia / dirt until we activate sending a notificiation for that issue again. Furthermore, we can see that if the manager is in the "HeaterOn" state and there is an issue regarding the PH, ammonia or dirt in the water it will exit that state temperoarily to send a notification to the user (relatively quick process ~5 seconds) or resolve the PH issue (just a rotation of the servo motor again this would take maximally around 10 or 15 seconds) and then return back to the HeaterOn state until the sufficent temperature is reached. Notice when exiting the HeaterOn state the exit statement is that the heater turns off this is not an issue as the processes in PHControlNotifyWhileHeaterOn take a maximum of 15 seconds therefore that won't do any harm to the fish regardless. Furthermore, appropriate variables are set to that it doesnt continuosly keep uncessarily notifying the user about the issue even if they have resolved it.
Circuit Diagram
To work the whole system, different compoents are invovled. For the PID control a S8050 npm transistor was used with the left terminal being connected to a 10k ohm resistor to the VIN pin (to get 12V power supply) and the gate of the IRFZ44N mosfet. The middle terminal was chosen to be connected to the digital PWN pin 2 and the right terminal is connected to the source of the mosfet. The mosfets drain is connected to one terminal of the 12V heeating plate and the other temrinal of the heating plate is also connected to the VIN pin for 12V power supply. The other components such as the turbidity sensor, servo motor and the ph sensor were connected as expected to the arduino with one wire to a common ground (shared on a breadboard taken from the Arduino) and another wire to a common 5V output (shared on a breadboard taken from the Arduino) and the last wire to a chosen digital PWN pin on the arduino. The temperature sensor was a little different, the ground was connected to the common ground (shared on a breadboard taken from the arduino) however in between the 5V pin of the temperature sensor and the data pin there was a 4.7k ohm resistor placed to allow the temperature sensor to "read the data" and then the data pin was connected to any digital PWN pin and the 5V pin was connected to the common 5V channel on the breadboard.
Power Source
The power source that will be used for this project depends on factors around the specification of the project as well as the parts that are going to be used in order to create the final prototype. We specify the constraints that will determine what kind of power source will be appropriate for this project below.
Specification requirements:
As per the specifications the prototype of the product must have the following sensors:
- pH sensor
- temperature sensor
- Turbidity sensor
The pH sensor has a voltage requirement of 5V, the turbidity sensor requires 5V, the temperature sensor can be powered by either 3.3V or 5V depending on the variant lastly the ammonia sensor requires 5V.
The microcontroller chosen will be a variant of the Arduino board, Arduino boards including both nano and uno require a minimum input voltage of 7V and a maximum of 12V. Arduino uno models all have a 5V output pin as well as 3.3V pins. The pH, turbidity and ammonia sensors can all operate with 5V minimum however the temperature sensor can operate using just the 3.3 volt pin. Based on these power requirements, we can power all of the sensors in two configurations, either powering all of the sensors in parallel off the 5V pin or powering all sensors but the temperature sensor with 5V pin while powering the temperature sensor with the 3.3V pin. This can be done on all uno boards, some IoT nano boards however only have a 3.3V pin, these can hence not be used.
The prototype also requires additional components that will draw power outside of the sensors. These components are the heater plate as well as the servo motor. The servo motor requires 5V of power and can hence be connected to the 5V pin as well along with the other sensors. The heater plate requires 12V of power meaning that it cannot be powered by the Arduino. The heater needs to be powered by an external power supply. It is a possibility to use a step up buck convertor to convert the 5V input to 12V but then the current drawn by the 5V pin would exceed the Arduino’s limit potentially and also buck convertors generate a lot of heat under such intense application which would not be desirable.
A good solution in order to power the entire circuit would be to power both the Arduino and it’s connected sensors and components as well as the heater in parallel. This can be done as both the Arduino as well as the heater can take 12V of power. The maximum rating of the Arduino is 12V, hence the rating can be met.
There are two ways to power the entire circuit and they depend on the use cases, one would be if the product can be connected to a power outlet, in that case it would be possible to use a cheap 12 V 2A barrel connector power supply that can be connected to the wall. The cable would need to be sliced and an additional wire would need to be soldered to the power supply in order to power the heater plate in parallel. Another possibility could be to use a pack or rechargeable cells that have a total power output of 12V. This could be done using regular alkaline battery cells/ rechargeable cells in parallel. Another solution could be to use a Li-Po battery pack however these would require a BMS circuit in order to prevent the battery from overcharging and undervoltage problems.
Acceptance test plan
Requirements 1, 3, 5, 7, 14, 15 and 27 are internal to the already existing components and are therefore satisfied, since the components have been chosen based on them.
Requirements 7, 8, 13, 23 and 24 are could haves and were not implements. They are still included in the test plan for completeness.
ID | Description | Precondition | Action | Expected Output for Success |
---|---|---|---|---|
R2 | The system senses pH at intervals of at most 1 minute | The system is correctly positioned with the pH sensor submerged in water, and the system is powered. | Pour pH product in the water, and monitor the pH value on the app. | The pH value changed after at most 60 seconds. |
R4 | The system senses temperature at intervals of at most 1 minute | The system is correctly positioned with the temperature sensor submerged in water, and the system is powered. | Pour boiling water in the tank, and monitor the temperature value on the app. | The temperature value changed after at most 60 seconds. |
R6 | The system senses turbidity at intervals of at most 1 minute | The system is correctly positioned with the turbidity sensor submerged in water, and the system is powered. | Pour some colored powder (e.g. coffee powder) in the water, and monitor the temperature value on the app. | The turbidity value changed after at most 60 seconds. |
R8 | The system senses ammonia at intervals of at most 1 minute | The system is correctly positioned with the ammonia sensor submerged in water, and the system is powered. | Pour ammonia solution in the water, and monitor the ammonia value on the app. | The ammonia value changed after at most 60 seconds. |
R9 | The sensors have IPx8 water resistance | None | Submerge the sensors in water for an hour. | The sensors show no water damage or moisture on them, and they output the correct values. |
R10 | The system always stabilizes the water temperature at at most 3 ° C below the temperature set by the user,
assuming this temperature is between 10° C and 30° C, the room temperature is at least 25° C |
The room temperature is at least 25° C, and the system is powered. | Set a desired temperature on the app between 10° C and 30° C, and monitor the temperature value on the app. | The water temperature increases continuously before staying higher than desiredTemperature - 3. |
R11 | The system dispenses the quantity of food specified by the user, with an precision of ± 0.25g | The food container contains at least the quantity specified in the app, and the system is powered. | Input a desired food quantity in the app, with a small feeding interval (e.g 1 min). Collect the dispensed food and weigh it. | The mass of the dispensed food is between ± 0.5g of the given interval. |
R12 | The system dispenses food a the interval specified by the user | The food container contains at least twice the quantity specified in the app, and the system is powered. | Input a desired food quantity and feeding interval in the app. Start a timer when the food is dispensed a first time, and stop it when the food is dispensed a second time. | The measured interval is equal to the one specified in the app. |
R13 | The system keeps the pH within ± 0.5pH of the value specified by the user | The system is correctly positioned with the temperature sensor submerged in water, and the system is powered. | Set a desired pH in the app | The pH increases/decreases continuously before staying within ± 0.5pH of the desired value |
R16 | The heater plate has IPx8 water resistance | None | Submerge the heater plate in water for an hour. | The heater plate shows no water damage or moisture on it, and still produces heat. |
R17 | The app displays the last registered water parameter values | The system is correctly positioned with the sensors submerged in water, the system is powered and connected to a computer. | Add a line in the code to print the water parameters when they are sensed, then run the program. | The pH, temperature and turbidity values in the app are the same than the respective one printed on the computer. |
R18 | The app allows the user to preset water parameters | None | Add an aquarium in the app and open its dashboard page. Fill the desired temperature. Close the app, open it again and go back to the aquarium dashboard. | The previously filled in value is still in the app, and is enforced by the system (see R10) |
R19 | In case of abnormal value, the app sends a notification to the user | The system is correctly positioned with the sensors submerged in water, and the system is powered. | Register the aquarium in the app. Then pour boiling/cold water, pH product or colored powder in the water, open the notification panel of the aquarium in the app. | A push notification appears on the phone, with a message containing the corresponding abnormal parameter. The notification also appears in the panel. |
R20 | The app allows the user to set food quantity and frequency | None | Add an aquarium in the app and open its dashboard page. Fill the desired feeding quantity and interval. Close the app, open it again and go back to the aquarium dashboard. | The previously filled in values are still in the app, and are enforced by the system (see R11, R12) |
R21 | The app displays the time the fish have last been fed | The system is powered. | Add an aquarium in the app and open its dashboard page. Fill the desired feeding quantity and interval. Monitor the value displayed in the "last feeding time" field. Wait for the device to dispense food, monitor the current time and look at the value again. | The "last feeding time" value changed and now displays the time when the food was dispensed. |
R22 | In case of abnormal values, the app displays information on how to fix the problem | The system is correctly positioned with the sensors submerged in water, and the system is powered. | Register the aquarium in the app. Then pour boiling/cold water, pH product or colored powder in the water, open the notification panel of the aquarium in the app. | The push notification and the notification in the panel display a message on how to fix the corresponding problem. |
R23 | The app has different parameter presets for cold water and tropical fish | None | Add an aquarium in the app and open its dashboard page, then the preset button, and choose a fish type. | The displayed desired water parameters have changed for the ones of the chosen fish type, and these parameters are enforced by the system (see R10, R13) |
R24 | The app displays information on different species of fish | None | Add an aquarium in the app and open its dashboard page, then the information button, and choose a fish species. | Information on the chosen fish species is displayed |
R25 | The main case have IPx4 water resistance | The case is closed. | Spray water from all directions on the main case for 10 minutes. | The inside of the case contains no water, and does not show signs of discoloration, deformation, or other physical changes. |
R26 | The wires have IPx8 water resistance | None | Submerge the wires in water for an hour, leaving both ends above the surface. | The wires show no water damage or moisture on it, and the wire still transmits current. |
R28 | The system can easily and safely be attached to any cover-less, rectangular tank at least 15cm deep | None | Position the system on a cover-less, at least 15cm deep rectangular tank | The system stays horizontal and does not move. |
Implementation and Testing
After printing the 3d model, we sanded the parts and glued them together. We then attached the sensors to the case by putting them through their corresponding hole and gluing them with waterproof sealant, before we tidied the wires and attached them together. We also drilled a hole for the Arduino power jack and the sensors and motor wires. After that we calibrated the sensors to get the correct values.
Testing
Most of the requirements (2, 4, 9, 12 ,16, 17, 18, 19, 20, 21, 22, 25, 26, 28) were satisfied at the first testing iteration, however more work was needed to satisfy 6, which is the turbidity sensing.
This was due to the fact that the turbidity sensor was really sensitive which made the output values very inconsistent, independent of the actual water cleanliness. After trying the different relationships between the actual turbidity and the output voltage, we finally reached coherent results. The testing was done by progressively pouring coffee powder in the water.
Requirement 10 was difficult to test because the heating process takes a long time in a real sized fish tank. This is due to the relatively low power of the heater plate, which is rather undersized for the kind of aquariums we are aiming for. Due to time constraints we decided to test is in a smaller water volume (4L) and use the equations described before to estimate the heating time in a real fish tank environment. Our estimation is that for a normal sized tank (40L), it would take approximately 1.5h to heat the aquarium by 1°C at around 24°C. This seems rather long but is actually better for the fish, as it would reduce the risk of thermal shock. Nonetheless, a more powerful heater would have given more adaptability and scalability of the system.
Requirement 11 is on the food actual quantity dispensed compared to the value specified by the user in the app. Because fish usually require very low quantities of food, the dosage needs to be precise, so we decided to do 10 tests with different values. We used the equation described above to compute the time the motor has to rotate for. We measured the loading ratio, diameters and blade pitch and imputed them in the equation, but changed the values several times to get more accurate results. These are the results we got after tweaking the parameters, with a precise scale:
Expected value (g) | Actual value (g) |
---|---|
0.5 | 0.74 |
0.75 | 0.96 |
1 | 1.17 |
1.25 | 1.48 |
1.5 | 1.72 |
1.75 | 1.89 |
2 | 1.90 |
2.25 | 2.34 |
2.5 | 2.34 |
2.75 | 2.53 |
3 | 2.78 |
This makes the mean absolute difference between the expected and actual value 0.2g, which is smaller than 0.25. Moreover no absolute difference exceeded 0.25g, so the requirement is satisfied.
Discussion and Conclusion
The goal of this project was to demonstrate that, although there is none on the market yet, it is possible to create an all-in-one aquarium manager robot. Our prototype achieves water monitoring, autonomous feeding, and water heating, all of this controlled by a mobile app, meaning that is actually improves the existing solutions in the market. It firstly took us some time to decide on the actual scope of the project, and we had to make several iterations and design decisions such as which water parameters to monitor and control, but we finally made a design that addressed the most important problems of fish tank managing and automating. We managed to physically implement all of the must and should have requirements and test them, all of this supported by litterature and physical equations. Moreover the final prototype should be relatively cheap, especially compared to the other products on the market, since the parts costed us around €150, which could be reduced by scale economies of scale if it were to be mass produced. The prototype nonetheless presents a few limitations.
Limitations
The most important possible improvement of the system would be to automate other parameters such as the pH. However as stated above pH is quite hard to automate as it requires a lot of precaution and a lot more hardware such as pumps, which is not worth it considering that it only needs to be done once in a while, and often with a water change. A more feasible improvement would be to monitor the other parameters that we studied, such as ammonia or dissolved oxygen. This would give the user a more complete overview of the state of the tank, though it would make the system significantly for expensive, at least a few hundred euros more, as this is the price for the needed sensors. However, it would be relatively easy to add these functionalities, as most of the implementation could be reused from the other sensors. The Arduino and App code would be almost exactly the same, and our database design is easily expandable. Only the calibrating equations would have to be figured out.
Another limitations of the current prototype is the heater plate. Because we wanted to power it together with the Arduino, we chose a small one with limited power. This causes the water to heat up quite slowly, which is not necessarily bad as it prevents thermal chocks. However this impacts the adaptability of the system, especially for larger tanks, as now the heater needs to always be on full power to be efficient. A larger plate would be a significant improvement to the system, however it would require a larger power supply, probably independent of the Arduino's, which would increase the cost and make the device larger.
Moreover, another good improvement would be a notification on the app when the food container is nearly empty. This would make the system even more autonomous, since the user won't have top check regularly the food level. However to be require some sort of pressure or weight sensor in the funnel to check the amount of remaining food, which would be difficult to implement due to the steep slope of the funnel and the fact that the food is quite light, making it difficult to sense small amount of it. Another option would be to compute the total capacity of the container and substract the dispensed quantity, but this would require a) that the user always refills the container entirely, which is not guaranteed, b) that the amount of food dispensed is exactly as expected, and c) that the user indicated on the app that they have refilled the container.
Finally, a limitation in our approach is the lack of feedback from potential users. Even though we made a survey to determine user needs, it only has a few answer, and me way need specific feedback from more involved people, such as fish shop employees or fish hobbyists. This would confirm or invalidate our assumptions on the most needed functionalities for our product.To address, this problem, it would be nice to support the technical tests with usability tests in order to get feedback from actual users and improve the design.
Conclusion
During this project, we have explored in depth the issues in fish tank automating, which is way deeper than it seems as it involves many different areas and subjects. We had to learn about which water parameters affect the quality of life of fish, what are their suitable ranges, how to control them and which physical equations control them. We also learned a lot on databases, wi-fi communication, and application design and building. This multidisciplinary aspect of the project made it very interesting and engaging, though also quite challenging, as we had to gain knowledge in computer science, physics and biology at the same time, while also having the requirements of delivering a complete, working physical prototype. The initial idea was very broad and ambitious, and we did not implement every idea we had at the beginning, and an important part of the challenge was to decide on the scope and functionalities of the product.
Our final prototype successfully addressed the main functionalities to automate a fish tank, combining hardware building and experimenting, physical theory and software design. We believe that it makes a significant improvement in the area by relieving the user from the most frequent and important tasks, which are now automated, while ensuring a good care of the animals. We also make all of this easy and intuitive for the user with the help of the app. All of this addresses our original problem of making fish caring easy and accessible to people with skills and time limitations. Furthermore, we think that it brings a lot of novelty on the market since there is simply no other device that monitors the water while controlling the temperature and also feeding the fish, all controlled by a mobile app. To improve it further, we suggest to conduct more testing and surveys from prototype user to improve it and make it for suitable to real situations.
Final Presentation
_____________________________________________________________________________________________________________________________________
Sources With Summaries
1. Automated Monitoring System for the Fish Farm Aquaculture Environment
The paper introduces a method for fish farmers to actively control their farm. They introduce a problem of waste, unnecessarily created by a lack of monitoring their fish. The waste can be reduced by actively tracking the fish and feeding when needed. They also state that, for optimal farming, the conditions in such a tank should be kept at certain rates. The team establishes a device to monitor the data acquired, using simple but accurate sensors. They describe a way to measure the most important values and how they created a system available for the user. They create a software program that runs on android devices to give the farmers access to the results, and create a space where the farmers can change certain values based on the fish their needs. The paper doesn’t specifically state for which levels the system is made, and what would be optimal for certain species. The energy management of the system is very efficient, and because of the WIFI implementation they created an accessible system.
_
2. Design and implementation of a smart monitoring system for water quality of fish farms
The paper focusses on the creation of a monitoring system for fish farms. The authors try to give real time information to the farmer via a mobile app. They see the rapid change in the health and agriculture sector towards a fully monitored and perfected system. The authors use an Arduino UNO and a pH and temperature sensor to monitor the values in the tanks. The user can use his phone with a Bluetooth connection to connect and get the real time information on their mobile device. There are some major improvements that could be made compared to this project. The information is quite limited and could be extended on. Also we could try to implement a more autonomous system that does certain tasks like changing pH or giving food. The system could also be upgraded to be more up to date and accessible.
_
3. Aquarium Monitoring and Automatic Feeding System Based on Internet of Things
https://ojs.unikom.ac.id/index.php/injuratech/article/download/10012/3770/
This article focuses on creating aquarium monitoring and automatic feeding systems for ornamental fish tanks and fish farms to support this high demand industry in Indonesia. The project focuses on 3 sensors and 1 actuator, namely the temperature sensor, pH sensor and turbidity sensor and a servo motor for the automatic feeding system. The idea is to have this system work togeather with a smart phone application that has 3 panels. A home screen that displays weather information for outdoor systems as well as displaying the feeding schedule and options to adjust it. The second panel focuses on monitoring the environmental data such as displaying temperature, pH and turbidity data. The final panel focuses on sharing the data and/or generating reports to be exported.
_
4. Aquarium Monitoring System Using Sensors
https://ajast.net/data/uploads/10119.pdf
This paper addresses the issue of fish tank maintenance time for homeowners and possible inconveniences it causes. The solution proposed is a fully automatic system that feeds the fish, monitors and displays temperature and a water circulating system with the additional function of heating that controls water temperature. This process of heating water when its circulating through pipes instead of directly adding a heater to the tank water allows for better and consistent temperature control. The fish feeder works with a simple servo motor and container controlled by an Arduino.
_
5. Monitoring the Value of Water Quality and Condition Parameters Using the Open Sensor Aquarium
https://iopscience.iop.org/article/10.1088/1742-6596/1255/1/012036/pdf
This research paper details a complete fish tank management system that collects data, betters the fish tank environment parameters and displays the information on a webpage. The system consists of sensors such as a CS-CO057 water level sensor, pH sensor, DS18B20 temperature sensor and analog electrical conductivity sensor that is all connected to an Arduino that sends the data to the server using a SIM900 transmission module. The actuators are a water heater that responds to temperature changes detected and an automatic feeder that operates at scheduled times. This system was tested for long term use.
_
6. A multi-functional fish tank remote monitoring system based on STM32
https://francis-press.com/papers/7016
This research paper focuses on a system suitable not only for ornamental fish tank keepers but also fish farming enthusiasts. Apart from the typical sensors such as temperature, turbidity, pH and water level sensors, this system also comes with a camera module and voice module to cater to the ornamental fish breeding and training aspect. All the sensors are connected to the STM32 core controller which is also connected to actuators such as servo motors for feeding and a wireless transmission module for sending data to be remotely accessed.
_
7. Smart Aquarium Management System
https://www.researchgate.net/publication/345690191_Smart_Aquarium_Management_System
The paper discusses the development of a Smart Aquarium Management System designed to automate and remotely monitor aquarium conditions, including temperature, pH levels, feeding schedules, and aeration through an IoT-based solution. The system aims to reduce manual maintenance efforts by allowing users to control and monitor their aquariums via mobile application, ensuring optimal living conditions for fish. It also aims to replicate natural conditions as closely as possible, ensuring the health and well-being of fish and other aquatic organisms. This innovation addresses challenges faced by aquarists, such as feeding fish during absences and maintaining water quality, by providing real-time data and controls through a user-friendly interface.
_
8. Implementation of Smart Aquarium System Supporting Remote Monitoring and Controlling of Functions using Internet of Thingshttps://www.researchgate.net/publication/337567490_Implementation_of_Smart_Aquarium_System_Supporting_Remote_Monitoring_and_Controlling_of_Functions_using_Internet_of_Things
The article presents the implementation of a smart aquarium system that uses Internet of Things (IoT) technology for remote monitoring and control of aquarium functions. It introduces a fully automated system capable of operating without human intervention, focusing on features like mechanical fish feeding over the internet and monitoring parameters such as feed level, water temperature, pH, and water level remotely. The authors use various tools such as Arduino Mega 2560, ultrasonic sensor, ESP8266, LCD 20x4, PH sensor, temperature sensor, water pump motor, servo motor, four-channel relay module, water heater, and fan. These components work together to automate and remotely manage aquarium conditions, enhancing efficiency and facilitating non-intrusive care for aquatic life.
_
9. A Review of Smart Fish Farming Systems
The paper provides an in-depth look at the application of AI in aquaculture engineering, focusing on the use of Artificial Neural Networks (ANN) to enhance water quality management for fish farming. It highlights the potential of AI to automate the monitoring and adjustment of critical parameters such as salinity, oxygen levels, pH, and temperature, ensuring optimal conditions for aquaculture. This integration aims to increase efficiency, reduce costs, and promote sustainable practices within the fish farming industry, demonstrating a significant advancement in aquaculture technology.
_
10. Intelligent Fish Tank Based on WiFi Module
https://front-sci.com/journal/article?doi=10.32629/jai.v1i1.16
The paper presents an innovative intelligent fish tank system that leverages a WiFi module for remote monitoring and control via an Android smartphone. Utilizing the STC89C52 microcontroller as its core, the system employs sensors to track water temperature and level, adjusting the latter as needed and allowing users to interact with the tank in real-time from anywhere. This approach showcases the practical application of IoT technologies in enhancing the care and management of aquatic environments, demonstrating significant advancements in home automation and smart device integration.
_
11. An Intelligent Behavior-Based Fish Feeding System
The paper discusses an adaptive smart fish feeder system that adjusts feeding times and amounts based on observed fish behavior, aiming to solve problems associated with traditional feeding methods in aquaculture. This innovative system is expected to enhance fish welfare by reducing food competition and waste, thereby improving water quality. The study highlights the potential for increased farm productivity and efficiency through customized feeding strategies informed by fish responses, suggesting significant advancements in aquaculture practices.
_
12. Recent Advancement of the Sensors for Monitoring the Water Quality Parameters in Smart Fisheries Farming
https://www.mdpi.com/2073-431X/10/3/26
The paper discusses the use of machine learning method such as K-Nearest Neighbors, Random Forests, Decision Trees, Regression and Principal Component Analysis to categorize the quality of water for fishes. It proposes water temperature, pH, nitrites and nitrates, phosphorous, calcium, magnesium and dissolved oxygen as input parameters for these methods. The paper then proposes a system consisting of two water pumps controlled by a pump controller, a nitrate sensor and an impedance analyser as well as other sensors for all the parameters, all of this controlled by an arduino UNO. The system uses a LoRA shield for communication and is powered with a 12W solar panel and a battery. The collected data is sent on a cloud server to be analyzed on a user application. The estimated cost of the prototype is USD 250.
_
13. Water Quality Monitoring System for Fisheries using Internet of Things (IoT)
https://iopscience.iop.org/article/10.1088/1757-899X/1176/1/012016
The paper discusses the use of the Internet of Things to monitor fish and water in a fish production pond. It proposes a system with temperature and pH sensors, as well as a ultrasonic sensor for fishes controlled by an NodeMCU microcontroller and a ESP8266, which sends the data via wi-fi to a Blynk database that also sends notifications by e-mail. The conclusion of the experiment conducted with this system is that such an IoT device is able to efficiently track the quality of water for fishes, though some adjustments could be made to improve it, such as having a better user interface to track the data, adding more parameters in defining the quality of water, and using LoRaWAN for communication.
_
14. Design and Deployment of Low-Cost Sensors for Monitoring the Water Quality and Fish Behavior in Aquaculture Tanks during the Feeding Process
https://www.mdpi.com/1424-8220/18/3/750
The paper discusses the use of low-cost sensor for monitoring fishes and water in fish farms. The proposed system monitors water quality parameters, tank status, feed falling and fish swimming behavior. It uses a thermistor type negative temperature coefficient (NTC) temperature sensors, an inductive sensor for measuring conductivity an optical turbidity sensor and IR photodiode oil sensor. These are controlled by an Arduino MEGA with an ESP8266 wi-fi module. The system also uses smart protocols to send only the relevant information over the network to reduce energy waste. The estimated total cost for sensors is less than €90.
_
15. Development of Domestic Animals Shelter Environment Monitoring System using Internet of Things (IoT)
https://ieeexplore.ieee.org/document/10169332
This paper addresses the problems that occur in domestic animal shelters. They propose a solution using a system to control and measure certain parameters in those shelters. Using sensors and a microcontroller, the Arduino, they monitor the temperature, humidity, motion and gas levels. This is send to a blynk application where a farmer can view real-time values and get alerts when certain events occur, like high gas levels. The system also regulates the water and temperature in a shelter, by continually checking values and responding. The author states there can be a lot of improvement, like implementing more and better sensors.
_
16. IoT-Based Fish Farm Water Quality Monitoring System
https://www.mdpi.com/1424-8220/22/17/6700
This paper proposes a system to monitor water quality in fish farms. The system uses a robotic arm to submerge and take the sensors out of the water. The temperature sensor uses the constant voltage method and a low pass filter to reduce temperature noise drift and improve the accuracy. It also uses a water overflow sensor to prevent water from overflowing which could allow fishes to escape the tank. The system also monitors pH and dissolved oxygen. Finally, it uses LoRa for the wireless communication. The authors suggest to to improve the system with the use of deep learning and machine learning to better analyze the water quality.
_
17. Water Monitoring IoT System for Farming Ponds
https://stumejournals.com/journals/i4/2018/2/77.full.pdf
This paper describes an IoT system for monitoring water quality in fish farms. It uses an arduino MEGA2560, a temperature and water level sensor, as well as a clock. It controls a heater and lights to adjust the water temperature, displays the information on a LCD screen and notifies the user with a buzzer. It also uses the Wivity modem to provide internet connectivity. this module also implements a complete internat protocol stack to send data via HTTP to a cloud server. The authors suggest using more sensors to monitor other parameters such as dissolved oxygen or pH.
_
18. Aquaculture monitoring and control system: An IoT based approach
https://www.ijariit.com/manuscripts/v5i2/V5I2-1706.pdf
The paper proposes a distributed system for monitoring water turbidity, temperature and pH. The system is modular, portable and low-cost. It uses turbidity, temperature water level and pH sensors connected to a Raspberry PI. The data is sent to a cloud database and can then be retrieved via a mobile app. With the app users can also control the water flow and receive notification when the data exceeds a given threshold range. The system uses the ThingSpeak API to send the data onto the cloud. The conclusion of the experiment ran with the system is rather positive towards to use of IoT in fish farms.
_
19. Microcontroller Based Water Treatment Scheme for Fish Farming
https://ieeexplore.ieee.org/document/10406986
This paper sees the big growing market of fish farmers and highlights how we should implement todays technology into these farms to control and improve quality. They give multiple optimal parameters for multiple species of fish. The sensors used are all viable in these conditions. Their design focusses on temperature, pH and turbidity. Using an Arduino Uno and a GSM module, they create a system to track and monitor the values inside such fish tank. Chemicals can be used to control pH and a filter for the turbidity. They use multiple chemicals to lower or higher pH levels. The paper only gives a brief idea on how such structure should look, not creating a solution. Using the authors plans we could build such system, or parts.
_
20. Design and Analysis of IoT-based Aquarium Monitoring System for Guppy Fish Habitats
https://ieeexplore.ieee.org/document/10010912
This paper focusses on the improvement of health of guppy fish. They state that, following past research, optimal water quality is key to maintaining health fish. Using IoT, which has become more and more important due to the ability to transfer data between all kinds of devices, They want to reduce cost, work and time for fish owners. Using sensors for pH, turbidity and temperature, they create an system to test values in a tank and send them to a mobile device. With their system they test the impact of food types on the water quality and find that BBS type foods are better than pallet type foods. Furthermore they are able to create a simple but useful program to monitor the values in such fish tank. An improvement could be made on the amount and quality of sensors, or on the user interface, using a modern style app.
_
21. Aquarium Water Quality Management
https://www.researchgate.net/publication/268195853_Aquarium_Water_Quality_Management
This paper talks about fishes basic needs to live in aquarium water and the quality of the water. It provides data and insights on the optimal PH, oxygen, hardness, chlorine, temperature, salinity, hardness and more of the water for distinct fish species for their optimal survival and also for breeding purposes. Furthermore, there are tips for cleaning the water and resolving any conflicts regarding the water quality.
_
22. Aquarium Water Quality Management for Freshwater Ornamental Fishes
The research paper above provides insights on optimal water chemistry for the health of aquarium fish. It emphasizes the importance of a very specific amount of chlorine for optimal wellbeing of the fish (in a range), tips for cleaning and removing chlorine is present as well as other filteration techniques to remove other waste. Furthermore, for healthy fish they emphasize on regular water cleanings with not exceeding threshold for water changes to put less stress on the fish and to apply certain instruments or minimize the "noise" in the aquarium overall.
_
23. Automatic Water Quality and Fish Feed Monitoring System in Aquarium Using LORA
This article talks about how the growth and development of certain types of fish is influenced by factors such as the water temperature, PH level, quality of food and water turbidity. It mentions the importance of feeding and how some owners forget to or are unaware of this and to the quality of the water and condition of their fish tank. They have used an Arduino UNO microcontroller to build a system to feed the fish and maintain good water coditions. It mentions a PH of 6-8 is ideal alongside a temperature of 23-30 degrees celcius and water turbitity of 0-2500 NTU. LoRa SX1278 is used as a communicator service alongside a turbidity sensor and a DS18B20 temperature sensor, PH sensor, RTC, relay and a water pump. The sensors equipped continuosly monitor the water conditions using the LoRa and if the condition of the water is not to standard, the water pump is turned on.
_
24. Seneye POND V2 - monitoring system for ponds
https://www.marine-aquatics.eu/en/seneye-pond-v2-monitoring-system-for-ponds?ItemIdx=2
Article details existing product that monitors the PH level inside of a koi pond. Ammonia poisoning is one of the factors that cause the death of fish. The software automatically monitors the inside of the pond to detect toxic ammonia (NH3) traces at very low levels. The product is also able to detect swings in PH and temperature which could be harmful for the health of the fish. The device can be placed inside of a filter or can be set to float atop the pond.
_
25. Design of water quality monitoring system for aquaculture ponds based on NB-IoT
https://www.sciencedirect.com/science/article/abs/pii/S0144860919301189
Article details a project based on Narrow Band Internet of Things technology. enables remote collection and storage of data from multiple sensors such as temperature, pH, dissolved oxygen. It also provides centralized management of breeding ponds. The system described in the article uses the STM32L151C8 microcontroller and sensor terminal. This gives it real-time data acquisition, the data is then aggregated and transmitted over large distances to a IoT cloud platform through NB-IoT. The system has been tested in ChangZhou, JiangSu, China. The test demonstrates the system's ability to acquire water quality parameters on time with high degree of accuracy and reliability, this provided strong support for aquaculture production management and water quality regulation. A similar idea could also be implemented in order to monitor the parameters for an appropriate environment for fish across a spread out network of fish ponds.
Logbook
Week | Student | Work Done | Total Time |
---|---|---|---|
1 | Saqib | Intro Lecture (2 hrs), Setup Wiki (0.5 hrs), Worked On Introduction (2 hrs), Research Papers And provided Summaries (1 hrs) | 6.5 hrs |
Mara | Worked on "Users" (0.5 hrs), Researched papers and provided summaries (3h) | 3.5 hrs | |
Aseem | intro Lecture (2 hrs), worked on / edited introduction (1 hrs), read papers and added summaries (3 hrs) | 6 hrs | |
Adrien | Intro Lecture (2 hrs), Researched papers and provided summaries (3hrs), Plan and milestones (0.5hrs) | 5.5 hrs | |
Nout | Intro Lecture (2hrs), worked on introduction and planning (2h), read papers and make summaries(3hrs) | 7 hrs | |
Sanshray | Intro Lecture (2 hrs), Researched papers and wrote summaries (2 hrs) | 4 hrs | |
2 | Saqib | Meeting (2 hrs), Research and summary of sensors (6 hrs), Worked on state machine diagram (2 hrs) | 10 hrs |
Mara | Feedback session (0.5 hrs), Research for app(2 hrs), Worked on the design in Figma (4 hrs) | 6.5 | |
Aseem | Feedback session (0.5 hrs), meeting (1.5 hrs), Research and report on environmental parameters and optiomal conditions for fish (12 hrs), planning tasks (1 hrs) | 15 hrs | |
Adrien | Feedback session (0.5 hrs), meeting (1.5 hrs), Research on sensors, actuators and design (6 hrs), report on wiki (4 hrs) | 12 hrs | |
Nout | Feedback session(0.5 hrs), research on state-of-the-art (2 hrs), worked on specifications (2.5 hrs), problem statement and introduction(2 hrs), IP code(2 hrs) | 9 hrs | |
Sanshray | Feedback session (0.5 hrs), Research about power sources (1 hrs), report about power sources (3 hrs), revision on CAD skills in siemens nx (3 hrs) | 7.5 hrs | |
3 | Saqib | Feedback session (0.5 hrs), Worked on survey (1 hrs), Survey results summary (0.5 hrs), State Machine Diagram (1 hrs), Coding and relearing Arduino syntax and BLE communication (5 hrs) | 8 hrs |
Mara | Worked on the design of the app using Figma (8.5 hrs), Worked on the use analysis (1.5 hrs) | 10 hrs | |
Aseem | Feedback session (0.5 hrs), worked on survey (2 hrs), researched circuit diagram (1hrs), researched relays and powering systems (2 hrs), learning arduino codeing (2 hrs) | 7.5 hrs | |
Adrien | Feedback session (0.5 hrs), research on database (6 hrs), research on components and design (4 hrs) | 10.5 hrs | |
Nout | feedback(0.5h), state-of-the-art(2h), IP-code(2h), research on users and needs (3h) | 7.5 hrs | |
Sanshray | Feedback session (0.5 hrs), Survey (2 hrs), research on android app dev (3 hrs), created preliminary CAD models (8 hrs) | 13.5 hrs | |
4 | Saqib | Feedback session (0.5 hrs), BLE coding (5 hrs), Setup github (0.5 hrs), Final researching on parts (1 hrs), Turbidity research (3 hrs) | 10 hrs |
Mara | Research on app development (2hrs), App development (5hrs), Meeting session (1 hrs) | 8 hrs | |
Aseem | Feedback session (0.5 hrs), meeeting (1 h), research on pH regulation for fish tanks (2 h), arduino code review (1 h), initial research on PDI for temperature control (5 hrs) | 9.5 hrs | |
Adrien | Feedback session (0.5 hrs), meeting (1 h), research on feeding mechanism (5h), formalize requirements (6h) | 12.5 hrs | |
Nout | feedback (0.5h), theory research and formula work(11h) | 11.5 hrs | |
Sanshray | Conceptual Designing (4 hrs), Design Sketches (1 h), Component prototype modelling (8 hrs) | 13 hrs | |
5 | Saqib | Feedback session (0.5 hrs), Meeting session (1.5 hrs), Learning about Firebase and the realtime Database (2 hrs), Implementing PID in code (2 hrs), Implementing connecting Arduino to Firebase via WIFI (2 hrs), Ziegler and Nichols Tuning Methods Learning (1 hrs) | 9 hrs |
Mara | Meeting session(1.5 hrs), App designs (features related to the design of the app using Photoshop) (1hrs), App development (6.5 hrs) | 9 hrs | |
Aseem | Feedback session (0.5 hrs), learning systems and control, PID and tuning (8 hrs), | 8.5 hrs | |
Adrien | Feedback session (0.5 hrs), Meeting session (1.5 hrs), Research on Firebase and realtime Database (3hrs), working on the app backend (4hrs) | 9 hrs | |
Nout | Feedback session(0.5 hrs), Temperature modelling and plotting (8 hrs) | 8.5 hrs | |
Sanshray | Feedback session(0.5 hrs), prototyping (7hrs) | 7.5 hrs | |
6 | Saqib | Feedback session (0.5 hrs), Meeting session (1 hrs), Worked on building circuit for PID and temperature (6 hrs), Verified and checked components and circuit for PH and turbidity (4.5 hrs) | 12 hrs |
Mara | App development (10hrs), Final presentation (0.5 hrs) | 10.5 hrs | |
Aseem | Feedback session (0.5 hrs), Worked on building circuit for PID and temperature (6 hrs), research for arduino pinout and powering system in stand-alone mode and laptop connected (4 hrs) | 11.5 hrs | |
Adrien | Feedback session (0.5 hrs), Meeting session (1 hrs), Database (2hrs), Connecting Arduino to Firebase (3hrs), Final presentation (4hrs) | 10.5 hrs | |
Nout | feedbck session (0,5 hrs), improving wiki (5 hrs), waterproofing research (3 hrs) | 8.5 hrs | |
Sanshray | Feedback session(0.5 hrs), circuit implementation(5 hrs), physical prototype construction(4 hrs) | 9.5 hrs | |
7 | Saqib | Feedback session (0.5 hrs), Meeting and working in innovation space (4.5 hrs), Implementing code (5 hrs), Circuit diagram (1 hrs) | 11 hrs |
Mara | Feedback session(0.5 hrs), Implemented code (9hrs) | 9.5 hrs | |
Aseem | Feedback session (0.5 hrs), Meeting and working in innovation space (4.5 hrs), assemble product (3 hrs) | 8 hrs | |
Adrien | Feedback session (0.5 hrs), Meeting and working in innovation space (4.5 hrs), Connecting Arduino to Firebase (2 hrs), App coding (6 hrs), Building prototype (4hrs) | 17 hrs | |
Nout | Feedback session (0.5 hrs), meeting (2 hrs), working on presentation (3 hrs), improving wiki (4 hrs) | 9.5 hrs | |
Sanshray | Feedback session(0.5 hrs), Cad modelling(3 hrs), assembling final product in innovation space(6 hrs) | 9.5 hrs | |
8&9 | Saqib | Connecting parts, creating product, glueing, soldering, optimizing code and paramters (feeding, temperature), testing, presentation work, demo video (15 hrs), Wiki Cleanup (2 hrs) | 17 hrs |
Mara | Prepared slides final presentation (4hrs), presentations session(2hrs), Preparation final presentation (2hr) | 8 hrs | |
Aseem | Working in innovation space on final product (assembly, tweaking, optimizing, testing etc.) (15 hrs), presentation session (2 hrs) | 17 hrs | |
Adrien | Working in innovation space on final product (assembly, tweaking, optimizing, testing etc.) (6 hrs), Shooting video demo (5 hrs), App coding (12 hrs), presentation session (2 hrs), working on wiki page (8 hrs) | 33 hrs | |
Nout | working on wiki page (6hrs) | 6hrs | |
Sanshray | Feedback session(0.5 hrs), assembling final product(8 hrs), testing final product(3 hrs), recording video(2 hrs), presentation session (2 hrs) | 15.5 hrs |
- ↑ Ash, E. (2024, February 26). Aquarium Controllers: 8 systems to control, monitor & Test your tank. Fish Tank Advisor. https://fishtankadvisor.com/best-aquarium-controller-reviews/
- ↑ 2.0 2.1 2.2 2.3 2.4 https://www.researchgate.net/publication/268195853_Aquarium_Water_Quality_Management
- ↑ 3.0 3.1 3.2 3.3 https://courseware.cutm.ac.in/wp-content/uploads/2020/06/Session-7-1.pdf short good info with table
- ↑ https://www.thesprucepets.com/aquarium-water-temperature-1381896
- ↑ https://fishlab.com/aquarium-temperature/ non research paper website mainly about temperature and fish
- ↑ 6.0 6.1 https://www.researchgate.net/publication/339285368_Importance_of_Optimum_Water_Quality_Indices_in_Successful_Ornamental_Fish_Culture_Practices
- ↑ https://www.aqueon.com/articles/freshwater-aquarium-water-quality
- ↑ Butt, Usman ali. “How to Measure the Turbidity in Water Using Arduino.” Engineers Garage, www.engineersgarage.com/how-to-measure-the-turbidity-in-water-using-arduino/. Accessed 9 Mar. 2024.
- ↑ Admin. “DIY Turbidity Meter Using Turbidity Sensor & Arduino.” How To Electronics, 22 Aug. 2022, https://how2electronics.com/diy-turbidity-meter-using-turbidity-sensor-arduino/. Accessed 9. March 2024.
- ↑ Admin. “DIY Turbidity Meter Using Turbidity Sensor & Arduino.” How To Electronics, 22 Aug. 2022, https://how2electronics.com/diy-turbidity-meter-using-turbidity-sensor-arduino/. Accessed 9. March 2024.
- ↑ Hakimi, I M, and Z Jamil. Development of Water Quality Monitoring Device Using Arduino UNO, IOP Conference Series: Materials Science and Engineering, 2021, https://iopscience.iop.org/article/10.1088/1757-899X/1144/1/012064/meta. Accessed 9 Mar. 2024.
- ↑ Hakimi, I M, and Z Jamil. Development of Water Quality Monitoring Device Using Arduino UNO, IOP Conference Series: Materials Science and Engineering, 2021, https://iopscience.iop.org/article/10.1088/1757-899X/1144/1/012064/meta. Accessed 9 Mar. 2024.
- ↑ Admin. “DIY Turbidity Meter Using Turbidity Sensor & Arduino.” How To Electronics, 22 Aug. 2022, https://how2electronics.com/diy-turbidity-meter-using-turbidity-sensor-arduino/. Accessed 9. March 2024.
- ↑ Admin. “DIY Turbidity Meter Using Turbidity Sensor & Arduino.” How To Electronics, 22 Aug. 2022, https://how2electronics.com/diy-turbidity-meter-using-turbidity-sensor-arduino/. Accessed 9. March 2024.
- ↑ 15.0 15.1 A.Yoosefdoost and W.Lubitz, Development of an Equation for the Volume of Flow Passing Through an Archimedes Screw Turbine, 2021
- ↑ M Liu, N. Wang, X. Chen, Y. Shan, J. Li, Design of feed screw conveyor, 2020
- ↑ G Dellinger et al 2016 IOP Conf. Ser.: Earth Environ. Sci. 49 102002: Numerical and experimental study of an Archimedean Screw Generator