Tabla de contenido:

Despertador Oled: 8 pasos (con imágenes)
Despertador Oled: 8 pasos (con imágenes)

Video: Despertador Oled: 8 pasos (con imágenes)

Video: Despertador Oled: 8 pasos (con imágenes)
Video: como CAMBIAR el FONDO de PANTALLA del SMARTWATCH 8 ULTRA 2024, Noviembre
Anonim
Despertador Oled
Despertador Oled

Hay muchos relojes arduino / ESP32, pero ¿usan esos OLED agradables y nítidos?

He estado experimentando con arduinos y ESP32 durante un tiempo, pero nunca llegué a ser un producto terminado. Hice un reloj despertador con 4 OLED monocromos de 1.3 pulgadas. El reloj también cuenta con una lámpara de noche regulable y un puerto de carga USB (nadie tiene enchufes de repuesto al lado de su cama). Los OLED también son regulables, esto se agregó en el último minuto después de que mi novia amenazara mi proyecto. En caso de que la atenuación no sea lo suficientemente tenue, en la voz de las novias, también puedo proporcionar una versión del código en la que 3 pantallas funcionan entre ciertas horas. El objetivo era hacer un reloj de fácil mantenimiento, con una mirada más allá del "prototipo". Mientras hacía mi reloj, encontré algunas dificultades que tuve que resolver, por lo que creo que vale la pena compartir este instructivo. El reloj se puede hacer con pequeñas herramientas, no me gustan los tutoriales "y para el siguiente paso usé mi fresadora CNC de 10.000 € / $".

Algunas cosas que se explicarán en este instructable (opción-instructable):

- Cómo usar / cablear una pantalla OLED I2C con arduino / ESP32

- Cómo utilizar varios objetos I2C con un arduino / ESP32

- Cómo hacer un menú "desplazable" usando un codificador rotatorio (+ cómo usar un codificador con un ESP32 / arduino)

- Cómo diseñar y pedir un PCB personalizado usando fritzing.

- El reloj también usa un RTC (reloj en tiempo real), controlador LED, módulo reductor de voltaje … Realmente no entraré en estos porque realmente hay mucha información disponible para estos módulos.

Me gustaría señalar que no soy un programador profesional. El objetivo de mi instructable es explicar los puntos que mencioné anteriormente. La forma en que lo puse todo junto para mi producto final podría no ser la manera más limpia. Es la forma que me permitió realizar un seguimiento de todo.

Suministros

Al comprar suministros, siempre trato de sopesar la importancia de la calidad / documentación frente al precio. Mis suministros son una mezcla de marcas A y piezas chinas más baratas. Mouser es un gran proveedor si la calidad es importante, ordeno de Banggood / Aliexpress para las piezas más baratas.

- Una placa ESP32, utilicé la Huzzah32 de adafruit, pero hay muchas otras opciones (más baratas). Elegí el Huzzah32 porque está muy bien documentado.

- 4 pantallas OLED I2C de 1.3 pulgadas (128x64, con el controlador SH1106), las de 0.96 "son más comunes pero para este proyecto prefiero las de 1.3"

- Driver Sparkfun femtobuck para conducir el LED

- Reloj RTC, usé uno con celda de litio.

- Arduino nano

- Puerto USB 2.0 hembra (utilicé: SS-52200-002 de Stewart Connector)

- Conector de CC hembra (utilicé: L722A de Switchcraft)

- Adaptador DC 12V 3A (GST36E12-P1J de Mean Well)

- PCB personalizado, opcional, pero esto hace que el proyecto sea mucho más compacto y fácil de reparar si una pieza muere + más confiabilidad porque hay menos cables (jlcpcb.com)

- Tornillos y pernos M3

- Inserciones de latón M3

- Módulo reductor de 12V a 5V de Pololu (DF24V22F5)

- 3 vatios alimentados con disipador de calor

- Cables de puente

- zumbador

- Multiplexor I2C (TCA9548A de adafruit)

- 2 codificadores rotativos (he probado algunos, no todos funcionan con mi código. El de "DFrobot" funciona y también el de la PCB redonda de "DIYmore". Parece que mi código no funciona para el pulsador del tipo KY-040. Mi reloj despertador usa el de DIYmore porque son muy fáciles de montar en panel (no se necesitan tornillos / orificios adicionales).

- Surtido de cabeceras femeninas (opcional)

- Madera para el marco: 18mmx18mmx2400mm

- Papel de trazar

Usé algunas herramientas (soldador, tercera mano, sierra…) también, pero nada realmente exótico.

Paso 1: usar un Oled

Usando un Oled
Usando un Oled
Usando un Oled
Usando un Oled
Usando un Oled
Usando un Oled

Para utilizar los OLED, debe instalar una biblioteca. Yo uso el U8G2lib de Oli Kraus, es muy comprensible y tiene una guía de referencia con ejemplos claros.

Para conectar su placa (ESP o arduino) debe encontrar pines SDA y SCL. Estos pines son los pines de comunicación I2C. Busque en Google el "pinout" de su tablero específico si no puede encontrarlos.

Agregué un código de ejemplo. El código funciona tanto para arduino como para ESP32, pero es menos probable que el ESP32 se quede sin memoria. Todos los OLED que he probado hasta ahora funcionan tanto con 3.3v (ESP32) como con 5V.

Paso 2: varios OLED

Varios OLED
Varios OLED

Aquí es donde mi proyecto comienza a diferir de muchos otros relojes de alarma. La mayoría de los arduinos / ESP tienen solo uno o dos pines I2C. Este tipo de limita el uso de piezas I2C. ¿Qué pasa si tengo 4 sensores I2C y quiero mostrar sus lecturas en una pantalla I2C? Entra en el multiplexor. El multiplexor le permite direccionar 7 partes I2C diferentes. Esto permite que mi ESP32 use un reloj en tiempo real I2C y muestre la hora usando nuevamente I2C en las 4 pantallas (o más, no dejes que te detenga).

Agregué un código de ejemplo para el ESP32, de aquí en adelante no estoy seguro de que el arduino pueda seguir el ritmo. El ejemplo solo usa pantallas, también pueden ser otras cosas como sensores I2C, etc. El principio es siempre el mismo, llame al canal correcto con "tcaselect (#);" función, luego ejecuta cualquier código necesario para su objeto I2C.

Paso 3: creación de un menú desplazable con un codificador rotatorio

Creación de un menú desplazable con un codificador rotatorio
Creación de un menú desplazable con un codificador rotatorio
Creación de un menú desplazable con un codificador rotatorio
Creación de un menú desplazable con un codificador rotatorio
Creación de un menú desplazable con un codificador rotatorio
Creación de un menú desplazable con un codificador rotatorio

Lo primero es lo primero, prueba tus codificadores. Agregué un código para probar los módulos de su codificador. Como se indica en los suministros: Solo probé con éxito mi código con los módulos de codificador rotatorio del robot DF y el módulo con la PCB redonda de DIYmore. Consulte las imágenes de arriba para ver los codificadores correctos.

La biblioteca que utilicé es esta:

Espero que el PDF que agregué ayude con la estructura del menú que he usado para mi reloj.

Hacer que el codificador funcione, fue la parte más difícil para mí en este proyecto. Hay muchos codificadores diferentes y muchas bibliotecas diferentes que no siempre son compatibles con el ESP32. Pero creo que un codificador rotatorio (en funcionamiento) es una solución elegante si desea ingresar algo. Si hubiera usado solo botones, habría necesitado más de 1 y el ajuste del tiempo requeriría muchas pulsaciones.

Paso 4: Poner el código anterior junto

Poner el código anterior junto
Poner el código anterior junto

El título resume lo que hice. Probé parte por parte y luego junté todo. Pero como nada es fácil, tuve que cambiar algunas cosas. La comunicación en serie es un proceso lento. Esto obstaculiza la lectura correcta del codificador. Para superar esto, agregué interrupciones a los pines del codificador. El código para leer el codificador se llama inmediatamente si presiona o gira el codificador.

Una vez que comprenda cómo se construyen los menús, descubrirá que es muy fácil agregar o eliminar funciones a su gusto. ¿Quizás le gustaría obtener el clima actual o la hora de Internet y mostrarlo?

He omitido muchas de esas ideas porque quería sobre todo un tiempo de paz fiable. Uno que no hace nada automáticamente. Trabajo horas muy extrañas en una zona de ahorro de luz diurna. Cada vez que cambia la hora, me pone nerviosa la idea de quedarme dormida. ¿Mi teléfono cambiará automáticamente la hora? ¿Mi reloj? Bueno, mi reloj no lo hará, a menos que lo cambie yo mismo. ¿Pero quizás quieras poner tu reloj en la cocina? Escenario diferente, agregue funciones hasta que se agote la memoria.

Paso 5: PCB personalizado con Fritzing + Schematic

PCB personalizado con Fritzing + Schematic
PCB personalizado con Fritzing + Schematic
PCB personalizado con Fritzing + Schematic
PCB personalizado con Fritzing + Schematic
PCB personalizado con Fritzing + Schematic
PCB personalizado con Fritzing + Schematic

Punto de atención: Adafruit señala que, si bien puede alimentar el huzzah32 a través del pin USB, debe tener cuidado de no usar simultáneamente la entrada de alimentación micro USB. Mi PCB se alimenta a través del reductor, que luego alimenta el huzzah a través del pin USB. Por lo tanto, siempre desconecte la alimentación externa / retire el huzzah de la placa cuando cargue.

Decidí soldar encabezados hembra en la PCB porque facilita el intercambio de una pieza o, por ejemplo, agregar un sensor I2C adicional. Esto también me permite quitar fácilmente el nano o el ESP32 para cargar los programas.

Agregué el archivo Frizting, puedo escribir una novela aquí, pero creo que el ejemplo habla mejor. Comencé con el esquema de toda la configuración. Si bien Fritzing tiene muchas partes en sus contenedores, no todo está allí. A veces puedes encontrar la parte de Fritzing en Internet, a veces no. Las partes que no pude encontrar, simplemente las reemplacé por una parte de encabezado hembra. Si hace clic derecho en él, puede editar el encabezado a la cantidad de pines que desee y asignarle un pinout. Hice esto con cada parte que no pude encontrar. Como casi todos los módulos utilizan el mismo paso de 0,1 pulg. (2,54 mm), esto le dará el espacio correcto para la pieza.

A continuación, cambia a la vista de PCB de la aplicación fritzing. Se colocará una PCB, si hace clic en ella, puede establecer su tamaño y elegir una PCB de una o dos capas. El mío usa 2 capas. Fritzing sugerirá las conexiones que ha realizado en la vista esquemática. El programa tiene una opción de ruta automática, pero nunca la uso. Me gusta organizar manualmente mis conexiones. En la vista de PCB, las conexiones amarillas están en la capa superior, las naranjas están en la capa inferior. Nuevamente, si hace clic en la conexión, puede elegir sus propiedades.

Para hacer el PCB real, debe exportarlo como un archivo gerber. Antes de hacer esto, en la pestaña "enrutamiento" puede verificar las reglas de diseño. Si todo está bien, puede hacer clic en "exportar para PCB". La mayoría de los fabricantes pedirán un archivo gerber, así que seleccione exportar a gerber.

Pedí mi PCB a JLCPCB, me gusta que inmediatamente te coticen un precio. Por supuesto, hay muchas otras opciones.

Acerca del esquema: se utilizan 2 voltajes. El LED y el femtobuck se alimentan directamente de la fuente de 12V. El resto se alimenta a través del reductor reductor con 5 voltios.

Paso 6: Diseño + Cortador láser

Diseño + Lasercutter
Diseño + Lasercutter
Diseño + Lasercutter
Diseño + Lasercutter

Para mi primer diseño intenté usar roble macizo (estoy siguiendo clases de carpintería), pero rápidamente quedó claro que esto no era lo ideal. La madera es demasiado gruesa, lo que dificulta el ajuste de sus piezas. El múltiplex de abedul de 3 mm permite formas más fáciles de sujetar los codificadores y las pantallas.

Encontré un servicio de corte por láser en línea, snijlab.nl, disponible para aficionados ubicados en Rotterdam (realizan envíos a Bélgica, Países Bajos y Alemania). En su sitio web puedes subir tus dibujos e inmediatamente cotizan tu precio. Usé Autocad, que tengo en el trabajo, pero el software realmente no importa. Solo tiene que ser un dibujo vectorial (Vectr, Illustrator, Inkscape…). La mayoría de las tiendas usan colores para determinar si desea cortar o grabar.

Algunas cosas para tener en mente:

- Máx. dimensiones de la cortadora láser (dibujé un marco alrededor de mis piezas)

- Min. distancia entre cortes

- Asegúrese de no dibujar líneas dobles, el láser hará una pasada extra, lo que le costará más.

- Al trazar en PDF, asegúrese de trazar 1: 1. No desea reducir la escala ni ajustarse al papel.

Paso 7: Montaje

Montaje
Montaje
Montaje
Montaje
Montaje
Montaje

Construí el reloj alrededor de un marco de madera, los paneles se mantienen en su lugar con tornillos M3 e inserciones en el marco. Si alguna vez construyera una versión 2, usaría perfiles de aluminio en "L" para unir los paneles. Fue muy difícil perforar con precisión los orificios para los insertos de latón. Me tomó mucho tiempo, solo para obtener un resultado aceptable. Por supuesto, esto significaría que el dibujo cortado con láser debe revisarse. Creo que con perfiles de aluminio y solo tuercas y tornillos obtendría un mejor resultado.

Para difundir mejor la luz, pegué papel de calco en el interior de las perforaciones. Esto le da a la luz un brillo agradable.

Paso 8: no te detengas aquí

No pares aqui
No pares aqui
No pares aqui
No pares aqui
No pares aqui
No pares aqui

El proyecto se centra en un ESP32, apenas lo he usado. Actualmente, las luces de mi dormitorio se pueden controlar a distancia con blynk. Controlarlos con el reloj es solo un pequeño paso más. ¿Quizás desea algunas pantallas adicionales que le muestren la temperatura alrededor de su casa? O algunos sensores locales (¡todavía hay conexiones I2C de repuesto en ese multiplexor!). ¿Quizás establecer la hora / alarma a través de una aplicación y bluetooth?

Déjame saber qué cambiaste, qué cambiarías, qué debería cambiar yo …

Recomendado: