Sommario:

Auto RasbperryPi con fotocamera FPV. Controllo tramite browser Web: 31 passaggi (con immagini)
Auto RasbperryPi con fotocamera FPV. Controllo tramite browser Web: 31 passaggi (con immagini)

Video: Auto RasbperryPi con fotocamera FPV. Controllo tramite browser Web: 31 passaggi (con immagini)

Video: Auto RasbperryPi con fotocamera FPV. Controllo tramite browser Web: 31 passaggi (con immagini)
Video: Controllare la Stampante 3D da Remoto con OctoPrint su Raspberry Pi ! 2024, Dicembre
Anonim
Image
Image

Costruiremo un'auto a 4 ruote motrici - lo sterzo sarà simile a quello di un carro armato - per girare un lato delle ruote ruoterà con velocità diversa rispetto all'altro. All'auto verrà posizionata la telecamera su un supporto speciale dove potremo cambiare la posizione della telecamera. Il robot sarà controllato dal browser web (chrome o firefox sul desktop o firefox sul cellulare), sul browser, otterremo il video della videocamera (con solo 200 ms di latenza) e dal browser possiamo controllare i movimenti dell'auto e posizione della telecamera. Per rendere la comunicazione più facile ho usato il sistema app.remoteme.org, c'è anche un controllo fuori dagli schemi di questo tipo di auto, quindi non devi scrivere il tuo codice, ma ovviamente puoi modificare gli script add nuove possibilità ecc.

Prima di collegare l'alimentazione al PCB, ricontrolla tutte le connessioni

Passaggio 1: alcune informazioni su App.remoteme.org

Il sistema ha tre parti

  • applicazione web - quando ospiti le tue pagine web di controllo e collega tutte le comunicazioni
  • programma rasbperryPi - programma che invia video, gestisce i tuoi script Python
  • librerie dove trovi definizioni di classi e funzioni

Remoteme.org è un sistema veloce Collega tutti i tuoi dispositivi insieme, puoi ospitare lì le tue pagine web, vedere i tuoi dispositivi collegati. Il sistema Remoteme.org è stato creato per aiutarti a iniziare a realizzare i tuoi progetti, senza preoccuparti delle comunicazioni del protocollo, l'idea principale è inviare messaggi binari tra vari dispositivi come pagine web, RasbeprryPI, arduino e script.

D'altra parte Remoteme.org ti dà il pieno controllo dei tuoi file, puoi facilmente modificarlo scrivendo le tue funzionalità

In questo tutorial ti mostrerò come realizzare un fantastico progetto quasi senza scrivere alcun codice.

Alla fine di questo tutorial ho messo dei link utili che ti aiuteranno a capire il sistema remoteme.org.

Passaggio 2: cosa è necessario:

Ciò che è necessario
Ciò che è necessario
Ciò che è necessario
Ciò che è necessario
  • Lampone PI Zero W
  • Fotocamera dedicata
  • Adafruit Driver PWM/Servo a 16 canali a 12 bit - Interfaccia I2C - PCA9685 o suo clone
  • Due servomeccanismi compatibili con il supporto della fotocamera
  • Supporto per fotocamera
  • Batterie - Nel tutorial due possibilità di connessione
  • H bridge TB6612FNG, per controllare la velocità delle ruote
  • File PCB eagle È facile renderlo metodo di trasferimento termicoDC-DC
  • Modulo convertitore step-down DC
  • Custodia per robot

Passaggio 3: connessioni

Connessioni
Connessioni

Meccanismo di controllo del servo Raspberry pi tramite il modulo PWM e la velocità del motore tramite il ponte H che è collegato ai pin RasbperryPi, l'ingresso PWM al ponte H è generato dallo stesso modulo che ho usato per i servi (le parti che menziono sopra non sono necessari convertitori logici)

Passaggio 4: PCB

PCB
PCB
PCB
PCB

Puoi scaricare i file PCB eagle da qui I percorsi sono grassi, quindi è facile farlo con il metodo di trasferimento termico

Passaggio 5: uscite PCB

Uscite PCB
Uscite PCB
Uscite PCB
Uscite PCB
  1. Ingresso PWM per motori di azionamento Dovrebbe essere collegato al 15° e 16° pin del modulo PWM (controllare il rettangolo verde nell'immagine del modulo PWM)
  2. Ingresso di alimentazione per i motori di azionamento (controlla con quale tensione massima possono funzionare i tuoi motori)
  3. Potenza per RasbperryPi e modulo PWM - devono essere esattamente
  4. Uscite motore di azionamento (ci sono due uscite perché accoppieremo i motori di azionamento)
  5. Potenza dei servomeccanismi - anche tu devi controllare quale tensione è buona per loro
  6. Ponticellare la sua potenza attuale dal quinto ingresso alimenterà anche i motori, quindi non è necessario collegare nulla all'ingresso 2
  7. Ponticello se presente RasbperryPi sarà alimentato dal 3° ingresso - prima di mettere il ponticello qui controlla se le connessioni sono OK - Non vuoi bruciare il tuo RPi
  8. Saldiamo qui i cavi poiché non abbiamo bisogno di convertitori logici

Passaggio 6: come funzionerà?

Su RasbperryPi c'è uno script python che usa due librerie

  • importa RPi. GPIO come GPIO - per i pin 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (notazione BCM) che sono collegati al ponte H
  • import Adafruit_PCA9685 per il modulo PWM

I pin Rpi sono collegati come segue 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) e modalità di controllo del ponte H (avanti, indietro, stop, breve pausa). Il ponte H necessita anche di due segnali PWM in modo da poter controllare la velocità o la rotazione del motore. Poiché nel progetto abbiamo già un controller PWM (usato per servo) lo useremo anche per generare PWM per il ponte H.

Il modulo PWM utilizza il protocollo di comunicazione I2C. Ho usato il lavoro fuori dagli schemi Adafruit_PCA9685. biblioteca

Passaggio 7: assemblaggio dell'auto - Ruote

Assemblaggio auto - Ruote
Assemblaggio auto - Ruote
Assemblaggio auto - Ruote
Assemblaggio auto - Ruote

Inizieremo dal collegare i motori di azionamento alla custodia dell'auto. I motori lato sinistro/lato si collegano insieme, ed entrambi si accoppiano, si collegano a un cavo di alimentazione che in seguito verrà collegato al PCB. Nota importante durante il collegamento dei motori, le ruote su ciascun lato devono ruotare nella stessa direzione.

Passaggio 8: opzione di alimentazione (batterie di ricarica AA) 1/2

Alimentazione (batterie di ricarica AA) Opzione 1/2
Alimentazione (batterie di ricarica AA) Opzione 1/2
Alimentazione (batterie di ricarica AA) Opzione 1/2
Alimentazione (batterie di ricarica AA) Opzione 1/2
Alimentazione (batterie di ricarica AA) Opzione 1/2
Alimentazione (batterie di ricarica AA) Opzione 1/2
Alimentazione (batterie di ricarica AA) Opzione 1/2
Alimentazione (batterie di ricarica AA) Opzione 1/2

Scriverò due possibilità di alimentazione. La prima macchina è da batterie ricaricabili 10xAA Nell'ultima immagine ho disegnato da ponticelli di colore rosso che devono essere messi.

Passaggio 9: alimentazione (batterie Li-Po da 7,2 V) Opzione 2/2

Alimentazione (batterie Li-Po 7.2V) Opzione 2/2
Alimentazione (batterie Li-Po 7.2V) Opzione 2/2
Alimentazione (batterie Li-Po 7.2V) Opzione 2/2
Alimentazione (batterie Li-Po 7.2V) Opzione 2/2

E la seconda opzione è la batteria LI-PO 7.2. In questo caso abbiamo ottenuto 3 tensioni – 5v per Rpi e modulo, 6V per i servi e direttamente dalle batterie 7,2 volt per i motori di azionamento. Ho dovuto usare due moduli step down

L'opzione 2 con LI-PO è migliore:

  • Le batterie hanno una capacità maggiore: l'auto guiderà più a lungo
  • Maggiore tensione per i motori di azionamento: l'auto guiderà più velocemente
  • Meno probabilità che dopo che i motori di azionamento iniziano a localizzarsi, potremmo avere un'enorme caduta di tensione e il riavvio dell'RPI.

Passaggio 10: saldatura

saldatura
saldatura
saldatura
saldatura
saldatura
saldatura
saldatura
saldatura

Ho messo al PCB alcuni distanziatori per il modulo PWM. Non c'è niente da scrivere, guarda le immagini come saldare tutto insieme

Passaggio 11: fotocamera

Telecamera
Telecamera

colleghiamo la telecamera, qui è scritto come centrare i servomeccanismi prima di montarli nel supporto della telecamera, ma il modo più breve è quello di controllare delicatamente manualmente la posizione di rotazione massima e impostare i servi in posizione centrale. Questo servomeccanismo centrato lo mettiamo nel supporto della fotocamera in posizione centrale (la fotocamera punta in avanti come nella foto)

Passaggio 12: mettere insieme le parti delle auto

Mettere insieme le parti delle auto
Mettere insieme le parti delle auto
Mettere insieme le parti delle auto
Mettere insieme le parti delle auto
Mettere insieme le parti delle auto
Mettere insieme le parti delle auto

Per PCB ho realizzato un tavolino in plexiglass

Passaggio 13: configurazione di App.remoteme.org

Configurazione di App.remoteme.org
Configurazione di App.remoteme.org

Ho usato il sistema gratuito app.remoteme.org che ti aiuta a creare connessioni e ha già degli script di cui abbiamo bisogno

In questo tutorial, mostrerò solo passo dopo passo cosa dovrebbe essere fatto per fare la guida in auto (qui troverai maggiori dettagli)

  • Registrati su https://app.remoteme.org dopo la registrazione Sarai automaticamente registrato
  • apri la scheda Token a sinistra, quindi fai clic su "nuovo token" fornisci un nome e fai clic su OK, abbiamo appena creato un nuovo token (immagine sullo schermo)
  • in questo esempio, il valore del token è: ~1_&p@+BNnZ@A+x8 (il tuo sarà diverso;))

Passaggio 14: configurazione RasbperryPi

Configurazione RasbperryPi
Configurazione RasbperryPi

alla console putty (qui come impostare il nostro RPi per attivare la comunicazione I2c della fotocamera)

git clone git://github.com/remoteme/remoteme.git

telecomando del cd

python3.5 install.py

  • L'installatore ci farà alcune domande per tutti noi rispondiamo [Sì] e confermeremo con [invio]
  • quando l'installazione richiederà il token, incolliamo (shift+insert) il token copiato dall'applicazione e Invio
  • il nome per esempio Rpi
  • ID dispositivo 1 Invio
  • dopo l'installazione: esegui il programma

./runme.sh

Passaggio 15: verifica delle connessioni

Verifica delle connessioni
Verifica delle connessioni

Torniamo a

Nella scheda dei dispositivi vedremo il nostro RPi connesso (l'icona del collegamento verde significa che RPi è connesso in questo momento)

Passaggio 16: aggiunta di script Python

Aggiunta di script Python
Aggiunta di script Python
Aggiunta di script Python
Aggiunta di script Python

Ora aggiungeremo lo script Python, è già presente nei modelli, quindi non dobbiamo programmare nulla.

Nella scheda dispositivi apri il menu RasbperryPi e scegli "Aggiungi script esterno".

Quando viene visualizzata una nuova finestra, fornire informazioni come nell'immagine sopra

Non dimenticare di scegliere il modello "car4wd". Dopo questi passaggi, remoteme.org aggiungerà lo script python al nostro RasbperryPi e lo riavvierà

Passaggio 17: verificare se lo script Python è stato aggiunto con successo

Verifica se lo script Python è stato aggiunto con successo
Verifica se lo script Python è stato aggiunto con successo

Nella scheda dispositivi dovrebbe essere aggiunto un nuovo dispositivo script python e il suo deviceId è 2. In questa pagina web ID dispositivo invierà messaggi per controllare l'auto

Passaggio 18: aggiunta di una pagina Web all'auto di controllo

Aggiunta di una pagina Web a Control Car
Aggiunta di una pagina Web a Control Car

nella scheda dispositivi fare clic su "Nuovo" e poi su "Pagina web". Aggiungiamo solo un altro dispositivo: la pagina web la useremo per controllare la nostra auto. E poiché abbiamo utilizzato il modello "car4wdDesktop" nella pagina Web, i file sono già quasi pronti per l'uso

Passaggio 19: configurare il dispositivo della pagina Web per controllare l'auto 1/2

Configura il dispositivo della pagina Web per controllare l'auto 1/2
Configura il dispositivo della pagina Web per controllare l'auto 1/2

Espandi la pagina Web nella scheda del dispositivo e fai clic su index.html quindi su Apri

Passaggio 20: configurare il dispositivo della pagina Web per controllare l'auto 2/2

Configura il dispositivo della pagina Web per controllare l'auto 2/2
Configura il dispositivo della pagina Web per controllare l'auto 2/2

La finestra appare quindi dobbiamo fornire deviceId del nostro script python al nostro case deviceId is 2. Cambiamo il posto mostrato nell'immagine

Passaggio 21: aprire il centro di controllo dell'auto

Apri il centro di controllo dell'auto
Apri il centro di controllo dell'auto
Apri il centro di controllo dell'auto
Apri il centro di controllo dell'auto

Ora è il momento di aprire la nostra pagina e vedere come funziona. Nella scheda del dispositivo fai clic su index.html e quindi su "Apri in una nuova scheda" Per ottenere l'anteprima del video Devi utilizzare il browser Chrome o Firefox altri browser non supportano completamente webRTC

Passaggio 22: configurazione della telecamera 1/2

Configurazione telecamera 1/2
Configurazione telecamera 1/2

Quando spostiamo il mouse nell'area video, la telecamera dovrebbe cambiare posizione e dovrebbe funzionare esattamente come nei giochi FPS. Probabilmente non si muoverà correttamente

Passaggio 23: configurazione della telecamera 2/2

Configurazione della telecamera 2/2
Configurazione della telecamera 2/2

Apri script.js (scheda dispositivi espandi la pagina web, quindi fai clic su script.js quindi apri) e trova il posto che ho mostrato sullo schermo

nel mio caso la posizione centrale è 560 e 430 e la gamma di movimenti è per entrambi gli assi 200

Devi sperimentare con questi numeri in modo da ottenere il centro della posizione della fotocamera e movimenti fluidi, se hai usato questo tutorial basta copiare i valori dati incollati

Passaggio 24: guida 1/2

Guida 1/2
Guida 1/2

Se si preme la freccia su sulla tastiera, gli indicatori dovrebbero cambiare posizione e l'auto dovrebbe guidare. Se premi la freccia "su" e l'auto sta girando, devi aggiungere/rimuovere il segno meno in alcuni punti dello schermo.

Dopo questa operazione, dopo aver premuto la freccia "su", l'auto dovrebbe andare avanti e l'auto con la freccia giù dovrebbe guidare all'indietro.

Passaggio 25: guida in 2/2

Guida 2/2
Guida 2/2

Ora svolta: premi la freccia a sinistra se l'auto sta girando a destra Devi capovolgere i cavi (controlla l'immagine sopra)

Se si saldano questi cavi, è possibile cambiarlo su script.js basta cambiare l'ordine di invio della velocità dei motori, prima:

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed())); pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

dopo:

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

e ora devi giocare con gli svantaggi come un passo prima per farlo funzionare correttamente;). Come probabilmente hai notato dopo aver colpito la freccia in su, l'auto non sta guidando a tutta velocità per far muovere l'auto più velocemente, rilascia rapidamente la freccia su quando è nella posizione massima e tieni premuto di nuovo

Passaggio 26: come funziona?

La pagina Web sta inviando messaggi di messaggio di nono byte allo script python nel formato:

  • 1 byte un byte valore intero 1
  • 2 byte intero X posizione della telecamera
  • 2 byte intero Y posizione della telecamera
  • Intero a 1 byte modalità motore sinistro (3= indietro, 1= avanti, 2=stop)
  • 1 byte intero a sinistra della velocità del motore
  • Intero a 1 byte modalità motore destro (3= indietro, 1= avanti, 2=stop)
  • 1 byte intero a destra velocità del motore

l'invio del messaggio viene effettuato nel file script.js nella funzione "sendNow()"

su RasbperryPi python.py riceve questo messaggio nella funzione "onUserMessage"

Puoi dare un'occhiata e giocare un po 'in modo da sapere cosa sta succedendo.

descrizione delle funzioni di classe qui

Passaggio 27: tablet, volante mobile

Tablet, volante mobile
Tablet, volante mobile

Aggiungiamo una nuova pagina web esattamente come abbiamo fatto la volta precedente, ma ora scegliamo il modello "car4wdMobile"

Successivamente, configuriamo tutto in script.js come abbiamo fatto per la pagina Web di controllo desktop. Il formato del messaggio è esattamente lo stesso, quindi non dobbiamo cambiare lo script python.py.

Passaggio 28: aprire la pagina sul cellulare

Apri pagina sul cellulare
Apri pagina sul cellulare
Apri pagina sul cellulare
Apri pagina sul cellulare

Invece di accedere al tuo account dal cellulare, scansiona QR anymous url.

dettagli del QR qui

Se il tuo controllo mobile funziona quando RPi e mobile sono sullo stesso Wi-Fi ma non se usi Internet mobile, devi aggiungere il server di turno, come farlo ho scritto qui

Passaggio 29: aggiunta di Turn Server

Aggiunta del server di turno
Aggiunta del server di turno
Aggiunta del server di turno
Aggiunta del server di turno
Aggiunta del server di turno
Aggiunta del server di turno

A volte (quando sei dietro NAT o alcune impostazioni del firewall) non puoi connettere il tuo robot da un'altra rete, quindi il tuo robot è connesso. Non è un grosso problema e quindi devi aggiungere il server di turno.

Ho testato il server della società XIRSYS (è gratuito per l'uso da parte degli sviluppatori) e mostrerò come configurare il server di turno utilizzando il sistema XIRSYS

Registrati:

global.xirsys.net/dashboard/signup

quindi fai clic su "più" per aggiungere l'applicazione

a destra sotto "crediti di svolta statici" Hai tutti i dati che ti servono. Copialo nel file webrtc_streamer.conf per farlo vai su

espandere i dispositivi RaspberryPi

fare clic sul file webrtc_streamer.conf

clicca su apri

e aggiungi informazioni

turn_server=turn_username=

turn_credential=

dopo aver terminato la modifica Dovresti avere qualcosa di simile sullo schermo.

quindi fai clic su Salva e riavvia You Rpi, facendo clic sul menu sul dispositivo RasbperryPi e scegli riavvia

Dopo che il programma RPi è stato riavviato, puoi vedere l'anteprima del video sul tuo telefono cellulare anche se stai usando Internet mobile.

Passaggio 30: guida mobile

Sterzo mobile
Sterzo mobile

al cerchio 1 posizioniamo il pollice sinistro, al 2 destro - non è necessario che sia esattamente in questo punto - la pagina web imposterà la posizione zero subito dopo aver toccato lo schermo e spostando i pollici (guida a sinistra, posizione della fotocamera a destra) puoi controllare la tua auto

Passo 31: Riepilogo

Spero che questo tutorial ti sia piaciuto, come ho scritto prima in questo tutorial ci sono maggiori dettagli su come funziona sotto il cofano.

alcuni link:

remoteme.org - home page di remoteme.org lì trovi documentazioni e tutorial

FB fanpage - Facebook fanpage più recenti informazioni su remoteme.org

Youtube - alcuni video di progetto, tutorial

Saluti, Maciek

Consigliato: