Índice:
- Etapa 1: vá às compras
- Etapa 2: configuração e plano de fundo
- Etapa 3: O Arduino - Parte ESP12
- Etapa 4: Testar o ESP como um cliente Network Time Protocol (NTP)
- Etapa 5: Testando o Sensor DHT22
- Etapa 6: Juntando tudo …
- Etapa 7: O lado do servidor das coisas
Vídeo: Sensor de temperatura da rede doméstica: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
O que você precisa saber para fazer este projeto:
Você precisa saber sobre: - Algumas habilidades eletrônicas (soldagem)
- Linux
- IDE Arduino
(você precisará atualizar placas adicionais no IDE: https://arduino.esp8266.com/stable/package_esp8266 …)
- atualizar / programar uma placa ESP por meio do Arduino IDE.
(existem alguns bons tutoriais disponíveis na web)
Isso pode ser feito usando um Arduino Uno ou um FTDI (adaptador USB para serial).
Usei meu Uno porque não tinha nenhuma porta serial no meu PC nem tinha um FTDI
Etapa 1: vá às compras
O que você precisa para fazer isso acontecer?
Para o sensor digital de temperatura e umidade:
- Uma placa de ensaio ou uma alternativa como protótipo pcb, solda, ferro de solda …
- Algum fio
- dois jumpers
- um resistor de 10k Ohm
- um ESP12F (outros modelos também podem funcionar …)
- um DHT22 (um pouco mais caro do que o DHT11, mas mais preciso)
- 3 baterias recarregáveis AA e um suporte de bateria
- uma pequena caixa de plástico para colocar seu projeto
- Em uma fase posterior, pretendo adicionar um HT7333 com dois capacitores de 10uF entre a bateria e o ESP
para estabilizar a tensão de entrada (VCC) para os 3,3 V recomendados, mas também para proteger o ESP de sobretensão.
Para a parte da rede:
- Sua rede WiFi doméstica
Para a parte do servidor:
- Qualquer sistema baseado em Linux (sempre ligado!)
Usei um Raspberry Pi (que também uso como servidor para minhas câmeras IP externas).
- compilador gcc para compilar o código do seu servidor
- pacote rrdtool para armazenar os dados e gerar gráficos
- apache (ou outro servidor web)
Seu PC ou laptop favorito com IDE Arduino.
Etapa 2: configuração e plano de fundo
Nesta versão de um WiFi conectado - para não dizer IOT - sensor de temperatura e umidade usei um ESP12F, um DHT22 e um porta-pilhas 3 AA com pilhas recarregáveis.
A cada 20 minutos, o ESP faz uma medição do DHT22 e a envia para um servidor (um Raspberry Pi) por UDP na minha rede WiFi doméstica. Depois que as medições foram enviadas, o PES adormece profundamente. Isso significa que apenas o relógio de tempo real do módulo permanece energizado, resultando em uma economia de energia incrível. Por cerca de 5 segundos, o módulo requer cerca de 100mA, então durante os 20 minutos em sono profundo apenas 150uA.
Não queria usar nenhum serviço baseado na Internet porque tenho o meu Raspberry Pi que está sempre ligado de qualquer maneira e desta forma tive o prazer de escrever a parte do servidor também.
No servidor (um Raspberry Pi executando Raspbian), escrevi um ouvinte UDP simples (servidor) que armazena os valores em um RRD simples. (Banco de dados Round Robin usando RRDtool de Tobias Oetiker.)
A vantagem do RRDtool é que você cria seu banco de dados uma vez e o tamanho permanece o mesmo. Além disso, você não precisa ter um servidor de banco de dados (como mySQLd) em execução em segundo plano. RRDtool fornece as ferramentas para criar o banco de dados e gerar os gráficos.
Meu servidor cria os gráficos periodicamente e exibe tudo em uma página http muito simples. Posso consultar minhas leituras com um navegador simples, conectando-me ao servidor da web Apache2 no Raspberry Pi!
Finalmente, eu não tinha um FTDI (USB para Serial) então usei meu Arduino UNO. Você precisa conectar os TX's e RX's e o GND do ESP e do UNO. (Eu sei, seu instinto pode lhe dizer para cruzar RXs e TXs … tentei também, não funciona.)
Não fiz uma conversão de nível (UNO: Alto = 5V, mas ESP é basicamente um dispositivo de 3,3V … Existem alguns FTDIs legais no mercado onde você pode até selecionar seu nível Alto para 5 ou 3,3V.
Meu circuito é alimentado por 3 baterias recarregáveis AA - então, na verdade, 3 X 1,2V. Em uma fase posterior, pretendo colocar um HT7333 entre a bateria e o circuito por segurança; baterias recém-carregadas podem ter mais de 1,2 V e o ESP deve ser alimentado com mín. 3V e máx. 3,6 V Além disso, se eu decidir - em um momento de fraqueza - colocar pilhas alcalinas (3 X 1,5 V = 4,5 V) meu ESP não vai fritar!
Também pensei em usar um painel solar de 10 x 10 cm, mas não valeu a pena. Fazendo 3 medições por hora (basicamente 3x 5 segundos @ 100mA máx. E o resto do tempo @ 100uA), espero alimentar meu circuito por 1 ano com as mesmas baterias recarregáveis.
Etapa 3: O Arduino - Parte ESP12
Fiz este projeto em diferentes etapas.
Existem vários links que ajudam a importar o ESP12 (também conhecido como ESP8266) para o IDE do Arduino. (Tive de usar a versão 2.3.0 em vez da mais recente por causa de um bug que pode ter sido resolvido entretanto …)
Comecei conectando o ESP, através do meu Arduino UNO (usado apenas como uma ponte entre o meu PC via USB para o serial) à interface serial do ESP. Existem instructables separados que explicam isso.
No meu projeto concluído, deixei os fios para conectar ao Serial no caso de precisar solucionar o problema. RX
Em seguida, você precisa conectar seu ESP12 da seguinte maneira:
Pinos ESP …
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Inicialmente, tentei alimentar meu ESP com 3,3 V no UNO, mas rapidamente mudei para alimentar meu ESP com uma fonte de alimentação de bancada, mas você pode usar sua bateria também.
GPIO0 Liguei este aqui com um jumper no GND para habilitar o piscar (= programação) do ESP.
Primeiro teste: deixe o jumper aberto e inicie um monitor serial no IDE do Arduino (a 115200 baud!).
Desligue e ligue o ESP, você deve ver alguns caracteres inúteis e, em seguida, uma mensagem como:
Ai-Thinker Technology Co. Ltd. pronta
Nesse modo, o ESP atua um pouco como um modem antigo. Você precisa usar comandos AT.
Experimente os seguintes comandos:
AT + RST
e os dois comandos a seguir
AT + CWMODE = 3
OK
AT + CWLAP
Isso deve fornecer uma lista de todas as redes WiFi na área.
Se estiver funcionando, você está pronto para a próxima etapa.
Etapa 4: Testar o ESP como um cliente Network Time Protocol (NTP)
No IDE do Arduino, em Arquivo, exemplos, ESP8266WiFi, carregue o NTPClient.
Pequenos ajustes são necessários para que funcione; você precisa inserir seu SSID e senha de sua rede sem fio.
Agora coloque o jumper, curto-circuitando GPIO0 a GND.
Desligue e ligue o ESP e carregue o esboço para o ESP.
Após a compilação, o upload para o ESP deve começar. O LED azul no ESP piscará rapidamente enquanto o código está sendo baixado.
Percebi que tive que brincar um pouco reiniciando o IDE, reiniciando o ESP antes que o upload funcionasse.
Antes de começar a compilar / carregar o esboço, certifique-se de fechar o console serial (= monitor serial) porque isso o impedirá de fazer o upload.
Assim que o upload for bem-sucedido, você pode reabrir o monitor serial para ver o ESP obtendo efetivamente o tempo da Internet.
Ótimo, você programou seu ESP, conectou-se ao WiFi e aproveitou o tempo da Internet.
Na próxima etapa, testaremos o DHT22.
Etapa 5: Testando o Sensor DHT22
Agora, alguma fiação extra é necessária.
Pinos DHT … Conecte o pino 1 (à esquerda) do sensor ao VCC (3,3 V)
Conecte o pino 2 ESP GPIO5 (DHTPIN no esboço)
Conecte o pino 4 (à direita) do sensor ao TERRA
Conecte um resistor de 10K do pino 2 (dados) ao pino 1 (alimentação) do sensor.
Semelhante ao teste NTP, encontre o esboço do DHTtester e ajuste-o da seguinte maneira:
# define DHTPIN 5 // selecionamos GPIO5 para conectar ao sensor # define DHTTYPE DHT22 // já que estamos usando um DHT22, mas este código / biblioteca também é adequado para DHT11
Novamente, feche o monitor serial, desligue e ligue o ESP e compile e atualize o ESP.
Se tudo correr bem, você deverá ver as medições no monitor serial.
Você pode brincar um pouco com o sensor. Se você respirar nele, verá que a umidade aumenta.
Se você tiver uma lâmpada de mesa (não LED), pode iluminar o sensor para aquecê-lo um pouco.
Excelente! Duas grandes partes do sensor agora estão funcionando.
Na próxima etapa, comentarei sobre o código final.
Etapa 6: Juntando tudo …
Mais uma vez, alguma fiação extra … isso é para tornar o DeepSleep possível.
Lembre-se, DeepSleep é uma função incrível para dispositivos IoT.
No entanto, se o seu sensor estiver conectado ao DeepSleep, pode ser difícil reprogramar o ESP, então vamos fazer outra conexão de jumper entre
GPIO16-RST.
Sim, DEVE ser GPIO16, porque esse é o GPIO que está programado para despertar o dispositivo quando o relógio em tempo real dispara após o DeepSleep!
Enquanto você está testando, você pode decidir fazer um DeepSleep de 15 segundos.
Quando eu estava depurando, movia o jumper para GPIO0 para poder atualizar meu programa.
Após a conclusão do download, eu moveria o jumper para GPIO16 para que o DeepSleep funcionasse.
O código do ESP é denominado TnHclient.c
Você deve alterar seu SSID, senha e o endereço IP do seu servidor.
Existem linhas extras de código que você pode usar para solucionar problemas ou testar sua configuração.
Etapa 7: O lado do servidor das coisas
É um equívoco comum que o UDP não é confiável e o TCP é …
Isso é tão bobo quanto dizer que um martelo é mais útil do que uma chave de fenda. Eles são simplesmente diferentes ferramentas muito úteis e ambos têm seus usos.
A propósito, sem UDP a Internet não funcionaria … DNS é baseado em UDP.
Então, escolhi o UDP porque é muito leve, fácil e rápido.
Tendo a pensar que meu WiFi é muito confiável, o cliente enviará no máximo 3 pacotes UDP se a confirmação "OK!" não é recebido.
O código C para o TnHserver está no arquivo TnHServer.c.
Existem vários comentários no código explicando isso.
Precisaremos de algumas ferramentas extras no servidor: rrdtool, apache e talvez tcpdump.
Para instalar o rrdtool no Raspbian, você pode simplesmente instalar o pacote como este: apt-get install rrdtool
Se você precisa depurar o tráfego de rede, tcpdump vem a calhar apt-get install tcpdump
Eu precisava de um servidor web para poder usar um navegador para consultar os gráficos: apt-get install apache2
Usei esta ferramenta: https://rrdwizard.appspot.com/index.php para obter o comando para criar o banco de dados Round Robin. Você só precisa executar isso uma vez (se acertar na primeira vez).
rrdtool create TnHdatabase.rrd --start now-10s
- passo '1200'
'DS: Temperatura: MEDIDOR: 1200: -20,5: 45,5'
'DS: Umidade: MEDIDOR: 1200: 0: 100,0'
'RRA: AVERAGE: 0,5: 1: 720'
'RRA: AVERAGE: 0,5: 3: 960'
'RRA: AVERAGE: 0,5: 18: 1600'
Finalmente, uso uma entrada crontab para reiniciar meu TnHserver todos os dias à meia-noite. Eu executo o TnHserver como um usuário normal (ou seja, NÃO root) como medida de segurança.
0 0 * * * / usr / bin / pkill TnHserver; / home / user / bin / TnHserver> / dev / null 2> & 1
Você pode verificar se o TnHserver está em execução fazendo
$ ps -elf | grep TnHserver
e você pode verificar se ele está ouvindo pacotes na porta 7777 fazendo
$ netstat -anu
Conexões de Internet ativas (servidores e estabelecidas)
Endereço local Proto Recv-Q Send-Q Estado de endereço estrangeiro
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Finalmente, CreateTnH_Graphs.sh.txt é um script de exemplo para gerar os gráficos. (Eu gero os scripts como root, talvez você não queira fazer isso.)
Usando uma página da Web muito simples, você pode ver os gráficos de qualquer navegador em sua rede doméstica.
Recomendado:
Rede de sensores de temperatura: 6 etapas
Rede de sensores de temperatura: Temperatura e umidade são dados vitais em seu laboratório, cozinha, linha de fabricação, escritório, robôs assassinos e até mesmo em sua casa. Se você precisa monitorar vários locais ou salas ou espaços, você precisa de algo que seja confiável, compacto, preciso e af
Rede doméstica OpenWrt: 9 etapas (com imagens)
Rede doméstica OpenWrt: OpenWrt é uma distribuição Linux de código aberto que os usuários geralmente instalam em seus roteadores Wi-Fi domésticos prontos para uso. Segurança: Firmware de roteador baseado em OpenWrt costuma ser mais seguro do que o firmware de roteador doméstico padrão, pois recebe segurança regular atualiz
Como configurar uma rede doméstica: 6 etapas
Como configurar uma rede doméstica: Configurar uma rede pode parecer assustador no início, mas depois de ter tudo o que precisa, é muito fácil de fazer. A configuração tradicional requer um modem e roteador, mas alguns podem precisar de mais equipamentos e outros, de menos. Existem muitas diferenças
Controlador de rede do sensor de temperatura tolerante a falhas: 8 etapas
Controlador de rede do sensor de temperatura tolerante a falhas: este instrutivo mostra como converter uma placa Arduino Uno em um controlador de propósito único para um conjunto de sensores de temperatura DS18B20 capazes de isolamento automatizado de sensores defeituosos. O controlador pode gerenciar até 8 sensores com o Arduino Uno. (UMA
Inversor conectado à rede DIY (não alimenta a rede) Alternativa de UPS: 7 etapas (com fotos)
Inversor DIY Grid Tied (não alimenta a rede) Alternativa de UPS: Este é um post de acompanhamento do meu outro Instructable sobre como fazer um inversor de rede que não realimenta a rede, uma vez que agora é sempre possível fazer isso em certas áreas como um projeto DIY e alguns lugares não permitem a alimentação lá g