Divertido dispensador de caramelos o lo que se tercie


A veces para hacer realidad ideas , actualmente no hace falta grandes desarrollos o un despliegue de recursos desorbitado, porque como vamos a ver, realizar un dispensador de caramelos , una hucha o incluso un alimentador para animales puede ser realmente casi una tarea relativamente sencilla.

En Internet, se pueden ver dispensadores de caramelos con un motor lineal y piezas de la impresora 3D. En muchas paginas también se muestra una colección de chatarra con viejas unidades de CD/DVD donde tanto el cajón como el cabezal de lectura se mueven de esta manera. Así que diseccionar una unidad antigua puede ser emocionante, pero al final no parece adecuado para los nuevos tiempos, por lo que la alternativa es un servomotor.

En efecto para llevar a cabo el nuevo proyecto con tecnología actual , todo lo que necesita es un microcontrolador, LED y botones, así como un potente servomotor, además de algunos retoques y muchas dosis de creatividad.

Hardware

1Microcontrolador Uno
1Prototyping Shield, alternativamente Mini Breadboard
2RGB LEDs
1Servo de engranajes metálicos MG90S, MG995, MG996R
1Botón (aquí botón arcade con LED)
Optar.Zumbador activo (zumbador)
Cable de puente y fuente de alimentación: 4 pilas AA
aprox. 1 mCanal de cables 60x40mm de la ferretería, cinta adhesiva

En primer lugar, aquí está el componente más importante, el

Dispensador de caramelos

Quizas la tarea mas compleja es la caja donde ira el dispensador de caramelos que queremos qeu se pueda abrir o cerrar automaticamente

El dispensador de caramelos se puede realizar con un canal de cables 60×40 mm y el servobrazo extendido con tubo retráctil unido al baston del servo.

Desafortunadamente, no está en la gama AZ-Delivery el botón iluminado, ya que se usa en las consolas arcade. Por supuesto, también puedes usar otros botones.

Li dea es sencilla: los niños presionan la nariz roja de una cara de payaso ligeramente espeluznante, los ojos rojos se vuelven verdes, después de 2,5 segundos los ojos parpadean dos veces y el servomotor gira 90° para empujar un pequeño paquete de dulces.

Se puede pintar el cuadro, imprimirlo o pegarlo como un patchwork.

Toda la configuración no está pensada para durar para siempre, por lo que los componentes electrónicos y las baterías están en una caja de cartón.

Se utilizan LEDs RGB con un cátodo común. Este tiene la pata más larga del LED RGB, la pata única de un lado es para el componente rojo, las dos patas del otro lado son para el verde y el azul.

Se utilizan los pines del microcontrolador Arduino usando el GPIO 3 para el rojo, el GPIO 4 para GND, el GPIO 5 para el verde y el GPIO 6 para el azul, en primer lugar para poder atenuar opcionalmente los LED (3, 5 y 6 tienen PWM) y en segundo lugar para activar tanto el guiño como el zumbador opcional ajustando brevemente el GPIO 4 a HIGH. 

Se conectan los dos «ojos» (LED RGB) en paralelo. Opcionalmente, se podrían controlar individualmente usando un pin adicional del GPIO .

Todo el conjunto cabe en una caja de cartón que podemos cerrar para que no se vea el mecanismo. En la imagen , a la derecha vemos el aspecto del Arduino Uno con Escudo de Prototipos ( para el buzzer ). En la parte de la derecha vemos los 2 LED RGB y el botón iluminado (igual que los usados en consolas de juegos)

Esquemático

El circuito como vemos en la imagen es bastante simple usando sólo pines digitales :

  • El GPIO 8 lo conectamos al pulsador ( y el otro a masa)
  • El GPIO 3 lo conectamos al pin rojo de cada led RGB.
  • El GPIO 4 lo conectamos a la masa de cada led
  • El GPIO 5 lo conectamos al pin verde de cada led RGB.
  • El GPIO 9 lo conectamos al led interno del pulsador
  • El GPIO 10 conectamos al pin de datos del servo ( también necesitará 5v DC para los otros dos terminales)
  • El GPIO 5 también lo conectamos al zumbador.

Este es el aspecto del conjunto al que ha añadido la alimentación consistente en 4 pilas AA que nos dan una tensión final de unos 6 Voltios.

Código Arduino

El código controla un rostro de payaso con LEDs RGB como ojos y un botón grande con un LED como nariz. El comportamiento es el siguiente:

  1. Operación normal: Los ojos (LEDs) están en rojo y el botón tiene un LED rojo encendido.
  2. Cuando se presiona el botón:
    • Los ojos se vuelven verdes y el LED del botón se apaga durante 6 segundos.
    • Después de 2.5 segundos, los ojos verdes parpadean y suena un zumbador dos veces.
    • Un servo se activa para empujar dulces.

Explicación del código:


Inclusión de la librería Servo:

#include <Servo.h>
Servo myservo;  // Crear objeto servo para controlar un servo
int pos = 0;    // Variable para almacenar la posición del servo


Definición de pines:

const int buttonPin = 8; // Pin del botón
const int redledPin = 3; // Pin del LED rojo
const int gndledPin = 4; // Pin de tierra común para LEDs
const int greenledPin = 5; // Pin del LED verde
const int blueledPin = 6; // Pin del LED azul
const int ledPin = 9; // Pin del LED en el botón


Variables:

int buttonState = 0; // Variable para leer el estado del botón


Configuración inicial:

void setup() {
 pinMode(redledPin, OUTPUT);
 pinMode(gndledPin, OUTPUT);
 digitalWrite(gndledPin, LOW);
 pinMode(greenledPin, OUTPUT);
 pinMode(blueledPin, OUTPUT);
 pinMode(ledPin, OUTPUT);
 pinMode(buttonPin, INPUT_PULLUP);
 myservo.attach(10); // Conectar el servo al pin 10
 myservo.write(130);
 delay(500);
}


Función para mover el servo:

void servoturn() {
 for (pos = 130; pos >= 20; pos -= 1)
 {myservo.write(pos);
  delay(10);
 }
 for (pos = 20; pos <= 130; pos += 1) 
  { myservo.write(pos);
  delay(10); 
  }
}


Bucle principal:

void loop() {
 buttonState = digitalRead(buttonPin);
 if (buttonState == LOW) {
  digitalWrite(redledPin, LOW);
  digitalWrite(ledPin, LOW);
  digitalWrite(greenledPin, HIGH);
  delay(2500);
  digitalWrite(gndledPin, HIGH);
  delay(250);
  digitalWrite(gndledPin, LOW);
  delay(250);
  digitalWrite(gndledPin, HIGH);
  delay(250);
  digitalWrite(gndledPin, LOW);
  servoturn();
  delay(2500);
 } else {
  digitalWrite(greenledPin, LOW);
  digitalWrite(ledPin, HIGH);
  digitalWrite(redledPin, HIGH);
 }
}

Por cierto , en la secuencia descrita en el código, el zumbador se activa después de que los ojos (LEDs verdes) han estado encendidos durante 2.5 segundos. Aquí está el detalle:

  1. Después de 2.5 segundos de que los ojos se vuelven verdes, el zumbador suena brevemente dos veces.
  2. Esto se logra mediante el parpadeo del LED común a tierra (gndledPin), que simula el sonido del zumbador.

El código para esto es:

delay(2500);  // Espera 2.5 segundos
digitalWrite(gndledPin, HIGH);  // Activa el zumbador (simulado)
delay(250);  // Espera 0.25 segundos
digitalWrite(gndledPin, LOW);  // Desactiva el zumbador
delay(250);  // Espera 0.25 segundos
digitalWrite(gndledPin, HIGH);  // Activa el zumbador nuevamente
delay(250);  // Espera 0.25 segundos
digitalWrite(gndledPin, LOW);  // Desactiva el zumbador

Este parpadeo del LED común a tierra (gndledPin) simula el sonido del zumbador, creando un efecto de sonido breve dos veces.

Funcionamiento general

  • Estado normal: Los ojos (LEDs) están en rojo y el LED del botón está encendido.
  • Al presionar el botón:
    1. Los ojos se vuelven verdes y el LED del botón se apaga.
    2. Después de 2.5 segundos, los ojos verdes parpadean y el zumbador suena brevemente dos veces.
    3. El servo motor se activa para empujar dulces.

RESUMEN Y CODIGO COMPLETO

En resumen, el código controla LEDs y un servo para crear un efecto de cara de payaso interactiva para Halloween o lo que se quiera.

En las siguientes líneas podemos ver el código completo Arduino para probar el montaje anterior.

<Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position

// constants won’t change. They’re used here to set pin numbers:
const int buttonPin = 8;      // the number of the pushbutton pin
const int redledPin =  3;     // the number of the red LED pin
const int gndledPin =  4;     // the number of the common ground LED pin
const int greenledPin =  5;   // the number of the green LED pin
const int blueledPin =  6;    // the number of the blue LED pin
const int ledPin =  9;       // the number of the LED pin in button

// variables will change:
int buttonState = 0;          // variable for reading the pushbutton status

void setup() {
 // initialize the LED pin as an output:
 pinMode(redledPin, OUTPUT);
 pinMode(gndledPin, OUTPUT);
 digitalWrite(gndledPin, LOW);    
 pinMode(greenledPin, OUTPUT);
 pinMode(blueledPin, OUTPUT);
 pinMode(ledPin, OUTPUT);  
 // initialize the pushbutton pin as an input:
 pinMode(buttonPin, INPUT_PULLUP);
 myservo.attach(10); // attaches the servo on Pin 10 to the servo object
 myservo.write(130);
 delay(500);  
}  // end setup

void servoturn()   {    // adjust angles acc. to your setup
   for (pos = 130; pos >= 20; pos -= 1) {
   // goes from 120 degrees to 20 degrees
   // in steps of 1 degree
   Serial.println(pos);
   myservo.write(pos);
   delay(10);
   }
 for (pos = 20; pos <= 130; pos += 1) {
   // goes from 20 degrees to 120 degrees
   Serial.println(pos);  
   myservo.write(pos);
   delay(10);
   }
}  // end servoturn

void loop() {
 // read the state of the pushbutton value:
 buttonState = digitalRead(buttonPin);
 // check if the pushbutton is pressed. If it is, the buttonState is LOW:
 if (buttonState == LOW) {
   // turn green LED on, red LED off:
   digitalWrite(redledPin, LOW);
   digitalWrite(ledPin, LOW);    
   digitalWrite(greenledPin, HIGH);
   delay(2500);
   digitalWrite(gndledPin, HIGH);     
   delay(250);
   digitalWrite(gndledPin, LOW);
   delay(250);
   digitalWrite(gndledPin, HIGH);     
   delay(250);
   digitalWrite(gndledPin, LOW);
   servoturn();      
   delay(2500);        
 } else {
   // turn green LED off red LED on:
   digitalWrite(greenledPin, LOW);
   digitalWrite(ledPin, HIGH);      
   digitalWrite(redledPin, HIGH);    
 }
}  // end loop

Usos para un viejo receptor de TDT o satélite


En términos de la TDT (Televisión Digital Terrestre), la situación puede variar significativamente de un país a otro. Algunos países han adoptado completamente la TDT de alta definición y han descontinuado la transmisión de TDT de baja definición, mientras que en otros lugares la TDT de baja definición aún puede estar en uso. Algunos países donde la TDT de baja definición ya no está en funcionamiento incluyen:

  1. Reino Unido: Después de completar la transición a la televisión digital en 2012, la TDT de baja definición fue descontinuada.
  2. Suecia: Suecia apagó completamente su TDT de baja definición en 2007.
  3. Países Bajos: Los Países Bajos apagaron la TDT de baja definición en 2006.
  4. Suiza: Suiza apagó la TDT de baja definición en 2019, completando su transición a la TDT de alta definición.
  5. Finlandia: Finlandia descontinuó la TDT de baja definición en 2007.


En América, la situación con respecto a la TDT de baja definición varía de un país a otro. Algunos países han completado la transición a la TDT de alta definición, mientras que otros aún pueden estar en diferentes etapas del proceso o pueden no haber iniciado la transición en absoluto. Aquí hay algunos ejemplos:

  1. Estados Unidos: Estados Unidos ha completado la transición a la TDT de alta definición y ha descontinuado la TDT de baja definición. El apagón analógico se llevó a cabo en junio de 2009.
  2. Canadá: Canadá ha realizado la transición a la TDT de alta definición en muchas áreas, pero algunas regiones remotas aún pueden depender de la TDT de baja definición. La situación puede variar según la provincia.
  3. México: México ha estado trabajando en la transición a la TDT de alta definición, pero aún no ha completado el proceso en todas las áreas del país. La situación puede variar según la región.
  4. Brasil: Brasil ha estado adoptando gradualmente la TDT de alta definición, pero aún puede haber áreas donde la TDT de baja definición esté en uso.
  5. Chile: Chile ha implementado la TDT de alta definición en algunas áreas, pero aún puede haber lugares donde la TDT de baja definición esté disponible.

Vemos por tanto que los receptores de TDT (Televisión Digital Terrestre) de baja definición estan condenados al desuso por la imposibilidad de operar en muchos países , pero podría seguir siendo útil para algunas funciones alternativas:

  • Reproductor de medios locales: Aunque no pueda sintonizar canales de televisión, aún puede utilizarse como reproductor de medios para reproducir archivos multimedia desde dispositivos de almacenamiento USB o tarjetas de memoria SD.
  • Consola de juegos retro: Algunos entusiastas de los juegos podrían utilizar el receptor como parte de una consola de juegos retro, conectándolo a través de cables AV a una televisión más antigua y ejecutando emuladores de juegos clásicos.
  • Monitor de seguridad: Si tiene capacidad de entrada de vídeo, el receptor podría utilizarse como monitor de seguridad para visualizar las imágenes de cámaras de seguridad en el hogar o en un negocio.
  • Receptor de radio FM: Si el dispositivo tiene capacidad para recibir señales de radio FM, aún podría utilizarse para escuchar estaciones de radio locales.
  • Experimentos y proyectos DIY: Los aficionados a la electrónica podrían desmontar el receptor y utilizar sus componentes para proyectos de bricolaje, como construir un receptor de radio amateur o experimentar con la electrónica.
  • Reciclaje: reciclarse de manera responsable para recuperar sus materiales y algunos de sus componentes como la carcasa o la fuente de alimentación.
  • UN NUEVO USO: Como mando a distancia y cargador USB.

Reusar un viejo receptor como mando a distancia y cargador USB

Bueno, amigo lector suponiendo que ninguna de las posibilidades anteriores le sea satisfactoria vamos a ver como es posible darle otra vida. Hablamos de los viejos receptores de TDT de baja definición o cualquier receptor ( incluidos los de satélite), descodificadores etc. que estén en desuso y que cuenten con mando a distancia. La idea es volverlos a usar como un interruptor a distancia controlado por infrarrojos y a la vez como cargador doble USB. ¿le parece complejo , pues como vamos a ver, no es nada difícil y creemos que honestamente podria ser útil.

Bien, empecemos, porque lo primero que debemos hacer es comprobar que el receptor responde al mando de infrarrojos activándose o desactivándose al pulsar el botón de Power del mando, porque ese es el único botón que necesitamos que funcione.

tdt de baja definicion

Bueno, si no reacciona al pulsar el mando, revisaremos el estado de porta pilas. Quizás se haya desprendido algun elemento especialmente los muelles del negativo por lo que tenderemos que repararlo. Obviamente también comprobaremos el estado de las pilas que deberían medir 1,5V o mas ( si es inferior el voltaje es fácil que el mando no funcione) .

Aunque se ha comentado en este blog, una forma de verificar si un mando a distancia por infrarrojos funciona correctamente, puede ser siguiendo estos pasos:

  1. Encienda la cámara: Primero, encienda la cámara de su teléfono móvil, tableta o cualquier dispositivo con cámara que tenga disponible.
  2. Apunte el mando a distancia hacia la cámara: Dirijae el extremo del mando a distancia que emite la señal infrarroja hacia la lente de la cámara.
  3. Presione un botón: Mientras está mirando la pantalla de la cámara, presione cualquier botón del mando a distancia. Esto incluye botones como «Encender/Apagar», «Volumen», «Canales», etc.
  4. Observe la pantalla de la cámara: Si el mando a distancia está funcionando correctamente, debería ver una luz parpadeante en el extremo del mando a distancia a medida que presiona los botones. Esta luz no es visible a simple vista, pero sí a través de la cámara, ya que las cámaras pueden detectar la luz infrarroja.
  5. Pruebe con varios botones: Pruebe varios botones del mando a distancia para asegurarse de que todos funcionan correctamente ( aunque en este caso solo necesitamos el botón de encendido/apagado).

Si no ve ninguna luz parpadeante en la pantalla de la cámara cuando presiona los botones del mando a distancia, puede ser un indicio de que el mando a distancia tiene algún problema o de que las baterías están agotadas. En ese caso, intente reemplazar las baterías o verifique si hay algún otro problema con el mando a distancia.

Una vez nos cercioremos de que el receptor TDT es funcional desmontaremos el dispositivo . Una buena idea es desconectar el receptor de RF ( normalmente van enchufados ) porque no nos va servir para nuestro propósito, y además, sin éste bajaremos el consumo.

seccion de rf

Ahora nos toca buscar el punto de la placa madre del receptor. !Ojo! no confundir con la placa de la fuente que va aparte y manipular en esta puede ser peligroso. La idea es buscar un punto en la placa del receptor ( y no en la placa de la fuente), donde activando el mando hay una tensión por encima de los 5V y que baja cuando desconectemos el equipo.

En nuestro caso, un punto interesante es el extremo derecho de la resistencia de 560ohmios aproximadamente en el centro de la placa del receptor en nuestro caso. A este punto le hemos soldado un cable azul y nos hemos cerciorado de que activando el mando cambia de tensión ( ver foto). Obviamente este punto , en realidad podria ser ocupado por otros muchos mas, pero se ha seleccionado este por su fácil acceso. Por ejemplo, si en otros receptores no encontramos algún punto similar, otros puntos que podrían servirnos son los positivos de algunos condensadores electrolíticos.

En todo caso, como vemos en la imagen, ese punto seleccionado nos debemos asegurar que respecto al chasis ( que es el negativo) marca entre 5 y 12V al activar el receptor.

buscando un señal de control

Bueno, una vez localizado el punto de conexión, ya solo nos queda realizar el montaje para lo cual tendremos que identificar las salidas de la fuente del receptor. En el caso del receptor que hemos probado en este blog, son de 5v y 12v. y estan marcadas en la propia fuente.

detalle salidas fuente de alimentacion

Las dos salidas de 5V de la fuente de alimentación, las usaremos para mediante dos cables USB hembra que llevaremos fuera. Estas podemos usarlas para cargar cualquier dispositivo USB, para lo cual simplemente conectaremos sendos cables con salida hembra USB (!ojo respetando la polaridad!) a estos cables de salida de la fuente.

Ojo, en caso de duda, se deben de comprobar las salidas mediante un polímetro además de estudiar en la propia serigrafía de la placa que suele estar marcadas.

Probablemente amigo lector se estará preguntando si la señal de control que hemos capturado podria alimentar un relé directamente, pues la respuesta es que probablemente no, porque también corremos el riesgo de estropear la placa del receptor, si hemos tomado un punto inadecuado. Es por ello que lo mejor es usar un simple modulo de relé con un transistor y su circuito de protección que ciertamente es bastante económico ( sobre 1€ en Amazon) y además ya vienen montados.

detalle placa de reles

Una vez tenemos todos los elementos, el montaje ahora es simple:

  • Conectaremos el cable del punto de salida mediante una resistencia de 1k a la entrada de señal del modulo de relé.
  • Conectaremos un cable del pin Ground 0V de la placa del relé a un punto del chasis.
  • Conectaremos de la salida de 12v de la fuente un cable desde este a la placa del relé.
  • Capturaremos los cables de ac del descodificador: uno lo llevaremos a un polo de la hembra de AC y el otro lo pasamos por el común de la placa de relé y el contacto normalmente abierto.

En la siguiente imagen podemos ver con mas detalle todas las conexiones:

conexiones

Todas las conexiones, obviamente las aislaremos de la mejor manera posible para que no haya contactos fortuitos especialmente de la parte de AC !Mucho cuidado!

montaje del relé

Bueno ahora una vez cerciorados de que las conexiones son correctas ( cuidado con las de AC) probamos el funcionamiento incluido las conexiones USB (por ejemplo con una pequeña lampara led USB).

prueba de las salidas USB

Ya solo queda fijar todos los cables con bridas, montar la tapa con cuidado, y disfrutar de nuestro proyecto de reconversión de un receptor de TDT que habría ido al contenedor en un relé controlado por infrarrojos con doble cargador USB. .. Y por cierto este proyecto es exportable a todo tipo de dispositivos con mando: viejos descodificadores de satélite, receptores analógicos, etc

resultado final

¿Se anima amigo lector a replicarlo?