I started this project for about a year ago. It's designed to feed my cats at the same times every day. You can configure the number of meals in a day, the number of portions by meal and the time.
The tank is a rectangular tube measuring 150x75x200 mm. You can expand its capacity whenever you want by printing more than one tank and connecting them with a “TankUnion”. The capacity of a single tank is approximately 1 kg of cat food.
The project's development was based on a series of requirements that had to be met:
# | PART NAME | INFILL | PERIMETERS | SUPPORT | MATERIAL | REQUIRED | QNT. |
---|---|---|---|---|---|---|---|
1 | TankLidHandle | 10% | 4 | No | PLA | Yes | 1 |
2 | TankLid | 10% | 4 | No | PLA | Yes | 1 |
3 | TankLidMark | 10% | 4 | No | PLA | Yes | 1 |
4 | TankBottom | 10% | 4 | No | PLA | Yes | 1 |
5 | Tank | 100% | 2 | No | PETG / PLA | Yes | 1 |
TankUnion | 100% | 4 | No | PETG / PLA | No | 0-1 | |
6 | DispenserTop | 10% | 4 | No | PLA | Yes | 1 |
7 | DispenserBody | 10% | 4 | No | PLA | Yes | 1 |
8 | ElectronicsBox | 10% | 4 | Yes | PLA | Yes | 1 |
9 | DispenserOutput | 10% | 4 | Yes | PLA | Yes | 1 |
10 | Foot | 10% | 4 | Yes | PLA | Yes | 1 |
11 | PushBlade | 100% | - | No | TPU / PLA | Yes | 1 |
12 | CleanBlade | 100% | - | No | TPU / PLA | Yes | 1 |
13 | FoodPlateBase | 10% | 4 | No | PLA | No | 0-1 |
14 | FoodPlateBed | 10% | 4 | No | PLA | No | 0-1 |
15 | ChargeCellMock1kG | 10% | 4 | No | PLA | No | 0-1 |
16 | ChargeCellSeparator | 10% | 4 | No | PLA | No | 0-1 |
If you need a simple cats feeder you only need to print required parts, other parts are optional like: food plate, tank expansion.
Food plate actually is used to prevent your pet moves food plate. Is ready to include an scale.
If you buy a standard rectangular tube of 150x75mm you don't need to print "tank" part. Remember to use a material food safe approved. If you print the tank in a transparent or translucid material you can see how full is the tank.
You can print the blades in PLA, but using TPU 83 Shore D makes them operate more smoothly and prevents potential jams.
# | COMPONENT | MODEL | SUPPLIER | QNT. |
---|---|---|---|---|
1 | Arduino Nano | ESP 32 | Arduino | 1 |
2 | Servo Motor | DS3218Pro-180 / DS3218Pro-270 | Aliexpress | 1 |
3 | Electrolytic Capacitor | From 470uF - 25V to 1000uF - 36V | Aliexpress | 1 |
4 | Wires | Wires for servo | Aliexpress | 1 |
5 | Servo Round Support | RCmall - Servo Support M3.8 | Aliexpress | 1 |
In this design, I have used the waterproof DS3218 servo because I have it at home. It will probably work with a servo that has less torque. This would mean cost savings. If a different servo is used, it will be necessary to print a part to adapt it to the existing slot.
Compatible microcontrollers:
# | SIZE | 3D PART | DESCRIPTION | QNT. |
---|---|---|---|---|
1 | M3x10mm | Dispenser | Decorative screws to fixed tank with dispenser | 2 |
2 | M4x50mm | Dispenser | Join dispenser with electronic box | 4 |
3 | M3x10mm | E. Box | Hexagonal head. Join dispenser output with electronic box | 2 |
4 | M4x20mm | E. Box | Join foot with electronic box. Join foot with food plate | 6 |
5 | M3x20 | Dosificator | Join PushBlade with servo | 4 |
6 | M3x20 | Dosificator | Join CleanBlade with PushBlade | 2 |
7 | M3 | E. Box | M3 standar nuts | 2 |
8 | M1x2 | E. Box | Fixed Arduino Nano into electronic box | 2 |
9 | M3 Nuts | Dispenser | M4 Insertion Nuts. Like this | 2 |
10 | M4 Nuts | Dispenser | M4 Insertion Nuts. Like this | 8 |
The wiring is very simple, you only need to include capacitor in parallel with Servo to protect Arduino Nano from peak tensions.
Signal pin could be any output pin of Arduino Nano. Remember to config pin number in config.json (see Usage and Configure section).
It's developed with MicroPhyton so your Arduino Nano ESP32 must have Micropython installed. All code is on github repository: Juan1ll0/AutoCAT. I'm open to accept security updates, bugfixes, improves…etc.
To make this device up and running you must copy all files and folders of the repository into the device root folder. Then make changes in config files (see Usage and Configure section) to establish network and hardware params.
Once here disconnect the Arduino Nano ESP32 from your computer and connect again to make a hard reset and check if Web UI is running.
My recommendations for this project are:
First of all you can ask me any problem with the design.
Once you have all code uploaded into device, you need to configure your wifi network and servo.
You can schedule more than 1 time in day and setup the number or rations per meal.
For networking configuration edit file “config.json” section “network”. Inside this file you must configure your wifi credentials and network configuration:
{
…
"network": {
"ssid": "your-ssid",
"passwd": "your-password",
"config": {
"static_ip": "your-private-network-ip",
"subnet_mask": "your-private-network-masl",
"gateway": "gateway-ip",
"dns": "your-dns"
}
}
}
*Note: “config” is optional, if you ignore this field DCHP will be used. Configuration file without static IP looks like this:
{
…
"network": {
"ssid": "your-ssid",
"passwd": “your-password”
}
}
To setup pin and angle for servo signal yo must set inside “config.json” section “servo”:
{
"servo": {
"pin": 5,
"angle": 270,
},
…
}
You can configure scheduler from “scheduler.json”. You can add or delete events:
[
{
"name": "Breakfast",
"quantity": 3,
"time": "09:55"
},
{
"name": "Meal",
"quantity": 1,
"time": "13:00"
},
{
"name": "Lunch",
"quantity": 2,
"time": "19:00"
}
]
This first version includes a Web Interface on port 5000 to schedule meals. So if you have your device configured on IP 192.168.1.25 you can access with this URL: http://192.168.15.230:5000
Image of interface:
Upload to github repository a new ESPHome version supporting charge cell and cnfigurable from Home Assitant.
New feature serve feed when weight is under x grams.
The author marked this model as their own original creation.