Table des matières:

Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot : 4 étapes (avec photos)
Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot : 4 étapes (avec photos)

Vidéo: Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot : 4 étapes (avec photos)

Vidéo: Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot : 4 étapes (avec photos)
Vidéo: Загадка Титаника : Как они могли не заметить айсберг?! Самая подробная история! 2024, Juillet
Anonim
Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot
Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot
Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot
Machine d'alimentation pour animaux de compagnie avec RasPi et Telegram Bot

Tout d'abord, je dois préciser qu'il ne s'agit pas d'une idée originale, il suffit de mettre à jour et d'adapter les scripts de programmation pour qu'ils fonctionnent avec le télégramme, je l'ai trouvé dans un précédent Instructable, donc les crédits en sont vraiment l'auteur.

Vous pouvez voir la version espagnole de ceci dans mon blog personnel:

Vous devez construire un petit circuit qui active un moteur à couple élevé, et comme mes connaissances en électronique sont très, très rares, j'ai dû passer quelques jours à apprendre les bases en regardant des vidéos sur YouTube.

Le script d'automatisation d'origine est écrit en Python et utilise une connexion GMail pour consulter les commandes, je n'avais jamais utilisé ce langage de programmation mais la vérité n'est pas si différente des autres, je l'ai un peu modifié pour qu'il s'adapte mieux au nouveau les bibliothèques Python et le processus d'automatisation ainsi que les configurations du système d'exploitation vous permettent de paramétrer les éléments suivants:

  • Interaction via des commandes envoyées au Chat contrôlées par ChatBots.
  • Il permet de suivre l'état des aliments distribués.
  • Contrôle la quantité de nourriture qui va être distribuée.
  • Il a des boutons qui vous permettent d'alimenter manuellement.
  • Il ne permet pas la suralimentation en désactivant l'alimentation à intervalles de 8 heures.
  • Il dispose d'un écran LCD d'état qui affiche les données comme la date et l'heure de la prochaine fois pour la prochaine alimentation, le SSID auquel il est connecté au WiFi et l'adresse IP de l'appareil.
  • Facultatif: affiche des blagues aléatoires de Chuck Norris et/ou des anecdotes sur les nombres à l'aide d'une paire d'APIS publiques (ingénieuses par l'auteur original).
  • Le système est immunisé contre les redémarrages dus à des coupures de courant car il enregistre un fichier d'état.
  • Le système détecte une perte de connexion et essaie de se reconnecter jusqu'à ce qu'il réussisse.

Étape 1: Matériaux utilisés

  • 1 Raperry Pi, de préférence la version 3 qui est déjà intégrée à la carte sans fil, vous pouvez également utiliser la version Pi 3 Zero, cela demande un peu plus de travail car il faut souder les broches, mais j'ai découvert très tard que cela pouvait utiliser l'un de ceux-ci qui sont plus économiques.
  • 1 moteur électrique à couple élevé, 37mm, 3.5rpm et 12V.
  • 1 Support pour moteur 37mm.
  • Ecran LCD 1 caractère de 20x4 lignes avec commande HD44780.
  • 1 Distributeur de céréales Zevro Modèle WM1001 arbre-D de 5 pouces de long, 0,63cm de diamètre (la coupe en D est nécessaire pour le fixer au distributeur)
  • 1 coupleur d'arbre de 1/4" à 6mm pour relier le au moteur.

Tous les matériaux précédents à l'exception des deux derniers je n'ai pas pu les obtenir dans mon pays (ou du moins je ne savais pas où les obtenir), cependant la tige et le coupleur sont probablement dans un atelier de soudure mais étant la première fois que je fais quelque chose comme ça, je n'avais aucune idée de comment il devait être pour adapter le moteur alors j'ai demandé la page des liens décrits ci-dessus; Ci-dessous les matériaux que je pourrais acheter dans les magasins locaux:

  • 1 caisse en bois, j'utilise un 20,3 cm de large × 26,7 cm de haut x 13 cm de profondeur. le caisson a une porte qui s'ouvre à droite avec un trou de 10cm x 4cm pour placer l'écran LCD (menuiserie locale)
  • 3 boutons poussoirs
  • 1 petit protoboard
  • 1 LED de 3.3 Volts (Peu importe la couleur mais pour la tension elles sont généralement Rouge)
  • 1 transistor NPN PN2222
  • 1 Résistance de 270 Ω
  • 1 Résistance de 10 KΩ
  • 1 Potentiomètre de 10 KΩ
  • 1 diode IN4003 (IN4001 ou IN4004 peuvent fonctionner)
  • 1 adaptateur 12V 3A
  • 1 adaptateur 5V 2A
  • 4 vis avec écrou papillon de 1,5 pouces à 2 pouces (dépend de l'épaisseur du bois utilisé, elles servent à fixer le support moteur à la caisse en bois)
  • Câbles Brins de cavalier de différentes couleurs
  • 1 tube pliable ou un ensemble de PVC de 4 pouces de diamètre, cela dépend de la hauteur à laquelle la caisse en bois sera placée.
  • 1 coude PVC qui se fixe sur le plâtre précédent.
  • 3 colliers pour tuyaux de voiture (The World)
  • 4 pieds de câble UTP (nous avons besoin des paires torsadées pour effectuer les connexions)
  • 1 WebCam USB, il n'est pas nécessaire d'être en haute résolution.

Quelques matériaux divers qui peuvent être obtenus dans les quincailleries ou peut-être que nous avons déjà: Ruban adhésif industriel

  • Soudeuse à l'étain
  • Étain
  • Percer
  • Perceuse 5/16
  • Vis S8 avec extenseurs

Étape 2: Placer la structure

Placer la structure
Placer la structure
Placer la structure
Placer la structure
Placer la structure
Placer la structure

L'idée principale est de remplacer la poignée de distribution qui vient dans le ZEVRO par la tige D qui sera ensuite reliée au moteur au moyen du coupleur. Le distributeur sera fixé à la caisse en bois et la caisse en bois au mur. Comme je ne connais pas grand chose en électronique je n'ai utilisé aucune plaque en bakélite pour monter le circuit donc j'ai utilisé la planche à pain pour mettre tous les composants donc au fond de la boite se fixe avec des vis le Rapberry Pi et la planche à pain qui avait déjà un adhésif sur le dos donc je suis juste allé le coller. La box doit avoir trois boutons qui auront la fonction de Redémarrer la minuterie, activer le chargeur et le dernier sera une étape directe pour activer le moteur sans passer par le circuit. Le moteur sera maintenu à l'intérieur de la boîte au moyen du support, de sorte que seule la tige D qui se connecte au distributeur dépassera de la boîte, dans le fond de la boîte, fixez et ajustez la webcam de sorte qu'à chaque consultation et confirmation de courrier, je envoyé une photo de l'état de l'assiette, ceci pour ne pas trop nourrir au cas où ils n'auraient pas fini le dernier tour de nourriture.

Du bas du distributeur, le tube qui descend jusqu'à l'assiette a été placé et le coude en PVC a été placé sur la base, j'ai placé un peu de Ruban Industriel dans la sortie pour minimiser la vitesse du flux des aliments et fait une base de distribution pour empêcher la nourriture de pulvériser partout. Pour fixer le tuyau au mur, utilisez des supports métalliques que vous fixez au mur avec les goujons S8.

Sur la porte de la box tenez la plaque de l'écran LCD et utilisez les paires torsadées du câble UTP pour les amener directement au Raspberry, à l'autre extrémité des câbles épissez les embouts femelles des cavaliers pour faciliter la connexion en les ports GPIO du Raspberry. Ce serait le schéma du circuit. Je vais essayer de l'expliquer avec le peu que je peux obtenir de l'électronique.

Le moteur est connecté directement au pôle positif du transformateur 12 volts mais pour que le courant circule il doit passer par le circuit au pôle neutre du moteur, pour ce transistor N2222 est utilisé. Les transistors ont normalement 3 pattes qui correspondent à un collecteur, une base et un émetteur, selon le modèle du transistor l'emplacement de ces pattes peut varier; Ce transistor fait fonctionner l'interrupteur. C'est là que l'on connecte le pôle neutre du moteur au collecteur du transistor, la broche n°19 du rapberry est connectée à la base au moyen d'une résistance de 270Ω et l'émetteur est connecté à la borne neutre du transistor. Transformateur 12V avec l'un des pôles de terre de la framboise; le transistor laissera passer le courant entre collecteur et émetteur tant que la base est stimulée avec une tension suffisante; plus tard nous programmerons le rapberry pour que selon certaines commandes le port 19 émette 3,3 volts, assez pour que le circuit continue et active le moteur.

Pour l'écran LCD, une autre partie du protobard est utilisée dans un circuit différent où vous branchez le potentiomètre 10KΩ qui rejette le contraste du texte qui apparaît sur l'écran LCD, donc si rien n'apparaît à l'écran c'est probablement parce que le potentiomètre est totalement fermé; dans mon cas je le laisse complètement ouvert pour que le texte soit mieux visualisé. En fin de compte, les connexions dans la maquette seraient les suivantes.

Étape 3: Configuration du Raspberry Pi

Tout d'abord, il est important de créer le Telegram Bot dont le système sera géré. Vous aurez besoin d'une clé pour modifier le script python joint. Veuillez lire les étapes sur la documentation du télégramme:

core.telegram.org/bots#3-how-do-i-create-a-bot

Pour configurer le rapberry, utilisez la version Lite du Rapbian (nous n'avons pas besoin de l'interface graphique) et appliquez la configuration de base qui affiche le raspbian une fois installé ou en utilisant la commande raspi-config: agrandissez l'espace à 100% et activez le SSH mais surtout le plus important est de changer le mot de passe et le nom d'utilisateur à l'utilisateur pi qui vient par défaut (sinon, comme cela m'est arrivé, ils peuvent subir une attaque par le port 22 s'ils ont une IP publique adressée au raspberry). En dehors de cela, la configuration pour se connecter automatiquement à mon réseau WiFi (En supposant que mon réseau s'appelle "BlogSoriano" et mon mot de passe est "$ecure123!") Nous générons et enregistrons la clé dans le fichier de connexions sans fil avec la commande suivante:

sudo wpa_passphrase "BlogSoriano" "$ecure123!" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null

la prochaine chose est de mettre à jour et d'installer le système d'installation python "pip" afin que nous nous connections en tant que root, mettrons à jour et installons les packages nécessaires:

sudo -i apt-get update apt-get install build-essential python-dev python-smbus python-pip

Avec cela, nous avons déjà accès à la bibliothèque de classes python, pour le script que nous allons utiliser, nous devons installer les éléments suivants:

pip installer RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces télépot sans fil cv2

Une fois l'installation des dépendances terminée, nous utiliserons le script attaché à cette étape, je l'enregistre dans le chemin /opt/petfeeder.py et le fichier peut être créé à l'aide de la commande nano /opt/petfeeder.py et à l'intérieur de ce fichier nous collons le code ou, si vous avez plus d'expérience avec Linux, vous pouvez le télécharger directement avec wget. Dans le script, il est important de modifier les variables BOTKEY (en ligne 36) et SYSPASSWORD (en ligne 23).

Je précise que ce code n'a pas été écrit par moi puisque je n'avais jamais programmé en Python, je l'ai seulement modifié pour fonctionner avec les nouvelles librairies et avec l'écran LCD 20x4 et pour utiliser le télégramme Bot.

Une fois que nous avons le Script, nous devons changer les valeurs des variables avec la clé du bot; pour cela, il est nécessaire de créer un nouveau Telegram Bot, avec lequel il suffirait de sauvegarder le fichier et de quitter (avec Ctrl + ou save et ctrl + x quitte l'éditeur nano), nous avons juste besoin d'être la preuve des redémarrages; le script lui-même enregistre la dernière fois que le système d'alimentation est activé, nous n'avons donc qu'à faire exécuter le script à chaque démarrage du système d'exploitation, pour cela j'ai trouvé une solution très particulière avec un programme appelé superviseur, qui est installé à partir des référentiels Debian:

superviseur d'installation apt-get

et une fois installé, il suffit de créer un fichier de configuration dans /etc/supervisor/conf.d/petfeeder.conf, comme dans le cas précédent on peut le créer et l'enregistrer avec nano, ce fichier aura les éléments suivants:

[program:petfeederd]directory=/opt command=python petfeeder.py autostart=true autorestart=true

Une fois le fichier enregistré, nous pouvons utiliser la commande superviseurctl [start | arrêter | restart] petfeederd, comme dans ce cas le service n'a pas été démarré, nous l'exécutons avec start:

superviseurctl démarrer petfeederd

Étape 4: Prêt à tester

Image
Image
Prêt à tester
Prêt à tester
Prêt à tester
Prêt à tester
Prêt à tester
Prêt à tester

Et avec cela, le système devrait fonctionner, l'écran LCD devrait afficher des informations sur le moment où ce devrait être la prochaine alimentation ou s'il est prêt à être alimenté devrais-je le dire. Vous devez également montrer le nom du réseau sans fil auquel vous êtes connecté et l'adresse IP qui est utilisée au cas où nous aurions besoin de nous connecter via SSH, je partage une petite vidéo que j'ai faite, je m'excuse pour la qualité de celle-ci, je ne suis pas très bon est ce sujet des vlogs.

Vous devriez pouvoir rechercher votre bot sur Telegram et envoyer l'une des commandes suivantes après avoir/autorisé votre chat:

/feed: démarre le processus d'alimentation tant que la période de temps paramétrée s'est écoulée.

/quand: il renvoie des informations sur la date de la dernière tétée et une image de l'assiette de nourriture.

/photo: Renvoie une image de l'assiette de nourriture.

/restart: Redémarrez le système, définissez la variable de la dernière alimentation sur 0 pour pouvoir alimenter immédiatement.

/status Il informe de l'état de la connexion Internet: SSID du Wireless connecté et l'adresse IP que le système possède dans le réseau.

Conseillé: