Sumário:

“Então, vamos concordar imediatamente: você não fará um filme para Hollywood. Mesmo no país das maravilhas, não mais de cinco por cento de todos os cenários são aprovados e apenas um por cento entra em produção ... Então, em vez de tudo isso, você criará sua própria Hollywood. ”
Ed Gaskell "Fazendo cinema digital ou Hollywood em casa"
Prefácio
O que, outra estação meteorológica no Arduino ?! Sim, mais uma coisa, e algo me diz, não a última na Internet das coisas.
Assim como todo programador é obrigado a escrever o programa “Hello World!”, Todo arduino deve ter a experiência de construir uma estação meteorológica simples ou não muito meteorológica.
Um número considerável de projetos já criados de estações meteorológicas na Internet é descrito; o leitor pode escolher qualquer uma delas para implementação. Não vou me esconder, estudei cuidadosamente cerca de uma dúzia desses projetos e vários outros relacionados. Portanto, não se pode dizer que criei tudo do zero, é claro que "fiquei nos ombros dos gigantes".
Devo dizer imediatamente que meus planos não incluíam o uso de serviços de terceiros para armazenar e exibir dados. Eu queria sentir e entender pessoalmente como tudo isso funciona desde o início até o fim, de A a Z.
Portanto, para quem deseja rapidamente rebitar algo do nada, é provável que essa série de artigos não seja adequada. É mais fácil comprar um designer pronto com instruções de montagem. Os profissionais de microeletrônica não têm nada a ver aqui, talvez relinchando e se lembrando no início da jornada.
Mas para quem realmente quer descobrir, acho que eles vão gostar. Talvez o material seja útil como uma ferramenta de treinamento.
O autor irá guiá-lo através dos labirintos intrincados da tecnologia moderna da Internet das coisas. Além disso, os olhos de um iniciante, já que ele próprio é.
Este projeto foi implementado em 2016, mas espero que ainda seja relevante.
Conjunto de tecnologia
Vamos aprender e trabalhar com coisas simples e complexas:
- sensores de temperatura e umidade tipo DHT22, DHT11
- sensor de pressão barométrica tipo BMP180
- Módulo WiFi ESP8266
- Módulo de rádio nRF24 de 2,4 GHz
- Família Arduino Pro Mini, Arduino Mega
- bateria solar e baterias
- Linguagem de programação C / C ++
- Linguagem de programação PHP
- Sistema de gerenciamento de banco de dados MySQL
- Linguagem de programação Java e a estrutura Android (criando um aplicativo para o Adnroid exibir dados meteorológicos em um smartphone).
Alguns dos tópicos listados e os ovos não valem a pena, e alguns podem ser estudados por anos. Portanto, abordaremos coisas complexas apenas na parte diretamente relacionada a este projeto, para que você entenda como tudo funciona.
Mas vamos começar desde o início . Ou seja, a partir da descrição e design do futuro dispositivo "no papel" , de modo que, no final, cada tijolo fique no seu lugar.
Prototipagem
Como a Wikipedia nos diz corretamente, a prototipagem é uma rápida implementação aproximada de um sistema em funcionamento. O que, sim, não funcionará de maneira completamente ineficiente e com alguns erros, mas dará uma idéia de se a embarcação deve ser desenvolvida para um desenho industrial. O processo de protótipo não precisa ser demorado. A etapa de prototipagem é seguida por uma análise do sistema e seu refinamento.
Mas isso ocorre em um setor em que os trabalhadores são empregados em período integral.
Qualquer pessoa que rebite seu artesanato de projetos de animais de estimação à “internet das coisas” à noite deve estar ciente de que ele cria um protótipo, um produto semi-acabado. Ele está muito longe do nível de um produto industrial normal. Portanto, não devemos confiar a nossos ofícios amadores nenhum plano de suporte responsável à vida e esperar que eles não nos decepcionem.
Um produto industrial é construído com base em elementos industriais e passa por muitos outros estágios, incluindo depuração, teste e manutenção, antes de se tornar um best-seller.
Então, em vez de toda essa gravidade, criaremos nosso próprio brinquedo, mas não um brinquedo simples. Com elementos de criatividade técnica, o início da programação e o conhecimento (no processo de criação) de muitas outras coisas relacionadas.
Obviamente, os engenheiros eletrônicos terão dificuldades na fase de programação e os programadores terão que suar demais os circuitos, mas o autor tentará explicar tudo o mais acessível possível e descrever claramente por que certas soluções foram usadas.
Exigências
Normalmente, esta etapa é pulada. Decidindo fazer algo assim agora, e então são descobertos pequenos detalhes que colocam todo o projeto em um beco sem saída ou até o tornam insuportável. Toda a nossa lista de desejos precisa ser gravada, eu uso um disco do Google para isso, está disponível em um PC e em um dispositivo móvel.
Portanto, nossa estação meteorológica deve:
- medir temperatura e umidade fora
- medir a temperatura e umidade na casa
- medir pressão atmosférica
- exibir os valores indicados no visor
- transfira dados para um servidor na Internet, onde os dados serão armazenados em um banco de dados e exibidos em uma página da Web ou usados em um aplicativo móvel.
Os sensores utilizados são os mais simples e baratos. Por exemplo, olhando para o futuro, direi que o DHT22 mede a temperatura com bastante precisão, mas com a umidade é um pouco impreciso. Mas, repito, não importa, porque temos um protótipo, e uma propagação de 5% de umidade não afetará nada de importante em nossas vidas.
A arquitetura, o hardware e o software do sistema devem fornecer maior extensibilidade ao sistema para adicionar novos sensores e novos recursos.
Ferro Seleção de componentes
Esta é a parte mais crucial, e não é de solda ou programação. Após determinar os requisitos para o sistema, é necessário decidir por meio do que exatamente eles serão implementados.
É aqui que há uma nuance. Para escolher os componentes que você precisa conhecer bem seus recursos, você precisa conhecer a própria tecnologia. Ou seja, em outras palavras, exige estar longe de ser um engenheiro e programador iniciante em eletrônica. Então, o que agora passar alguns anos estudando todo o espectro de dispositivos possíveis?
Círculo vicioso? Mas existem círculos viciosos para quebrá-los.
Existe uma saída. Você pode apenas pegar e repetir o projeto de outra pessoa. Estudei os projetos existentes de estações meteorológicas e, esperançosamente, dei um passo à frente.
Então A arquitetura da estação meteorológica é baseada no Arduino. Porque o Arduino tem um pequeno limiar de entrada, e eu já lidei com ele. É mais fácil escolher mais.
Imediatamente ficou claro que a estação meteorológica incluiria um sensor remoto e o módulo central.
A unidade principal central estará localizada dentro de casa. É importante determinar isso no estágio inicial, a partir disso, características importantes como o regime de temperatura de operação e a “dança” de potência.
O sensor remoto (ou sensores) ficará sem "cérebro", sua tarefa é medir e transmitir dados periodicamente para a unidade central. A unidade central recebe dados de todos os sensores, os exibe na tela e os envia para o banco de dados na Internet. Bem, já é muito mais fácil lá, assim que os dados estiverem no banco de dados, você poderá fazer o que quiser com eles, até desenhar gráficos.
Para as relações com o mundo exterior, a Internet foi definitivamente escolhida pelo módulo WiFi ESP8266 quase sem alternativa (aprox. Talvez agora essas alternativas tenham surgido). As placas de expansão Ethernet do Arduino estão disponíveis, mas eu não queria me conectar ao cabo.

Uma pergunta interessante era como fornecer uma conexão entre um sensor montado na janela (ou sensores, lembra-se do requisito de extensibilidade do sistema?) E o centro. Os beacons de 433 MHz definitivamente não são adequados (eles não são adequados para nada).
Aproveite o ESP8266 novamente?
Contras desta decisão:
É necessário WiFi sustentável fora de casa
alcance de comunicação não será longo
a confiabilidade sofrerá, se a Internet cair, não veremos nossos sensores remotos
maior consumo de energia.
Consumo de energia ESP8266:
ao transmitir 120-170 mA
ao tomar 50-56 mA
no sono profundo 10 μA (μA)
off 5 µA (µA).
No final, o chip nRF24L01 + com um transmissor e receptor de 2,4 GHz em um frasco, com uma antena externa adicional, foi escolhido para conectar sensores remotos à unidade principal, de modo que certamente "romperia" as paredes.

Consumo de energia nRF24L01 + 2,4 GHz:
- ao receber 11 mA
- ao transmitir a 2Mbps - 13 mA
- no modo de espera I - 26 μA (μA)
- estado desligado 900 nA (nA).
Quanto ao ESP8266, que para o nRF24L01 +, a faixa de temperatura operacional é adequada: de -40 ℃ a + 80 ℃.
Você pode comprar o nRF24L01 + por cerca de US $ 1 ou imediatamente com uma antena externa por US $ 3. Você pode comprar o ESP8266-01 por cerca de US $ 4. Leia a descrição do produto com atenção! Caso contrário, compre uma antena.
O núcleo do sistema apareceu. Nos voltamos para os próprios sensores.
Na rua, como você sabe, a temperatura pode atingir valores negativos; portanto, o sensor DHT11 não é adequado, mas o DHT22 apenas para a direita.

Recursos do DHT22 / AM2302:
- fonte de alimentação de 3,3 V a 5 V, 5 V recomendados
- consumo máximo de 2,5 mA, no momento da medição e transferência de dados
- faixa de medição de umidade de 0 a 100% com precisão de 2 a 5%
- faixa de medição de temperatura de -40 a + 125 ° C com precisão de ± 0,5 ° C
- uma solicitação de medição não superior a 0,5 Hz - uma vez a cada 2 segundos.
Dentro da casa, espero que não haja temperaturas negativas, para que você possa usar o DHT11, principalmente porque já o tive.
Características DHT11:
- fonte de alimentação de 3,3 V a 5 V
- consumo máximo de 2,5 mA, no momento da medição e transferência de dados
- faixa de medição de umidade 20-80% com precisão de 5%
- faixa de medição de temperatura de 0 a + 50 ° C com precisão de ± 2 ° C
- pedido de medição não superior a 1 Hz - uma vez por segundo.
Você pode comprar DHT22 por cerca de US $ 3. DHT11 é mais barato - US $ 1, mas é menos preciso.
Agora de volta ao Arduino. Qual conselho escolher?
Testei partes individuais do sistema em um Arduino UNO. I.e. Conectei o módulo ESP ao Uno e o estudei, desconectei e liguei o nRF24 etc. Para a implementação final do sensor no exterior, ele escolheu o Arduino Pro Mini como o mais próximo do Uno dos miniaturas.

Em termos de consumo de energia, o Arduino Pro Mini também parece bom:
- não há conversor USB-TTL, que por si só "come" muito,
- O LED é conectado através de um resistor de 10k.
Para conservação avançada de energia, foi planejado:
- remova o LED - o indicador de energia no Arduino Pro Mini (lamento, não estraguei a placa)
- use o conjunto simples no microprocessador Atmel ATmega328 (não usado)
- Use a Biblioteca de baixa potência ou JeeLib .
Eu escolhi a Biblioteca de baixa potência das bibliotecas, é simples e contém apenas o que você precisa.
Para a unidade central, como foi planejado conectar vários periféricos, a placa Arduino Mega foi escolhida. Além disso, é totalmente compatível com o UNO e possui mais memória. Olhando para o futuro, direi que essa escolha foi completamente justificada.
Você pode comprar um Arduino Mega por cerca de US $ 8.
Potência e consumo de energia
Agora, sobre energia e consumo de energia.
O Arduino Pro Mini vem de duas formas:
- Fonte de alimentação de 5V e frequência de 16MHz
- Tensão de alimentação de 3.3V e frequência de 8MHz.
Como o módulo de rádio nRF24L01 + requer 3,3 V de potência e o desempenho não é importante aqui, compre o Arduino Pro Mini a 8MHz e 3,3V.
Ao mesmo tempo, a faixa de tensão do Arduino Pro Mini é:
- 3,35-12 V para o modelo 3,3 V
- 5-12 V para 5 V.
Eu já tinha um Arduino Pro Mini em 5V, é por isso que o usei. Você pode comprar um Arduino Pro Mini por cerca de US $ 4.
A unidade central será alimentada a partir da rede de 220 V através de uma pequena fonte de alimentação que fornece saída de 12V, 450mA, 5W. Assim por US $ 5. Ainda existe uma saída separada em 5V.

E se isso não for suficiente, pode ser mais poderoso. Em outras palavras, economizar energia para a unidade central não faz muito sentido. Mas para um sensor sem fio remoto, a economia de energia é a parte mais importante. Mas eu também não gostaria de perder a funcionalidade.
Portanto, o Arduino Pro Mini e o módulo de rádio nRF24 serão alimentados por um monte de 4 baterias Ni-Mh.
E lembre-se, a capacidade máxima de uma bateria moderna é de aproximadamente 2500-2700mAh, além de truques de marketing (Ansmann 2850) ou trapaça (UltraFire 3500).
Não uso baterias de íon de lítio por vários motivos:
- muito caro
- quando a temperatura ambiente cai abaixo de 0 ° C, a energia da bateria de íons de lítio diminui para 40-50%
- aqueles que são baratos são feitos sem proteção e não são seguros (durante curto-circuito ou descarga, eles podem explodir e queimar, veja vários vídeos no YouTube)
- envelhecer, mesmo que não sejam usados (embora isso possa ser dito sobre todos os elementos químicos), após 2 anos, a bateria de íon de lítio perde cerca de 20% de sua capacidade.
Para o protótipo, é bem possível conviver com baterias Ni-MH AA ou AAA de alta qualidade. Além disso, não precisamos de grandes correntes. O único sinal negativo de baterias Ni-MH é sua carga longa.
O esquema geral da estação meteorológica
Para resumir. Aqui está um resumo geral de como tudo funciona.

Para ser continuado.