- Matériel requis
- Schéma
- Modèle de mangeoire pour animaux de compagnie imprimé en 3D
- Module DS3231 RTC
- Code et explication
- Fonctionnement du distributeur automatique pour animaux de compagnie
Aujourd'hui, nous construisons un distributeur automatique pour animaux de compagnie basé sur Arduino qui peut automatiquement servir de la nourriture à votre animal en temps opportun. Il dispose d'un module DS3231 RTC (horloge en temps réel), qui sert à régler l'heure et la date à laquelle votre animal doit recevoir de la nourriture. Ainsi, en réglant l'heure en fonction du programme d'alimentation de votre animal, l'appareil laisse tomber ou remplit automatiquement le bol de nourriture.
Dans ce circuit, nous utilisons un écran LCD 16 * 2 pour afficher l'heure à l'aide du module DS3231 RTC avec Arduino UNO. En outre, un servomoteur est utilisé pour faire tourner les récipients pour fournir la nourriture et un clavier matriciel 4 * 4 pour régler manuellement l'heure de l'alimentation de l'animal. Vous pouvez régler l'angle de rotation et la durée d'ouverture du récipient en fonction de la quantité de nourriture que vous souhaitez servir à votre animal. La quantité de nourriture peut également dépendre de votre animal de compagnie, qu'il s'agisse d'un chien, d'un chat ou d'un oiseau.
Matériel requis
- Arduino UNO
- Clavier matriciel 4 * 4
- Écran LCD 16 * 2
- Bouton poussoir
- Servomoteur
- Résistance
- Connexion des fils
- Planche à pain
Schéma
Dans ce chargeur de chat basé sur Arduino, pour obtenir l'heure et la date, nous avons utilisé le module RTC (Real Time Clock). Nous avons utilisé le clavier matriciel 4 * 4 pour régler manuellement l'heure du repas de l'animal à l'aide d'un écran LCD 16x2. Le servomoteur fait tourner le récipient et laisse tomber les aliments à l'heure définie par l'utilisateur. L'écran LCD est utilisé pour afficher la date et l'heure. Le travail complet peut être trouvé dans la vidéo donnée à la fin.
Modèle de mangeoire pour animaux de compagnie imprimé en 3D
Nous avons conçu ce conteneur Arduino Pet Feeder en utilisant l'imprimante 3D. Vous pouvez également imprimer le même design en téléchargeant les fichiers à partir d'ici. Le matériau utilisé pour imprimer ce modèle est le PLA. Il comporte quatre parties comme indiqué dans l'image ci-dessous:
Assemblez les quatre pièces et connectez le servomoteur comme indiqué dans l'image ci-dessous:
Si vous êtes nouveau dans l'impression 3D, voici le guide de démarrage. Vous pouvez télécharger les fichiers STL pour cette mangeoire pour animaux de compagnie ici.
Module DS3231 RTC
DS3231 est un module RTC (Real Time Clock). Il est utilisé pour maintenir la date et l'heure de la plupart des projets électroniques. Ce module dispose de sa propre alimentation à pile bouton à l'aide de laquelle il maintient la date et l'heure même lorsque l'alimentation principale est coupée ou que le MCU a subi une réinitialisation matérielle. Donc, une fois que nous avons défini la date et l'heure dans ce module, il en gardera toujours une trace. Dans notre circuit, nous utilisons le DS3231 pour nourrir l'animal en fonction de l'heure, mis en place par le propriétaire de l'animal, comme une alarme. Lorsque l'horloge atteint l'heure réglée, elle actionne le servomoteur pour ouvrir la porte du récipient et la nourriture tombe dans le bol de nourriture de l'animal.
Remarque: lorsque vous utilisez ce module pour la première fois, vous devez régler la date et l'heure. Vous pouvez également utiliser RTC IC DS1307 pour lire l'heure avec Arduino.
Code et explication
Le code Arduino complet d' Automatics Pet Feeder est donné à la fin.
Arduino a des bibliothèques par défaut pour utiliser le servomoteur et l'écran LCD 16 * 2 avec lui. Mais pour utiliser le module DS3231 RTC et le clavier matriciel 4 * 4 avec l'Arduino, vous devez télécharger et installer les bibliothèques. Le lien de téléchargement pour les deux bibliothèques est donné ci-dessous:
- Bibliothèque de modules DS3231 RTC (horloge en temps réel)
- Bibliothèque de clavier matriciel 4 * 4
Dans le code ci-dessous, nous définissons des bibliothèques, «#include
#comprendre
Dans le code ci-dessous, nous définissons le keymap pour le clavier matriciel 4 * 4 et assignons les broches Arduino pour la ligne et les colonnes du clavier.
clés de caractères = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; octet rowPins = {2, 3, 4, 5}; octet colPins = {6, 7, 8, 9};
Ici, nous créons le clavier en utilisant la commande ci-dessous dans le code.
Keypad kpd = Keypad (makeKeymap (clés), rowPins, colPins, ROWS, COLS);
Attribution de broches Arduino A4 et A5 pour se connecter aux broches SCL et SDA du DS3231. Aussi, attribuer des broches à l'écran LCD et initialiser le servomoteur.
DS3231 rtc (A4, A5); Servo servo_test; // initialise un objet servo pour le servo connecté LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Crée un objet LC. Paramètres: (rs, enable, d4, d5, d6, d7)
Dans le code ci-dessous, nous déclarons le t1 à t6, la clé et le tableau r, ainsi que le flux.
int t1, t2, t3, t4, t5, t6; booléen feed = true; clé char; int r;
Dans le code ci-dessous, nous mettons en place tous les composants pour le démarrage. Comme dans ce code «servo_test.attach (10);» Le servo est attaché à la 10 e broche de l'Arduino. Définition de A0, A1 et A2 comme broche de sortie et initialisation du module LCD et RTC.
void setup () {servo_test.attach (10); // attachez la broche de signal du servo à la broche 9 d'arduino rtc.begin (); lcd.begin (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, SORTIE); pinMode (A1, SORTIE); pinMode (A2, SORTIE); }
Maintenant, le fonctionnement de la boucle est la partie importante à comprendre. Chaque fois que le bouton-poussoir est enfoncé, il devient haut signifie 1, ce qui peut être lu par «buttonPress = digitalRead (A3)» . Maintenant, il entre dans l'instruction 'if' et appelle la fonction 'setFeedingTime' . Ensuite, il compare le temps réel et le temps saisi par l'utilisateur. Si la condition est vraie, ce qui signifie que le temps réel et le temps entré sont les mêmes, alors le servomoteur tourne à un angle de 100 degrés et après 0,4 seconde de retard, il revient à sa position initiale.
boucle vide () {lcd.setCursor (0,0); int buttonPress; buttonPress = digitalRead (A3); if (buttonPress == 1) setFeedingTime (); lcd.print ("Heure:"); Chaîne t = ""; t = rtc.getTimeStr (); t1 = t.charAt (0) -48; t2 = t.charAt (1) -48; t3 = t.charAt (3) -48; t4 = t.charAt (4) -48; t5 = t.charAt (6) -48; t6 = t.charAt (7) -48; lcd.print (rtc.getTimeStr ()); lcd.setCursor (0,1); lcd.print ("Date:"); lcd.print (rtc.getDateStr ()); if (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // commande pour faire tourner le servo à l'angle de retard spécifié (400); servo_test.write (55); feed = faux; }}
Dans le code de fonction vide setFeedingTime () , après avoir appuyé sur le bouton-poussoir, nous pouvons entrer l'heure d'alimentation de l'animal, puis nous devons appuyer sur `` D '' pour gagner ce temps. Lorsque le temps enregistré correspond au temps réel, le servo commence à tourner.
void setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Régler l'heure d'alimentation"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); while (1) {clé = kpd.getKey (); char j; if (key! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (clé); r = clé-48; i ++; j ++; if (j == 2) {lcd.print (":"); j ++; } retard (500); } if (clé == 'D') {clé = 0; Pause; }}}
Fonctionnement du distributeur automatique pour animaux de compagnie
Après avoir téléchargé le code sur l'Arduino Uno, l'heure et la date seront affichées sur l'écran LCD 16 * 2. Lorsque vous appuyez sur le bouton-poussoir, il demande l'heure d'alimentation de l'animal et vous devez entrer l'heure à l'aide du clavier matriciel 4 * 4. L'écran affichera l'heure entrée et lorsque vous appuyez sur «D», il enregistre l'heure. Lorsque le temps réel et le temps entré correspondent, il fait tourner le servomoteur de sa position initiale 55⁰ à 100⁰ et après un délai il revient à sa position initiale. Par conséquent, le servomoteur est connecté à la porte du récipient pour aliments, de sorte qu'il se déplace, la porte s'ouvre et une certaine quantité de nourriture tombe dans le bol ou l'assiette. Après un délai de 0,4 seconde, le servomoteur tourne à nouveau et ferme le portail. L'ensemble du processus se termine en quelques secondes. C'est ainsi que votre animal reçoit automatiquement la nourriture à l'heure que vous avez entrée.
Changer l'heure et le degré en fonction de la nourriture