Differenze tra le versioni di "RaspiCar"
m |
|||
Riga 61: | Riga 61: | ||
= Risultato = | = Risultato = | ||
+ | [[File:Raspicar_1versione.jpeg]] | ||
+ | |||
Potete vedere il risultato del primo prototipo [http://youtu.be/dRwVA-xowwA su Youtube]. | Potete vedere il risultato del primo prototipo [http://youtu.be/dRwVA-xowwA su Youtube]. | ||
Versione delle 20:36, 29 lug 2013
La RaspiCar è una macchinina i cui motori sono collegati alla GPIO del Raspberry Pi e comandati tramite un piccolo script in Python. Alla versione attuale la RaspiCar può avanzare, retrocedere e ruotare nei due sensi.
Schema elettrico
Per la costruzione della RaspiCar sono stati impiegati:
- 4 resistenze da 1K ohm
- 4 diodi
- 4 transistor BC337 o equivalenti
- 4 relè
- 2 motori elettrici
Lo schema globale è questo:
Nel dettaglio questo è il circuito che fa scattare ogni singolo relè: (che ho preso da questo sito [1])
Questo invece è il circuito che dà corrente a un motore:
Script in Python
Il problema principale nella gestione dei motori, e di conseguenza dei pin che devono accenderli, è che devono essere azionati contemporaneamente. Per risolvere il problema si è usata la libreria threading di Python. Lo script accetta due parametri: il primo è un comando (simile a quelli del Logo, fd avanza, bk arretra, lt e rt ruotano in senso antiorario e orario), il secondo il numero di secondi di durata. I pin usati nell'esempio sono il 6 e l'11 per il motore 1 e lo 0 e il 5 per il motore 2.
import threading import time import wiringpi import sys sys.argv[2] = float(sys.argv[2]) class movimento(threading.Thread): def run(self): if(sys.argv[2] > 0): io.digitalWrite(self.pin,io.HIGH) time.sleep(sys.argv[2]) io.digitalWrite(self.pin,io.LOW) io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_PINS) ogg1 = movimento() ogg2 = movimento() io.pinMode(6,io.OUTPUT) io.pinMode(11,io.OUTPUT) io.pinMode(0,io.OUTPUT) io.pinMode(5,io.OUTPUT) if(sys.argv[1]=='rt'): ogg1.pin = 11 ogg2.pin = 0 elif(sys.argv[1]=='lt'): ogg1.pin = 6 ogg2.pin = 5 elif(sys.argv[1]=='fd'): ogg1.pin = 11 ogg2.pin = 5 elif(sys.argv[1]=='bk'): ogg1.pin = 6 ogg2.pin = 0 else: print "Command not found (try 'lt', 'rt', 'bk' or 'fd')" ogg1.start() ogg2.start()
Risultato
Potete vedere il risultato del primo prototipo su Youtube.
Progetti futuri
- Separare l'alimentazione del RaspberryPi da quella del motore
- Far andare la RaspiCar a batterie
- Aggiungere sensori di vario tipo
- Aggiungere una webcam, in modo che si possa vedere dove si va anche quando la RaspiCar non è in vista
- Aggiungere un "braccio meccanico"
- Fare la stessa cosa ma con un piccolo dirigibile