Termômetro e higrômetro Arduino com E-PAPER no nRF52832 - ou o que os fabricantes se esqueceram de lançar

Saudações a todos os leitores Habr! No próximo artigo, falarei sobre ARDUINO novamente. Quero compartilhar com você meu próximo projeto, implementado no microcontrolador nRF52832. Este é um sensor de temperatura e umidade no sht20 | ( folha de dados ) com uma tela eletrônica monocromática de tinta (E-INK | E-PAPER), que faz parte do ecossistema MySensors.


Sua principal funcionalidade é monitorar a temperatura e a umidade na sala, enviando dados para o controlador de uma casa inteligente ou diretamente para o atuador. Bem, uma funcionalidade adicional é apenas a saída de dados do sensor sht20, informações de rede e nível de bateria para o monitor. Na minha implementação, isso é apenas uma interação direta diretamente com o atuador (controlador do sistema de aquecimento). A implementação não é canônica do ponto de vista dos MySensores; adicionei a funcionalidade dos modos mestre-escravo, tipos de sensores e pressão de ar. Além disso, na minha implementação, o procedimento para inicializar a camada de transporte foi alterado, porque A lógica do MySensors não é muito boa para dispositivos independentes. Mas tudo isso é uma história um pouco diferente, talvez digna de uma publicação separada, mas por enquanto um artigo sobre o dispositivo na tradição do protocolo MySensors.

A ideia de um dispositivo com essa funcionalidade amadureceu na minha cabeça por um longo tempo, a primeira tentativa de implementar essa idéia foi feita no microcontrolador atmega328. E, em princípio, isso foi feito, mas eu queria mais eficiência energética, exibição de informações mais colorida na tela.

versão no atmega 328



Ao apresentar o sensor, a comunidade às vezes se refere ao dispositivo da empresa Xiaomi, eles dizem que já é. Mas há uma pequena diferença: a Xiaomi tem um dispositivo de exibição, no meu caso, é um sensor de sistema doméstico inteligente com uma função de exibição. Por que exibir? Às vezes, só quero virar a cabeça na direção do sensor e olhar para a temperatura na sala :).



O sensor foi implementado em duas placas: a base para o circuito de exibição foi retirada dos monitores comuns Waveshare | Datashit . É verdade que pequenas alterações foram feitas posteriormente. O cérebro do sensor é o chip nRF52832 em uma implementação modular da HOLYIOT. Os módulos em si merecem atenção especial; essa é a implementação sem problemas em termos de trabalho no IDE do Arduino. O dispositivo usou módulos - YJ-16048.



A base da implementação do software do trabalho com a tela foi tomada "instância" distribuída no site Waveshare Electronics. É verdade que aqui não foi sem refinamento.

As medições do consumo da tela correspondem às indicadas na folha de dados. O mais importante é que essa tela possa dormir e os dados permaneçam na tela. É verdade que transformar a tela em sonho não funcionou imediatamente, a implementação do Waveshare não permitiu isso.

A energia do sensor é implementada em duas baterias cr2450, reduz o chip TPS62745DSSR1 com características muito boas para um 3.3V funcionando | datasheet . No momento, podemos dizer com segurança que este dispositivo (a versão descrita) é capaz de funcionar por 1 ano.

Consumo no modo de sono profundo - ~ 25 μA (com um programa de teste). Consumo médio no modo de operação ~ 9mA.

O projeto está aberto, os arquivos gerber estão disponíveis no site OpenHardVar , o código do programa e a biblioteca estão disponíveis aqui ( google drive ) Por que não o GitHub? Aconteceu que, na re-finalização final (v2), também estará lá.

Uma conversa separada para aqueles que decidiram repetir este dispositivo merece o tópico de converter os caracteres das fontes desejadas em matrizes C. Minha experiência é a conversão usando TheDotFactory.

Vou tentar descrever o processo com fotos :)


























Absolutamente qualquer fonte, você está limitado apenas pelos recursos da memória nRf52 ... E não faz sentido armazenar todos os caracteres.Se você precisar apenas de números, economizará muito espaço.

Outro problema encontrado foi a atualização das informações na tela. Nessas exibições, está disponível uma atualização parcial da área desejada na tela, que é uma vantagem absoluta por parte do consumo de energia, mas o menos é a aparência de artefatos na área de atualização de dados de caracteres anteriores.



Mas esse problema foi resolvido (consulte o código do programa). Acabou assim:









O vídeo demonstra a operação do visor.


Isso demonstra a atualização dos dados na tela, após refinamento:


Esta implementação não é final, este projeto é deixado para repetição na forma de um módulo Arduino. Um corpo para ele não está planejado. Agora, a partir deste projeto, vários nasceram ao mesmo tempo como uma continuação lógica. As principais diferenças do futuro V2 são alimentadas por uma única bateria, uma tela de três cores e a presença de uma caixa.

Exemplo de acionamento de uma tela de três cores:


É altamente recomendável (para aqueles que desejam repetir) ler meu tópico no fórum .org deste projeto (em inglês). Se o idioma for um problema, sempre ajudarei com prazer todos os participantes do bate-papo (instalando placas, trabalhando com microcontroladores nRF5 no ambiente ide arduino, dicas sobre como trabalhar com o protocolo mysensors - @mysensors_rus

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


All Articles