Community project
Electronic Sound Glove
The Electronic Sound Glove is a wearable musical instrument that turns finger presses into sound. Eight push buttons sewn into a glove each trigger a different note from the C major scale, played through a piezo buzzer. Press any button to hear its corresponding tone—hold it down to sustain the note.
This guide provides a complete parts list, wiring diagram, and step-by-step assembly instructions for building the glove. The included firmware runs on an ESP32 microcontroller and handles all the button logic and tone generation, so the glove is ready to play music as soon as assembly is complete.
Wiring diagram
Gather all the parts
Assemble it in 4 steps
1. Separe as peças da luva
Prenda o ESP32 em uma caixa leve no pulso ou no dorso da mão. Posicione os oito botões onde seus dedos possam alcançá-los e deixe fios flexíveis com uma pequena folga perto das articulações, para a mão continuar dobrando sem puxar as conexões.
- Você pode identificar os botões na ordem das notas com pequenas etiquetas: Do, Re, Mi, Fa, Sol, La, Si e Do agudo.
- Deixe o buzzer voltado para fora da luva para o som não ficar abafado.
- Não deixe placa, pontas metálicas ou fios desencapados encostarem na pele; isole cada união para evitar desconforto e curtos.
2. Ligue os oito botões
Em cada botão, use duas pernas que ficam em lados opostos do botão. Ligue um terminal de todos os botões ao GND do ESP32: botão 1 GND → GND (terra), botão 2 GND → GND (terra), botão 3 GND → GND (terra), botão 4 GND → GND (terra), botão 5 GND → GND (terra), botão 6 GND → GND (terra), botão 7 GND → GND (terra), botão 8 GND → GND (terra). Ligue o outro terminal: botão 1 SIGNAL → GPIO13 (sinal, Do), botão 2 SIGNAL → GPIO14 (sinal, Re), botão 3 SIGNAL → GPIO25 (sinal, Mi), botão 4 SIGNAL → GPIO26 (sinal, Fa), botão 5 SIGNAL → GPIO16 (sinal, Sol), botão 6 SIGNAL → GPIO17 (sinal, La), botão 7 SIGNAL → GPIO18 (sinal, Si), botão 8 SIGNAL → GPIO19 (sinal, Do agudo).
- Não são necessários resistores extras: o programa mantém cada entrada estável até o botão ser apertado.
- Você pode juntar os oito fios de GND em uma mesma linha de terra e levar essa linha a qualquer pino GND do ESP32.
- Se os dois fios forem ligados em duas pernas do mesmo lado de um botão de quatro pernas, o botão não funcionará; escolha sempre uma perna de cada lado.
3. Ligue o emissor de som
Ligue uma perna do buzzer piezo ao GND do ESP32 (terra) e a outra perna ao GPIO27 (sinal). O piezo passivo não tem lado positivo ou negativo fixo, portanto essas duas pernas podem ser trocadas.
- Use um buzzer piezo passivo, pois ele consegue tocar notas diferentes.
- Se o som estiver baixo, faça pequenos furos na caixa em frente ao buzzer.
- Não ligue um alto-falante grande diretamente ao GPIO27: ele pode puxar mais energia do que o pino suporta e danificar a placa.
4. Teste antes de vestir
Antes de prender tudo de forma definitiva, confira se não há cobre exposto encostando em outro fio. Conecte o ESP32 por USB e aperte os botões um de cada vez: eles tocarão Do, Re, Mi, Fa, Sol, La, Si e Do agudo enquanto você os mantiver apertados.
- Se dois botões forem apertados juntos, a nota do botão de menor número terá prioridade.
- Depois do teste, prenda os fios ao tecido para que o movimento da mão não os force.
- Não mexa nas conexões com o ESP32 ligado se houver risco de dois fios se tocarem; um curto pode reiniciar ou danificar a placa.
Review all connections
1. Connections between "button_1" and "ESP32"
2. Connections between "button_2" and "ESP32"
3. Connections between "button_3" and "ESP32"
4. Connections between "button_4" and "ESP32"
5. Connections between "piezo_1" and "ESP32"
6. Connections between "button_5" and "ESP32"
7. Connections between "button_6" and "ESP32"
8. Connections between "button_7" and "ESP32"
9. Connections between "button_8" and "ESP32"
Deploy the firmware
#include <Arduino.h>
// Luva musical: cada botao toca uma nota enquanto permanece pressionado.
// Forward declarations
void setPlayedNote(int noteIndex);
const int BUTTON_1_PIN = 13;
const int BUTTON_2_PIN = 14;
const int BUTTON_3_PIN = 25;
const int BUTTON_4_PIN = 26;
const int BUTTON_5_PIN = 16;
const int BUTTON_6_PIN = 17;
const int BUTTON_7_PIN = 18;
const int BUTTON_8_PIN = 19;
const int PIEZO_PIN = 27;
// Escala de Do maior: Do, Re, Mi, Fa, Sol, La, Si e Do agudo.
const int notes[] = {262, 294, 330, 349, 392, 440, 494, 523};
const int buttonPins[] = {
BUTTON_1_PIN, BUTTON_2_PIN, BUTTON_3_PIN, BUTTON_4_PIN,
BUTTON_5_PIN, BUTTON_6_PIN, BUTTON_7_PIN, BUTTON_8_PIN
};
const int BUTTON_COUNT = 8;
int playingNote = -1;
void setPlayedNote(int noteIndex) {
if (noteIndex == playingNote) {
return;
}
if (noteIndex < 0) {
noTone(PIEZO_PIN);
} else {
tone(PIEZO_PIN, notes[noteIndex]);
}
playingNote = noteIndex;
}
void setup() {
for (int i = 0; i < BUTTON_COUNT; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
pinMode(PIEZO_PIN, OUTPUT);
noTone(PIEZO_PIN);
}
void loop() {
int requestedNote = -1;
// O primeiro botao encontrado tem prioridade se dois forem apertados juntos.
for (int i = 0; i < BUTTON_COUNT; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
requestedNote = i;
break;
}
}
setPlayedNote(requestedNote);
delay(5);
}Remix this project
Make it yours in one click
Open a full copy of this project in your own Schematik workspace — diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.




