Sommario:

Robot Raspberry SPy: 8 passaggi (con immagini)
Robot Raspberry SPy: 8 passaggi (con immagini)

Video: Robot Raspberry SPy: 8 passaggi (con immagini)

Video: Robot Raspberry SPy: 8 passaggi (con immagini)
Video: Programmiamo il Raspberry con il Python 2024, Novembre
Anonim
Image
Image
Robot spia lampone
Robot spia lampone

Questo progetto ti consente di guidare un robot tramite una pagina web e visualizzare un livestream. Può essere utilizzato per spiare animali domestici, assicurarsi che non bruci nulla nel forno e persino osservare gli uccelli! DFRobot ha fornito il Raspberry Pi 3 e il modulo fotocamera Raspberry Pi.

Passaggio 1: l'elettronica del robot

L'elettronica dei robot
L'elettronica dei robot

Ho iniziato assemblando il kit chassis 2WD MiniQ di DFRobot. Ho fatto scivolare le ruote sugli alberi del motore, poi le ho inserite nelle staffe e le ho fissate al telaio. Infine, ho aggiunto i supporti metallici. Ora era il momento di costruire la scheda madre. Il driver del motore L293d è stato saldato in posizione, insieme ai fili che vanno ai pin GPIO del Raspberry Pi. Successivamente, ho saldato un connettore per la batteria, in quanto fornirà l'alimentazione principale. Dopo aver aggiunto la fonte di alimentazione, ho installato un regolatore da 5V.

Passaggio 2: configurazione del Pi

Configurare il Pi
Configurare il Pi

DFRobot mi ha contattato e ha inviato il loro Raspberry Pi 3 e il modulo fotocamera Raspberry Pi. Quindi, dopo aver aperto le scatole, mi sono messo subito al lavoro configurando la scheda SD. Per prima cosa sono andato alla pagina dei download di Raspberry Pi e ho scaricato la versione più recente di Raspbian. Ho quindi estratto il file e l'ho messo in una comoda directory. Non puoi semplicemente copiare/incollare un file.img su una scheda SD, devi "masterizzarlo" sulla scheda. Puoi scaricare un'utilità di masterizzazione come Etcher.io per trasferire facilmente l'immagine del sistema operativo. Dopo che il file.img era sulla mia scheda SD, l'ho inserito nel Raspberry Pi e gli ho dato alimentazione. Dopo circa 50 secondi ho scollegato il cavo e rimosso la scheda SD. Quindi ho rimesso la scheda SD nel mio PC e sono andato alla directory "boot". Ho aperto il blocco note e l'ho salvato come file vuoto chiamato "ssh" senza estensione. C'era anche un file che ho aggiunto chiamato "wpa_supplicant.conf" e ho inserito questo testo:

rete={ ssid= psk= }

Quindi ho salvato ed espulso la scheda e l'ho reinserita nel Raspberry Pi 3. Questo dovrebbe ora consentire l'utilizzo di SSH e la connessione al WiFi.

Passaggio 3: preparare la fotocamera

Preparare la fotocamera
Preparare la fotocamera

Per impostazione predefinita, la fotocamera è disabilitata sul Pi, quindi è necessario aprire il tipo di terminale sudo raspi-config per visualizzare il menu. Vai su "opzioni di interfaccia" e quindi abilita la fotocamera. Ora seleziona "Fine" e inserisci il cavo a nastro del modulo della fotocamera nell'area corretta del Pi.

Passaggio 4: installazione del software

Esistono diversi software in grado di trasmettere video in streaming, come vlc e motion, ma ho deciso di utilizzare mjpeg-streamer a causa della sua bassa latenza e della facilità di installazione. Secondo le istruzioni sul sito, fai un clone git https://github.com/jacksonliam/mjpg-streamer.git in una cartella, quindi digita sudo apt-get install cmake libjpeg8-dev per installare le librerie necessarie. Cambia la tua directory nella cartella che hai scaricato e poi digita make seguito da sudo make install per compilare il software. Infine inserisci export LD_LIBRARY_PATH=. e per eseguirlo digita./mjpg_streamer -o "output_http.so -w./www" -i "input_raspicam.so" Puoi accedere allo stream andando su https://:8080/stream.html per visualizzare lo stream.

Passaggio 5: controllore

Controllore
Controllore
Controllore
Controllore

Poi è arrivata la parte di come controllare un Raspberry Pi tramite WiFi, perché il Bluetooth ha una portata troppo ridotta. Ho deciso di utilizzare un server Flask in esecuzione sul Raspberry PI e un modulo ESP8266 ESP12E per inviargli i dati. L'ESP8266 ha solo un ingresso analogico, il che significa che non ho potuto usare direttamente il joystick, poiché richiede due ingressi analogici. L'opzione migliore era l'ADS1115, che è un dispositivo I2C che legge segnali analogici a 16 bit di risoluzione. Ho semplicemente collegato SDA a 4 e SCL a 5, insieme a VCC e GND. L'asse X del joystick si collega ad A0 sull'ADS1115 e l'asse Y si collega ad A1. MA, ho accidentalmente bruciato l'ADS1115, quindi ho dovuto ricorrere alla cosa migliore: i pulsanti! Quindi ora la mia configurazione è una scheda di sviluppo ESP8266 Sparkfun Thing con 3 pulsanti: avanti, destra e sinistra. Ora ogni volta che viene premuto, invia i dati per girare le ruote in quella direzione.

Passaggio 6: il codice per il robot

Il Codice per il Robot
Il Codice per il Robot

Ho realizzato un progetto precedente che utilizzava la libreria PWM GPIO di Pi per controllare i motori tramite json, quindi ho semplicemente riproposto il codice per accettare i dati tramite un'app Flask. Flask è una libreria Python che essenzialmente trasforma il tuo Pi in un server web in grado di inviare e ricevere dati. Utilizzando il PWM, i motori possono essere controllati con maggiore precisione rispetto all'azionamento del serbatoio. Ciò significa anche che il robot può andare a velocità variabile anziché fissa. La mia app flask è configurata per modificare il PWM dei motori una volta che riceve i dati da una richiesta GET tramite http dall'ESP12e. Utilizza anche la libreria subprocess. Popen per eseguire lo script di webstreaming in background. Ho allegato il codice alla pagina del progetto, quindi tutto ciò che serve è un download.

Passaggio 7: codice del controller

Il codice era piuttosto semplice, basta prendere le letture dai 3 pin, eseguirle attraverso alcune istruzioni if per determinare la direzione della ruota e infine inviare quei valori al Raspberry Pi. L'aggiunta della scheda ESP8266 per l'IDE Arduino viene fornita con la libreria HTTPClient, che gestisce le intestazioni e l'invio dei dati. Il server Flask deve ricevere i dati tramite una chiamata POST, quindi il codice avvia una connessione con il server Web Raspberry Pi, quindi aggiunge un'intestazione ai dati che indica che è codificato JSON e infine invia i dati sotto forma di un oggetto JSON. Ho aggiunto un ritardo di 40 ms per evitare che il Raspberry Pi si sovraccarichi di dati.

Passaggio 8: esecuzione di Raspberry SPy

Esecuzione di Raspberry SPy
Esecuzione di Raspberry SPy
Esecuzione di Raspberry SPy
Esecuzione di Raspberry SPy

Tutto ciò che serve è digitare sudo python.py ! Dovresti vedere la telecamera illuminarsi, e andando all'indirizzo web del pi con la porta 8080 lo stream dovrebbe essere visibile. Ora puoi utilizzare il controller in qualsiasi punto della casa e avere anche un feed dal vivo.

Consigliato: