Un ROV con braccio basato su Raspberry Pi: Adeept Rasptank
In questo articolo illustro il Rasptank : un kit commercializzato dalla Adeept per la realizzazione di un ROV (Remote Operated Vehicle) munito di telecamera e braccio robotico con pinza, controllato da un Raspberry Pi.
Il kit del Rasptank ci è stato gentilmente offerto dalla Adeept per una valutazione, per cui li ringrazio per la gentilezza. Adeept è un team che si occupa di Open Source ed Open Hardware e realizza kit educativi basati su Arduino, Raspberry Pi e Micro:bit destinati a scuole, makers ed appassionati. Le opinioni qui riportate sono del tutto personali e non influenzate in alcun modo dal fornitore del prodotto.
Indice dei contenuti
Cosa è il Rasptank
Come già accennato il Rasptank è un kit che permette di realizzare un veicolo cingolato controllato da remoto via WiFi, nonchè praticare con programmazione in Python, Raspberry Pi e OpenCV. Il veicolo viene gestito da Raspberry Pi (non fornito) e controllato da remoto mediante un’interfaccia web che gira nel browser. Il software del robot è interamente realizzato in Python per cui permette anche di imparare questo linguaggio, molto diffuso tra chi lavora su Raspberry Pi. Sono implementate anche delle funzioni di visione artificiale mediante l’utilizzo di OpenCV. Il Robot può sfruttare la visione artificiale per inviduare movimento, colori e seguire una linea. L’intefaccia web è stata realizzata con vue.js.
Il ROV è munito di un braccio robotico dotato di pinza. La pinza può essere aperta e chiusa per afferrare oggetti nonchè ruotata, mentre il braccio può essere piegato in avanti o indietro.
Nella parte frontale è alloggiata una Raspberry Pi Camera e un modulo sensore ultrasuoni HC-SR04: questi due componenti sono montati su un blocco mosso da un servocomando e possono essere diretti verso l’alto o verso il basso.
Nelle due fiancate laterali sono presenti un totale di 12 led RGB tipo WS2812. Il robot è mosso da due piccoli motoriduttori posti nella parte posteriore, avvitati mediante mozzi a sprocket che muovono i cingoli.
Sulla parte anteriore sono posti 3 fotoaccoppiatori per il riconoscimento di una linea: è quindi possibile implementare un robot di tipo Line Follower sia sfruttando i fotoaccoppiatori sia utilizzando la visione artificiale.
La qualità costruttiva del kit è molto buona: i pezzi sono in acrilico nero tagliato al laser, i pezzi principali hanno uno spessore di quasi 5mm che rendono il ROV nel complesso abbastanza solido. Le fiancate laterali sono semitrasparenti per poter filtrare la luce dei led che forniscono davvero un bell’effetto. Il robot viene alimentato con due batterie LiPo tipo 18650 (non fornite) alloggiate in due portabatterie che si trovano all’interno dei cingoli.
Contenuto del Kit
Qui ho fatto un video dell’unboxing del kit:
Nel kit, oltre a tutte le parti meccaniche (pezzi in acrilico, i due mozzi per i motoriduttori, cingoli, viti e distanziali) sono presenti:
- Un sensore ultrasuoni tipo HC-SR04
- Una Raspberry Pi Camera con cavetto flat
- 5 servocomandi da 9g completi di viti e squadrette (ci sono anche quelle non necessarie)
- 4 piccoli pcb su cui sono montati 3 led WS2812 per ciascuno
- 2 motoriduttori
- 2 portabatterie per batterie 18650
- un HAT (Adeept Motor Shield) per Raspberry al quale vengono collegati tutti i componenti
- i cavetti di collegamento
- un cavetto di prolunga per un servo
- un nastro per facilitare l’estrazione delle batterie
- una brochure con le istruzioni
Personalmente ho trovato delle viti in più: ogni bustina aveva qualche pezzo extra. Ottimo direi: apprezzo moltissimo questa cosa. Le uniche viti che non c’erano in più erano i grani per il serraggio dei mozzi: difatti proprio uno di questi mi è caduto a terra in laboratorio e ho perso 2 ore per ritrovarlo! Anche un paio di pezzi di acrilico erano in più.
L’HAT (Per chi no lo sapesse: gli HAT Hardware Attached on Top sono gli equivalenti per Raspberry Pi degli Shields per Arduino) è interessante perchè presenta a bordo:
- Convertitore buck DC/DC (GS2678) che permette di avere la 5V a partire dalle due LiPo messe in serie
- Ponte H, costituito dal classico L298N, per il pilotaggio di potenza dei motoriduttori
- PCA9685 con il quale è possibile pilotare fino a 15 servocomandi via I2C
- Un comparatore, realizzato con un LM324, per indicare il livello di carica delle batterie, mostrato con 4 led rossi
L’HAT alimenta il Raspberry Pi dai GPIO. Dell’HAT Adeept ha rilasciato anche lo schema elettrico, che torna molto utile per vedere i collegamenti e fare modifiche agli script o semplicemente capirli.
Quando si alimenta il Raspberry Pi con le batterie, quindi dai GPIO, alcune funzioni del Raspberry Pi potrebbero essere non disponibili, come l’uscita video su HDMI, che comunque sul ROV non è necessaria.
Sono da acquistare da parte i seguenti componenti che, ricordo, NON sono forniti nel kit:
- 2 batterie LiPo tipo 18650
- Un caricabatterie per 2 18650
- Un Raspberry Pi 4
- Una microSD da 16GB o 8GB
Per la modalità di installazione non-headless (vedremo dopo), sono necessari anche tastiera e mouse USB, monitor HDMI+cavetto microHDMI e un alimentatore adatto al Raspberry Pi4 (ovvero 5.1V, 3A, USB C, ne esistono di compatibili a poco prezzo muniti anche di interruttore per lo spegnimento).
Più in basso do dei consigli per gli acquisti. In molti potrebbero obiettare sul fatto che il kit non sia completo. In realtà in molti, me compreso, preferiscono così per tutta una serie di motivi su cui ho ragionato anche con altri amici, molto più esperti di me in questo campo:
- Mettere delle batterie 18650, nonchè un caricabatterie, richiede numerose responsabilità e certificazioni che aumentano di molto il prezzo del kit. Le 18650 si recuperano facilmente nuove sui vari siti di e-commerce dato che ora vanno di moda le sigarette elettroniche che usano anche questo tipo di batterie. In aggiunta è possibile recuperarle anche da vecchie batterie di pc portatili. I caricabatterie costano molto poco, volendo spendere proprio un’inezia per caricare le 18650 è possibile acquistare anche i modulini basati sul TP4056 (ce ne vorrebbe uno per batteria, o uno solo per caricare una batteria alla volta: non vi azzardate ad usarne uno per caricare due batterie in parallelo) – che vengono venduti su Amazon per pochi spiccioli (io consiglio la versione munita di protezione – questa inserzione è per 10 modulini che vengono a costare circa 1 euro l’uno – occhio che se vedete inserzioni a prezzo più basso potrebbero essere per il modello SENZA protezione, che sconsiglio!). Altrimenti potete acquistare dei caricabatterie per 2 18650 tipo questo.
- Il Raspberry Pi in molti di noi makers ce l’hanno già in un cassetto per fare esperimenti e, ad ogni modo, Adeept dice che è possibile utilizzare anche il 3 o il 2. Personalmente ho dei dubbi su quest’ultimo (Il 2) e in una email mi hanno risposto che non è testato. Non saprei se il 2 riesce a far girare openCV (è da verificare). Ad ogni modo il Raspberry Pi 2 non ha il WiFi a bordo e in questo caso sarebbe necessario acquistare un dongle compatibile con Raspberry Pi, come questo. In alcune foto promozionali del Rasptank è possibile vedere che il Rasptank ha un’antenna che spunta da dietro: questo potrebbe far pensare che hanno usato una Raspberry Pi2 o magari anche una 3 a cui hanno messo un dongle per poter sfruttare la WiFi a 5GHz o semplicemente aumentare la portata.
- La MicroSD costa due soldi ed è sicuramente nel cassetto di ognuno, l’installazione di tutto il pacchetto è piuttosto semplice. Le MicroSD della Sandisk si trovano spesso in offerta su Amazon.
A chi è destinato il kit
Il Kit è destinato sicuramente a Makers e scuole che insegnano meccatronica, robotica o comunque programmazione in Python / Utilizzo Raspberry Pi. Non è un kit facile, nel senso che, a mio parere, non si tratta di un kit destinato a chi è alle prime armi, sia per questioni di assemblaggio del kit (che richiede una certa manualità e soprattutto pazienza) sia perchè tutto il pacchetto va installato a mano sul Raspberry e si incontreranno di certo numerosi problemi che non si riusciranno a risolvere senza avere una certa esperienza o quanto meno un po ‘ di apertura mentale a cercare soluzioni su google.
Si tratta a mio avviso di un kit davvero molto bello, che richiede almeno una/due giornate di tempo per il montaggio, che va fatto con molta calma e attenzione e che vi farà passare ore piacevoli. Alcune soluzioni adottate sono certamente discutibili, ma si tratta di un kit davvero economico (su amazon costa meno di 80 euro) e a mio avviso vale tutti i soldi spesi. Personalmente ho imparato un sacco di cose nuove soprattutto riguardo all’utilizzo del Raspberry Pi (ho avuto tanti di quei problemi sul Raspberry Pi4 che non ho mai avuto con tutte le versioni precedenti!) e nuove tecnologie come il vue.js che non conoscevo e che terrò sicuramente in considerazione per applicazioni future.
Comparazione con altri prodotti della Adeept
Tra i ROV della Adeept muniti di braccio robotico e gestiti da Raspberry Pi, questo qui, il Rasptank, è il più economico. In catalogo ci sono infatti il Rasptank Pro e la Pi Car Pro. Questi prodotti condividono più o meno lo stesso software.
Il Rasptank Pro è una versione più estesa del Rasptank: ha il Raspberry Pi più accessibile (sul Rasptank difatti, una volta montato, la microSD non è più accessibile dall’esterno e rimangono accessibili dall’esterno tutte le porte esterne tranne 2 USB 2.0 mentre sono usabili le 3.0) , i motoriduttori più grandi, il display Oled, il braccio è montato su una torretta rotante, ma quello che fa aumentare di molto il prezzo è sicuramente il fatto che tutta la struttura è in alluminio anzichè in acrilico.
La Pi Car invece non è cingolata ma possiede 4 ruote tipo fuoristrada di cui le due posteriori sono motrici (ognuna ha un motoriduttore) e le due anteriori sono sterzanti. Questo modello è possibile montarlo in due varianti: una col braccio e una che al posto del braccio ha il sensore ultrasuoni e una luce più potente. Entrambi i modelli hanno dei fari anteriori.
Pacchetto software
Prima del montaggio delle parti meccaniche è necessario installare il software. Ci sono essenzialmente 2 vie per installare il pacchetto software: la prima via, quella più semplice ma NON raccomandata, è quella di scaricare l’immagine preconfigurata e trascriverla sulla microSD. Questa soluzione è sicuramente indolore ma, a parte non insegnarvi nulla, limiterebbe di molto l’utilizzo di Raspberry Pi.
Il link all’immagine già pronta si trova nel readme del repository ufficiale e anche in un file PDF sul sito ufficiale (quello dal titolo Adeept Rasptank image file). Ve lo metto anche qui ma occhio che questo link potrebbe cambiare o essere aggiornato. Per il download potrebbe essere necessario eseguire il login con un account microsoft dato che attualmente l’immagine è ospitata su OneDrive.
L’altra soluzione, quella consigliata sia dalla Adeept che da me, è quella di installare il Raspberry Pi OS (ex Raspbian, sapevate che hanno cambiato il nome da Maggio 2020?) e procedere quindi all’installazione manuale dei componenti software. Sebbene nei tutorial della Adeept siano riportate le singole installazioni di tutti i componenti, in realtà i passaggi da eseguire sono soltanto due e molto semplici:
- clonare il repository Github del progetto sulla microSD
- avviare uno script python di installazione che farà tutto da solo.
Il motivo per utilizzare l’immagine preconfigurata, quindi, per me non c’è grazie proprio alla presenza dello script python che fa tutto lui: questo è sicuramente un enorme vantaggio ed è degno di nota. Tenete inoltre conto che il readme del repository che guida nell’installazione è veramente dettagliato, completo e corretto in ogni sua parte.
L’immagine preconfigurata, aggiungo, rende anche la scheda audio del Raspberry inutilizzabile (viene disabilitata ed è un po’ ostico riabilitarla) dal momento che, pare, creasse qualche conflitto (ma non è specificato a chi/cosa: nello script python si legge soltanto: #fix conflict with onboard Raspberry Pi audio). Personalmente non ho rilevato problemi lasciando la scheda audio abilitata: tenete conto che l’ultima versione dell’immagine preconfigurata è vecchia di 2 anni e di acqua sotto ai ponti ne è passata (e anche tanta) per cui questa eventuale incompatibilità è stata con tutta probabilità risolta (almeno così mi sento di dire dato che non trovo problemi). In aggiunta l’immagine preconfigurata manca anche di alcuni programmi forniti normalmente con Raspberry Pi, come LibreOffice: il motivo di questo, ipotizzo, è che sia per risparmiare spazio sulla microSD oppure utilizzarne una più piccola (8GB) e quindi risparmiare ancora: nello script di setup difatti viene eseguita la disinstallazione di Libre Office e del Wolfram Engine che liberano in totale circa 2.5GB di memoria.
Io ho modificato lo script per non fargli eseguire queste azioni, velocizzando di molto anche il setup (la disinstallazione di Libre Office e del Wolfram Engine a me è durata oltre 15 minuti)- Ho fatto un fork di tutto il repository per apportare le mie personali modifiche, per cui utilizzando il mio repository al posto di quello della Adeept, avrete questo script che non toglie roba dal Raspberry, nonchè alcuni piccoli errori corretti e l’interfaccia di controllo del ROV in lingua italiana e con aggiunte e modifiche. Siete liberi di utilizzare il mio setup o quello ufficiale. Tenete conto che se però Adeept aggiorna, non è detto che lo faccia anche io ma ad ogni modo si tratterà soltanto di sovrascrivere dei files in una cartella, operazione che si può fare anche a mano, oppure ancora potrete tenere le varie versioni in cartelle separate e farne partire una sola all’avvio (ovviamente). Ora vediamo come fare.
Installazione passo-passo
I seguenti passaggi sono quelli che ho fatto io ma necessitano di avere collegati al Raspberry Pi tastiera, mouse e monitor: questo per semplificare di molto le cose. Quelli un pelino più esperti sanno già come fare questi passaggi in modalità headless, ovvero senza tastiera, mouse e monitor mediante SSH, quindi darò dei brevi consigli anche per farlo così dato che ho usato entrambi i sistemi.
Installazione sistema operativo
Per installare il sistema operativo, Raspberry ha realizzato il proprio tool che fa tutto in automatico: scarica l’OS, lo scrive su SD e verifica. Questo tool si chiama Raspberry Pi Imager. E’ molto intuitivo da utilizzare: si sceglie l’OS da un elenco, si sceglie la microSD e si avvia la scrittura. Questo processo durerà un po’ dato che c’è il download del Raspberry Pi OS.
Se invece come me preferite i sistemi vecchi: Scaricare l’ultima versione di Raspberry Pi OS. Quando ho scritto questo articolo la data di rilascio era 2 Dicembre 2020, versione Kernel 5. (se sapete utilizzare i torrent vi consiglio di preferire tale sistema: farete sicuramente prima). A fine download decomprimere il file zip, viene fuori un file con estensione IMG. A questo punto bisogna scaricare l’ultima versione di Win32 Disk Imager (alcuni miei amici preferiscono invece Balena Etcher). Qui do le istruzioni per Win32 Disk Imager ma, insomma, non sono cose difficili da utilizzare.
Installare e avviare Win32 Disk Imager. Inserire una microSD nel pc: se non disinstallate nulla, come ho fatto io, è necessaria una microSD da almeno 16Gb. Se invece utilizzate lo script ufficiale Adeept, che disinstalla LibreOffice (310MB) e il Wolfram Engine (la bellezza di ∼2.15GB), basta e avanza una microSD da 8Gb.
Da Win32 Disk imager cliccate il tasto cartella affianco alla casella del nome file immagine e cercate il file IMG scaricato prima. Nella casella a discesa affianco (dispositivo) dovrebbe già comparire il nome dell’unità della scheda di memoria: controllate. Premere il tasto Scrivi.
Compare una finestra di conferma, premere OK. Il processo dura circa 15 minuti. Alla fine compare la finestra Scrittura completata correttamente. Premere OK.
A questo punto, se non avete monitor tastiera e mouse (installazione in modalità headless), per configurare SSH e Internet potete seguire questi appunti che ho messo su Github:
In modalità headless, dopo aver messo la scheda nel Raspberry e con questo che si collega ad internet, potrete successivamente procedere a lavorare sul Raspberry utilizzando un client SSH come PuTTY. Una volta avuto accesso via SSH, dal Raspi-Config (sudo raspi-config), se lo preferite, potete anche abilitare il VNC che vi permetterà di visualizzare anche il desktop del Raspberry Pi e lavorarci su da un pc remoto come se steste lavorandoci con mouse, monitor e tastiera utilizzando dei client come VNC Viewer. Chiaramente se non siete esperti possono presentarsi tutta una serie di problemi come Raspberry Pi che non si collega al WiFi (e quindi non riuscirete a collegarvi con l’SSH) oppure VNC che si rifiuta di mostrare il desktop (per la cui eventualità ho scritto degli appunti).
Inserire la microSD nel Raspberry. Collegare tastiera, mouse e monitor con un cavo HDMI/Micro HDMI all’uscita video HDMI 0 (quella vicina al connettore USB per l’alimentazione).
Cavi di bassa qualità creano numerosi problemi. Io ho acquistato questo e non ho avuto nessun tipo di problema dopo averne invece comprato uno da un noto franchising di elettronica consumer, pagato 3 volte tanto e che si è rivelato il cavo peggiore in assoluto e che causava tutta una serie di problemi sia con interferenze sul WiFi che monitor che spesso si rifiutava di visualizzare l’immagine.
Alimentare il Raspberry Pi con un alimentatore compatibile: tensioni basse e basse correnti causano tutta una serie di malfunzionamenti. L’alimentatore originale del Raspberry Pi4 ha l’uscita USB di tipo C, eroga 3A a 5.1V (per spendere meno potete usarne uno compatibile).
Se utilizzate un alimentatore che eroga 5V anzichè 5.1V, sul desktop del Raspberry Pi comparirà un fastidioso messaggio di tensione insufficiente.
Avviare il Raspberry Pi. Si presenta dapprima la schermata che avvisa che sta eseguendo il resize del filesystem. Parte quindi l’interfaccia grafica del Raspberry Pi OS con una finestra che invita ad eseguire il primo setup. Premere Next: si configura la lingua, io ho messo Italy/Italian/Rome. Si viene quindi invitati a digitare una nuova password (default: raspberry): operazione consigliatissima ma che non funzionerà: voi provateci ugualmente, magari state utilizzando un OS più aggiornato di quello che ho usato io e va a buon fine.
Viene quindi chiesto se abilitare l’overscan: questo serve nel caso in cui il quadro non riempia tutta l’area del monitor, ovvero visualizzate bordi neri intorno. Generalmente questo non succede quasi mai, se ne avete l’esigenza cliccate la spunta su This screen shows a black border around the desktop.
Vengono quindi ricercate le reti WiFi. Dall’elenco selezionare la rete WiFi alla quale vi volete collegare e premete Next, digitate quindi la password e premete Next, Raspberry prova a connettersi alla rete WiFi.
Non so cosa succederà a voi, ma a me non è stata una procedura tanto facile: mi usciva continuamente il messaggio Unable to connect the network. Per questo problema ho scritto degli appunti.
Dopo essersi collegato al WiFi, Raspberry Pi prova a fare degli aggiornamenti che non andranno a buon fine (verrà mostrato un errore: questa procedura guidata per me è un flop totale) ma tranquilli perchè tanto dopo li facciamo manualmente.
La procedura guidata è finita: premete il tasto Done. Spegniamo il Bluetooth che non ci servirà: click sinistro sul simbolo Bluetooth in alto a destra sulla barra > Spegni bluetooth.
Ora riavviamo il Raspberry in modo da visualizzarlo in lingua italiana dopo la procedura guidata: Lampone > Shutdown > Reboot
Facciamo alcuni aggiustamenti: Lampone > Preferenze > Impostazioni dell’aspetto
Qui potete cambiare lo sfondo ed eventualmente ingrandire le scritte nella scheda predefiniti cliccando sul tasto Imposta valori predefiniti in corrispondenza di Per schermi grandi. Sia che lavoriate in modalità headless con il VNC che non, questo magari facilita di molto la lettura delle scritte specie se come me non ci vedete più.
Facciamo quindi l’aggiornamento di Raspberry Pi da terminale (questa operazione dura poco):
sudo apt-get update |
Poi facciamo un full-upgrade:
sudo apt-get full-upgrade |
Qui vi verrà mostrato un prompt se continuare o meno, digitare S, questo durerà qualcosa in più. Alla fine riavviare con sudo reboot.
Facciamo altri aggiustamenti:
- Lampone > Preferenze > Configurazione di Raspberry Pi
- prima scheda > nome del computer: RaspTank (questo è facoltativo!)
- scheda interfacce > abilitare tutto. TUTTO!
Dare OK, viene chiesto di riavviare.
Noterete con stupore, che nonostante avessimo cambiato la password di default nella procedura guidata, compare comunque una finestra di avvertimento che dice che avendo abilitato l’SSH non bisognerebbe lasciare la password di default(!!). Difatti la password non è stata cambiata come dicevo più in alto: è probabilmente un bug di questa versione di Raspberry Pi OS. Cambiamo la password da raspi-config. Da terminale:
sudo raspi-config |
- Andiamo in System options > Password
- Si presenta una finestra: premere OK
- Si presenta il terminale con la scritta password: digitare la password, a video non comparirà nulla, dare invio, viene chiesta la conferma password. Compare il messaggio password changed successfully.
- Annotatevi la password da qualche parte se no saranno problemi!
Uscire, viene chiesto di riavviare, dare OK. Ora la finestra dell’avviso SSH noterete che non si presenta più.
L’installazione del sistema operativo e degli aggiornamenti è terminata. Tutta questa procedura vi torna utile anche se non usate il Rasptank.
Se invece avete utilizzato l’immagine preconfigurata della Adeept, è necessario eseguire manualmente l’espansione del filesystem da raspi-config altrimenti non avrete spazio a sufficienza sulla microSD per installare il pacchetto software!
Installare il software del Rasptank
Bisogna clonare il repository ovvero copiare sulla microSD tutti files. Potete clonare quello ufficiale della Adeept (che, ricordo, disabilita scheda audio, disinstalla LibreOffice e il Wolfram engine e richiede una microSD da almeno 8GB) o il mio personale (che, ricordo, non disinstalla/disabilita nulla e richiede una microSD da almeno 16GB e installa il software con le mie modifiche per la lingua italiana).
Per il repository ufficiale della Adeept, da terminale:
sudo git clone https://github.com/adeept/adeept_rasptank.git |
Per il mio repository:
sudo git clone https://github.com/cyb3rn0id/adeept_rasptank.git |
Questa procedura semplicemente copierà tutto il repository sulla microSD all’interno della cartella /home/pi/adeept_rasptank
Per lavorare da remoto (cancellare, modificare files) è meglio dare tutti i permessi alla cartella e ai files ivi contenuti:
sudo chmod 777 adeept_rasptank -R |
Entrare nella cartella:
cd adeept_rasptank |
Eseguire lo script di installazione:
sudo python3 setup.py |
Questo script esegue l’installazione automatica di tutto quello che serve al ROV per funzionare. Dopo aver fatto queste operazioni bisogna:
- Spegnere il Raspberry Pi
- Innestare l’HAT
- Collegare i servocomandi a punti qualsiasi destinati ai servocomandi (abbiate cura di allineare correttamente i cavi seguendo i colori degli headers come specificato nelle istruzioni)
- Accendere il Raspberry Pi
- Quando i servocomandi si muovono e si fermano in posizione possiamo spegnere
- Procedere al montaggio delle parti meccaniche
Montaggio
Nel Kit è presente un foglietto illustrativo e sul sito della Adeept è presente un PDF con tutte, ma proprio tutte le informazioni necessarie, compreso il montaggio passo passo, che quindi qui non vi illustrerò perchè veramente non ho nulla da aggiungere. Le istruzioni per il montaggio partono dal capitolo 4.1
Nel kit sono presenti una chiave multipla da utilizzare per stringere dadi e distanziali e due cacciaviti a croce: uno molto piccolo da utilizzare per le viti che tengono telecamera e gruppi di led. La chiave in dotazione è di scarsa qualità e a me si è spanata subito, per cui è meglio tenere a portata di mano una pinza normale, una a becchi ricurvi e una buona calamita al neodimio per poter tenere i dadi che vanno posti ad incastro: ci saranno dei momenti in cui desidererete di avere 4 mani ma se siete abituati a questo tipo di montaggi non c’è bisogno che ve lo dico! Tenete a portata di mano anche il nastro carta.
La parte più lunga del montaggio è forse quella di togliere la carta protettiva dai pezzi tagliati al laser, ma con una buona musica di sottofondo potrebbe essere un task decisamente rilassante.
Per aiutarvi nella rimozione della carta vi consiglio di utilizzare un piccolo bisturi con cui fare leva negli angoli, sempre con delicatezza per non graffiare/scheggiare le parti oppure, meglio, del nastro super-forte da attaccare alla carta per aiutarsi a tirarla via (tipo ceretta insomma). Il sistema dello nastro torna utile soprattutto per rimuovere i pezzettini microscopici di carta che rimarranno incastrati negli incavi delle lettere delle scritte.
Dopo che i servo si sono portati in posizione, potete sganciarli dopo aver tolto corrente al Raspberry Pi, ma dovrete stare molto attenti a non spostarli durante il montaggio, quindi fate attenzione o rischiate di montarli in posizione errata.
Questa operazione potete anche eseguirla in altro modo, tipo con un Arduino. Ma se prima di comprare il kit volete essere sicuri di saperlo utilizzare, almeno via software, potete installare tutto su una microSD, verificare che riusciate ad installare tutto senza problemi e quindi, con più motivazione, procedere all’acquisto del kit.
Nel seguente video è illustrato il montaggio passo passo, ma va molto veloce e alcuni passaggi non si capiscono bene: sul PDF è sicuramente spiegato meglio e il video vi può servire in caso abbiate dei dubbi:
Consigli per il montaggio
La fascetta di stoffa blu presente nel kit va divisa in due parti uguali e messa intorno alle batterie, dal lato del polo positivo, per facilitare l’estrazione delle stesse quando sono scariche. Personalmente l’ho attaccata con un po’ di nastro di carta.
Raggruppate l’eccesso di cavetto tra un modulo led e quello adiacente ripiegandoli al centro e fissandoli con un po’ di nastro carta:
Noterete che l’interruttore per l’accensione/spegnimento del robot si viene a trovare in posizione molto scomoda per essere azionato da dietro: il foro quadrato presente sulla fiancata sinistra del robot serve infatti a infilarci il dito dentro per agire sull’interruttore. E’ scomodo lo stesso ma lo è di meno.
Cercate di raggruppare i cavi in maniera pulita e di ottimizzare i passaggi degli stessi perchè lo spazio a disposizione all’interno, una volta montati tutti i pezzi è davvero ridotto all’osso e i cavi dei servocomandi vi sembreranno corti mentre quelli delle altre cose troppo lunghi: portate pazienza, utilizzate il nastro di carta e/o delle fascette di quelle ultra-piccolissime. Non schiacciate troppo i cavi tra loro perchè potrebbero rompersi (soprattutto il flat della telecamera e i sottilissimi cavi dei led) e/o toccare sui PCB rovinando anche gli stessi.
Prendetevi del tempo, molto, per ottimizzare il passaggio dei cavi: questa è sicuramente (almeno per me) la parte più complicata del montaggio perchè vi ritroverete a chiudere i pannelli laterali del robot con un malloppo di fili abbastanza corposo che vi metterà in difficoltà: ecco perchè bisogna tenere a portata di mano il nastro di carta e aiutarsi con le calamite a mantenere i dadi.
Personalmente ho rinforzato il flat della telecamera applicando del nastro trasparente e del nastro carta per parte della lunghezza: tenete conto, però, che se sbagliate a metterlo, rimuoverlo danneggia sicuramente il cavo.
A montaggio ultimato, come dicevo, la microSD non sarà più accessibile. Dalla parte posteriore potrete accedere alle due porte USB3.0 e sul lato inferiore del ROV potete collegarvi con l’alimentazione da USB e con l’uscita video.
Non utilizzare mai contemporaneamente l’alimentazione a batteria e quella esterna su USB C altrimenti danneggiate tutto! L’HAT ha una porta USB utilizzabile anch’essa per fornire alimentazione dall’esterno: anche questa non va utilizzata insieme alle batterie. Sul lato sinistro c’è il foro quadrato per agire sull’interruttore di accensione. Da qui sono anche visibili i 4 led che indicano la carica delle batterie.
Come funziona il software
Lo script python di installazione crea un file bash chiamato startup.sh in /home/pi. In tale file viene richiamato l’interprete python che esegue il file /home/pi/adeept_rasptank/server/webServer.py. Il file bash verrà richiamato sempre all’avvio del sistema dal momento che viene inclusa la chiamata in rc.local (contenuto in /etc).
Lo script webServer.py avvia un socket Flask sulla porta 5000 che permette una comunicazione bidirezionale tra client (il nostro browser) e server (che gira sul ROV). Tutta la roba che il socket Flask deve servire all’utente si trova nel file /server/app.py. Quando ci colleghiamo alla porta 5000 dell’indirizzo IP del nostro Raspberry Pi (es.: http://192.168.1.13:5000) viene servita la pagina /server/dist/index.html.
Un tutorial interessante su come eseguire uno streaming utilizzando Flask si trova qui.
In tale pagina HTML non c’è praticamente nulla perchè tutta l’interfaccia è realizzata dal javascript che si trova in /server/dist/js/app.js (app.75ae363b.js nel repository originale della Adeept). Tale javascript è realizzato con vue.js e Adeept ne ha anche rilasciato i sorgenti nel suo forum.
Il programma principale non parte se non rileva la telecamera. A tal scopo può esservi utile testare la telecamera. Il programma principale non parte nemmeno se non c’è l’HAT collegato dal momento che se non rileva la comunicazione verso il PCA9685 restituisce un errore.
A titolo informativo, quando si avvia manualmente lo script del webServer con malfunzionamenti della telecamera, si presentano questi errori:
La comunicazione tra il javascript e gli script python avviene tramite websocket mediante lo script server.py su diverse porte (10123 per motori/servo, 2256 per inviare le informazioni CPU/RAM). Lo script server.py gestisce tutta la parte di ricetrasmissione delle informazioni inviate tramite websocket.
Tutti gli appunti li sto scrivendo man mano nel readme sul mio fork. Se avete domande (chiare e specifiche) o volete pubblicare delle vostre intuizioni, potete farlo utilizzando il sistema degli issue su Github.
Per ogni problema con il kit, Adeept ha un forum : è meglio scrivere li i problemi che si hanno, avendo cura di postarli nella sezione giusta.
Immagini
Links
- Acquisto Rasptank su Amazon
- Prodotti Adeept su Amazon
- Pagina ufficiale prodotto
- Download Tutorials e immagini SD
- Repository Github Adeept
- Mio repository per il Rasptank
- Mio repository con soluzioni a problemi comuni con Raspberry Pi
- Forum Adeept sui kit basati su Raspberry Pi
Consigli per gli acquisti per completare il kit
- Batteria 18650 da 4500mAH (ce ne vogliono 2 – Adeept consiglia di usare batterie da almeno 3A). Ci vogliono batterie col “bottone” sul polo positivo, come queste dell’inserzione. Io comunque ho utilizzato batterie lisce sul polo positivo (che vanno saldate) e non ho avuto problemi: la molla nel portabatterie sul polo negativo spinge abbastanza la batteria verso l’alto.
- https://amzn.to/3sSu0B1Inserzioni Amazon per Raspberry Pi4 (è difficile ormai trovare il modello da 2Gb perchè va a ruba costando di meno, ma spesso su Amazon si trovano delle buone offerte di kit completi anche se sul ROV utilizzerete soltanto il Raspberry Pi lasciando da parte qualsiasi altro accessorio)
- Consiglio di mettere un dissipatore: il Raspberry Pi4 scalda tantissimo. Dato che sul ROV verrà montata una parte di plastica sul Raspberry, non è possibile utilizzare dissipatori su tutti i chip ma solo su quello principale e in aggiunta è necessario un dissipatore basso. Io ho acquistato questo kit e mi sono trovato bene con le dimensioni del dissipatore (certo mi sono avanzati la bellezza di altri 23 dissipatorini adesivi, ma è roba che comunque riciclo)
- Caricabatterie per 18650 o in alternativa modulini TP4056 muniti di protezione. Per collegare i modulini TP4056 alle batterie vi dovrete ingegnare magari acquistando dei portabatterie extra per 18650 tipo questi. In entrambi i casi avete bisogno di un alimentatore USB che fornisca almeno 2A, vanno bene quelli dei cellulari.
- microSD, consiglio di prenderne una da 16GB. Quelle della Kingston da 16GB si trovano spesso in offerta: io l’ho pagata meno di 6 euro con questa inserzione.
Per la modalità di installazione non-headless, dicevo, avete bisogno anche di tastiera, mouse, alimentatore apposito per Raspberry Pi4 e cavetto HDMI/MicroHDMI da collegare ad un monitor o una TV con ingressi HDMI. Questa roba in genere si recupera facilmente, forse tranne l’alimentatore:
- Alimentatore compatibile per Raspberry Pi4
- Cavo microHDMI
- Per lavorare sui Raspberry io utilizzo questo kit di Tastiera+Mouse USB wireless: compatto e carino
Aggiornamenti
In questo video mostro il Rasptank che viene controllato mediante il Keyboh: