ARDUINO Esplora |
|
Componenti del progetto
I principali componenti che compongono il progetto sono
Fusibile ripristinabile 500mA
Batteria ricaricabile Li-Ion
Collegamenti Stazione di controllo
Collegamento stazione ricevente
Programma Master
Passiamo ora ad analizzare il programma da inserire sulla Scheda Arduino Esplora esegue le seguenti funzioni:
Caricamento delle librerie necessarie: Software Serial, SPI, Esplora. TFT
Definizione dei pin collegati alla porta seriale
Impostazione del pin di collegamento al led presente sulla scheda
Nel dettaglio nel ciclo di setup abbiamo l’Impostazione del modulo bluetooth
come Master, per fare questo dopo aver impostato la velocità di trasmissione
della seriale a 115200 bbs (che è quella di default del modulo) viene inviato il
comando per entrare in command mode rappresentato da print("$$$") a cui deve
seguire una breve pausa
Quindi si invia il comando println("SM,1") che imposta il modulo come Master.
A questo punto indichiamo a quale modulo deve connettersi mediante il comando
println("C,<address>") dove <address>) deve essere sostituito dal codice MAC del
vostro modulo slave, questo numero si trova scritto sull’esterno del modulo, ed
è formato da 12 cifre.
Dopo una nuova pausa trasmettiamo il comando println("---") che permette
l’uscita dal Command Mode.
Sotto le righe di codice corrispondenti
mySerial.begin(115200); mySerial.print("$$$"); delay(100); mySerial.println("SM,1"); delay(100); //inserire il codice MAC del modulo Slave mySerial.println("C,000666464321"); delay(100); mySerial.println("---");
Segue poi una parte di programma per l’impostazione del display TFT
Si passa quindi al programma vero e proprio presente nel ciclo LOOP, questo legge ciclicamente i tasti impostati 2 e 4 e a seconda di quello premuto accede o spegne il led presente sulla scheda e invia tramite la seriale il carattere “a” o “s” e invio del Feedback al display TTF
/* Programma di test per interfaccia SERIALE Sezione MASTER - Arduino esplora * RX è il pin digitale 11 (da collegarsi al TX del modulo BlueSMiRF) * TX è il pin digitale 3 (da collegarsi al RX del modulo BlueSMiRF) Questo codice di esempio è di dominio pubblico. */ #include <SoftwareSerial.h> #include <SPI.h> #include <Esplora.h> #include <TFT.h> SoftwareSerial mySerial(11, 3); // RX, TX int led = 13; // il Pin 13 è collegato al led L sulla scheda esplora void setup() { //Imposta il modulo BlueSMiRF SILVER come MASTER //e setta il numera MAC del ricevente slave mySerial.begin(115200); mySerial.print("$$$"); delay(100); mySerial.println("SM,1"); delay(100); //inserire il codice MAC del modulo Slave mySerial.println("C,000666464321"); delay(100); mySerial.println("---"); //------------------- pinMode(led, OUTPUT); // initialize il pin digitale come output EsploraTFT.begin(); EsploraTFT.background(0,0,0); //sfondo nero EsploraTFT.setTextSize(2); EsploraTFT.stroke(0,255,0); //colore del testo verde EsploraTFT.text(" Test uso",0,0); EsploraTFT.text(" Modulo",0,16); EsploraTFT.text(" Bluetooth",0,32); EsploraTFT.setTextSize(1); EsploraTFT.stroke(255,255,255); //colore del testo bianco EsploraTFT.text(" 2-Accende - 4 Spegne",0,60); delay(500); } void loop() // LOOP di lettura tasti e invio carattere { int button_2 = Esplora.readButton(SWITCH_2); int button_4 = Esplora.readButton(SWITCH_4); if (button_2==LOW) { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) mySerial.print ("a"); //Accende led cancellazione (); EsploraTFT.stroke(255,0,0); //colore del testo rosso EsploraTFT.text("LED ACCESO",30,80); EsploraTFT.stroke(255,0,0); EsploraTFT.fill(255,0,0); EsploraTFT.circle(105,83,10); } if (button_4==LOW){ digitalWrite(led, LOW); // turn the LED off by making the voltage LOW mySerial.print ("s"); //Spegne led cancellazione (); EsploraTFT.stroke(255,255,255); //colore del testo bianco EsploraTFT.text("LED SPENTO",30,80); EsploraTFT.stroke(255,0,0); // Colore rosso EsploraTFT.circle(105,83,10); // Disegno cerchio } delay (100); } void cancellazione () { EsploraTFT.stroke(0,0,0); EsploraTFT.fill(0,0,0); EsploraTFT.rect(30,80, 80, 8); //Cancellazione valore }
Programma Slave
Il programma da inserire sulla Scheda ARDUINO UNO esegue le seguenti funzioni:
Caricamento della libreria necessarie: Software Serial
Definizione dei pin collegati alla porta seriale
Impostazione del pin di collegamento al led presente sulla scheda
Nel ciclo di setup abbiamo
Impostazione del modulo bluetooth come SLAVE, la procedura è analoga a quella
precedentemente descritta l’unica variazione è per il comando che in questo caso
sarà println("SM,0") che imposta il modulo come Slave.
Si passa quindi al programma vero e proprio presente nel ciclo LOOP, questo
legge ciclicamente la porta seriale connessa al modulo bluetooth e quando riceve
un carattere, lo analizza e se il carattere è “a” Accende il led, mentre se il
carattere è “s” lo spegne.
Segue il listato completo
/* Programma di test per interfaccia SERIALE Riceve dalla seriale hardware, invia alla seriale del software. Riceve daL software seriale , e invia al sesiale hardware. Il circuito: * TX è il pin digitale 2 (da collegarsi al RX del modulo BlueSMiRF) * RX è il pin digitale 3 (da collegarsi al TX del modulo BlueSMiRF) Questo codice di esempio è di dominio pubblico. */ #include <SoftwareSerial.h> SoftwareSerial mySerial(3, 2); // RX, TX const int ledPin = 13; // the number of the LED pin void setup() { //Imposta il modulo BlueSMiRF SILVER come SLAVE mySerial.begin(115200);//imposta la porta di comunicazione con il modulo BlueSMiRF mySerial.print("$$$"); delay(100); mySerial.println("SM,0"); delay(100); mySerial.println("---"); delay (1000); //------------------- Serial.begin(115200); //imposta la porta di comunicazione seriale pinMode(ledPin, OUTPUT);// initialize the LED pin as an output: } void loop() { while (mySerial.available() < 1) { } // Attesa sino a quando riceve un carattere char val = mySerial.read(); // Legge il carattere dal modulo Bluetooth e lo salva nella variabile val Serial.println (val); //per test switch(val) // Eseguie i comandi in base al carattere ricevuto { case 'a':// Se il carattere ricevuto è 'a' accende il led // turn LED on: digitalWrite(ledPin, HIGH); break; case 's'://Se il carattere ricevuto è 's' spegen il led // turn LED off: digitalWrite(ledPin, LOW); break; } }
Collaudo del dispositivo
Una volta caricati i relativi programmi nelle due schede potremmo passare al
collaudo del nostro collegamento.
In questo caso è necessario alimentare la scheda Arduino UNO (modulo slave) con
un leggero anticipo, 5 secondi saranno sufficienti prima della scheda Arduino
Esplora (modulo Master) .
Se tutti funzionerà dopo un lampeggio dei led rossi (stat) si avrà l’accensione
dei led verdi (Connect) che segnalerà l’avvenuta connessione dei due moduli.
A questo punto premendo il tasto “SWITCH 2” si dovrà accendere il led presente
sulla scheda Arduino UNO, mentre il tasto “SWITCH 4” lo farà spegnere.
Le istruzione e lo stato del led sono riportate sullo schermo TTF della scheda Arduino.
Prosegue la nostra analisi della scheda Arduino Esplora in quest'articolo in cui vedremo come dotarla di un modulo Bluetooth, che imposteremo come Master. Nell'esempio proposto comanderemo un secondo modulo Bluetooth, impostato come Slave, collegato a una scheda Arduino UNO. Piloteremo un semplice led, ma l'esempio sarà utile per comandare, in futuro, dispositivi più complessi.
Elenco revisioni | |
24/12/2013 | Emissione preliminare |