RaspiCar

Da raspibo.
Jump to navigation Jump to search

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:

RaspiCar Schema.png

Nel dettaglio questo è il circuito che fa scattare ogni singolo relè: (che ho preso da questo sito [1])

RaspiCar Schema Relay.png

Questo invece è il circuito che dà corrente a un motore:

RaspiCar Schema Motor.png

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

Raspicar 1versione.jpeg

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