Differenze tra le versioni di "Tavolo zero (renzo)"

Da raspibo.
Jump to navigation Jump to search
Riga 100: Riga 100:
  
 
  import serial
 
  import serial
  arduino=serial.Serial('/dev/ttyUSB0')
+
arduino=serial.Serial('/dev/ttyUSB0')
  while 1:
+
while 1:
 
     print arduino.readline()
 
     print arduino.readline()
  

Versione delle 13:17, 11 feb 2014

Benvenuti al tavolo zero.

Zero come "qui si parte da zero".

Non sapete qualcosa? Benevenuti al tavolo zero.

E' come un Coder Dojo dove si fanno esperimenti di Making, ci sono esempi/tutorial ma poi fate cio' che volete... ma fate voi!

Novità! c'è una mailing list! tavolozero at liste.raspibo.org

Attività per la sera del 28 gennaio

Attività per la sera del 12 novembre

Esercizi proposti da Renzo:

0- installare VNC

1- accendere 'sto solito led (in bash, C e python)

2- creare un termostato o un crepuscolare.

per partecipare al gioco occorre:

  • un portatile
  • un cavo di rete (*)
  • un raspberry pi con alimentatore
  • una SD card possibilmente con rasbian precaricato
  • una breadboard (*)
  • un cavo di collegamento raspi-breadboard (*)
  • una resistenza da circa 270 ohm (*)
  • un transistor BC547 (*)
  • una resistenza da circa 1Kohm (*)
  • un diodo 1N4007 (*)
  • un relais (*)
  • un termometro ds18b10 (*)
  • un sensore di luminosita' (*)

Almeno una istanza di ogni oggetto contrassegnato con (*) la portero' io


(aggiungete please ulteriori esercizi proposti da voi)


Devo inserire qui gli esercizi ?


Unità UNO: [Misure ADC su JeeNode]

Obiettivi:    
  • Usare il JeeNode come ADC (Analog to Digital Converter);
  • Verificare la corrispondenza tra Tensione in uscita da un Trimmer e valore Digitale;
  • Trasferire i dati letti da JeeNode su RaspberryPi attraverso la porta USB;
Prerequisiti:  
  • Conoscere “a grandi linee” Arduino e l'IDE di programmazione;
  • Conoscere “a grandi linee” le differenza tra Arduino e JeeNode;
  • Conoscere “a grandi linee” Raspberry e comandi Linux
Strumenti : 
  • Un Pc con l'IDE di Arduino Installato
  • Un JeeNode (o un Arduino)
  • Un Trimmer o un Potenziometro;
Primo Passo: 

Caricare su JeeNode (o su Arduino) con l'IDE il seguente programma:

const int PinPot = 14;  // AIO1 di JeeNode | 14 è la numerazione Arduino
float Vbit = 3.3/1024;  // il convertitore (Jee) lavora a 10 bit e a 3.3 Volt
int ValPot=0;           // variabile che legge la tensione su AIO1
void setup() {                
 Serial.begin(9600);
 while(!Serial);
 pinMode(PinPot, INPUT);  
}
void loop() {
   ValPot=analogRead(PinPot);  // legge valore ADC dal pin 14
   /* Mostra valore digitale e tensione
      su Monitor Arduino | più esattamente spedisce su USB */
   Serial.print("Valore Digitale: ");
   Serial.print(ValPot);
   Serial.print(" | Tensione=");
   Serial.println(ValPot*Vbit);
   // attende 2 secondi 
   delay(2000);
}
Secondo passo:

Realizzare sulla Port1 del JeeNode il seguente circuito con un trimmer da 10 kohm


Jee Trimmer.png


Provare il programma aprendo il monitor seriale di Arduino. Si dovrebbe notare quanto segue: Ruotando il trimmer se questo giunge ad un estremo, AIO1=GND si leggerà 0 digitale e 0 di tensione e ruotando in direzione opposta cresce fino all'altro estremo AIO=3.3volt, e si leggerà 1023 per una tensione di 3.3 Volt.

Esiste una proporzionalità diretta tra tensione sul pin AIO1 e valore digitale letto:

3.3(Volt) : 1024  =   Vx(volt) : N_Dig  segue → Vx= 3.3 * N_Dig/1024

Jee Trimmer sch.png

Terzo Passo:

Collegare con un Cavetto il JeeNode (così programmato) ad una delle porte USB di RASPY. Eseguire i seguenti comandi per installare il software (pyton-serial) se necessario su Raspy:

pi@raspy$ sudo apt-get -u install python-serial

Scrivere con un editor qualsiasi il seguente programma python e salvarlo:

pi@raspy$ nano ardu_adc.py
import serial
arduino=serial.Serial('/dev/ttyUSB0')
while 1:
    print arduino.readline()

Eseguire il programma:

pi@raspy$ python ardu_adc.py

Se non ci sono errori e la USB è la /dev/ttyUSB0, sul monitor compariranno i valori che in precedenza mostrava il monitor di Arduino con il trimmer agli estremi.


Jee Trimmer raspy.png


E' evidente che manipolando opportunamente i valori ricevuti si potranno memorizzare o pubblicare i dati di qualsiasi misura.

Nota: Il codice caricato su JeeNode è a tutti gli effetti un codice Arduino e di conseguenza si potrebbe ottenere lo stesso risultato usando un Arduino al posto di JeeNode.

Unità DUE: [Misura ADC e Allarme LED su JeeNode]