Nota

Ciao, benvenuto nella community SunFounder per appassionati di Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Accedi in anteprima agli annunci dei nuovi prodotti.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Giveaway Festivi: Partecipa a concorsi e promozioni durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi stesso!

Lezione 47: Semaforo controllato via Bluetooth

Questo progetto è pensato per controllare un semaforo (LED rosso, giallo, verde) tramite comunicazione Bluetooth. L’utente può inviare un carattere (‘R’, ‘Y’ o ‘G’) da un dispositivo Bluetooth. Quando Arduino riceve uno di questi caratteri, accende il LED corrispondente e spegne gli altri due.

Componenti Necessari

Per questo progetto sono necessari i seguenti componenti.

È sicuramente comodo acquistare l’intero kit. Ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

In alternativa, puoi acquistare i componenti singolarmente dai link qui sotto.

Introduzione al Componente

Link Acquisto

Arduino UNO R3 o R4

ACQUISTA

Breadboard

ACQUISTA

Modulo Semaforo

-

Modulo Bluetooth JDY-31

-

Collegamenti

../_images/Lesson_47_Bluetooth_traffic_light_uno_bb.png

Codice

Connessione all’app e al modulo Bluetooth

Possiamo usare un’app chiamata «Serial Bluetooth Terminal» per inviare messaggi dal modulo Bluetooth ad Arduino.

  1. Installa Serial Bluetooth Terminal

    Vai su Google Play per scaricare e installare Terminale Bluetooth Seriale .

  2. Connetti il Bluetooth

    Attiva il Bluetooth sul tuo smartphone.

    ../_images/09-app_1_shadow.png

    Vai nelle impostazioni Bluetooth e cerca nomi come JDY-31-SPP.

    ../_images/09-app_2_shadow.png

    Dopo averlo selezionato, accetta la richiesta di abbinamento. Se richiesto, inserisci il codice «1234».

    ../_images/09-app_3_shadow.png
  3. Comunica con il modulo Bluetooth

    Apri l’app Serial Bluetooth Terminal e connettiti a «JDY-31-SPP».

    ../_images/00-bluetooth_serial_4_shadow.png
  4. Invia comandi

    Usa l’app per inviare comandi via Bluetooth ad Arduino. Invia “R” per accendere il rosso, “Y” per il giallo e “G” per il verde.

    ../_images/16-R_shadow.png ../_images/16-Y_shadow.png ../_images/16-G_shadow.png

Analisi del Codice

  1. Inizializzazione e configurazione del Bluetooth

    // Impostazione della comunicazione con il modulo Bluetooth
    #include <SoftwareSerial.h>
    const int bluetoothTx = 3;
    const int bluetoothRx = 4;
    SoftwareSerial bleSerial(bluetoothTx, bluetoothRx);
    

    Iniziamo includendo la libreria SoftwareSerial, utile per la comunicazione Bluetooth. I pin TX e RX del modulo Bluetooth sono quindi definiti e associati ai pin 3 e 4 sull’Arduino. Infine, inizializziamo l’oggetto bleSerial per la comunicazione Bluetooth.

  2. Definizioni dei pin dei LED

    // Numeri dei pin per ciascun LED
    const int rledPin = 10;  //rosso
    const int yledPin = 11;  //giallo
    const int gledPin = 12;  //verde
    

    Qui, definiamo a quali pin dell’Arduino sono connessi i nostri LED. Il LED rosso è sul pin 10, il giallo sul 11 e il verde sul 12.

  3. Funzione setup()

    void setup() {
       pinMode(rledPin, OUTPUT);
       pinMode(yledPin, OUTPUT);
       pinMode(gledPin, OUTPUT);
    
       Serial.begin(9600);
       bleSerial.begin(9600);
    }
    

    Nella funzione setup(), impostiamo i pin dei LED come OUTPUT. Avviamo anche la comunicazione seriale sia per il modulo Bluetooth che per la seriale di default (collegata al computer) con un baud rate di 9600.

  4. Ciclo principale loop() per la comunicazione Bluetooth

    void loop() {
       while (bleSerial.available() > 0) {
          character = bleSerial.read();
          Serial.println(character);
    
          if (character == 'R') {
             toggleLights(rledPin);
          } else if (character == 'Y') {
             toggleLights(yledPin);
          } else if (character == 'G') {
             toggleLights(gledPin);
          }
       }
    }
    

    All’interno del nostro loop() principale, controlliamo continuamente se sono disponibili dati dal modulo Bluetooth. Se riceviamo dati, leggiamo il carattere e lo visualizziamo nel monitor seriale. A seconda del carattere ricevuto (R, Y, o G), attiviamo il rispettivo LED usando la funzione toggleLights().

  5. Funzione Toggle Lights

    void toggleLights(int targetLight) {
       digitalWrite(rledPin, LOW);
       digitalWrite(yledPin, LOW);
       digitalWrite(gledPin, LOW);
    
       digitalWrite(targetLight, HIGH);
    }
    

    Questa funzione, toggleLights(), spegne prima tutti i LED. Dopo aver verificato che siano tutti spenti, accende il LED target specificato. Questo garantisce che solo un LED sia acceso alla volta.