Nota

Ciao, benvenuto nella Community di Appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirsi a noi?

  • 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: Ottieni l’accesso anticipato a nuovi annunci di prodotti e anteprime.

  • Sconti speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e Giveaway: Partecipa a giveaway e promozioni festive.

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

7.2 Controllo LED RGB via Bluetooth

Questo progetto è un’estensione di un progetto precedente (7.1 Bluetooth), aggiungendo configurazioni per LED RGB e comandi personalizzati come «led_off», «red», «green», ecc. Questi comandi permettono di controllare il LED RGB inviando comandi da un dispositivo mobile utilizzando LightBlue.

Componenti necessari

In questo progetto, avremo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

ESP32 Starter Kit

320+

ESP32 Starter Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

ESP32 Scheda

ACQUISTA

Estensione Fotocamera ESP32

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED RGB

ACQUISTA

Passaggi Operativi

  1. Costruisci il circuito.

    ../../_images/rgb_pin.jpg

    Il LED RGB ha 4 pin: il pin lungo è il catodo comune, che di solito è collegato a GND; il pin a sinistra accanto al pin più lungo è Rosso; e i due pin a destra sono Verde e Blu.

    ../../_images/2.3_color_light_bb.png
  2. Apri il file 7.2_bluetooth_rgb_led.ino che si trova nella directory esp32-starter-kit-main\c\codes\7.2_bluetooth_rgb_led o copia il codice nell’IDE di Arduino.

  3. Per evitare conflitti di UUID, si consiglia di generare casualmente tre nuovi UUID utilizzando il Online UUID Generator fornito dal Bluetooth SIG, e di inserirli nelle seguenti righe di codice.

    Nota

    Se hai già generato tre nuovi UUID nel progetto 7.1 Bluetooth, puoi continuare a utilizzarli.

    #define SERVICE_UUID           "your_service_uuid_here"
    #define CHARACTERISTIC_UUID_RX "your_rx_characteristic_uuid_here"
    #define CHARACTERISTIC_UUID_TX "your_tx_characteristic_uuid_here"
    
    ../../_images/uuid_generate.png
  4. Seleziona la scheda e la porta corrette, quindi clicca sul pulsante Carica.

  5. Dopo che il codice è stato caricato con successo, attiva il Bluetooth sul tuo dispositivo mobile e apri l’app LightBlue.

    ../../_images/bluetooth_open.png
  6. Nella pagina Scan, trova ESP32-Bluetooth e clicca su CONNECT. Se non lo vedi, prova a ricaricare la pagina alcune volte. Quando appare «Connected to device!», la connessione Bluetooth è avvenuta con successo. Scorri verso il basso per vedere i tre UUID impostati nel codice.

    ../../_images/bluetooth_connect.png
  7. Tocca l’UUID Send, poi imposta il formato dati su «UTF-8 String». Ora puoi scrivere questi comandi: «led_off», «red», «green», «blue», «yellow» e «purple» per vedere se il LED RGB risponde a queste istruzioni.

    ../../_images/bluetooth_send_rgb.png

Come funziona?

Questo codice è un’estensione di un progetto precedente (7.1 Bluetooth), aggiungendo configurazioni per LED RGB e comandi personalizzati come «led_off», «red», «green», ecc. Questi comandi permettono di controllare il LED RGB inviando comandi da un dispositivo mobile utilizzando LightBlue.

Vediamo il codice passo dopo passo:

  • Aggiungi nuove variabili globali per i pin del LED RGB, i canali PWM, la frequenza e la risoluzione.

    ...
    
    // Definisci i pin del LED RGB
    const int redPin = 27;
    const int greenPin = 26;
    const int bluePin = 25;
    
    ...
    
  • All’interno della funzione setup(), i canali PWM vengono inizializzati con la frequenza e la risoluzione predefinite. I pin del LED RGB vengono poi collegati ai rispettivi canali PWM.

    void setup() {
        ...
    
        ledcAttach(redPin, freq, resolution);
        ledcAttach(greenPin, freq, resolution);
        ledcAttach(bluePin, freq, resolution);
    }
    
  • Modifica il metodo onWrite nella classe MyCharacteristicCallbacks. Questa funzione ascolta i dati provenienti dalla connessione Bluetooth. In base alla stringa ricevuta (come "led_off", "red", "green", ecc.), controlla il LED RGB.

    // Definisci i callback della caratteristica BLE
    class MyCharacteristicCallbacks : public BLECharacteristicCallbacks {
        void onWrite(BLECharacteristic *pCharacteristic) {
            std::string value = std::string(pCharacteristic->getValue().c_str());
            if (value == "led_off") {
                setColor(0, 0, 0); // spegne il LED RGB
                Serial.println("RGB LED spento");
            } else if (value == "red") {
                setColor(255, 0, 0); // Rosso
                Serial.println("red");
            }
            else if (value == "green") {
                setColor(0, 255, 0); // Verde
                Serial.println("green");
            }
            else if (value == "blue") {
                setColor(0, 0, 255); // Blu
                Serial.println("blue");
            }
            else if (value == "yellow") {
                setColor(255, 150, 0); // Giallo
                Serial.println("yellow");
            }
            else if (value == "purple") {
                setColor(80, 0, 80); // Viola
                Serial.println("purple");
            }
        }
    };
    
  • Infine, viene aggiunta una funzione per impostare il colore del LED RGB.

    void setColor(int red, int green, int blue) {
        // Per i LED RGB a catodo comune, usa 255 meno il valore del colore
        ledcWrite(redPin, red);
        ledcWrite(greenPin, green);
        ledcWrite(bluePin, blue);
    }
    

In sintesi, questo script abilita un modello di interazione di controllo remoto, dove l’ESP32 opera come server Bluetooth Low Energy (BLE).

Il client BLE connesso (come uno smartphone) può inviare comandi sotto forma di stringhe per cambiare il colore di un LED RGB. L’ESP32 fornisce anche un feedback al client inviando indietro la stringa ricevuta, permettendo al client di sapere quale operazione è stata eseguita.