venerdì 28 luglio 2017

Robot Car - Assemblaggio Driver dei Motori -

Nel primo post della serie [qui] ho descritto come assemblare i vari componenti che formano il kit del robot car.

A questo punto il robot car ha la necessita' di essere controllato per potersi muovere.
In questo post descrivo i passi necessari per installare il cervello (un raspberry pi zero) ed il driver dei 2 motori CC collegati alle ruote.

Componenti Necessari


Per portare a termine i passi descritti in questo post sono necessari i seguenti componenti

Raspberry Pi Zero





Io uso un Raspberry pi zero per le ridotte dimensioni. Altre versioni del Raspberry Pi possono essere utilizzate per questo progetto senza particolari problemi.

Suggerisco se possibile l'utilizzo di un Raspberry Pi Zero W in quanto include a bordo il wifi senza la necessita' di dongle esterni.


(Mini) BreadBoard




Per comodita' ho usato una mini breadboard con 170 punti di connessione.
E' possibile usare una piu' comune breadboard da 400 punti senza particolari problemi



IC L293(D)




Per comodita' ho usato un integrato L293D. Se avete un L293 ancora meglio.


Filo e Cavetti di connessione







Passiamo ora all'assemblaggio e alla realizzazione del driver per i motori collegati alle ruote.



Passo 1:  Saldatura alimentazione motori






I motori sono dotati di due terminali metallici su cui bisogna saldare un filo di alimentazione.
Inseriamo un filo e ripieghiamo leggermente l'estremita' quasi a formare un piccolo uncino. Questo rende il collegamento piu' solido e duraturo.










Ora con il saldatore ben caldo applicate un po' di stagno in modo da saldare i fili di alimentazione al connettore metallico del motore.








Questo e' il risultato che si dovrebbe ottenere.





Passo 2:  Fissaggio Raspberry Pi Zero al telaio

Per eseguire questo passo,  oltre al Rapsberry Pi, c'e' bisogno di una vite e bulloncino (presenti nel kit RobotCar) e opzionalmente di un punto gomma adesiva.




Come si nota il Raspberry Pi e' dotato di 4 fori di ancoraggio. Noi ne useremo uno solo in questo post.







Qui indico con une freccia il foro su cui avvitare il Raspberry Pi





Dall'estremita' opposta, siccome non e' presente un foro nel telaio, applico un punto gomma adesivo per fissare meglio la scheda Raspberry Pi al telaio del RobotCar





Questo e' il risultato finale che si dovrebbe ottenere











Passo 3:  Applicazione mini Breaboard sul telaio





Ho rimosso la pellicola protettiva dal fondo della mini breaboard  e l'ho fissata sul telaio nello spazio disponibile tra il porta batterie e la scheda Raspberry Pi installata al passo precedente.




Passo 4:  Passaggio fili alimentazione motore


Faccio passare i fili di alimentazione dei motori nelle fessure presenti nel telaio del RobotCar come indicato in figura




Fate passare i fili con delicatezza onde evitare di staccarli dai motori.




Questo e' l'effetto finale che dovreste ottenere








Passo 5:  Montaggio IC L293

In questo passo ho inserito il circuito integrato L293D, a 16 pin, nella mini breadboard

Importantissimo notare il riferimento su un lato del chip (una mezza luna scanalata) e un cerchietto scanalato che indica il pin #1 come indicato in figura





Ho inserito con delicatezza l'integrato con il pin #1 in corrispondenza della linea 6 come indicato in figura.

Nota:

Alle volte risulta un po' difficile inserire l'integrato nella breadboard. Se capita cio' non insistere e non sforzare.
Consiglio di guardare bene i pin dell'integrato e di raddrizzarli in caso alcuno siano leggermente piegati.






Questo e' il risultato che si dovrebbe ottenere


Passo 6:  Cablaggio circuito driver per motori

Ho eseguito i cablaggi come indicato nelle figure qui sotto














Ora inserisco i fili di alimentazione del motore di sinistra




Ora inserisco i fili di alimentazione del motore destra



Ora inserisco il filo nero che esce dal porta batterie (negativo o massa)





Ora collego il pin #2 del Raspberry Pi (+5V) al pin #1 del L293D come indicato in figura











Ora inserisco il filo rosso che esce dal porta batterie (positivo) ed aggiungo un filo dal piedino #12 del L293 a massa (basso a destra sulla mini breadboard)






Ora porto a massa il pin # 5 del L293D






Ora collego i pin #35 e #37 del Raspberry Pi (GPIO 19 e GPIO 26) alla breadboard come indicato in figura






Ora collego i pin #38 e #40 del Raspberry Pi (GPIO 20 e GPIO 21) alla breadboard come indicato in figura






Ora collego i pin #39 (GND o massa)alla breadboard come indicato in figura







Questo e' il risultato finale che dovreste ottenere










Conclusioni

Al termine di questo secondo post abbiamo montato sul telaio il cervello del RobotCar e cioe' il Raspberry Pi Zero

Abbiamo anche creato, utilizzando un unico integrato  L293, il driver per i due motori. Questo ci permette di pilotare ogni singolo motore e farlo girare in avanti e all'indietro a differenti velocita', quindi permettendo al RobotCar di muoversi andando avanti e indietro e di ruotare a destra e sinistra.

Nei prossimi post trattero' la parte software di controllo.

Come al solito commenti costruttivi sono ben accetti










mercoledì 26 luglio 2017

s2pi - Programmare Raspberry Pi usando Scratch 2.0

Raspberry Pi e' una serie di computer su singola scheda dalle dimensioni e costo molto contenuti che e' stato venduto in milioni di esemplari in tutto il mondo.

Nel corso degli anni si e' passati dal primo Raspberry Pi al Raspberry Pi3 a 64 bit e all'ultimo Raspberry Pi Zero Wireless dalle dimensioni veramente impressionanti.






Il Raspberry Pi e' un computer completo con processore ARM ed espone una serie di pin digitali GPIO per poter pilotare circuiti esterni o per leggere dei lavori digitali da sensori esterni.

In questo contesto, con le dovute semplificazioni, possiamo vedere il Raspberry Pi come una versione evoluta e piu' versatile di Arduino.

Infatti al contrario di Arduino, che e' una scheda basata su un microcontrollore, Raspberry Pi e' un computer a tutti gli effetti su cui gira un  sistema operativo (tipicamente Linux, ma anche Windows e  Android).

Per le sue caratteristiche tecniche e di costo il Raspberry Pi e' generalmente diretto al mercato hobby ed educational e risulta perfetto per i giovani che sono alle prime armi e vogliono sperimentare ed imparare l'elettronica e la programmazione


Programmazione

Il Raspberry Pi puo' essere programmato in moltissimi modi diversi ed utilizzando praticamente qualsiasi linguaggio.

Python


Visto il suo vasto utilizzo nel mondo degli hobby e della didattica il Raspberry Pi permette di essere programmato in maniera semplicissima usando il linguaggio Python

Esistono molti moduli Python che permettono di avere accesso ai GPIO (detti anche piedini)




L'utilizzo e la programmazione di Raspberry Pi in Python permette di creare un'enormita' di progetti con complessita' variabile dal piu' semplice (accensione di un Led) ai piu' complessi (gestione domotica di un'abitazione).

Ritengo molto valido, e suggerisco l'uso di Python per la programmazione di Raspberry Pi a tutti coloro che vogliono imparare e si avvicinano al mondo dell'elettronica e della programmazione per la prima volta. Qualsiasi studente dalle medie inferiori in avanti  puo' avere accesso ad un mondo vastissimo di possibilita' per imparare ed apprendere.




Scratch 1.4


Uno dei sistemi operativi piu' utilizzati su Raspberry Pi e' Raspbian.

Raspbian fornisce gia' installato il famoso ambiente di programmazione visuale Scratch sviluppato al MIT.






La presenza di Scratch e la possibilita' con esso di programmare il Raspberry Pi rende questa piattaforma facilmente accessibile ai meno esperti ed ai piu' piccoli (studenti della scuola primaria)
Scratch, come Python, permette di accedere ai piedini di GPIO e di programmare la logica di semplici circuiti

Per una serie di ragioni tecniche, che qui non tratto, la versione di Scratch disponibile su Raspberry Pi e' la 1.4, cioe' la piu' datata.

Scratch 2.0


La versione piu' nuova di Scratch la 2.0 non e' disponibile (o facilemente disponibile) su Raspberry Pi. 



Questo non e' un grande problema, ma in certi ambienti dove lo studente ha seguito un ciclo di apprendimento basato su Scratch 2.0 si troverebbe disorientato al passaggio a Scratch 1.4.

Al fine di rendere piu' agevole l'introduzione di Raspberry Pi questo post tratta e spiega come utilizzare Scratch 2.0 per programmare il Raspberry Pi eliminando cosi' la necessita' di imparare l'ambiente 1.4 e rendendo l'esperienza didattica piu' semplice per lo studente.


s2pi





s2pi o Scratch to Pi permette la programmazione di Rapsberry Pi usando Scratch 2.0 off-line editor installato sul proprio PC.

In questo modo e' possibile programmare una scheda Raspberry Pi sia che sia fissa che sia mobile (magari a bordo di un Robot).

La programmazione avviene dal proprio PC tramite l'ambiente Scratch 2.0 off-line.

La scheda Raspberry Pi puo' essere locata in qualsiasi luogo locale o remoto. Non deve essere fisicamente collegata al computer. Questo fornisce una grande flessibilita' e permette di utilizzare Raspberry Pi e Scratch in diversi contesti e progetti.


Il pacchetto s2pi e' disponibile su github per chiunque ed e' composto dai seguenti elementi:

  • un'applicazione helper chiamata s2pi.py
  • un'estensione per Scratch chiamata s2pi.s2e che mette a disposizione una serie di blocchi di facile utilizzo 
  • un semplice script per Windows chiamato s2pi-redirect.bat  che permette di far comunicare Scratch con Raspberry Pi
  • un programma Scratch di esempio per verificare che l'installazione di s2pi sia perfettamente funzionante

Installazione


L'installazione e' semplice ed accessibile a tutti coloro che hanno una conoscenza di base.
Per i piu' piccoli, in caso di problemi,  suggerisco di chiedere aiuto ad un adulto.

L'installazione prevede una serie di passaggi sia sul proprio PC (Windows in questo post) sia sul proprio Raspberry Pi

PC

Passo #1

Scaricare il seguente zip file [https://github.com/mancusoa74/s2pi/archive/master.zip]


Passo #2

Scompattarlo in una cartella (C:\Users\<nome utente>). Una directory di nome s2pi-master viene creata nella cartella prescelta (C:\Users\<nome utente>\s2pi-master)

Passo #3

Eseguire come amministratore il seguente file C:\Users\<nome utente>\s2pi-master\s2pi-master\Windows\s2pi-redirect.bat
Raspberry Pi



Passo #4

Inserire l'indirizzo IP del Raspberry Pi che si vuole programmare





Questo passo crea una regola di port forwarding che permette di reindirizzare tutto il traffico generato da Scratch (estensione s2pi) verso l'applicazione helper che gira su Raspberry Pi

Nota:
Il Servizio windows IP Helper deve essere attivo per un corretto funzionamento

Passo #5

Aprire Scratch 2 e caricare l'estensione s2pi tenendo premuto il tasto SHIFT e aprendo il menu File



Selezionare la voce: Import experimental HTTP extensions

e selezionare l'estensione s2pi in 

C:\Users\<nome utente>\s2pi-master\s2pi-master\Scratch_Extension\s2pi.s2e


Passo #6

Verificare che l'estensione sia stata caricata correttamente. 





A questo punto e' normale che il pallino che indicato lo stato dell'estensione s2pi sia rosso in quanto l'applicazione helper su Raspberry pi non e' ancora stata installata


Nota:
I passi elencati per l'installazione vanno eseguiti una sola volta ad eccezione del passo #5 che deve essere eseguito ogni volta che si carica l'ambiente Scratch 2 in quanto Scratch non prevede nessun meccanismo per caricare le estensioni in maniera automatica


Raspberry Pi


Passo #1

Scaricare il seguente zip file [https://github.com/mancusoa74/s2pi/archive/master.zip] con il seguente comando


wget https://github.com/mancusoa74/s2pi/archive/master.zip




Passo #2

Scompattarlo nella cartella home (/home/pi) Una directory di nome s2pi-master viene creata nella cartella home

unzip master.zip


Passo #3

Installare le dipendenze in caso non siano gia state installate.

Eseguire i seguenti comandi:


sudo apt-get install python-pip
sudo pip install flask
sudo pip install colorlog
sudo pip install gpiozero


Passo #4

Eseguire l'applicazione helper s2pi


cd /home/pi/s2pi-master
./start_s2pi.sh




A questo punto l'applicazione helper s2ai e' in attesa di ricevere le chiamate da Scratch

Se tutti i passi sono stati eseguiti correttamente ora in Scratch lo stato dell'estensione s2pi e' passato da pallino rosso a pallino verde, indicando che Scratch e Raspberry Pi possono comunicare correttamente






Nota:
I passi elencati per l'installazione vanno eseguiti una sola volta ad eccezione del passo #4 che va eseguito ogni volta che si vuole far partire l'applicazione helper su Raspberry Pi


Conclusioni

In questo posto ho messo a disposizione di chiunque un semplice metodo per poter programmare il Raspberry Pi usando Scratch 2 dal proprio PC.

Questo permette a chiunque alle prime armi di sperimentare ed imparare divertendosi.

Sono come sempre ben accetti suggerimenti costruttivi atti a migliorare quanto qui descritto