Taula de continguts:

Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot: 4 passos (amb imatges)
Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot: 4 passos (amb imatges)

Vídeo: Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot: 4 passos (amb imatges)

Vídeo: Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot: 4 passos (amb imatges)
Vídeo: ПОЧЕМУ Я ЖДУ L4D3 2024, Juliol
Anonim
Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot
Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot
Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot
Màquina d'alimentació d'animals de companyia amb RasPi i Telegram Bot

Primer de tot, he d’aclarir que no es tracta d’una Idea Mine original, només heu d’actualitzar i adaptar els scripts de programació perquè funcionin amb telegrames, els vaig trobar en un instructable anterior, de manera que els crèdits en són l’autor.

Podeu veure la versió en castellà al meu bloc personal:

Cal construir un petit circuit que activi un motor de parell elevat i, ja que el meu coneixement d’electrònica és molt, molt escàs, vaig haver de passar un parell de dies aprenent els conceptes bàsics veient vídeos a YouTube.

L'escriptura d'automatització original està escrita en Python i utilitza una connexió GMail per consultar les ordres, mai havia utilitzat aquest llenguatge de programació, però la veritat no és tan diferent de la resta, l'he modificat una mica perquè s'adapti millor al nou les biblioteques Python i el procés d'automatització juntament amb les configuracions del sistema operatiu us permeten parametritzar el següent:

  • Interacció mitjançant comandes enviades al xat controlades mitjançant ChatBots.
  • Permet fer un seguiment de l’estat dels aliments dispensats.
  • Controla la quantitat de menjar que es dispensarà.
  • Té botons que permeten alimentar-se manualment.
  • No permet la sobrealimentació desactivant l'alimentació a intervals de 8 hores.
  • Té una pantalla LCD d’estat que mostra les dades com la data i l’hora de la propera font d’alimentació, el SSID al qual està connectat al WiFi i l’adreça IP del dispositiu.
  • Opcional: mostra algunes bromes aleatòries de Chuck Norris i / o curiositats de números mitjançant un parell d’APIS públics (enginyós de l’autor original).
  • El sistema és immune als reinicis a causa de talls de corrent, ja que desa un fitxer d’estat.
  • El sistema detecta quan hi ha una pèrdua de connexió i intenta tornar a connectar-se fins que tingui èxit.

Pas 1: materials usats

  • 1 Raperry Pi, preferiblement la versió 3 que ja està integrada amb la targeta sense fil, també podeu utilitzar la versió Pi 3 Zero, es necessita una mica més de treball perquè heu de soldar els pins, però vaig saber molt tard que podria utilitzeu un d'aquests que sigui més econòmic.
  • 1 motor elèctric d’alt parell, 37 mm, 3,5 rpm i 12 V.
  • 1 Braket per a motor de 37 mm.
  • Pantalla LCD de 1 caràcter de 20x4 línies amb control HD44780.
  • 1 Dispensador de cereals Zevro Model WM1001 eix-D de 5 polzades de llarg, 0,63 cm de diàmetre (cal tallar D per fixar-lo al dispensador)
  • 1 acoblament de l'eix de 1/4 "a 6 mm per unir-lo al motor.

Tots els materials anteriors, excepte els dos últims, no els he pogut aconseguir al meu país (o almenys no sabia on aconseguir-los), però la barra i l’acoblador probablement es troben en un taller de soldadura, però és la primera vegada que faig alguna cosa així, no tenia ni idea de com hauria de ser encaixar el motor, així que vaig preguntar a la pàgina dels enllaços descrits anteriorment; A sota dels materials que podia comprar a les botigues locals:

  • 1 capsa de fusta, faig servir una amplada de 20,3 cm × 26,7 cm d’alçada per 13 cm de profunditat. la caixa té una porta que s’obre a la dreta amb un forat de 10cm x 4cm per col·locar la pantalla LCD (fusteria local)
  • 3 polsadors
  • 1 protoboard petit
  • 1 LED de 3,3 volts (no importa el color, però pel voltatge solen ser vermells)
  • 1 transistor NPN PN2222
  • 1 Resistència de 270 Ω
  • 1 Resistència de 10 KΩ
  • 1 potenciòmetre de 10 KΩ
  • 1 díode IN4003 (pot funcionar IN4001 o IN4004)
  • 1 adaptador de 12V 3A
  • 1 adaptador 5V 2A
  • 4 cargols amb femella d'ala d'1,5 polzades a 2 polzades (depèn del gruix de la fusta utilitzada, són per fixar el suport del motor a la caixa de fusta)
  • Cables Jumper de diversos colors
  • 1 tub plegable o un joc de PVC de 4 polzades de diàmetre, depèn de l'alçada a la qual es col·locarà la caixa de fusta.
  • 1 colze de PVC que s’uneix al repartiment anterior.
  • 3 pinces per a canonades de cotxes (The World)
  • 4 peus de cable UTP (necessitem els parells trenats per fer les connexions)
  • 1 càmera web USB, no cal que sigui d'alta resolució.

Alguns materials diversos que es poden obtenir a ferreteries o, possiblement, ja els tenim: Industrial Tape

  • Soldador de llauna
  • Estany
  • Trepant
  • Perforar el 5/16
  • Cargols S8 amb expansors

Pas 2: col·locació de l'estructura

Col·locació de l’estructura
Col·locació de l’estructura
Col·locació de l’estructura
Col·locació de l’estructura
Col·locació de l’estructura
Col·locació de l’estructura

La idea principal és substituir el mànec dispensador que ve al ZEVRO per la vareta D que després es connectarà al motor mitjançant l’acoblador. El dispensador s’adjuntarà a la caixa de fusta i la caixa de fusta a la paret. Com que no sé molta electrònica, no he utilitzat cap placa de baquelita per muntar el circuit, així que he utilitzat la placa per posar tots els components, de manera que a la part inferior de la caixa es fixa amb cargols el Rapberry Pi i la placa que ja tenia adhesiu a la part posterior, així que vaig anar a enganxar-lo. La caixa ha de tenir tres botons que tindran la funció de Reiniciar el temporitzador, activar l'alimentador i l'últim serà un pas directe per activar el motor sense passar pel circuit. El motor es mantindrà dins de la caixa mitjançant el suport, de manera que només la barra D que es connecta al dispensador sobresortirà de la caixa, a la part inferior de la caixa, fixeu i ajusteu la càmera web de manera que en cada consulta i confirmació de correu he enviat una foto de com està el plat, això no s'alimenta en excés per si no han acabat l'última ronda d'aliments.

Des de la part inferior del dispensador, es va col·locar el tub que baixa a la placa i es va col·locar el colze de PVC a la base, vaig col·locar una mica de cinta industrial a la sortida per minimitzar la velocitat del flux d’aliments i vaig fer una base dispensadora per evitar que els aliments s’escampin per tot arreu. Per fixar la canonada a la paret, utilitzeu mènsules metàl·liques que fixeu a la paret amb els cargols de fixació S8.

A la porta de la caixa, subjecteu la placa de la pantalla LCD i utilitzeu els parells trenats del cable UTP per portar-los directament al gerd; a l’altre extrem dels cables s’uneixen les puntes femenines dels ponts per facilitar la connexió a els ports GPIO del Raspberry. Aquest seria el diagrama del circuit. Intentaré explicar-ho amb el poc que puc obtenir d’electrònica.

El motor està connectat directament al pol positiu del transformador de 12 volts, però perquè flueixi el corrent ha de passar pel circuit del pol neutre del motor, perquè s’utilitza aquest transistor N2222. Els transistors normalment tenen 3 potes que corresponen a un col·lector, una base i un emissor, segons el model del transistor, la ubicació d’aquestes potes pot variar; Aquest transistor fa que la funció de commutador. Aquí és on connectem el pol neutre del motor al col·lector del transistor, el pin # 19 de la rapberry es connecta a la base mitjançant una resistència de 270Ω i l’emissor es connecta al terminal neutre del transistor. Transformador de 12V junt amb un dels pols de terra del gerd; el transistor deixarà fluir el corrent entre el col·lector i l’emissor sempre que s’estimuli la base amb una tensió suficient; més endavant programarem el rapberry de manera que segons certes ordres el port 19 emetrà 3,3 volts, suficient perquè el circuit continuï i activi el motor.

Per a la pantalla LCD, una altra part del protobard s’utilitza en un circuit diferent on es connecta el potenciòmetre de 10KΩ que rebutja el contrast del text que apareix a la pantalla LCD, de manera que si no apareix res a la pantalla és probablement perquè el potenciòmetre és totalment tancat; en el meu cas el deixo completament obert perquè es visualitzi millor el text. Al final, les connexions a la taula de proves serien les següents.

Pas 3: Configuració de Raspberry Pi

Primer de tot, és important crear el bot de Telegram per gestionar el sistema. Necessitareu una clau per modificar l'script de python adjunt. Llegiu els passos del documentació del telegrama:

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

Per configurar el rapberry, utilitzeu la versió Lite del Rapbian (no necessitem la interfície gràfica) i apliqueu la configuració bàsica que mostra el raspbian un cop instal·lat o mitjançant l’ordre raspi-config: amplieu l’espai al 100% i activeu el SSH però sobretot el més important és canviar la contrasenya i el nom d'usuari a l'usuari pi que ve per defecte (en cas contrari, com em va passar, poden patir un atac pel port 22 si tenen una IP pública adreçada al raspberry). A part, la configuració per connectar-me automàticament a la meva xarxa WiFi (suposant que la meva xarxa es diu "BlogSoriano" i la meva contrasenya és "$ ecure123!") Generem i desem la clau al fitxer de connexions sense fils amb l'ordre següent:

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

el següent és actualitzar i instal·lar el sistema d'instal·lació de python "pip", de manera que iniciarem la sessió com a root, actualitzarem i instal·larem els paquets necessaris:

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

Amb això ja tenim accés a la biblioteca de classes de Python, per a l'script que farem servir, hem d'instal·lar el següent:

instal·lar pip RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces telepot sense fils cv2

Un cop finalitzada la instal·lació de les dependències, utilitzarem l'script adjunt a aquest pas, el deso a la ruta /opt/petfeeder.py i el fitxer es pot crear mitjançant l'ordre nano /opt/petfeeder.py i dins d'aquest fitxer. enganxem el codi o, si teniu més experiència amb Linux, podeu descarregar-lo directament amb wget. Al script és important modificar les variables BOTKEY (a la línia 36) i SYSPASSWORD (a la línia 23).

Aclareixo que aquest codi no el vaig escriure, ja que mai havia programat a Python, només el vaig modificar per treballar amb les noves biblioteques i amb la pantalla LCD de 20x4 i per utilitzar el telegrama Bot.

Un cop tenim l'script, hem de canviar els valors de les variables amb la clau del bot; per a això, cal crear un nou bot de Telegram, amb el qual només seria desar el fitxer i sortir (amb Ctrl + o desar i ctrl + x deixa l'editor nano), només hem de ser una prova de reinicis; el propi script guarda l'última vegada que s'activa el sistema d'alimentació, de manera que només hem d'executar el script cada vegada que s'inicia el sistema operatiu, per això he trobat una solució molt particular amb un programa anomenat supervisor, que s'instal·la des dels dipòsits de Debian:

apt-get install supervisor

i un cop instal·lat, només necessitem crear un fitxer de configuració a /etc/supervisor/conf.d/petfeeder.conf, ja que en el cas anterior el podem crear i desar amb nano, aquest fitxer tindrà el següent:

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

Un cop desat el fitxer, podem utilitzar l'ordre supervisorctl [start | aturar | reiniciar] petfeederd, ja que en aquest cas el servei no s'ha iniciat, l'executem amb start:

supervisorctl iniciar petfeederd

Pas 4: llest per provar

Image
Image
A punt per provar
A punt per provar
A punt per provar
A punt per provar
A punt per provar
A punt per provar

I amb això, el sistema hauria de funcionar, la pantalla LCD hauria de mostrar informació sobre quan hauria de ser el següent feed o si està preparat per alimentar-ho, si ho dic. També heu de mostrar el nom de la xarxa sense fils a la qual esteu connectat i l’adreça IP que s’utilitza en cas que ens hàgim de connectar a través de SSH, comparteixo un petit vídeo que he fet, demano disculpes per la qualitat de la mateixa, no sóc molt bo és aquest tema dels vlogs.

Haureu de poder cercar el bot a Telegram i enviar una de les ordres següents després d’autoritzar el xat:

/ feed: inicia el procés d'alimentació sempre que hagi transcorregut el període de temps parametritzat.

/ quan: retorna informació sobre quan va ser l'última alimentació i una imatge del plat d'aliments.

/ foto: Retorna una imatge del plat de menjar.

/ restart: reinicieu el sistema, configureu la variable de l'últim feed a 0 per poder alimentar-lo immediatament.

/ status Informa sobre l'estat de la connexió a Internet: SSID de la connexió sense fils connectada i l'adreça IP que el sistema té a la xarxa.

Recomanat: