Proyecto despertador personalizado con KY022, módulo SD, módulo reloj DS3231 y módulo amplificador LM386
Buenas,
Para este proyecto haremos uso de los siguientes componentes
- Módulo reloj DS3231
- módulo de tarjeta SD + SD 8 GB
- Altavoz 3 W 4 Ohms o si es posible de 1 W 8 Ohms
- Arduino UNO
- Transitor 2N2222 o similar, amplificador de clase B con S8050 y S8850 o Módulo amplificador de Audio LM386
- Sensor receptor KY-022
- Mando a distancia sin uso
Proyecto
La idea del proyecto es crear un despertador personalizado enfocado a los más pequeños de la casa que permita un "agradable e instructivo" despertar mediante locuciones que indiquen el día de la semana, la hora y alguna canción o sonido agradable. Se podrá alterar el flujo de operación normal, bien desconectando de la corriente o mediante la pulsación de varios botones (cada uno con una función) para poder configurar siguiente alarma, desactivar, consultar estado, aumentar volumen, disminuir volumen del altavoz, etc de un mando a distancia y el módulo receptor de infrarrojos KY-022.
Diagrama de conexión
Se nos ocurre el siguiente diagrama inicial de conexión donde mostramos todos los componentes
![]() |
Diagrama de conexión prototipo en con transitor S8050 |
Esta primera aproximación nos permitió comprobar las limitaciones del uso del transitor y la estabilidad de la solución para conseguir un aumento de la potencia del altavoz en nuestro caso de 4 ohmios y 3 W sin incrementar la impedancia o el nivel soportable por el altavoz y en general del sistema. Se detectó que era necesario una alimentación externa a través del puerto DC Barrell Jack que nos diera un voltaje superior a los 5V para poder dar "servicio" a los tres/cuatro módulos que se van a utilizar: tarjeta SD, sensor infrarrojo y reloj junto con display. Se hizo una primera prueba con un transistor NPN S8050 cuya potencia máxima según el datasheet es de 2W.
De hecho con una resistencia de 1K en la base del transistor ya es necesario el uso de una tensión que supere los 5V. Tampoco se puede aumentar el volumen por encima de 4 niveles con la librería TMRpcm ya que se exige mayor potencia al altavoz de 3W y hace inestable la solución siendo necesario reiniciar el sistema. Si se opta por la alimentación USB (5V), para este proyecto y esta solución (Altavoz de 3W, transistor de 2W) no se debe subir el volumen por encima de 3 niveles. Tampoco dispongo en el momento de redactar esta entrada de resistencias de 100K que me permitirían comprobar esta solución dada en una de las referencias indicadas al final de este artículo, teniendo en cuenta que no dispongo de un altavoz de 8 ohmios si no de 4.
Después de hacer varias pruebas con varios transistores y leyendo información, llegamos a la conclusión de que no parece posible con un speaker de 4 ohm y 3 W como el que se muestra en la imagen
![]() |
Detalle del altavoz básico que tenemos |
llegar a amplificar la señal más allá del limite establecido, por muchos transistores que usemos. Quizás se podría trabajar en agregar un armazón para aumentar la resonancia del altavoz.
![]() |
Diagrama de conexión transitor 2N2222 |
Realizamos también la prueba con un circuito que implementa un amplificador de clase B con dos transistores complementarios PNP 8550 y NPN 8050 "en cascada" tal y como se muestra en el siguiente diagrama
![]() |
Diagrama amplificador de clase B (faltan los condensadores) |
Con ello conseguimos incrementar algo más la potencia, pero quizás no lo suficiente.
Por ello decidimos adquirir un módulo LM386 que probaremos para amplificar de una manera más segura la señal de nuestro pequeño altavoz.
Para simplificar el número de conexiones podemos utilizar una placa de expansión SENSOR SHIELD V5 que nos permitirá conectar casi todos los módulos directamente sobre la placa, ahorrando cables y espacio.
![]() |
Detalle de las conexiones de la SENSOR SHIELD V5 |
Código
#include <SD.h>
#include <SPI.h>
#include <TMRpcm.h>
#define IRSENSOR 7
#define Boton_1 0xBF828CD5
#define SSpin 10
//Se declara un objeto del tipo de la librería
TMRpcm tmrpcm;
IRrecv irrecv(IRSENSOR);
decode_results codigo; //instancia
void setup() {
char *file;
// put your setup code here, to run once:
Serial.begin(9600);
irrecv.enableIRIn();//se inicializa la recepción de datos desde el módulo
iniciarSD();
//se define el pin del altavoz
tmrpcm.speakerPin=9;
tmrpcm.setVolume(4);
file ="2.wav";
if( !tmrpcm.isPlaying() )
{Serial.println(F("Se reproduce la música"));
tmrpcm.play(file);
}
}
void loop() {
char *file;
// put your main code here, to run repeatedly:
if(irrecv.decode(&codigo)){
Serial.println(codigo.value,HEX);
if(codigo.value == Boton_1){
Serial.println("Se ha pulsado botón 1");
if( !tmrpcm.isPlaying() )
{
file ="2.wav";
Serial.println(F("Se reproduce la música"));
tmrpcm.play(file);
}
}
irrecv.resume(); //esta listo para recibir nuevos datos
}
delay(100);
}
void iniciarSD()
{
Serial.print(F("Iniciando SD ..."));
if (!SD.begin(SSpin))
{
Serial.println(F("Error al iniciar"));
return;
}
Serial.println(F("Iniciado correctamente"));
}
Tras las pruebas realizadas, el uso del módulo amplificador LM386 ha mejorado sustancialmente la potencia y calidad del audio del pequeño altavoz.
Referencias
- https://www.electricrcaircraftguy.com/2015/06/arduino-quick-tip-io-pin-overvoltage-protection-w-single-resistor.html
- https://forum.arduino.cc/index.php?topic=171105.0
- https://quartzcomponents.com/blogs/electronics-projects/arduino-music-player-with-amplify-audio-using-lm386
- https://www.youtube.com/watch?v=vE_bQivEVuE&list=PLuzS0jdNRVvocxP2rQjT0EL0mqcoB1JLV
- https://playground.arduino.cc/Code/DateTime/
- https://protosupplies.com/product/sensor-shield-v5-0/
- https://spanish.alibaba.com/product-detail/lm386-200x-gain-audio-amplifier-module-50043750040.html
- https://www.hotmcu.com/lm386-audio-amplifier-module-p-150.html