Nota
Ciao, benvenuto nella Community di 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é unirti?
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 agli annunci di nuovi prodotti e anteprime speciali.
Sconti Speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.
Promozioni e Omaggi Festivi: Partecipa a omaggi e promozioni festive.
👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi stesso!
6.1 Pianoforte di Frutta¶
Hai mai desiderato suonare il pianoforte ma non potevi permettertelo? O forse vuoi solo divertirti a creare un pianoforte di frutta fai-da-te? Bene, questo progetto fa per te!
Con solo alcuni sensori tattili sulla scheda ESP32, ora puoi suonare i tuoi brani preferiti e goderti l’esperienza di suonare il pianoforte senza spendere una fortuna.
Componenti Necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un intero kit, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
Kit di Partenza ESP32 |
320+ |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK DI ACQUISTO |
|---|---|
Informazioni sui Pin Touch
Il microcontrollore ESP32 dispone di funzionalità touch integrata, che ti consente di utilizzare alcuni pin della scheda come ingressi sensibili al tocco. Il sensore touch funziona misurando le variazioni di capacità sui pin touch, causate dalle proprietà elettriche del corpo umano.
Ecco alcune caratteristiche principali del sensore touch sull’ESP32:
Numero di pin touch
L’ESP32 ha fino a 10 pin touch, a seconda della scheda specifica. I pin touch sono generalmente etichettati con una «T» seguita da un numero.
GPIO4: TOUCH0
GPIO0:TOUCH1
GPIO2: TOUCH2
GPIO15: TOUCH3
GPIO13: TOUCH4
GPIO12: TOUCH5
GPIO14: TOUCH6
GPIO27: TOUCH7
GPIO33: TOUCH8
GPIO32: TOUCH9
Nota
I pin GPIO0 e GPIO2 sono utilizzati rispettivamente per il bootstrapping e il flashing del firmware sull’ESP32. Questi pin sono anche collegati al LED e al pulsante integrati. Pertanto, non è generalmente consigliato utilizzare questi pin per altri scopi, poiché potrebbe interferire con il normale funzionamento della scheda.
Sensibilità
Il sensore touch sull’ESP32 è molto sensibile e può rilevare anche piccoli cambiamenti di capacità. La sensibilità può essere regolata tramite impostazioni software.
Protezione ESD
I pin touch sull’ESP32 hanno una protezione ESD (Electrostatic Discharge) integrata, che aiuta a prevenire danni alla scheda dovuti all’elettricità statica.
Multitouch
Il sensore touch sull’ESP32 supporta il multitouch, il che significa che puoi rilevare più eventi di tocco contemporaneamente.
Schema Elettrico
L’idea alla base di questo progetto è utilizzare i sensori touch per rilevare quando un utente tocca un pin specifico. Ogni pin touch è associato a una nota specifica e, quando l’utente tocca un pin, la nota corrispondente viene riprodotta sul buzzer passivo. Il risultato è un modo semplice ed economico per godersi l’esperienza di suonare il pianoforte.
Cablaggio
In questo progetto, è necessario rimuovere l’ESP32 scheda dalla scheda di espansione e inserirlo nella breadboard. Questo perché alcuni pin sulla scheda di espansione sono collegati a resistori, il che influirà sulla capacità dei pin.
Codice
Nota
Apri il file
6.1_fruit_piano.pysituato nel percorsoesp32-starter-kit-main\micropython\codes, oppure copia e incolla il codice in Thonny. Poi, clicca su «Esegui Script Corrente» o premi F5 per eseguirlo.Assicurati di selezionare l’interprete «MicroPython (ESP32).COMxx» nell’angolo in basso a destra.
from machine import Pin, PWM, TouchPad
import time
# Definisci i pin touch e le loro note corrispondenti
touch_pins = [4, 15, 13, 12, 14, 27, 33, 32] # Usa pin validi con capacità touch
notes = [262, 294, 330, 349, 392, 440, 494, 523]
# Inizializza i sensori touch
touch_sensors = [TouchPad(Pin(pin)) for pin in touch_pins]
# Inizializza il buzzer
buzzer = PWM(Pin(25), duty=0)
# Funzione per riprodurre un tono
def play_tone(frequency, duration):
buzzer.freq(frequency)
buzzer.duty(512)
time.sleep_ms(duration)
buzzer.duty(0)
touch_threshold = 200
# Loop principale per controllare gli input touch e riprodurre la nota corrispondente
while True:
for i, touch_sensor in enumerate(touch_sensors):
value = touch_sensor.read()
print(i,value)
if value < touch_threshold:
play_tone(notes[i], 100)
time.sleep_ms(50)
time.sleep(0.01)
Puoi collegare frutti a questi pin ESP32: 4, 15, 13, 12, 14, 27, 33, 32.
Quando lo script è in esecuzione, toccando questi frutti verranno riprodotte le note C, D, E, F, G, A, B e C5.
Nota
Touch_threshold deve essere regolato in base alla conduttività dei diversi frutti.
Puoi eseguire prima lo script per vedere i valori stampati dalla shell.
0 884
1 801
2 856
3 964
4 991
5 989
6 1072
7 1058
Dopo aver toccato i frutti sui pin 12, 14 e 27, i valori stampati sono i seguenti. Pertanto, ho impostato touch_threshold a 200, il che significa che quando viene rilevato un valore inferiore a 200, si considera che sia stato toccato, e il buzzer emetterà note diverse.
0 882
1 810
2 799
3 109
4 122
5 156
6 1068
7 1055