As a cat person , I see cats as an angelic creatures that mix cuteness and intelligence .Ā
On the other hand as a cat parent , There are times that I leave my cat home alone for several and long hours . That makes me worried and feeling guilty for being late , Thinking if I forgot to provide him with enough food , water and entertainmentĀ toys . So , that's when my Idea was born and I started searching for solutions that other people with same interest created before .Ā
I used Fusion 360 to create my design as a CAD software . I used to design stuff using SOLIDWORKS but I guess I like fusion more as it's giving me more flexibility .Ā
I created my design as individual components and named every part of them . That allowed me to be free editing different parts without being worried that would ruin other parts . That also allowed me to imagine the assemble process .
I built the side as the firsts part of my design . I draw the outline using line drawing tool .Ā
Then I used the dimensions to make my design fully defined by defining length and orientation of all lines . After that I drew the inner details such as T-Slots and tabs . I created tabs with different length comparing to the line they're built on .
Ā
Next , I created sketch on the top of the side's sloping face . I projected the top tabs of the side ( Shawn in purple color) and drew my design using lines ,circle and mirror tools .Ā
at first I searched for the LCD ( 16*2)Ā , Rotary Encoder and LEDs dimensions on internet to keep free space for them but I edited these dimensions after adding the electronic components to the file .
I copied the side and moved the copy to fill the tabs gap of the top .
I projected both sides' front tabs and added another 2 below that connected to the food carrier part .Ā
when you project a T-slot it will appear as a square so you can use midpoint snap to find the center easily and draw a circle with 3 mm diameter .
I did the same with the sides' back tabs and added 2 tabs that will be connected to the bottom part . I also added a circle to fix the female power jack below .
I wanted to connect previous parts using assemble function to build up coming parts correctly .Ā
using previous tools and concepts , I created the rest of the parts as shown . I also mounted the rest of the electronic components .
I used laser cut machine to fabricate wooden sheets 3 mm thickness as the main material of my prototype .Ā
I exported the every part as a dxf file then imported and organized them using laseroworks to prepare files.
I organized files that the organized parts takes less than 30 * 50 cm as that's the wooden sheets dimensions .Ā
I made all lines foe cut with power 50 and speed 35 .
then I uploaded files to the laser cut machine and fixed the wooden sheet to the machine to make sure that all parts will be cut successfully .
LaserWorks
El Malky ML149 CO2 Laser CutterĀ
using laser cut machine to fabricate my prototype .
this video is 5x speed of the original one .
for the dispenser I used prusa MK3 3d printer to fabricate it with PLA material .Ā
I rotated the part 90 degree and canceled the adhesion .
I added supports as tree supports and I made the fill 5 % with 0.5 thickness .
Ultimaker Cura
Prusa MK3 3d printer
Feedy's needed more than on input and action . It needed :
for control :
Arduino unoĀ
motor driver L298nĀ
inputs :
IR sensor
RTC ( real time module )
Rotary encoderĀ
Outputs ( actions)
geared DC motor
RGB LEDs
LCDĀ
These components created my design as Arduino was the main controller that grabs the code and works as the brain .
l298n motor driver only controlled the DC motor by controlling its speed and direction using the input and enable pins .
the motor is also being controlled by the RTC module that the owner chooses specific times to feed the cat a specific quantity of food so , the RTC sends a signal to the motor to be turned on on specific hour.
IR sensor that was fixed to the food container sent signal to the RGB LEDs when it reads that the container is full the RGB LEDs turned on with the green light and when its empty it turns on the red light as a sign for the owner to provide the container with more food .
The LCD screen is being controlled by the Rotary encoder .
I searched a lot to know how to wire all these components together successfully and here are some helpful links :
all my components but the DC motor worked with 5 v power source . The motor needed 9 v power source ( 9 v adaptor )to work so I needed to split power in my circuit between 9 and 5 v .
I used the 9 v power source GND and connected it to the Arduino GND to have the same ground . Then I wired the VIN pin of the Arduino to the 9 v positive pin . That's where I wired the l298n to the 9v too .
to get my 5 v I wired the 5v pin of the Arduino to the positive row of the breadboard to wire the rest of the components to itĀ
I used Figma again to complete my wiring as I didn't find Rotary Encoder , l298n motor driver , IR sensor or RTC 3231 module .
I built my code part by partĀ
First part was the LCD screen and the rotary encoder .
I included the following liberaries :
Aduino.hĀ
liquidCrystalI2C .h
Wire.h
RotaryEncoder.hĀ
Then I defined LCD int. :
LCD screen int.
LiquidCrystal_I2C lcd(0x27, 16, 2);
char MenuLine[4][20] = { "Fedding Times ", " Quantity" };
int CursorLine = 0;
int counter = 0;
void print_menu();
Ā I defined Encoder int. :
#define CLK_Encoder 2
#define DT_Encoder 3
#define SW_Encoder 4
#define RotarySteps 1
RotaryEncoder Encoder(CLK_Encoder, DT_Encoder, RotaryEncoder::LatchMode::TWO03);
int lastPos = 0;
int State;
int LastState;
Then I added void print , void selection , void setup and void loop as shown .
I wanted to make sure that my code is effective so far . So, I wired the LCD and Encoder to the Arduino and uploaded this part of code .
Second part was the RTC module with DC motorĀ
I added libraries such as RTCLib.h
then I defined the RTC and motor pinsĀ
I defined the motor pins 6,7,8 as OUTPUTĀ
In void loop I created a condition thatĀ
Ā if ( now.hour() == 13 && now.minute() == 45 && now.second() <= 3)
the motor will move with speed 100Ā in a specific direction for 3 seconds to pour food then it stops .Ā
Last part was that I wanted the RGB LEDs turn the green light on when the IR sensor reads that there is enough food and turn the red light on when it reads shortage of food .
I defined the IR pin as an INPUT and I gave the RED color one signal from Arduino to the 3 RGB LEDs and the same to the Green color .
I defined the RED and GREEN colors as OUTPUT and created a condition that if the IR reads HIGH then the GREEN color is turned on and the RED color is turned off , and if it reads LOW then the GREEN color is turned off and the RED color is turned on .
Finally and after testing every part , I collected them all in 1 code and debugged it and that's the final result .š
This is the final version I could create with the help of my instructor and with the help of AbdElrahman .
LCD and Encoder part is inspired by mina .
I started to assembleĀ my prototype by mounting real electronic components to the wooden parts .
Trust the process š
Then I started to assemble wooden parts together using 3mm screws and nuts .
I needed to assemble the prototype on steps so I can wire and test the inner components before fixing all parts together .
one of the screws was fixed in the food container so that I could hold the dispenser wheel on it to be free to orbit with the motor .
Final look š„³.Ā
I'm so excited and proud of what we've achievedĀ .
finished celebrating ?Ā
It's time to test the wiring and code functionality .š«£Ā
I used simple tiny simple codes to test the motor and the rest of the parts including IR sensor and RGB LEDs .
I guess Every thing is Ok then !Ā
Let's try to upload the main code š¤©
Can't describe how happy I'm right now š„³Ā
I was reviewing my project step by step with my instructor Ahmed Sami . He was such a helpful and cooperative instructor and I would thank him for that . I would also thank Menna and Abelrahman oraby for their help and ideas .
All of them gave me ideas starting of the dispenser wheel shape to the way to fix it and they helped me a lot ( like a loooot ) with the main code as I had a bug I couldn't figure out or understand and we all searched and finally solved the problem .Ā
If you noticed their are parts ( 2 sides and the bottom) that fabricated from different wood material . That's because I was so tired on my fabrication day in the lab that I tottaly forgot to upload these parts' files to the machine . So , I had to fabricate them in somewhere else to solve this problem .
The back part wasn't totally cut and there were a part that I had to remove using cutter .
I had a wiring organization problem which led us to disconnect everything and reconnect them all again in an organized way to recognize every parts' wires .
Finally as I said I had a bug in my code that I didn't understand neither my instructors did . We spent a lot of time searching about it and finally the solution was to use another library . I used the library < DS1307RTC.h> and it has something that made the encoder struggle and not working for some reason . When we changed it to < RTCLib.h> , the problem solved itself .
I consider this prototype as my product's first version . I want to improve its appearance and design . I also want to add the nice to have feature which is to add a water pumb to the product . I don't want any pet owner to struggle and be worried if their pet is well fed and hydrated .Ā