Mini Alto Falante 0.5w 8Ohms
Descrição
Alto falante compacto e de excelente capacidade sonora. É comumente é utilizado em projetos com Arduino ou outras plataformas microcontroladas. O acionamento do alto falante é feito através de microcontrolador programado para fazer o envio de tons que geram o sinal sonoro.
Especificações:
Tensão de operação: 5 V
Potência: 0,5 W
Impedância: 8 Ohm
Tipo: passivo
Peso: 9 g
Dimensões: 40mm (Diâmetro) x 0,8mm (Altura)
Projeto(s) relacionado(s)
Cartaz interativo com sensor capacitivo
1) Primeira Versão
O projeto utiliza placa Arduino Mega , 1 resistor de 330 KΩ , 5 resistores de 1 MΩ , Módulo MP3 Mini DFPlayer , alto-falante 0,5w 8 ohms ou mais potente , tinta condutiva e biblioteca CapacitiveSensor.h para criar cinco (5) sensores capacitivos.
O resistor de 1 resistor de 330 KΩ é utilizado junto ao Módulo MP3 Mini DFPlayer .
Cada sensor capacitivo criado utiliza dois pinos digitais do arduino. O primeiro pino é chamado de Emissor e o segundo de Receptor. A função capacitiveSensor (biblioteca CapacitiveSensor.h ) alterna o pino Emissor para um novo estado e aguarda que o pino Receptor mude para o mesmo estado.
O circuito inclui 5 resistores de valor médio a alto (1 MΩ ) entre o pino Emissor e Receptor. O pino Receptor é o terminal do sensor. Um fio conectado a este pino com um pedaço de papel alumínio na extremidade ou tinta condutiva é um bom condutor. Pode ser acrescentado no sistema um capacitor de 100 pF no pino terra (GND) do pino Receptor, melhorando a estabilidade e a repetibilidade da corrente (capacitância).
Quando uma mudança de tensão ocorre no Receptor ao aproximarmos a mão do sensor, o corpo age como um condensador e modifica o valor da capacitância. Em outras palavras, a resistência no circuito é reduzida e a tensão é aumentada. Saiba mais em: https://playground.arduino.cc/Main/CapacitiveSensor
Considerações
// Cartaz interativo com sensor capacitivo - Versão 1
// Autor: André Silveira
// Data: 10/11/2019
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <CapacitiveSensor.h>
#include <DFRobotDFPlayerMini.h>
int volume = 20;
int musica = 0;
int segundos = 50;
// -- Declara valor da capacitância (maior que) quando os sensores são pressionados -- //
int capacitancia_sensor1 = 200;
int capacitancia_sensor2 = 200;
int capacitancia_sensor3 = 200;
int capacitancia_sensor4 = 200;
int capacitancia_sensor5 = 200;
String tecla_status = "play";
// --- Declara pinos Emissor e Receptor (Sender e Receiver) dos sensores --- //
CapacitiveSensor sensor1 = CapacitiveSensor(34,35);
CapacitiveSensor sensor2 = CapacitiveSensor(36,37);
CapacitiveSensor sensor3 = CapacitiveSensor(38,39);
CapacitiveSensor sensor4 = CapacitiveSensor(5,4);
CapacitiveSensor sensor5 = CapacitiveSensor(7,6);
// --- Declara objetos para DFPlayerMini --- //
SoftwareSerial mySoftwareSerial(10, 11); // Pinos RX, TX de comunicação serial
DFRobotDFPlayerMini myDFPlayer;
void setup() {
mySoftwareSerial.begin(9600);
Serial.begin(9600);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini"));
if (!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println(">> Nao inicializado!");
while(true){
delay(0);
}
}
Serial.println(">> Inicializado!");
// ---- Configure myDFPlayer - tempo leitura e volume (0 até 30) ---- //
myDFPlayer.setTimeOut(500);
myDFPlayer.volume(volume);
// -------- Autocalibragem dos sensores capacitivos ---------- //
sensor1.set_CS_AutocaL_Millis(0xFFFFFFFF);
sensor2.set_CS_AutocaL_Millis(0xFFFFFFFF);
sensor3.set_CS_AutocaL_Millis(0xFFFFFFFF);
sensor4.set_CS_AutocaL_Millis(0xFFFFFFFF);
sensor5.set_CS_AutocaL_Millis(0xFFFFFFFF);
// --- Intervalos de tempo para leitura dos sensores capacitivos --- //
sensor1.set_CS_Timeout_Millis(segundos);
sensor2.set_CS_Timeout_Millis(segundos);
sensor3.set_CS_Timeout_Millis(segundos);
sensor4.set_CS_Timeout_Millis(segundos);
sensor5.set_CS_Timeout_Millis(segundos);
}
void loop() {
// ----- Lê valor da capacitância de cada sensor ----- /
long start = millis();
long leitura1 = sensor1.capacitiveSensor(30);
long leitura2 = sensor2.capacitiveSensor(30);
long leitura3 = sensor3.capacitiveSensor(30);
long leitura4 = sensor4.capacitiveSensor(30);
long leitura5 = sensor5.capacitiveSensor(30);
Serial.print(" S1:"); Serial.print(leitura1);
Serial.print(" S2:"); Serial.print(leitura2);
Serial.print(" S3:"); Serial.print(leitura3);
Serial.print(" S4:"); Serial.print(leitura4);
Serial.println(" S5:"); Serial.print(leitura5);
// ----- Se dois sensores forem acionados ao mesmo tempo ----- /
if ((leitura1 > capacitancia_sensor1 and leitura2 > capacitancia_sensor2) or
(leitura1 > capacitancia_sensor1 and leitura3 > capacitancia_sensor3) or
(leitura2 > capacitancia_sensor2 and leitura3 > capacitancia_sensor3)) {
if (musica != 4) {
musica = Mostra_tela ("Alerta som ", 4, volume);
}
return;
}
// ----- Se três sensores forem acionados ao mesmo tempo ----- /
if ((leitura1 > capacitancia_sensor1 and leitura4 > capacitancia_sensor4) or
(leitura1 > capacitancia_sensor1 and leitura5 > capacitancia_sensor5) or
(leitura2 > capacitancia_sensor2 and leitura4 > capacitancia_sensor4) or
(leitura2 > capacitancia_sensor2 and leitura5 > capacitancia_sensor5) or
(leitura3 > capacitancia_sensor3 and leitura4 > capacitancia_sensor4) or
(leitura3 > capacitancia_sensor1 and leitura5 > capacitancia_sensor1) or
(leitura4 > capacitancia_sensor1 and leitura5 > capacitancia_sensor1)) {
if (musica != 5) {
musica = Mostra_tela ("Alerta som ", 5, volume);
}
return;
}
// ----- Se sensor 1 for acionado ----- /
if (leitura1 > capacitancia_sensor1 and musica != 1) {
musica = Mostra_tela ("Play som ", 1, volume);
return;
}
// ----- Se sensor 2 for acionado ----- /
if (leitura2 > capacitancia_sensor2 and musica != 2) {
musica = Mostra_tela ("Play som ", 2, volume);
return;
}
// ----- Se sensor 3 for acionado ----- /
if (leitura3 > capacitancia_sensor3) {
volume = volume_musica ("Volume ","true", volume);
return;
}
// ----- Se sensor 4 for acionado ----- /
if (leitura4 > capacitancia_sensor4) {
volume = volume_musica ("Volume ","false", volume);
return;
}
// ----- Se sensor 5 for acionado ----- /
if (leitura5 > capacitancia_sensor5 and tecla_status != "stop") {
Serial.println("Stop");
musica =0;
tecla_status = "stop";
myDFPlayer.stop();
return;
}
}
int Mostra_tela (String mensagem, int musica, int volume) {
tecla_status = "play";
Serial.print(mensagem);
Serial.println(musica);
myDFPlayer.play(musica);
return musica;
}
int volume_musica (String mensagem, int soma, int volume) {
if (soma == "true") {
volume = volume + 2;
if (volume > 30) {
volume = 30;
}
} else {
volume = volume - 2;
if (volume < 0) {
volume = 0;
}
}
Serial.print(mensagem);
Serial.println(volume);
myDFPlayer.volume(volume);
return volume;
}
Cartaz interativo: testes diversos (Montagem do circuito, player de música, alto falante, tinta condutiva, etc)
VIDEO
Cartaz Star Wars - instalação interativa com Arduino
VIDEO
2) Segunda versão
O projeto utiliza placa Arduino Nano , 1 resistor de 330 KΩ ,Módulo MP3 Mini DFPlayer , alto-falante 0,5w 8 ohms ou mais potente e tinta condutiva. O resistor de 1 resistor de 330 KΩ é utilizado junto ao Módulo MP3 Mini DFPlayer .
Considerações
// Cartaz interativo com sensor capacitivo - Versão 2
// Autor: André Silveira
// Data: 5/10/2021
#include "Arduino.h"
#include "Wire.h"
#include "SoftwareSerial.h"
#include "Adafruit_MPR121.h"
#include "DFRobotDFPlayerMini.h"
int tecla = 0;
int volume = 20;
int musica = 99;
int segundos = 100;
// --- Declara bibliotecas Adafruit_MPR121 e DFPlayerMini --- //
Adafruit_MPR121 cap = Adafruit_MPR121();
SoftwareSerial mySoftwareSerial(10, 11); // Pinos RX, TX de comunicação serial
DFRobotDFPlayerMini myDFPlayer;
void setup() {
mySoftwareSerial.begin(9600);
Serial.begin(9600);
Serial.println(">> Programa iniciado");
// ---- I2C 7-bit address 0x5A é padrão (pode ser setado para 0x5B, 0x5C or 0x5D) ---- //
if (!cap.begin(0x5A)) {
Serial.println("Sensor capacitivo >> Nao Encontrado!");
while (1);
}
Serial.println("Sensor capacitivo encontrado");
// ---- DFRobot DFPlayer Mini ---------- //
if (!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println("DFRobot DFPlayer Mini >> Nao inicializado!");
while(true){
delay(0);
}
}
Serial.println("DFRobot DFPlayer Mini >> Inicializado!");
myDFPlayer.setTimeOut(500); // tempo para leitura
myDFPlayer.volume(volume); // volume (0 até 50)
}
void loop() {
tecla = cap.touched();
for (uint8_t i=0; i<12; i++) {
if (tecla & _BV(i)) {
Serial.print("Tecla apertada: ");
Serial.println(i);
switch (i) {
case 2:
case 3: // Toca música
if (musica != i) {
Serial.print("Musica:");
Serial.println(i);
myDFPlayer.play(i);
musica = i;
}
break;
case 4: // Aumenta volume
Serial.print("Musica - Aumenta volume: ");
Serial.println(volume);
volume = volume + 4;
if (volume > 30) {
volume = 30;
}
myDFPlayer.volume(volume);
break;
case 1: // Baixa volume
Serial.print("Musica - Baixa volume: ");
Serial.println(volume);
volume = volume - 2;
if (volume < 0) {
volume = 0;
}
myDFPlayer.volume(volume);
break;
case 0: // Stop e Reset
Serial.println("Musica - Stop e Reset");
volume = 30;
myDFPlayer.stop();
myDFPlayer.volume(volume);
musica = 99;
break;
default:
Serial.print(i);
Serial.println("Nada");
break;
} // End switch
} // End if
} // End for
delay(segundos);
}