Nota

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

Perché unirti 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 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!

3.2 Tono Personalizzato

Abbiamo utilizzato il buzzer attivo nel progetto precedente, questa volta useremo un buzzer passivo.

Come il buzzer attivo, anche il buzzer passivo utilizza il fenomeno dell’induzione elettromagnetica per funzionare. La differenza è che un buzzer passivo non ha una sorgente oscillante, quindi non emette suoni se vengono utilizzati segnali DC. Ma questo permette al buzzer passivo di regolare la propria frequenza di oscillazione e può emettere diverse note come «doh, re, mi, fa, sol, la, ti».

Facciamo emettere una melodia al buzzer passivo!

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

Cicalino (Buzzer)

-

Transistor

ACQUISTA

Pin Disponibili

Ecco un elenco dei pin disponibili sulla scheda ESP32 per questo progetto.

Pin Disponibili

IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

Schema

../../_images/circuit_3.1_buzzer.png

Quando l’uscita di IO14 è alta, dopo la resistenza di limitazione della corrente da 1K (per proteggere il transistor), il transistor S8050 (NPN) condurrà, permettendo così al buzzer di emettere un suono.

Il ruolo del transistor S8050 (NPN) è di amplificare la corrente e rendere il suono del buzzer più forte. Infatti, puoi anche collegare direttamente il buzzer a IO14, ma noterai che il suono del buzzer sarà più debole.

Cablatura

Nel kit sono inclusi due tipi di buzzer. Dobbiamo utilizzare il buzzer passivo. Girali e noterai che il PCB esposto è quello che vogliamo usare.

../../_images/buzzer.png

Il buzzer necessita di un transistor per funzionare, qui utilizziamo l’S8050 (Transistor NPN).

../../_images/3.1_buzzer_bb.png

Codice

Nota

  • Apri il file 3.2_custom_tone.ino nel percorso esp32-starter-kit-main\c\codes\3.2_custom_tone.

  • Dopo aver selezionato la scheda (ESP32 Dev Module) e la porta appropriata, fai clic sul pulsante Upload.

  • Vedi sempre «COMxx sconosciuto»?

Dopo che il codice è stato caricato con successo, sentirai il buzzer passivo suonare una sequenza di 7 note musicali.

Come funziona?

  1. Definisci costanti per il pin del buzzer e la risoluzione PWM.

    const int buzzerPin = 14; //pin del buzzer
    const int resolution = 8;
    
  2. Definisci un array contenente le frequenze delle 7 note musicali in Hz.

    int frequencies[] = {262, 294, 330, 349, 392, 440, 494};
    
  3. Crea una funzione per suonare una data frequenza sul buzzer per una durata specificata.

    void playFrequency(int frequency, int duration) {
        ledcWriteTone(buzzerPin, frequency); // Avvia la tonalità
        delay(duration); // Attendi per la durata specificata
        ledcWriteTone(buzzerPin, 0); // Ferma il buzzer
    }
    
    • uint32_t ledcWriteTone(uint8_t pin, uint32_t freq);: Questa funzione è utilizzata per impostare il pin a un tono PWM del 50% sulla frequenza selezionata.

      • pin seleziona il pin LEDC.

      • freq seleziona la frequenza del segnale pwm.

    Questa funzione restituirà la frequency impostata per il canale. Se viene restituito 0, si è verificato un errore e il canale ledc non è stato configurato.

  4. Configura il canale PWM e collega il pin del buzzer nella funzione setup().

    void setup() {
        ledcAttach(buzzerPin, 2000, resolution); // Configura il pin PWM
    }
    
    • bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);: Questa funzione è utilizzata per configurare il pin LEDC con la frequenza e la risoluzione desiderate. Il canale LEDC sarà selezionato automaticamente.

      • pin seleziona il pin GPIO.

      • freq seleziona la frequenza del pwm.

      • resolution_bits seleziona la risoluzione per il canale ledc. L’intervallo è 1-14 bit (1-20 bit per ESP32).

  5. Nella funzione loop(), suona la sequenza delle 7 note con una breve pausa tra ciascuna nota e una pausa di 1 secondo prima di ripetere la sequenza.

    void loop() {
        for (int i = 0; i < 7; i++) {
            playFrequency(frequencies[i], 300); // Suona ogni nota per 300ms
            delay(50); // Aggiungi una breve pausa tra le note
        }
        delay(1000); // Attendi 1 secondo prima di ripetere la sequenza
    }