Índice:

Estação meteorológica NaTaLia: Estação meteorológica com energia solar Arduino Feito da maneira certa: 8 etapas (com fotos)
Estação meteorológica NaTaLia: Estação meteorológica com energia solar Arduino Feito da maneira certa: 8 etapas (com fotos)

Vídeo: Estação meteorológica NaTaLia: Estação meteorológica com energia solar Arduino Feito da maneira certa: 8 etapas (com fotos)

Vídeo: Estação meteorológica NaTaLia: Estação meteorológica com energia solar Arduino Feito da maneira certa: 8 etapas (com fotos)
Vídeo: SERENS 2020 - SALA 01: ENERGIAS E EFICIÊNCIA ENERGÉTICA 2024, Junho
Anonim
Estação meteorológica NaTaLia: Estação meteorológica Arduino movida a energia solar feita da maneira certa
Estação meteorológica NaTaLia: Estação meteorológica Arduino movida a energia solar feita da maneira certa
Estação meteorológica NaTaLia: Estação meteorológica Arduino movida a energia solar feita da maneira certa
Estação meteorológica NaTaLia: Estação meteorológica Arduino movida a energia solar feita da maneira certa

Após 1 ano de operação bem-sucedida em 2 locais diferentes, estou compartilhando meus planos de projeto de estação meteorológica movida a energia solar e explicando como ela evoluiu para um sistema que pode realmente sobreviver por longos períodos de tempo com a energia solar. Se você seguir minhas instruções e usar exatamente os mesmos materiais listados, poderá construir uma estação meteorológica movida a energia solar que funcionará por muitos anos. Na verdade, o único fator que limita a duração da bateria é a vida útil da bateria que você está usando.

Etapa 1: Operação da estação meteorológica

1, Transmissor: caixa montada ao ar livre com painel solar que envia telemetria meteorológica (temperatura, umidade, índice de calor, força solar) periodicamente para a unidade receptora interna.

2, Receptor: unidade interna feita de Raspberry PI 2 + Arduino Mega tendo um receptor RF de 433 MHz conectado para recepção de dados. Na minha configuração, esta unidade não possui nenhuma funcionalidade de display LCD local. Funciona sem cuidado. Um programa C principal se encarrega de receber os dados de entrada do Arduino por meio do serial, em seguida, registra os dados em um arquivo de texto e disponibiliza os últimos dados recebidos por telnet para que outros dispositivos os consultem.

A estação está controlando as luzes em minha casa pela leitura do fotorresistor (que determina se é dia ou noite lá fora). O receptor não tem cabeça no meu caso, mas você pode facilmente modificar o projeto para adicionar um display LCD. Um dos dispositivos que usa, analisa e exibe os dados meteorológicos da estação é meu outro projeto: Ironforge the NetBSD Toaster.

Etapa 2: primeiras versões

Primeiras versões
Primeiras versões
Primeiras versões
Primeiras versões
Primeiras versões
Primeiras versões
Primeiras versões
Primeiras versões

Existem muitos projetos solares na rede, mas muitos deles cometem o erro comum de que o sistema retira mais energia da bateria ao longo do tempo do que o painel solar poderia reabastecer, especialmente durante os meses nublados e escuros de inverno.

Quando você projeta um sistema movido a energia solar, a única coisa que importa é o CONSUMO DE ENERGIA, em todos os componentes: MCU, transmissor de rádio, regulador de tensão, etc.

Usar um grande computador como um raspberry pi ou um dispositivo wi-fi faminto de energia como o ESP apenas para coletar e transportar alguns bits de dados meteorológicos seria um exagero, mas, como mostrarei neste tutorial, até uma pequena placa Arduino é.

O melhor é sempre medir a corrente durante o processo de construção com um medidor ou com um osciloscópio (útil quando você tenta medir pequenos picos de uso durante a operação em intervalos de tempo muito curtos (milissegundos)).

Na primeira foto você pode ver minha primeira estação (baseada em Arduino Nano) e a segunda placa Arduino Barebone Atmega 328P.

A primeira versão, embora tenha funcionado perfeitamente (monitorando ambiente e enviando dados via rádio) teve um consumo de energia muito alto ~ 46mA e descarregou a bateria em poucas semanas.

Todas as versões usavam a seguinte bateria:

Placa de proteção integrada com bateria recarregável de íon de lítio protegida 18650 6000mAh

ATUALIZAÇÃO nessas baterias ScamFire. Embora este seja um Instructable bastante antigo, ainda me senti obrigado a corrigi-lo devido a esta bateria falsa. NÃO compre a bateria mencionada, faça sua própria pesquisa sobre outras baterias LION / LIPO, todas as baterias 3.7V funcionarão com este projeto.

Finalmente tive tempo de desmascarar a bateria do ScamFire para ver qual é sua capacidade real. Portanto, faremos 2 cálculos lado a lado com as capacidades reais e "anunciadas".

Em primeiro lugar, é uma coisa que esta bateria é falsa e nada do que eles afirmam sobre ela é verdade, as novas versões são ainda piores: copiaram a falsa sem deixar de fora o circuito de proteção de 2 centavos, então nada irá impedi-las de descarregar a zero.

Um pequeno artigo sobre baterias LION / LIPO:

TLDR:

O que isso significa é que a tensão máxima da célula é 4,2v e que a tensão "nominal" (média) é 3,7V.

Por exemplo, aqui está um perfil da tensão para uma bateria 'clássica' de 3,7 V / 4,2 V. A tensão começa em 4,2 no máximo e cai rapidamente para cerca de 3,7 V durante a maior parte da vida da bateria. Depois de atingir 3,4 V, a bateria acaba e a 3,0 V o circuito de corte desconecta a bateria.

Minhas medições usando uma carga fictícia:

Bateria carregada: 4,1 V

Corte definido para: 3,4 V

Simulação de carga: 0,15 A (meu dispositivo teve um pequeno problema em ficar abaixo disso.)

Capacidade medida: 0,77Ah dá 0,8 Ah gratuito que é 800mAh ao invés dos 6000mAh anunciados!

Como esta bateria nem tinha o circuito de proteção eu poderia livremente ir mais baixo, mas em 3.4V depois de 10 minutos ela já caiu para 3.0V.

Portanto, com cálculos simples, a bateria está fornecendo:

Teórico

Tensão da bateria = 3,7 V

Potência = 3,7x6000 = 22000 mWh

Real

Tensão da bateria = 3,7 V Potência = 3,7x800 = 2960 mWh

Versão: 0.1 BASEADA EM ARDUINO NANO

Mesmo com a biblioteca LowPower, um Arduino nano consome ~ 16 mA (no modo de hibernação) -> FALHA.

Teórico

Pavg = VxIavg = 5Vx16mA = 80 mW

Vida útil da bateria = 22000/80 = 275 horas = 11 dias aproximadamente

RealPavg = VxIavg = 5Vx16mA = 80 mW

Vida útil da bateria = 800/80 = 10 horas

Versão: 0.2 Atmega 328P Barebone

A energia consumida por um ATmega328 depende muito do que você está fazendo com ele. Apenas parado em um estado padrão, ele pode usar 16mA @ 5V enquanto funciona a 16MHz.

Quando o ATmega328P está no Modo Ativo, ele executa continuamente vários milhões de instruções por segundo. Além disso, o conversor analógico para digital integrado de periféricos (ADC), interface periférica serial (SPI), temporizador 0, 1, 2, interface de dois fios (I2C), USART, temporizador de watchdog (WDT) e a detecção de brown-out (BOD) consomem energia.

Para economizar energia, o ATmega328P MCU suporta vários modos de hibernação e periféricos não usados podem ser desligados. Os modos de hibernação diferem em quais partes permanecem ativas, pela duração do sono e o tempo necessário para acordar (período de despertar). O modo de suspensão e periféricos ativos podem ser controlados com as bibliotecas de energia e suspensão do AVR ou, mais concisamente, com a excelente biblioteca de baixo consumo de energia.

A biblioteca Low-Power é simples de usar, mas muito poderosa. A instrução LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); coloca o MCU em SLEEP_MODE_PWR_DOWN por 16 ms a 8 s, dependendo do primeiro argumento. Ele desativa o ADC e o BOD. Suspensão de desligamento significa que todas as funções do chip são desativadas até a próxima interrupção. Além disso, o oscilador externo é parado. Somente interrupções de nível em INT1 e INT2, interrupções de alteração de pino, correspondência de endereço TWI / I2C ou WDT, se habilitado, podem despertar o MCU. Portanto, com uma única instrução, você minimizará o consumo de energia. Para um Pro Mini de 3,3 V sem LED de energia e sem regulador (veja abaixo) que está executando a instrução, o consumo de energia é 4,5 μA. Isso é muito próximo ao que é mencionado na folha de dados do ATmega328P para suspensão no desligamento com WDT ativado de 4,2 μA (folha de dados vinculada nas fontes). Portanto, estou bastante confiante de que a função powerDown desliga tudo o que é razoavelmente possível. Com a instrução LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, o WDT será desabilitado e você não acordará até que uma interrupção seja disparada.

Portanto, com a configuração do barebone, podemos colocar o chip no modo de espera por 5 minutos, enquanto ele consome muito pouca quantidade de energia (0,04 mA sem periféricos). No entanto, este é apenas o chip Atmega 328P com o oscilador de cristal e nada mais, o booster de tensão usado nesta configuração para aumentar a tensão da bateria de 3,7 V -> 5,0 V também consome 0,01 mA.

Um dreno de tensão constante foi o foto-resistor adicionado aumentando o consumo no modo de espera para um total de 1 mA (isso inclui todos os componentes).

A fórmula para calcular o consumo preciso do dispositivo tanto no modo de suspensão quanto no modo de despertar é:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Ion = 13mA

Isso vem principalmente do transmissor RF433 Mhz:

Transmissor:

Tensão de trabalho: 3V - 12V fo max. uso de energia 12V Corrente de trabalho: máx. Menos de 40mA máx. e mín. 9mA Modo de ressonância: (SAW) Modo de modulação: ASKFrequência de trabalho: Eva 315MHz ou 433MHz Potência de transmissão: 25mW (315MHz a 12V) Erro de frequência: + 150kHz (máx.) Velocidade: menos de 10Kbps

Isleep = 1mA

Seria significativamente menor sem o fotorresistor.

Tempo de munhão Ton = 250 mS = 0,25 s

Tempo de sono Tsleep = 5 min = 300s

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (0,25s * 13mA + 300s * 1mA) / (0,25s + 300s)

Iavg = 1,26mA

Pavg = VxIavg = 5Vx1,26mA = 6 mW

Teórico

Vida útil da bateria = 22000mWh / 6mW = 3666 horas = 152 dias aproximadamente

Real

Vida útil da bateria = 800mWh / 6mW = 133 horas = 5,5 dias aproximadamente

Embora esta ainda fosse uma série UltraFire melhor que eu usei inicialmente, você pode ver que sem o painel solar ou o baixo consumo de 1mA este projeto não sobreviveria por muito tempo.

Sinta-se à vontade para construir a estação e anote suas descobertas e cálculos nos comentários e eu atualizarei o artigo. Eu também gostaria de obter resultados com diferentes MCUs e conversores de impulso.

Etapa 3: construir uma estação meteorológica de sucesso

Construindo uma estação meteorológica de sucesso
Construindo uma estação meteorológica de sucesso
Construindo uma estação meteorológica de sucesso
Construindo uma estação meteorológica de sucesso
Construindo uma estação meteorológica de sucesso
Construindo uma estação meteorológica de sucesso
Construindo uma estação meteorológica de sucesso
Construindo uma estação meteorológica de sucesso

Embora seja a primeira versão de sucesso, contém um pouco de falha nas fotos e não posso refazê-las porque as estações já estão implantadas. Os dois amplificadores de voltagem mostrados na imagem podem ser obtidos no momento da escrita para aeromodelagem e outras aplicações. Quando reprojetei minha estação, estava pensando em obter uma placa de aumento de tensão menor e mais eficiente, porém menor em tamanho definitivamente não significa que seja mais eficiente.

O novo módulo pequeno na imagem que não tem nem um led indicador realmente drenou 3mA (* FAIL *) por si só, então fiquei com minha placa antiga:

PFM Control DC-DC USB 0.9V-5V a 5V dc Boost Módulo de fonte de alimentação Step-up

No momento em que este artigo foi escrito, este módulo ainda está disponível no Ebay por 99 centavos, mas se você decidir usar outro booster, verifique sempre o consumo de energia no modo de espera. Com um booster de boa qualidade, não deve ser maior do que o meu (0,01 mA), embora o pequeno LED na placa tenha que ser dessoldado.

Etapa 4: Lista de Hardware

Lista de Hardware
Lista de Hardware
  • Placa de proteção integrada com bateria recarregável de íon de lítio protegida 18650 6000mAh
  • Atmega 328P16M 5V com bootloader
  • Adafruit DC Boarduino (compatível com Arduino) Kit (c / ATmega328) <este vai ser um bom investimento se você estiver fazendo projetos barebone futuros
  • Fotorresistor fotossensível fotoresistor fotorresistor 5mm GL5539
  • Diodo 1A 1000V 1N4007 IN4007 Diodos retificadores DO-41
  • PFM Control DC-DC USB 0.9V-5V a 5V dc Boost Módulo de Fonte de Alimentação Step-up
  • 1.6 W 5,5 V 266 mA Mini Sistema de Módulo de Painel Solar Carregador de Célula Epóxi Faça Você Mesmo
  • TP405 5V Mini USB 1A Bateria de Lítio Carregador Módulo Carregador
  • Transmissor RF 433Mhz e kit de link de receptor para controle remoto Arduino / ARM / MC <Kit, contém o transmissor e o reveiver
  • Caixa de junção do protetor de chave IP65, invólucro externo à prova d'água 150x110x70mm
  • Novo módulo sensor de temperatura e umidade relativa DHT22 para Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1x Switch Mini, 1x1N4007 diodo
  • Adafruit 16 MHz Ceramic Resonator / Oscillator [ADA1873]
  • Arduino UNO / Mega etc para estação receptora + Raspberry PI 1/2/3
  • Caixa de plástico acrílico transparente (opcional)

Você pode encontrar tudo isso no Ebay. Não quero promover nenhum vendedor com links para suas páginas e, de qualquer maneira, os links serão mortos no futuro.

Notas para a lista de hardware:

Apenas no caso de você travar o Atmega de alguma forma com a programação, compre mais deles, o mesmo vale para o amplificador de voltagem e o controlador de carregamento solar.

O carregador solar contém 2 pequenos LEDs coloridos que só acendem em caso de carregamento solar e indicam (vermelho-> carregando, azul-> estados totalmente carregados). Eles também podem ser dessoldados. Em vez disso, dá um pouco mais de energia extra à bateria durante o carregamento.

Como você pode ver, não há porta-baterias na minha lista. Porque? Porque eles não são confiáveis. Tive inúmeras ocasiões em que a bateria saiu de seu suporte e perdeu a conexão. Especialmente se sua configuração for montada em um poste alto como o meu, aberto para quaisquer condições climáticas adversas. Eu até coloquei a bateria no suporte com 2 zíperes e ela ainda conseguiu se mover. Não faça isso, apenas remova o revestimento externo da bateria e solde os fios diretamente na parte inferior da bateria, contendo o circuito de proteção de sobrecarga (não ignore a proteção). Um suporte de bateria pode ser usado apenas para segurar a bateria no lugar no dispositivo.

Placa de carregamento de bateria de lítio TP405 5V Mini USB 1A: infelizmente esta placa não inclui proteção contra corrente reversa para o painel solar, para isso você precisará de mais 1 diodo a ser colocado entre uma perna do painel solar e o circuito de carregamento para interromper a tentativa de corrente para fluir de volta para o painel solar à noite.

Etapa 5: Montagem

conjunto
conjunto
conjunto
conjunto
conjunto
conjunto

Esta placa contém relativamente poucos componentes e os marcadores na placa são bastante simples.

Certifique-se de NÃO inserir o Atmega328P do lado errado (isso pode aquecer e quebrar o chip, pode destruir o amplificador de tensão também).

Nesta configuração, o chip fica voltado para baixo (pequena marca de orifício em U PIN1). Todos os outros componentes devem ser óbvios.

Use cabo blindado (por exemplo: Cabo de áudio do CDrom é o suficiente) para o LDR. Em alguns casos (ao longo de muitas semanas de teste), descobriu-se que ele está interferindo na transmissão do sinal de rádio. Este foi um daqueles bugs difíceis de solucionar, então se você não quiser problemas, basta usar um cabo blindado, fim da história.

LED: O LED na parte inferior da caixa foi originalmente adicionado para piscar quando houver transmissão de rádio de saída, mas mais tarde considerei isso como perda de energia e pisca apenas 3 vezes no processo de inicialização.

TP: é o ponto de teste para medir a corrente para todo o circuito.

DHT22: Não compre o DHT11 barato, gaste 50 centavos a mais para obter o DHT22 branco, que também pode medir temperaturas negativas.

Etapa 6: Design do caso

Design de Caso
Design de Caso
Design de Caso
Design de Caso
Design de Caso
Design de Caso

Embora seja um pouco exagerado, um cubo impresso em 3D (weather_cube) foi feito para manter o sensor de temperatura DHT22 no lugar. O cubo é colado na parte inferior da caixa IP, apresentando apenas 1 orifício para o ar chegar ao sensor. Eu adicionei uma rede no buraco contra abelhas, vespas e outras pequenas moscas.

Uma caixa externa pode ser usada opcionalmente para tornar a estação mais impermeável, caso você a esteja montando em um suporte de parabólica ao ar livre.

Idéia para 1 recurso útil: adicionar uma grande placa de telhado de metal de 1-2 cm na parte superior da caixa, fornecendo sombra do sol durante o verão, embora isso também possa tirar nossa útil luz do sol do painel. Você pode criar um desenho que separe o painel da caixa (deixando o painel ao sol, a caixa na sombra).

Nas fotos: uma das estações removida do ambiente de trabalho após 1 ano, a voltagem da bateria ainda está em 3,9 V, sem danos de água em qualquer parte da caixa, embora a rede que colei na parte inferior do cubo tenha se despedaçado. O motivo da estação precisar de manutenção é a falha de conexão no conector LDR, embora o cabo de jumper pareça ainda estar no lugar, a conexão foi interrompida, portanto, o pino às vezes estava flutuando, fornecendo leituras analógicas de LDR ruins. Sugestão: se você usar cabos de jumper padrão para PC, coloque cola quente em todos eles depois que a estação estiver funcionando perfeitamente para evitar isso.

Etapa 7: Software

Programas
Programas

O código do software exigirá 3 bibliotecas externas (LowPower, DHT, VirtualWire). Recentemente, tive problemas para encontrar alguns deles on-line facilmente, então os anexei em um arquivo ZIP separado. Independentemente de qual sistema operacional você está usando Linux / Windows, apenas encontre a pasta da biblioteca do seu IDE do Arduino e extraia-os lá.

Só uma observação, apesar de já desaconselhar a compra do DHT11, se você usar o tipo errado de sensor DHT o programa vai ficar travando para sempre no início na seção de inicialização (você nem vai ver o led de inicialização piscar 3 vezes).

O código do loop principal é muito simples, primeiro ele lê os valores do ambiente (temperatura, índice de calor, umidade, solar), os envia por rádio e depois usa a biblioteca de baixa potência para colocar o Arduino em hibernação por 5 minutos.

Descobri que diminuir a taxa de transmissão aumentará a estabilidade das transmissões de rádio. A estação está enviando uma quantidade muito pequena de dados, 300 bps é mais do que suficiente. Também não se esqueça de que o transmissor está operando apenas a partir de aprox. 4.8V, na futura versão 3.3V isso pode levar a uma qualidade de transmissão ainda pior (envio de dados através de paredes e outros obstáculos). Tive um problema ao usar um Arduino Mega acoplado a um Raspberry PI 2 alimentando o Mega do PI, que não recebi nenhuma transmissão. A solução foi alimentar o Mega com uma fonte externa separada de 12V.

Etapa 8: Versão 2 (com base em ESP32)

Versão 2 (baseado em ESP32)
Versão 2 (baseado em ESP32)
Versão 2 (baseado em ESP32)
Versão 2 (baseado em ESP32)
Versão 2 (baseado em ESP32)
Versão 2 (baseado em ESP32)

Tudo o que pode quebrar irá quebrar para citar o bom e velho Murphy e, eventualmente, depois de anos, as estações falharam de maneiras misteriosas. Um começou a enviar dados solares sem sentido que chegavam a dezenas de milhares, o que é impossível devido a: A placa Arduino contém um conversor analógico para digital de 6 canais (8 canais no Mini e Nano, 16 no Mega) de 10 bits. Isso significa que ele mapeará tensões de entrada entre 0 e 5 volts em valores inteiros entre 0 e 1023. Então, depois de substituir o rádio, LDR e reprogramar o Atmega 328P várias vezes, desisti e decidi que é hora de inovar. Vamos ESP32.

A placa que usei foi uma: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi e Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Microcontrolador ESP-32

Tensão operacional 3.3V Pinos de E / S digital 19 Pinos de entrada analógica 6 Velocidade do relógio (máx.) 240 MHz Flash 4M bytes Comprimento 5 mm Largura 2,54 mm Peso 4g

Que ao contrário da foto não tem o logotipo LOLIN (falsificado da China). Minha primeira surpresa agradável foi que a pinagem impressa na placa estava combinando com a pinagem do Arduino! Depois de lidar com tantas pranchas sem nome onde tive que procurar por pinagens o dia todo morto de cansaço de cometer erros, finalmente uma prancha onde a pinagem é direta WoW!

No entanto, aqui está o lado negro da história:

Inicialmente, conectei o LDR ao A15, que é o pino 12, porque foi mais fácil colar os pinos juntos. Então eu tenho 4095 leituras (que é o máximo que você pode obter com AnlogRead no ESP32) que me deixou maluco porque toda a razão pela qual eu reconstruí a estação foram as leituras de LDR quebradas da antiga (o DHT ainda estava funcionando bem) Acontece que:

O esp 32 integra dois registradores ACD de 12 bits. ADC1 com 8 canais anexados a GPIOs 32-39 e ADC2 com 10 canais em outros pinos. O fato é que o ESP32 usa o ADC2 para gerenciar funções wi-fi, então se você usa Wifi, não pode usar esse registro. A API do driver ADC suporta ADC1 (8 canais, anexado aos GPIOs 32 - 39) e ADC2 (10 canais, anexado aos GPIOs 0, 2, 4, 12 - 15 e 25 - 27). No entanto, o uso do ADC2 tem algumas restrições para o aplicativo:

ADC2 é usado pelo driver Wi-Fi. Portanto, o aplicativo só pode usar ADC2 quando o driver Wi-Fi não foi iniciado. Alguns dos pinos ADC2 são usados como pinos de amarração (GPIO 0, 2, 15), portanto, não podem ser usados livremente. Esse é o caso dos seguintes Kits de Desenvolvimento oficiais:

Portanto, conectar o LDR do pino 12 ao A0, que é o VP, resolveu tudo, mas não entendi por que eles estão listando os pinos ADC2 como disponíveis para os fabricantes. Quantos outros hobbist perderam muito tempo até descobrir isso? Pelo menos marque os pinos inutilizáveis com vermelho ou algo assim ou não mencione isso no manual para que outros fabricantes só possam descobrir sobre eles se realmente precisarem deles. O propósito do ESP32 é usá-lo com WIFI, todos usam WIFI.

Um bom começo para configurar o IDE do Arduino para esta placa:

Embora eu tenha colocado no código aqui, ele vai mais uma vez:

Este código pode não ser compilado para outros modelos ESP32 além do Weemos LOLIN 32!

Configurações de compilação: -Use upload / serial: 115200 -Use CPU / ram: 240Mhz (Wifi | BT) -Use flash freq: 80 Mhz

Existem toneladas de estações meteorológicas baseadas em ESP32 na rede, elas são muito mais comuns do que minha versão 1 era com o chip barebone porque são mais fáceis de configurar, você não precisa de um programador, basta conectar o dispositivo no USB e programá-lo e seus o modo de suspensão profunda é excelente para uso prolongado com bateria. De cara, esta foi a primeira coisa que testei antes mesmo de soldar nos pinos de breakout porque, como observei vários lugares neste projeto, a coisa MAIS importante é o consumo de energia e com a bateria atual (falsa) e o pequeno painel solar o modo de espera a energia não pode realmente ultrapassar 1-2 mAs, caso contrário, o projeto não será capaz de se sustentar a longo prazo.

Foi novamente uma agradável surpresa que o modo de suspensão profunda funcione conforme anunciado. Durante o sono profundo, a corrente estava tão baixa que meu multímetro barato nem conseguia medi-la (funciona para mim).

Durante o envio de dados, a corrente foi em torno de 80mA (o que é cerca de 5 vezes mais do que quando o Atmega 328P estava acordando e transmitindo), no entanto, não se esqueça que com o V1 houve um dreno de energia médio de 1mA no LDR em modo de suspensão (que também dependia dos níveis de luz e passou de 0,5mA - 1mA) que agora se foi.

Agora que a bateria UltraFire foi desmontada, se você usar a mesma bateria, aqui está o que você pode esperar:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (2s * 80mA + 300s * 0,01mA) / (2s + 300s) Iavg = 0,5mA

Pavg = VxIavg = 5Vx0,5mA = 2,5 mW

Teórico

Vida útil da bateria = 22000mWh / 2,5mW = 8800 horas = 366 dias aproximadamente

Real

Vida útil da bateria = 800mWh / 2,5mW = 320 horas = 13 dias aproximadamente

Eu não tinha um osciloscópio para medir precisamente o tempo de ativação, mas com meus ajustes ele atinge o máximo em cerca de 2 segundos.

Eu não queria passar a tarde codificando tudo de forma personalizada, então procurei outras estações meteorológicas no Instructables com base no ESP32 para ver o que eles fazem para armazenamento de dados. Infelizmente, percebi que eles estão usando sites inflexíveis e limitados, como o weathercloud. Como não sou fã da "nuvem" e seu código quebrou há muito tempo porque o site mudou sua API desde então, tirei meus 10 minutos para fazer uma solução customizada porque não é tão difícil quanto parece. Vamos começar!

Em primeiro lugar, não há nenhuma foto da placa de circuito separada para este projeto, porque ela usa exatamente os mesmos componentes (desculpe por aquela soldada na imagem da placa de ensaio feia) que o V1 com a diferença de que tudo funciona com 3,3V. O DHT se conectou com um pullup ao VCC, o LDR puxou para baixo com 10k. O problema que se pode ver com as baterias 18650 como a minha chinesa falsa (6500 mAh ultra sun fire lol: D) é que elas começam a curva de descarga por volta de 4.1V new age e vão até o circuito de corte entrar em ação para interromper os danos às células (aqueles que têm a sorte de tê-lo). Isso não é bom para nós como entrada de 3,3V. Embora esta placa LOLIN tenha um conector de bateria de lítio e circuito de carregamento neste projeto, eu queria reformar quase tudo que eu poderia da antiga estação, então com o antigo 18650 você NÃO PODE usar este carregador embutido. A solução foi muito simples: cortei um cabo micro USB soldado no 5V do antigo amplificador de tensão e voila o problema resolvido, já que a placa do microUSB tem regulador.

Portanto, a diferença entre a versão antiga e a nova que na bateria antiga fornece 3,7 V -> impulsionada para 5 V -> ardu funciona em 5 V -> todos os componentes funcionam em 5 V.

No novo: a bateria fornece 3,7 V -> aumentada para 5 V -> regulada por meio de registro onboard no ESP32 -> todos os componentes funcionam em 3,3 V.

Em relação ao software, precisaremos de outra biblioteca DHT também, o DHT do Arduino não é compatível com os ESP. O que precisamos é chamado de DHT ESP.

Comecei a basear meu código em torno do exemplo de DHT fornecido por esse código. O funcionamento do código é:

1, obtenha os dados ambientais dos dados DHT + Solar da fotocélula

2, conecte-se ao wi-fi com IP estático

3, POSTAR os dados em um script php

4, vá dormir por 10 minutos

Como você notará, eu ajustei o código para eficiência para minimizar absolutamente o tempo de ativação, já que ele está consumindo 5 vezes a energia do que o projeto antigo fazia quando era ligado. Como eu fiz isso? Em primeiro lugar, se houver QUALQUER tipo de erro, a função getTemperature () retornará com false (o que significa 10 minutos de repouso novamente). Isso pode ser como o sensor DHT não pode ser iniciado ou a conexão wi-fi não está disponível. Como você pode notar, o loop while () usual para continuar tentando a associação wi-fi para sempre também foi removido, mas um atraso de 1 segundo precisava ser deixado lá, caso contrário, ele nem sempre se conectará e também depende do tipo de AP, carregamento, etc, com que rapidez vai acontecer, com 0,5s eu tenho um comportamento inconsistente (às vezes não conseguia conectar). Se alguém souber de uma maneira melhor de fazer isso por favor deixe nos comentários. Somente quando os dados DHT forem lidos E a conexão wi-fi estiver ativa, ele tentará postar os dados no script no servidor da web. Todos os tipos de funções que perdem tempo, como Serial.println (), também estão desabilitadas no modo operacional normal. Como servidor, também uso IP para evitar uma consulta desnecessária de DNS, em meu código tanto o gateway padrão quanto o servidor dns definido como 0.0.0.0.

Não entendo por que é tão difícil criar sua própria API quando basta:

sprintf (resposta, "temp =% d & hum =% d & hi =% d & sol =% d", temp, hum, hi, sol);

int httpResponseCode = http. POST (resposta);

Você coloca este pequeno código php em qualquer raspberry pi e pode realizar tarefas system () imediatamente com base na telemetria, como ligar os ventiladores ou as luzes se escurecer o suficiente.

Algumas notas sobre o código:

WiFi.config (staticIP, gateway, sub-rede, dns); // DEVE ser depois que o Wifi começar, quão idiota …

WiFi.mode (WIFI_STA); // DEVE, caso contrário, também criará um AP indesejado

Sim, bem, agora você sabe. Além disso, a ordem das configurações de IP pode mudar por meio de plataformas. Tentei outros exemplos primeiro em que os valores de gateway e sub-rede foram trocados. Por que definir IP estático? Bem, é bastante óbvio, se você tem uma máquina dedicada em sua rede como um servidor Linux rodando isc dhcpd, você não quer cem milhões de entradas de log de quando o ESP acorda e obtém o IP do DHCP. Os roteadores normalmente não registram associações, portanto, isso não será visto. Este é o preço da economia de energia.

O V2 nunca foi capaz de se sustentar devido à bateria de má qualidade e eu simplesmente coloquei um adaptador, então se você quiser construir o V1 ou o V2 NÃO compre a bateria mencionada, faça sua própria pesquisa sobre as baterias (qualquer 18650 mais de 2.000 mAh de capacidade anunciada no Ebay é uma fraude com grande probabilidade).

Recomendado: