sabato 31 gennaio 2015

Sensore di distanza HC-SR04

Con un sensore HC-SR04 e un buzzer, che troviamo nello starter kit di Arduino, possiamo simulare un sensore di parcheggio.
Per prima cosa dobbiamo effettuare i collegamenti fra arduino, il sensore HC-SR04 e il buzzer. Mettiamo, quindi, su una breadboard il sensore HC-SR04 facendo attenzione a rivolgerlo verso l'esterno e non verso Arduino e accanto il buzzer.
Nello schema qui sotto potete vedere i colegamenti:




Una volta effettuati i collegamenti possiamo procedere a caricare il seguente sketch su Arduino:

int triggerPort = 7;
int echoPort = 8;
int buzzer = 9;
unsigned long time;
unsigned long lampeggio_time;
unsigned long pausa_time;
void setup() {
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
pinMode( buzzer, OUTPUT );
Serial.begin( 9600 );
Serial.println( "Sensore ultrasuoni: ");
}
void loop() {

digitalWrite( triggerPort, LOW );

digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
long duration = pulseIn( echoPort, HIGH );
long r = 0.034 * duration / 2;
Serial.print( "durata: " );
Serial.print( duration );
Serial.print( " , " );
Serial.print( "distanza: " );
if( duration > 38000 ) Serial.println( "fuori portata");
else { Serial.print( r ); Serial.println( "cm" );}
if( r > 3 && r <= 200){
delay(r*10);
digitalWrite(buzzer, HIGH);
delay(r*10); }
if( r <= 3){
digitalWrite(buzzer, HIGH);
delay(1000);}
digitalWrite(buzzer, LOW);
delay(10);

}

Di seguito alcune foto del progetto:



sabato 10 gennaio 2015

Moduli Bluetooth HC-05

Moduli Bluetooth HC-05

Se vogliamo far comunicare 2 schede Arduino con moduli Bluetooth è necessario configurare i moduli in modo che possano trasmettere dati tra loro.




In particolare è necessario configurare uno di questi come MASTER e l'altro come SLAVE e per farlo possiamo utilizzare i comandi AT.
Vediamo innanzitutto come collegare il modulo bluetooth ad Arduino per metterlo nella modalità programmazione. Li collegheremo uno alla volta e li imposteremo uno come modulo MASTER e l’altro SLAVE.




Come si vede dall'immagine abbiamo connesso i PIN RX e TX ai pin 11 e 10 di Arduino in modo da lasciare liberi i PIN RX e TX di Arduino per utilizzare la connessione seriale con il PC. Per fare ciò abbiamo utilizzato la libreria SoftwareSerial che ci permette di utilizzare i pin 10 e 11 per la comunicazione con il modulo bluetooth.
Abbiamo quindi collegato il pin KEY del modulo bluetooth al pin 9 di Arduino.
Colleghiamo il PIN GND del modulo bluetooth con il PIN GND di Arduino, mentre lasciamo per un attimo scollegato il PIN Vcc.


Carichiamo quindi lo sketch seguente sul nostro Arduino.


#include <SoftwareSerial.h>


SoftwareSerial BTSerial(10, 11); // RX | TX


void setup()
{
 pinMode(9, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
 digitalWrite(9, HIGH);
 Serial.begin(9600);
 Serial.println("Enter AT commands:");
 BTSerial.begin(38400);  // HC-05 default speed in AT command more
}


void loop()
{


 // Keep reading from HC-05 and send to Arduino Serial Monitor
 if (BTSerial.available())
Serial.write(BTSerial.read());


 // Keep reading from Arduino Serial Monitor and send to HC-05
 if (Serial.available())
BTSerial.write(Serial.read());
}


Questo sketch ci permette di eseguire dei comandi AT sul modulo bluetooth e leggere le risposte.


Una volta caricato lo sketch su Arduino eseguiamo dei comandi AT per impostare il primo dei 2 moduli bluetooth come SLAVE:
  • apriamo il monitor seriale del programma Arduino
  • assicuriamoci che sia impostato il valore “Both NL & CR” e la velocità di connessione a 9600
  • quando resettiamo Arduino (aprendo il monitr seriale Arduino si resetta), dovremmo vedere apparire sul monitor seriale la scritta: “Enter AT commands:”
  • connettiamo il PIN Vcc del modulo bluetooth al PIN 5Vdi Arduino, dovremmo vedere il led di Arduino lampeggiare lentamente (ogni circa 2 secondi)
  • scriviamo nel monitor seriale il comando AT e premiamo INVIO (bottone Send del monitor seriale)
  • scriviamo quindi il comando AT+ROLE=0; questo configurerà il modulo bluetooth come SLAVE. Per verificare il comando appena eseguito digitiamo AT+ROLE? e dovremmo vedere restituito: +ROLE:0
  • ora eseguiamo il comando AT+BIND= e premiamo INVIO. In questo modo rimuoviamo qualunque binding esistente. Per verificare eseguiamo il comando AT+BIND? e dovremmo ottenere: +BIND:0:0:0
  • eseguiamo quindi il comando AT+ADDR? per ottenere l’indirizzo MAC del nostro modulo (avrà la forma 2837:3:92); segnamoci questo indirizzo perchè ci servirà nella programmazione del modulo master


Scolleghiamo il primo modulo bluetooth senza togliere tutti i collegamenti su Arduino in quanto ci serviranno per programmare il secondo modulo.


Per impostare il secondo modulo bluetooth eseguiamo invece i seguenti comandi:
  • apriamo il monitor seriale del programma Arduino
  • assicuriamoci che sia impostato il valore “Both NL & CR” e la velocità di connessione a 9600
  • quando resettiamo Arduino (aprendo il monitr seriale Arduino si resetta), dovremmo vedere apparire sul monitor seriale la scritta: “Enter AT commands:”
  • connettiamo il PIN Vcc del modulo bluetooth al PIN 5Vdi Arduino, dovremmo vedere il led di Arduino lampeggiare lentamente (ogni circa 2 secondi)
  • scriviamo nel monitor seriale il comando AT e premiamo INVIO (bottone Send del monitor seriale)
  • scriviamo quindi il comando AT+ROLE=1; questo configurerà il modulo bluetooth come MASTER. Per verificare il comando appena eseguito digitiamo AT+ROLE? e dovremmo vedere restituito: +ROLE:1
  • ora eseguiamo il comando AT+BIND=2837,3,92 sostituendo l’indirizzo MAC che abbiamo segnato precedentemente e premiamo INVIO. Questo forzerà il nostro modulo master a connettersi automaticamente all’altro nostro modulo. Eseguendo il comando AT+BIND? dovremmo vedere restituito 2837:3:92.


A questo punto quando accenderemo i 2 moduli questi si connetteranno tra di loro indipendentemente da quale accendiamo per primo. Tutto quello che ti servirà per utilizzarli è aprire una connessione seriale e comunicare attraverso di essa.