Aquassist : DIY Automatic Fish Feeder With Companion App

by CodersCafeTech in Circuits > Arduino

27872 Views, 183 Favorites, 0 Comments

Aquassist : DIY Automatic Fish Feeder With Companion App

Instructable_Cover.jpg
1.jpg
Front pic 1.jpg
front pic 2.jpg
Aquassist | DIY Automatic Fish Feeder with Companion App | Wemos D1 Mini | Arduino IDE | Coders Cafe

Today, we are here with an interesting DIY project, the automatic fish feeder. You might be thinking, what's new in an automatic fish feeder, right? Sit tight; we've got you a surprise.
Apart from the existing automated fish feeders, this has a companion app that can control the fish feeder from anywhere in the world. You can instantly feed the fish using the "Feed Now" button. In addition, you can set your feeding schedule and change them easily using the scheduler in the companion app.

Materials Needed

BOM.jpg

To make one of your own you will need only a few items. Here is a list of what we used and where you can find it for yourself online.

Why Wemos D1 Mini ?

Wemos.jpg
WeMosD1Mini_pinout.png

There is a wide variety of development boards with the ESP8266 chip. We actually need a board with an optimum size that can be easily reprogrammable and powered from an external source. So Wemos D1 Mini satisfies our need.

For programming up the Wemos D1 Mini with Arduino IDE, let's have a look here.

Note: You can use any development board with an ESP8266 chip.

Continous Rotation Servo

Servo0.jpg
servo1.jpg

In this project, we are using a continuous rotation servo for rotating the Archimedes screw, because they have integrated motor drivers in a compact and very inexpensive. They can easily drive from the microcontroller itself, not needing an external power supply. The normal DC motor needs a driver circuit which will make the project a little messy. As you all know servo can provide high torque also.

A continuous rotation servo (sometimes called a full rotation or 360°servo) looks like a regular hobby servo. While a regular servo motor only turns over a narrow range, with precise control over position, a continuous rotation servo has a shaft that spins continuously, with control over its speed and direction.

A continuous rotation servo motor can be controlled by calling the servo.writeMicroseconds() function, which typically accepts values from 1000-2000. A value of 1000 should rotate the motor counter-clockwise at full speed. A value of 2000 should rotate the motor clockwise at full speed. A value of 1500 should cause the motor to stop rotating (and without any vibration). Intermediate values can be used to change the speed of the rotation.

If you need your device to only rotate for a specific period of time, then simply use a delay() statement to wait for a specific amount of time in milliseconds (1000 milliseconds = 1 second) before stopping the motor. If you want to know more about this, just have a look here.

Here we used SG90 named servo which can produce optimum torque and that is very enough for this project. If you are planning to make a large feeder consider huge torque generating servos.

Note: You can also hack your normal servo for continuous rotations by referring this guide


Firebase Realtime Database

Screenshot (49).png
Screenshot (50).png

Firebase is a mobile and web application development platform. Firebase frees developers to focus on crafting fantastic user experiences. You don’t need to manage servers. You don’t need to write APIs. Firebase is your server, your API and your data-store, all written so generically that you can modify it to suit most needs. In our project, we use Firebase real-time database to instantly post and retrieve data so that there is no time delay.

To find Firebase Host

  • Go to Firebase
  • Then go and open your project (If you have no projects create one)
  • Then move to Real-Time Database in Database
  • The selected URL in the screenshot without "https://" is the Firebase Host

To find Firebase Auth

  • Go to Firebase
  • Then go to Settings > Project Settings
  • From there move on to Service accounts
  • Then under Database secrets tab, you can find firebase auth key

To find Firebase Config

  • Go to Firebase
  • Then go to Settings > Project Settings
  • Under Your Apps > SDK Setup and Configuration > Config (Sample given below)
const firebaseConfig = {
  apiKey: "<apiKey>",
  authDomain: "<authDomain>",
  databaseURL: "<databaseURL>",
  projectId: "<projectID>",
  storageBucket: "<storageBucket>",
  messagingSenderId: "<ID>",
  appId: "<APP ID>"
};

Website

mockup.jpg
Screenshot (51).png

We have designed a neumorphic companion web-app for the device. Neumorphism, or soft UI, is a visual style that combines background colors, shapes, gradients, highlights, and shadows to ensure graphic intense buttons and switches. All that allows achieving a soft, extruded plastic look, and almost 3D styling.

The website is developed using HTML, CSS and JS and hosted on a free hosting service. Add the Firebase Config in script.js file and host the code given here and you are good to go.

Circuit and Testing

connection.jpg
test.jpg
Schema Small.png

So it's time for testing the circuit. You can wire as per the schematics. The circuit is actually very simple. Then we uploaded the code to the Wemos D1 Mini. You can find the code here.

Then we loaded the website that we made. It is working flawlessly as expected.

Designing Device

Fish_Feeder final.png
Design.jpg
screw.jpg
storage_part.jpg

We actually have a rectangular aquarium with us. So we are going to design a device that can be plugged into one of its sides. If you have another type of fish tank you should go for another design.

We started the design in Fusion 360, by taking the servo motor as the reference file. So that sketching would be very easy. First, we designed a file in which Wemos d1 mini can be slid up. But it cannot be 3d printed properly, so we changed it to a small enclosure type with a lid.

For transporting food, we have used Archimedes screw which is attached to the servo motor. The Archimedes screw, also known as the Archimedean screw, hydrodynamic screw, water screw, or Egyptian screw, is one of the earliest hydraulic machines.

For food storage we actually designed a small file, it is enough for us to test. If you are planning to feed more fish for more days , consider extending the length of the storage box.

3D Printing

prussa.jpg
print_file.jpg
old_screw.jpg
New_screw.jpg

So it's time for 3d printing. We used Prusa MK2 for 3d printing the parts. The first Archimedes screw we designed can't be printed by adding supports, as you can see the 3d printed file is very messy even though there exist supports.

Fortunately, we found an Archimedes screw on a website that matches our requirements, then we rescaled it to our length in Prusa slicer. Finally, we got a cool 3d printed Archimedes screw.

You can find the all files for 3d printing here. Here we attached the servo attacher file as separate, either you can combine it with Archimedes screw in fusion 360 or glue it with the screw.

Assembling

P1070672.jpg
P1070641.jpg
P1070643.jpg
P1070646.jpg
P1070649.jpg
P1070654.jpg
P1070662.jpg
P1070667.jpg
P1070669.jpg

We used instant glue to assemble some parts and the remaining parts are a tight fit. If you are going to build your own one, take the above images as the reference or you can watch the video to get a clear idea of it.

Note: While attaching the servo we didn't use nuts and bolts because they are already very tight with the frame. If your assembly is very loose use nuts and bolts.

Final Results

P1070734.jpg
P1070738.jpg
P1070740.jpg
P1070741.jpg
P1070743.jpg

We can plug our device into the aquarium and power it up. So our Fish feeder is Active now. Add some fish food in the storage box and see the action!

If you have any doubts put them in the comment section or feel free to contact us through our email.

Feel free to check out our YouTube channel for more awesome projects:

https://www.youtube.com/channel/UC2mz6m0znd29fKwG_fZ82tg

Please consider subscribing to our channel.