Led e Bluetooth
Descrizione
Questo progetto è un controller LED Bluetooth Arduino costruito con una scheda Arduino, un modulo seriale Bluetooth e un LED. Il modulo Bluetooth riceve comandi da uno smartphone, tablet o computer e li invia ad Arduino attraverso la comunicazione seriale. Quando Arduino riceve il carattere “1”, accende il LED. Quando riceve il carattere “0”, spegne il LED. Questo progetto è utile per imparare il controllo wireless, la comunicazione seriale Bluetooth, SoftwareSerial, gli output digitali e il controllo remoto di base con Arduino.
Componenti necessari:
- 1x Arduino UNO
- 1x Modulo bluetooth HC-05
- 1x LED
- 1x Resistore da 220Ω
- Cavi jumper (breadboard opzionale)
Schema:
Codice:
// https://nemiatools.com
#include <SoftwareSerial.h> // Importa libreria seriale software
SoftwareSerial bluetooth(8, 9); // Crea porta seriale Bluetooth
const int PIN_LED = 7; // Definisce pin uscita LED
char command; // Memorizza comando ricevuto
bool state = false; // Memorizza stato LED
void setup() {
pinMode(PIN_LED, OUTPUT); // Imposta pin LED come uscita
bluetooth.begin(9600); // Avvia comunicazione Bluetooth
Serial.begin(9600); // Avvia monitor seriale
}
void loop() {
if (bluetooth.available()) { // Controlla disponibilità dati Bluetooth
command = bluetooth.read(); // Legge comando Bluetooth
Serial.print(command); // Stampa comando ricevuto
} // Termina controllo disponibilità
if(command == '0') state = false; // Imposta stato LED spento
else if(command == '1') state = true; // Imposta stato LED acceso
if(state) digitalWrite(PIN_LED, HIGH); // Accende il LED
else digitalWrite(PIN_LED, LOW); // Spegne il LED
}
Come funziona:
Questo progetto permette a un Arduino di controllare un LED usando comandi Bluetooth. Un modulo Bluetooth, come un HC-05 o HC-06, riceve caratteri da un dispositivo esterno e li invia ad Arduino.
La riga #include <SoftwareSerial.h> aggiunge la libreria SoftwareSerial. Questa libreria permette ad Arduino di creare una porta di comunicazione seriale aggiuntiva usando normali pin digitali, invece di usare solo i pin seriali hardware 0 e 1.
La riga SoftwareSerial bluetooth(8, 9); crea una porta seriale software chiamata bluetooth. In questa istruzione, il pin 8 funziona come RX, quindi riceve dati dal pin TX del modulo Bluetooth, mentre il pin 9 funziona come TX, quindi può inviare dati al pin RX del modulo Bluetooth.
La riga const int PIN_LED = 7; definisce il pin 7 come pin di output del LED. Il LED viene acceso o spento secondo il comando Bluetooth ricevuto da Arduino.
La variabile char command; memorizza il carattere ricevuto dal modulo Bluetooth. La variabile bool state = false; memorizza lo stato del LED. All’inizio, è false, quindi il LED parte spento.
Dentro setup(), la riga pinMode(PIN_LED, OUTPUT); configura il pin del LED come un output. Questo permette ad Arduino di inviare segnali HIGH o LOW al LED.
La riga bluetooth.begin(9600); avvia la comunicazione seriale Bluetooth a 9600 baud. Questa velocità deve corrispondere al baud rate del modulo Bluetooth.
La riga Serial.begin(9600); avvia la normale comunicazione seriale Arduino con il computer. In questo progetto, è usata principalmente per testare, perché il comando Bluetooth ricevuto viene anche stampato sul Monitor Seriale.
Dentro loop(), la condizione if (bluetooth.available()) controlla se un nuovo carattere è arrivato dal modulo Bluetooth. Se i dati sono disponibili, la riga command = bluetooth.read(); legge un carattere e lo memorizza nella variabile command.
La riga Serial.print(command); stampa il comando ricevuto sul Monitor Seriale. Questo è utile per verificare che Arduino stia davvero ricevendo i caratteri inviati attraverso Bluetooth.
La condizione if(command == '0') state = false; controlla se il comando ricevuto è il carattere 0. Se lo è, lo stato del LED diventa false, significando che il LED deve essere spento.
La condizione else if(command == '1') state = true; controlla se il comando ricevuto è il carattere 1. Se lo è, lo stato del LED diventa true, significando che il LED deve essere acceso.
La parte finale del loop applica lo stato salvato al LED. Se state è true, la riga digitalWrite(PIN_LED, HIGH); accende il LED. Altrimenti, digitalWrite(PIN_LED, LOW); lo spegne.
L’idea importante è che il LED non si accende solo per un momento. La variabile state memorizza l’ultimo comando valido. Dopo aver ricevuto '1', il LED resta acceso finché non viene ricevuto un comando '0'.
Nel complesso, il modulo Bluetooth funziona come un cavo seriale wireless. Il dispositivo esterno invia caratteri semplici, Arduino li legge, aggiorna lo stato del LED e controlla il pin di output di conseguenza.
Per l’hardware reale, collega il pin TX del modulo Bluetooth al pin 8 di Arduino, il pin RX del modulo Bluetooth al pin 9 di Arduino e collega GND insieme. Se il pin RX del modulo Bluetooth non è tollerante a 5V, usa un partitore di tensione o un level shifter tra Arduino TX e il pin RX del modulo.