Differenze tra le versioni di "Scaldiamoci alla luce di un LED"

Da raspibo.
Jump to navigation Jump to search
Riga 10: Riga 10:
 
Abbiamo attivato la porta GPIO2 del Raspi scrivendo qualcosa tipo:
 
Abbiamo attivato la porta GPIO2 del Raspi scrivendo qualcosa tipo:
  
   echo 2 > /sys/.../gpio/exports
+
   echo 2 > /sys/class/gpio/exports
  
 
da notare che "magicamente" compare  sotto la directory '''.../gpio''' una ulteriore subdir '''.../gpio2'''
 
da notare che "magicamente" compare  sotto la directory '''.../gpio''' una ulteriore subdir '''.../gpio2'''
Riga 16: Riga 16:
 
poi abbiamo messo in '''output''' la porta che era in '''input'''
 
poi abbiamo messo in '''output''' la porta che era in '''input'''
  
   echo output > /sys/.../gpio/gpio2/direction
+
   echo output > /sys/class/gpio/gpio2/direction
  
a quel punto abbiamo osservato che era possibile scrivere '''1''' o '''0''' sul file ''''value''' per commutare il livello elettrico da 0 a 3.3v (misurato col preciso multimetro di Davide):
+
a quel punto abbiamo osservato che era possibile scrivere '''1''' o '''0''' sul file '''value''' per commutare il livello elettrico da 0 a 3.3v (misurato col preciso multimetro di Davide):
  
   echo 0 > /sys/.../gpio2/value
+
   echo 0 > /sys/class/gpio/gpio2/value
  
 
Abbiamo creato un 'complesso' script shell che faceva una sleep e scriveva uni e zeri. ecco '''un generatore di onda quadra'''!
 
Abbiamo creato un 'complesso' script shell che faceva una sleep e scriveva uni e zeri. ecco '''un generatore di onda quadra'''!

Versione delle 17:06, 8 mar 2013

Scaldiamoci col led

Ecco il resoconto di uno dei tanti "tavoli tecnici" sul Raspi. Io sono Andrea e questa è una sintesi alla buona!

Il 7 marzo ci siamo messi intorno ad un tavolo e per scaldare la serata abbiamo acceso un led col Raspi (offerto da Davide)!

Il led era attaccato alla porta del Raspi via flat cable da floppy, breadboard e poco piu', vedi immagine del setup:

Led raspi.jpg

Abbiamo attivato la porta GPIO2 del Raspi scrivendo qualcosa tipo:

 echo 2 > /sys/class/gpio/exports

da notare che "magicamente" compare sotto la directory .../gpio una ulteriore subdir .../gpio2

poi abbiamo messo in output la porta che era in input

 echo output > /sys/class/gpio/gpio2/direction

a quel punto abbiamo osservato che era possibile scrivere 1 o 0 sul file value per commutare il livello elettrico da 0 a 3.3v (misurato col preciso multimetro di Davide):

 echo 0 > /sys/class/gpio/gpio2/value

Abbiamo creato un 'complesso' script shell che faceva una sleep e scriveva uni e zeri. ecco un generatore di onda quadra! Lo script ha due parametri, il primo e' il tempo di LED off, il secondo il tempo di on:

Script2.png


Ecco uno screenshot del display di ubuntu connesso in ssh al raspi mentre "gira" lo script (quando siamo passati a sleep minori di 1 secondo abbiamo tolto l'echo sulla shell per evitare tempi aggiuntivi ed aumentare quindi la precisione):

Script.png

Osservazioni

Qui alcune osservazioni che riportiamo.

  • il cavo con connettore microUsb e' poco diffuso e spesso la sua mancanza impedisce di accendere il Raspi!
  • la sleep dello script accetta anche float e puo' "dormire" anche per solo un centesimo di secondo (0.01); chissà quanto in basso si puo' scendere (con una certa precisione)?

il logic analyzer

Andrea ha portato un logic analyzer con cui si possono osservare le forme d'onda digitali. L'oggetto e' un kit open source chiamato Open Bench Logic Sniffer che ha 16 canali compatibili 5v e 3.3v (bufferizzati), si puo' malamente vedere (perche' imbustato a protezione..) dietro al portatile nella foto sopra.

Ols.jpg

Ecco un screenshot della forma d'onda come visualizzata nel client su PC.

Analyzer-screen.png

Da notare il segnale sul canale 0; sul canale 1 si vedono degli "spike" spuri perche' gli altri ingressi, quando rimangono "flottanti" (cioe' non vengono forzati a massa) possono raccogliere qualche livello alto per errore..

Conclusioni ed Attività future

Grazie ancora a Davide per il materiale..

Alla prossima occasione, approfondiremo il tema del controllo PWM!

Grazie alla "pulse width modulation" (PWM) anche un segnale elettrico digitale (che vale 0 o 1) puo' generare livelli elettrici (mediamente) intermedi (o analogici..). serve qualche filtro passa basso per togliere le alte frequenze. Per un led, la persistenza dell'occhio basta ed avanza.