Elige un regalo
La abuela de mi hijo pronto cumplirá años. Como me fascinaban los microcontroladores, se me ocurrió la idea de donar algún tipo de dispositivo, naturalmente, a un microcontrolador y hecho por mí mismo. Como todas las abuelas, nuestra abuela no es una usuaria avanzada de ningún dispositivo y, en principio, no tiene nada de especial en electrónica. Por lo tanto, puede hacer cualquier dispositivo no muy complejo.
Cuando venimos a visitarla, siempre nos saluda una mesa rica, con una gran cantidad de platos. Por lo tanto, inmediatamente decidimos hacer un electrodoméstico útil en la cocina. Juntos a menudo jugamos varios juegos de mesa: lotería, varios juegos de dados. Entonces, nuestro dispositivo debería ayudar aquí.
Pensando un poco, el hijo decidió hacer un
temporizador de cocina avanzado .
Lo ayudé un poco con el plan. Las principales funciones de nuestro regalo:
- Modo de temporizador de hasta 3 horas.
- Modo de cronómetro
- Fuerte señal
- Tamaño compacto
- Baterías "eternas" - baterías, cargando como un teléfono, por micro usb
- Y, por supuesto, juegos: un cubo (un número aleatorio del 1 al 6), una lotería, una bomba (un juego muy divertido)
Seleccionamos componentes
Como indicador, elegimos un indicador LED de tres dígitos con un ánodo común: tiene solo 11 pines, muy conveniente. No es difícil de comprar y, en principio, es bastante económico en consumo de energía (pero ciertamente no en LCD).
El microcontrolador - STM8S003F3P6 - ya trabajamos con él, por lo que todo es familiar. ST-link ya está allí.
El microcircuito de carga y el arnés completo del MK, como una
computadora de bicicleta .

Como tweeter, tweeter muy compacto y ruidoso HC0903A

La batería es LIR2032. Solo 45 mAh, pero esto es suficiente para 40 horas de funcionamiento continuo del temporizador. Decidimos abandonar el resonador de cuarzo (necesitamos conclusiones), no necesitamos una precisión especial y el STM8 tiene un oscilador interno bastante preciso. Carga de chip - TP4056.
Gestión - 2 botones de reloj. El dispositivo está en modo de suspensión todo el tiempo, el consumo es inferior a 5 μA, puede dormir durante mucho tiempo. No comenzaron a hacer una placa de protección para la batería, especialmente no es necesario. MK tiene un límite inferior de 3V, por lo que no se hundirá mucho. Cuando enciende la música, el indicador se enciende (aumento de corriente), y si la batería está agotada, el MK se reiniciará y entrará en modo de suspensión, que es una señal para cargar. Se carga con una corriente de 100 mA durante unos 40 minutos, que en principio es muy rápido. El esquema y el programa se pueden descargar en github, el enlace al final.
El hijo decidió hacer el caso él mismo de la caja de montaje de 40 x 16 mm. Pintado con pinturas acrílicas, corte una pieza de un disco DVD como vidrio. Resultó muy lindo.

El hijo hizo el rastro del tablero él mismo en Kicad. La ubicación de los componentes fue inventada por él. Botones en los lados del indicador, tweeter debajo, la batería en él. Todo entró con fuerza, nada cuelga en ningún lado. El tablero es de doble cara. Estaban hechas de fibra de vidrio de un solo lado de 0,8 mm de espesor utilizando el método de transferencia de tóner frío. Dos mitades del tablero están conectadas y fijadas con puentes. De los conectores: micro usb, alimentación y programación.

El programa
Este indicador tiene un ánodo común; en consecuencia, solo se puede emitir una descarga a la vez. Para mostrar tres dígitos simultáneamente, se requiere una indicación dinámica.
Programáticamente, esto se hace de manera muy simple. El temporizador se activa y, a intervalos de tiempo iguales, con una frecuencia alta, por ejemplo, cada 300 μs, emitiremos un bit en un círculo: 1-2-3-1-2-3. Se nos mostrará que los números brillan al mismo tiempo, como en una película. Si agrega bits vacíos adicionales, puede controlar el brillo. Es decir, habrá un esquema para la salida de información: 1-2-3-empty-empty-empty-empty-1-2-3-empty-empty ... Se necesita un control de brillo para reducir el consumo de energía. Así, por ejemplo, sin el uso de brillo, una descarga consume 24 mA, y con la aplicación puede reducirse a 1-2 mA. En este caso, los números siguen siendo claros y muy visibles. El hijo jugaba con frecuencia, brillo, cuando todo dejó de parpadear, le gustó. Resultó que programar este tipo de indicador es bastante fácil y conveniente.
El segundo momento difícil es crear una interfaz simple, como dicen, intuitiva, cuando tenemos 3 dígitos del indicador y 2 botones. Pero creo que tuvo éxito.
Se les ocurrieron botones como este:
- Botón derecho: pulsación larga, cambio de modos, hay tres de ellos: temporizador, cronómetro, juegos
- Botón derecho: presionar una vez, cambiar el submodo. Para el temporizador, esta es la elección de los tiempos preestablecidos, para el cronómetro, la elección de un cronómetro normal y con confirmación, para el juego, respectivamente. Varios juegos
- Botón izquierdo - presionar una vez - iniciar / detener o moverse en el juego, presionar prolongadamente - configuración, modo de programación
Con un indicador como este:
- Cuando se selecciona un temporizador, se muestra inmediatamente un cierto número de configuraciones predefinidas (por ejemplo, 5,15,30 minutos), que pueden reprogramarse y almacenarse en la ROM
- Cuando se selecciona el cronómetro, entonces 000
- Cuando los juegos - L - lotto, 6 - bomba, C - cubo.
- Los números se muestran inteligentemente en el indicador, ya que solo hay tres dígitos, entonces mostramos el número máximo de elementos significativos. Por ejemplo, un temporizador - 200 minutos 30 segundos - luego imprimimos 200., si el temporizador es 10 min 15 s, imprimimos 10.1, si 1 minuto 25 s, luego 1.25. Al mismo tiempo, para comprender que el temporizador o el cronómetro están funcionando, el punto parpadea a tiempo con los segundos.
- Cuando se detiene el cronómetro, por ejemplo, durante 10 minutos y 25 segundos, mostramos alternativamente 10. y .25, una vez por segundo, para ver también los segundos.
El programa no fue tan simple, mi hijo lo escribió durante casi 3 semanas en la escuela, con un poco de ayuda de mi parte. Hay muchas condiciones, diferentes indicadores: iniciar, detener, trabajar con memoria, etc. Pero estaba muy satisfecho con el resultado.
Prueba
Las primeras pruebas se realizaron en la escuela. En lugar de un cubo, adivinar las calificaciones. Me preguntaba toda la clase. Entonces la bomba es un súper juego. El dispositivo realiza un tiempo aleatorio de 5 a 20 segundos y comienza a marcar cada segundo. Lo pasas por ahí. Cuando el temporizador llega a cero, una señal de explosión. El que está en manos del dispositivo perdido.
Las primeras pruebas del cronómetro y el temporizador se dispararon. Rastrearon diferentes tiempos, verificaron con las horas exactas, un error de 1-2 segundos por hora. Resolvieron el sonido de la señal.
Presentando un regalo
Es mi cumpleaños Mi abuela fue entrenada rápidamente y estaba muy feliz. Todos juntos experimentaron Lotto, totalmente automatizado. Cada 5 segundos, el dispositivo chirría y emite un nuevo número del resto en la bolsa. ¡Todos juegan, manejan el dispositivo! Quien no tuvo tiempo llegó tarde.
Resumen
Entonces, el dispositivo resultó simplemente excelente. La práctica de programación es muy interesante. Si también está interesado en los microcontroladores, puede hacer lo mismo (o como regalo) y programarlo. Definitivamente aprenderás:
- hacer tablas
- componentes smd de soldadura
- programa STM8
- trabajar con pilas
- manejar botones
- hacer varios sonidos
- trabajar con temporizadores y manejar eventos temporales
- luchar contra la energía
En
github hay un circuito y una placa en formato Kicad. El proyecto inicial para STM8 se ha presentado, la parte más difícil es la indicación dinámica, la inicialización del microcontrolador, el procesamiento complicado de botones: pulsación corta, doble y larga. Sugiero escribir el resto del programa usted mismo, ¡es muy interesante!