Termómetro e higrómetro Arduino con E-PAPER en nRF52832, o lo que los fabricantes olvidaron lanzar

¡Saludos a todos los lectores de Habr! En mi próximo artículo, volveré a hablar sobre ARDUINO. Quiero compartir con ustedes mi próximo proyecto, implementado en el microcontrolador nRF52832. Este es un sensor de temperatura y humedad en sht20 | ( hoja de datos ) con una pantalla de tinta electrónica monocromática (E-INK | E-PAPER), que forma parte del ecosistema MySensors.


Su funcionalidad principal es monitorear la temperatura y la humedad en la habitación, enviando datos al controlador de una casa inteligente o directamente al actuador. Bueno, una funcionalidad adicional es solo la salida de datos del sensor sht20, la información de red y el nivel de batería al monitor. En mi implementación, esto es solo una interacción directa directamente con el actuador (controlador del sistema de calefacción). La implementación no es canónica desde el punto de vista de MySensors, agregué la funcionalidad de los modos maestro-esclavo, los tipos de sensores y el ajuste de aire. Además, en mi implementación, se cambió el procedimiento para inicializar la capa de transporte, porque La lógica de MySensors no es muy buena para dispositivos independientes. Pero todo esto es una historia ligeramente diferente, tal vez digna de una publicación separada, pero por ahora un artículo sobre el dispositivo en la tradición del protocolo MySensors.

La idea de un dispositivo con tal funcionalidad ha madurado en mi cabeza durante mucho tiempo, el primer intento de implementar esta idea se hizo en el microcontrolador atmega328. Y en principio, esto se hizo, pero quería más eficiencia energética, una visualización más colorida de la información en la pantalla.

versión en atmega 328



Al presentar el sensor, la comunidad a veces se refirió al dispositivo de la compañía Xiaomi, dicen que ya lo es. Pero hay una ligera diferencia, Xiaomi tiene un dispositivo de visualización, en mi caso es un sensor de sistema doméstico inteligente con una función de visualización. ¿Por qué mostrar? A veces solo quiero girar la cabeza en la dirección del sensor y observar la temperatura en la habitación :).



El sensor se implementó en dos placas; la base para el circuito de visualización se tomó de las pantallas comunes de Waveshare | Datashit Es cierto que se hicieron cambios menores más tarde. El cerebro del sensor es el chip nRF52832 en una implementación modular de HOLYIOT. Los módulos en sí merecen especial atención, esta es la implementación más libre de problemas en términos de trabajo en Arduino IDE. El dispositivo utiliza módulos - YJ-16048.



La base de la implementación del software del trabajo con la pantalla se tomó "instancia" distribuida en el sitio web Waveshare Electronics. Es cierto, aquí no fue sin refinamiento.

Las mediciones del consumo de la pantalla corresponden a las indicadas en la hoja de datos, lo más importante es que esta pantalla puede dormir y los datos permanecen en la pantalla. Es cierto que convertir la pantalla en un sueño no funcionó de inmediato, la implementación de Waveshare no lo permitió.

La potencia en el sensor se implementa en dos baterías cr2450, reduce el chip TPS62745DSSR1 con características bastante buenas a un 3.3V en funcionamiento | hoja de datos Por el momento, podemos decir con confianza que este dispositivo (la versión descrita) es capaz de funcionar durante 1 año.

Consumo en modo de sueño profundo - ~ 25 μA (con un programa de prueba). Consumo medio en modo operativo ~ 9mA.

El proyecto está abierto, los archivos gerber están disponibles en el sitio web de OpenHardVar , el código del programa y la biblioteca están disponibles aquí ( google drive ) ¿Por qué no GitHub? Sucedió que en la re-finalización (v2) también estará allí.

Una conversación separada para aquellos que decidieron repetir este dispositivo merece el tema de convertir los caracteres de las fuentes deseadas en matrices en C. Mi experiencia es convertir usando TheDotFactory.

Trataré de describir el proceso con imágenes :)


























Absolutamente cualquier fuente, está limitado solo por las capacidades de la memoria nRf52 ... Y no tiene sentido almacenar todos los caracteres. Si solo necesita números, ahorra mucho espacio.

Otro problema que se encontró fue actualizar la información en la pantalla. En estas pantallas, está disponible una actualización parcial del área deseada en la pantalla, que es una ventaja absoluta por parte del consumo de energía, pero la desventaja es la aparición de artefactos en el área de actualización de datos de caracteres anteriores.



Pero este problema fue resuelto (ver código del programa). Terminó así:









El video muestra el funcionamiento de la pantalla.


Esto demuestra la actualización de datos en la pantalla, después del refinamiento:


Esta implementación no es final, este proyecto se deja para repetir en forma de un módulo Arduino. Un cuerpo no está planeado. Ahora, de este proyecto, varios nacieron a la vez como una continuación lógica. Las principales diferencias del futuro V2 están alimentadas por una sola batería, una pantalla de tres colores, la presencia de una carcasa.

Ejemplo de activación de una pantalla de tres colores:


Se recomienda encarecidamente (para aquellos que desean repetir) leer mi tema en el foro .org sobre este proyecto (en inglés). Si el idioma es un problema, siempre ayudaré con gusto a todos en el chat (instalación de tableros, trabajo con microcontroladores nRF5 en un entorno arduino ide, consejos para trabajar con el protocolo mysensors - @mysensors_rus

Source: https://habr.com/ru/post/452532/


All Articles