Sommario:

Mangiatoia per animali domestici con RasPi e Telegram Bot: 4 passaggi (con immagini)
Mangiatoia per animali domestici con RasPi e Telegram Bot: 4 passaggi (con immagini)

Video: Mangiatoia per animali domestici con RasPi e Telegram Bot: 4 passaggi (con immagini)

Video: Mangiatoia per animali domestici con RasPi e Telegram Bot: 4 passaggi (con immagini)
Video: ACCESSORI SMART per CANI e GATTI. Fontanella, dosa cibo e telecamera con gioco PAWBBY 2024, Dicembre
Anonim
Mangiatoia per animali domestici con RasPi e Telegram Bot
Mangiatoia per animali domestici con RasPi e Telegram Bot
Mangiatoia per animali domestici con RasPi e Telegram Bot
Mangiatoia per animali domestici con RasPi e Telegram Bot

Prima di tutto devo chiarire che questa non è una Idea Mine originale, basta aggiornare e adattare gli script di programmazione per funzionare con telegram, l'ho trovato in un precedente Instructable quindi i crediti ne sono davvero l'autore.

Puoi vedere la versione spagnola di questo nel mio blog personale:

Devi costruire un piccolo circuito che attivi un motore a coppia elevata, e poiché la mia conoscenza dell'elettronica è molto, molto scarsa, ho dovuto passare un paio di giorni a imparare le basi guardando i video su YouTube.

Lo script di automazione originale è scritto in Python e utilizza una connessione GMail per consultare i comandi, non avevo mai usato questo linguaggio di programmazione ma la verità non è poi così diversa dagli altri, l'ho modificato un po' in modo che si adattasse meglio al nuovo quelle Librerie Python e il processo di automazione insieme alle configurazioni del sistema operativo consentono di parametrizzare quanto segue:

  • Interazione tramite comandi inviati a Chat controllata tramite ChatBots.
  • Consente di monitorare lo stato del cibo erogato.
  • Controlla la quantità di cibo che verrà erogata.
  • Ha pulsanti che ti permettono di alimentare manualmente.
  • Non consente la sovralimentazione disabilitando l'alimentazione a intervalli di 8 ore.
  • Dispone di un LCD di stato che mostra i dati come la data e l'ora della prossima volta per la prossima alimentazione, l'SSID a cui è connesso al WiFi e l'indirizzo IP del dispositivo.
  • Facoltativo: mostra alcune barzellette casuali di Chuck Norris e/o curiosità di numeri utilizzando una coppia di API pubbliche (Ingenious dall'autore originale).
  • Il sistema è immune ai riavvii dovuti a interruzioni di corrente poiché salva un file di stato.
  • Il sistema rileva quando si verifica una perdita di connessione e tenta di riconnettersi fino a quando non ha esito positivo.

Passaggio 1: materiali usati

  • 1 Raperry Pi, preferibilmente la versione 3 che è già integrata con la scheda Wireless, puoi usare anche la versione Pi 3 Zero, ci vuole un po' più di lavoro perché devi saldare i pin, ma ho scoperto molto tardi che potrebbe utilizzare uno di questi che sono più economici.
  • 1 motore elettrico ad alta coppia, 37 mm, 3,5 giri/min e 12 V.
  • 1 staffa per motore da 37 mm.
  • Schermo LCD 1 carattere di 20x4 righe con controllo HD44780.
  • 1 Dispenser di cereali Zevro Modello WM1001 albero-D di 5 pollici di lunghezza, 0,63 cm di diametro (è necessario un taglio D per fissarlo al distributore)
  • 1 Giunto albero da 1/4" a 6mm per unire il motore al motore.

Tutti i materiali precedenti tranne gli ultimi due non sono riuscito a trovarli nel mio paese (o almeno non sapevo dove trovarli), tuttavia l'asta e l'accoppiatore sono probabilmente in un laboratorio di saldatura ma essendo la prima volta che faccio qualcosa così, non avevo idea di come dovesse essere adattare il motore quindi ho chiesto la pagina dei link sopra descritti; Di seguito i materiali che potrei acquistare nei negozi locali:

  • 1 scatola di legno, io uso una larghezza di 20,3 cm × 26,7 cm di altezza x 13 cm di profondità. la scatola ha una porta che si apre a destra con un foro di 10cm x 4cm per posizionare lo schermo LCD (falegnameria locale)
  • 3 pulsanti
  • 1 piccola scheda prototipi
  • 1 LED da 3,3 Volt (Non importa il colore ma per il voltaggio di solito sono Rossi)
  • 1 transistor NPN PN2222
  • 1 Resistenza di 270 Ω
  • 1 Resistenza di 10 KΩ
  • 1 Potenziometro da 10 KΩ
  • 1 diodo IN4003 (IN4001 o IN4004 possono funzionare)
  • 1 adattatore 12V 3A
  • 1 adattatore 5V 2A
  • 4 viti con galletto da 1,5 pollici a 2 pollici (dipende dallo spessore del legno utilizzato, servono per fissare la staffa del motore alla cassa di legno)
  • Cavi Jumper trefoli di vari colori
  • 1 tubo pieghevole o un set di PVC di 4 pollici di diametro, questo dipende dall'altezza alla quale verrà posizionata la scatola di legno.
  • 1 gomito in PVC che si attacca al modello precedente.
  • 3 fascette per tubi auto (The World)
  • 4 piedi di cavo UTP (abbiamo bisogno dei doppini intrecciati per effettuare i collegamenti)
  • 1 USB WebCam, non è necessario che sia ad alta risoluzione.

Alcuni materiali vari che possono essere acquistati nei negozi di ferramenta o eventualmente già in nostro possesso:Nastro industriale

  • saldatore di stagno
  • Lattina
  • Trapano
  • Forare 5/16
  • Viti S8 con espansori

Passaggio 2: posizionamento della struttura

Posizionamento della struttura
Posizionamento della struttura
Posizionamento della struttura
Posizionamento della struttura
Posizionamento della struttura
Posizionamento della struttura

L'idea principale è quella di sostituire la maniglia di erogazione che arriva nello ZEVRO con l'asta D che sarà poi collegata al Motore tramite l'Accoppiatore. Il dispenser verrà fissato alla scatola di legno e la scatola di legno alla parete. Siccome non conosco molto l'elettronica non ho usato nessuna piastra in bachelite per montare il circuito quindi ho usato la breadboard per mettere tutti i componenti quindi in fondo alla scatola si fissa con delle viti il Rapberry Pi e la breadboard che aveva già un adesivo sul retro così sono andato solo ad incollarlo. La scatola deve avere tre pulsanti che avranno la funzione di riavviare il timer, attivare l'alimentatore e l'ultimo sarà un passo diretto per attivare il motore senza passare attraverso il circuito. Il motore verrà trattenuto all'interno della scatola tramite la staffa, quindi dalla scatola sporgerà solo l'asta D che si collega al distributore, nella parte inferiore della scatola fissare e regolare la webcam in modo che ad ogni consultazione e conferma di posta io ha inviato una foto di com'è il piatto, questo per non alimentare troppo nel caso in cui non abbiano finito l'ultimo giro di cibo.

Dal fondo dell'erogatore è stato posizionato il tubo che scende al piatto ed è stato posizionato il gomito in PVC sulla base, ho posizionato un po' di Industrial Tape nell'uscita per ridurre al minimo la velocità del flusso di cibo e ho realizzato una base di erogazione per evitare che il cibo spruzzi ovunque. Per fissare il tubo alla parete utilizzare delle staffe metalliche che si fissano alla parete con le viti prigioniere S8.

Sulla porta della scatola impugnare la piastra dello schermo LCD e utilizzare i doppini del cavo UTP per portarli direttamente al Raspberry, all'altra estremità dei cavi giuntare le estremità femmina dei jumper per facilitare il collegamento in le porte GPIO del Raspberry. Questo sarebbe lo schema del circuito. Cercherò di spiegarlo con quel poco che posso ottenere dall'elettronica.

Il motore è collegato direttamente al polo positivo del trasformatore da 12 volt ma affinché la corrente scorra deve passare attraverso il circuito nel polo neutro del motore, per questo viene utilizzato il transistor N2222. I transistor hanno normalmente 3 piedini che corrispondono ad un collettore, una base ed un emettitore, a seconda del modello del transistore la posizione di questi piedini può variare; Questo transistor fa funzionare l'interruttore. Qui è dove colleghiamo il polo neutro del motore al collettore del transistor, il pin #19 del rapberry è collegato alla base tramite una resistenza di 270Ω e l'emettitore è collegato al terminale neutro del transistor. Trasformatore da 12V insieme a uno dei poli di terra del lampone; il transistor lascerà fluire la corrente tra collettore ed emettitore purché la base sia stimolata con una tensione sufficiente; in seguito programmeremo il rapberry in modo che secondo determinati ordini la porta 19 emetta 3,3 volt, sufficienti affinché il circuito continui e attivi il motore.

Per lo schermo LCD, un'altra parte del protobard viene utilizzata in un circuito diverso dove si collega il potenziometro da 10KΩ che rifiuta il contrasto del testo che appare sul display LCD, quindi se sullo schermo non appare nulla è probabilmente perché il potenziometro è totalmente Chiuso; nel mio caso lo lascio completamente aperto in modo che il testo venga visualizzato meglio. Alla fine le connessioni nella breadboard sarebbero le seguenti.

Passaggio 3: configurazione Raspberry Pi

Prima di tutto è importante creare il Bot di Telegram che il sistema sarà gestito, Avrai bisogno di una chiave per modificare lo script python allegato. Si prega di leggere i passaggi sulla documentazione del telegramma:

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

Per configurare il rapberry, usa la versione Lite del Rapbian (non abbiamo bisogno dell'interfaccia grafica) e applica la configurazione di base che mostra il raspbian una volta installato o usando il comando raspi-config: espandi lo spazio al 100% e abilita l'SSH ma soprattutto la cosa più importante è cambiare password e username all'utente pi che arriva di default (altrimenti, come è successo a me, possono subire un attacco dalla porta 22 se hanno un IP pubblico indirizzato al raspberry). A parte questo la configurazione per connettersi automaticamente alla mia rete WiFi (Supponendo che la mia rete si chiami "BlogSoriano" e la mia password sia "$ecure123!") Generiamo e salviamo la chiave nel file delle connessioni Wireless con il seguente comando:

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

la prossima cosa è aggiornare e installare il sistema di installazione di python "pip", quindi accederemo come root, aggiorneremo e installeremo i pacchetti necessari:

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

Con questo abbiamo già accesso alla libreria di classi python, per lo script che useremo, dobbiamo installare quanto segue:

pip install RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces wireless telepot cv2

Una volta terminata l'installazione delle dipendenze, utilizzeremo lo script allegato a questo passaggio, lo salvo nel percorso /opt/petfeeder.py e il file può essere creato utilizzando il comando nano /opt/petfeeder.py e all'interno di questo file incolliamo il codice o, se hai più esperienza con Linux, puoi scaricarlo direttamente con wget. Nello script è importante modificare le variabili BOTKEY (nella riga 36) e SYSPASSWORD (nella riga 23).

Preciso che questo codice non è stato scritto da me in quanto non avevo mai programmato in Python, l'ho solo modificato per funzionare con le nuove librerie e con lo schermo LCD 20x4 e per utilizzare telegram Bot.

Una volta che abbiamo lo Script, dobbiamo cambiare i valori delle variabili con la chiave per il bot; per questo è necessario creare un nuovo Bot di Telegram, con quello basterebbe salvare il file ed uscire (con Ctrl + o save e ctrl + x esce dall'editor nano), dobbiamo solo essere a prova di riavvii; lo script stesso salva l'ultima volta che viene attivato il sistema di alimentazione, quindi non ci resta che far eseguire lo script ogni volta che si avvia il sistema operativo, per questo ho trovato una soluzione molto particolare con un programma chiamato supervisore, che viene installato dai repository Debian:

apt-get install supervisore

e una volta installato, dobbiamo solo creare un file di configurazione in /etc/supervisor/conf.d/petfeeder.conf, come nel caso precedente possiamo crearlo e salvarlo con nano, questo file avrà quanto segue:

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

Una volta salvato il file possiamo usare il comando supervisorctl [start | fermare | restart] petfeederd, poiché in questo caso il servizio non è stato avviato, lo eseguiamo con start:

supervisorctl start petfeederd

Passaggio 4: pronto per il test

Image
Image
Pronto per il test
Pronto per il test
Pronto per il test
Pronto per il test
Pronto per il test
Pronto per il test

E con questo il sistema dovrebbe funzionare, lo schermo LCD dovrebbe mostrare informazioni su quando dovrebbe essere il prossimo feed o se è pronto per l'alimentazione dovrei dirlo. Devi anche mostrare il nome della rete wireless a cui sei connesso e l'indirizzo IP che viene utilizzato nel caso avessimo bisogno di connetterci tramite SSH, condivido un piccolo video che ho fatto, mi scuso per la qualità, io non sono molto bravo è questo l'argomento dei vlog.

Dovresti essere in grado di cercare il tuo bot su Telegram e inviare uno dei comandi successivi dopo aver /autorizzato la tua chat:

/feed: avvia il processo di alimentazione finché è trascorso il periodo di tempo parametrizzato.

/quando: restituisce informazioni su quando è stata l'ultima alimentazione e un'immagine del piatto di cibo.

/foto: Restituisci una foto del piatto del cibo.

/restart: riavvia il sistema, imposta la variabile dell'ultimo feed a 0 per poter alimentare immediatamente.

/status Informa sullo stato della connessione Internet: SSID del Wireless connesso e l'indirizzo IP che il sistema ha all'interno della rete.

Consigliato: