Índice:

Registrador de temperatura WiFi (com ESP8266): 11 etapas (com imagens)
Registrador de temperatura WiFi (com ESP8266): 11 etapas (com imagens)

Vídeo: Registrador de temperatura WiFi (com ESP8266): 11 etapas (com imagens)

Vídeo: Registrador de temperatura WiFi (com ESP8266): 11 etapas (com imagens)
Vídeo: COMO FUNCIONA O SENSOR DHT22? + PROJETO de sensoriamento de TEMPERATURA e UMIDADE via BLUETOOTH! 2024, Julho
Anonim
Image
Image
Materiais
Materiais

Olá, fico feliz em ver você aqui. Espero que neste manual você encontre algumas informações úteis. Sinta-se à vontade para me enviar sugestões, dúvidas,… Aqui estão alguns dados básicos e uma visão geral rápida do projeto. Para usuários móveis: Vídeo. Deixe-me saber o que você acha do projeto na seção de comentários, obrigado. Recentemente, comprei uma placa NodeMcu (baseada em esp8266) apenas para experimentá-la, então este não é um projeto realmente avançado. Mas funciona e é o que eu preciso, então está tudo bem. A função principal desse data logger é coletar a temperatura e salvá-la em um servidor. Isso permite que os usuários verifiquem dados e gráficos online, mesmo quando não estão no mesmo local do registrador (por exemplo, para uma estação meteorológica). Outro recurso útil é a atualização OTA incluída no código que permite ao usuário atualizar e personalizar o software facilmente. Analisarei dois sensores e seu método de aquisição relacionado para fazer um balanço de todos os prós e contras.

Spoiler: após alguns testes, descobri que um sensor digital como o DS18B20 é a melhor solução porque oferece estabilidade e maior precisão. Já é à prova d'água e com cabo.

Etapa 1: Materiais

Materiais
Materiais
Materiais
Materiais
Materiais
Materiais

Este é um projeto mínimo com apenas alguns componentes externos, para isso a lista de BOM será muito curta. No entanto, vamos ver que material é solicitado:

  • NodeMcu V3 (ou qualquer processador ESP8266 μ compatível);
  • Led RGB (ânodo comum);
  • Resistores para led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (termômetro integrado Maxim);
  • LM35 (termômetro do Texas Instrument);
  • Bateria externa (opcional);
  • Cabo;
  • Conector (para torná-lo mais "avançado");
  • Box (opcional, novamente para torná-lo mais "avançado");
  • Suporte para led (opcional);

Nota: Como eu disse, você precisa escolher um dos dois métodos. Se você escolher o termômetro LM35, precisará de alguns outros componentes:

  • Attiny45 / 85;
  • Programador AVR (ou Arduino como ISP);
  • Resistor (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Conector de tira de 2,54 mm (opcional)
  • Diodo (2x1N914)
  • Perfboard ou PCB;

Etapa 2: Escolha do sensor

Escolhendo o Sensor
Escolhendo o Sensor

Escolher o sensor pode ser uma etapa difícil: hoje existem toneladas de transdutores (a TI oferece 144 elementos diferentes) analógicos e digitais com faixa de temperatura, precisão e case diferentes. Sensores analógicos (46 peças disponíveis na TI): Prós:

  • O registrador de dados pode ser facilmente alterado de temperatura para outra quantidade (tensão, corrente, …);
  • Pode ser um pouco mais barato;
  • Fácil de usar, pois não requer nenhuma biblioteca especial;

Contras:

  • Requer ADC (que pode influenciar a precisão da medição) e outros componentes externos. Como esp8266 tem apenas um ADC (e não é realmente preciso), sugiro usar um externo.
  • Necessita de cabo dedicado com rejeição de ruído, pois qualquer tensão induzida pode alterar o resultado.

Depois de pensar um pouco, decidi usar o LM35, um sensor linear com fator de escala de + 10mV / ° C com precisão de 0,5 ° C e uma corrente muito baixa (cerca de 60uA) com uma tensão de operação de 4V a 30V. Para mais detalhes, sugiro ver a ficha técnica: LM35.

Sensores digitais (altamente recomendado) Prós:

Quase todos os componentes externos necessários;

ADC integrado

Contras:

Solicitar biblioteca ou software para decodificar o sinal digital (I2C, SPI, Serial, One Wire, …);

Mais caro;

Escolhi o DS18B20 porque encontrei um conjunto de 5 sensores à prova d'água na Amazon e porque está amplamente documentado na Internet. A característica principal é a medição de 9-12 bits, barramento de 1 fio, tensão de alimentação de 3,0 a 5,5, precisão de 0,5 ° C. Novamente, para mais detalhes aqui está a ficha técnica: DS18B20.

Etapa 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Vamos analisar como implementei o ADC externo e outros recursos para o termômetro LM35. Encontrei um cabo com três fios, um com blindagem e dois sem. Decidi adicionar um capacitor de desacoplamento para estabilizar a tensão de alimentação perto do sensor. Para converter a temperatura analógica em digital, usei o microprocessador Attiny85 em um pacote dip8 (novamente para obter mais informações, consulte a ficha técnica: attiny85). A coisa mais importante para nós é o ADC de 10 bits (não é realmente o melhor, mas é preciso o suficiente para mim). Para me comunicar com o Esp8266 decidi usar a comunicação Serial tendo em mente que o esp8266 funciona com 3,3V e attiny85 a 5V (pois precisa alimentar o sensor). Para isso, usei um divisor de tensão simples (veja o esquema). Para ler a temperatura negativa precisamos adicionar alguns componentes externos (2x1N914 e 1x18k resistor), já que não quero usar fonte de alimentação negativa. Aqui está o código: repositório TinyADC. Nota: para compilar este código você precisará instalar attiny to ide (insira na opção: https://drazzy.com/package_drazzy.com_index.json), se você não sabe como fazer, basta pesquisar no Google. Oou fazer upload do arquivo.hex diretamente.

Etapa 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Comprei esses sensores da Amazon (5 custa cerca de 10 €). Chegou com uma tampa de aço inoxidável e um cabo de 1m de comprimento. Este sensor pode retornar dados de temperatura de 9 a 12 bits. Muitos sensores podem ser conectados no mesmo pino, já que todos eles têm um ID único. Para conectar o DS18B20 ao esp8266, você pode apenas seguir o esquema (segunda foto). Já que decidi que meu logger teria três sondas, tive que distinguir qual é qual. Então pensei em dar a eles uma cor associada via software ao endereço deles. Usei um tubo termoencolhível (terceira foto).

Etapa 5: Código ESP8266

Código ESP8266
Código ESP8266
Código ESP8266
Código ESP8266

Como sou novo neste mundo, decidi usar várias bibliotecas. Conforme dito na introdução, os principais recursos são:

  • Atualização OTA: você não precisa conectar o esp8266 ao seu computador toda vez que precisar fazer o upload do código (você precisa fazer isso apenas na primeira vez);
  • Gerenciador sem fio, se a rede sem fio mudar, você não precisa recarregar o esboço. Você pode simplesmente configurar novamente os parâmetros de rede conectando-se ao ponto de acesso esp8266;
  • Transmissão de dados Thingspeak;
  • Suporta LM35 e DS18B20;
  • Interface de usuário simples (LED RGB indica algumas informações úteis);

Peço desculpas porque meu software não é o melhor e não está muito bem ordenado. Antes de fazer o upload para o dispositivo, você precisa alterar alguns parâmetros para ajustar o código à sua configuração. Aqui você pode baixar o software. Configuração comum do LM35 e DS18B20Você precisa alterar a definição do pino, token, número do canal, usuário e senha para atualização OTA. Linha de 15 a 23.

#define vermelho SEU PINHERE #define verde SEU PINHERE

#define blue YOURPINHERE const char * host = "selecione o endereço do host"; // não é realmente necessário, você pode deixar esp8266-webupdate const char * update_path = "/ firmware"; // para alterar o endereço para atualização ex: 192.168.1.5/firmware const char * update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Etapa 6: Código ESP8266: Usuário LM35

Você precisa conectar a placa attiny ao esp8266, para alimentar a unidade ADC, use o pino VU e o pino G. Você precisa escolher qual pino deseja usar para comunicação serial (para manter a serial do hardware livre para fins de depuração). O pino Tx deve ser selecionado, mas não é realmente usado. (Linha 27). SoftwareSerial mySerial (RXPIN, TXPIN); No topo você precisa adicionar: #define LM35USER

Etapa 7: Código ESP8266: Usuário DS18B20

Como primeira operação, você precisa identificar o endereço do dispositivo para cada sensor. Compile e programe este código para o esp e procure os resultados em série. O código pode ser encontrado aqui (pesquise este título na página: «Ler endereços internos individuais do DS18B20»). Conecte apenas um sensor para obter o endereço, os resultados devem ser algo como este (número aleatório aqui! Apenas como exemplo): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Então você precisa alterar meu código na seção " Configuração para DS18B20 "(linha 31 a 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (de 9 a 12) #define delayDallas READINTERVAL // (em milissegundos, mínimo é 15s ou 15000mS) DeviceAddress blueSensor = {0x11, 0x2217 0x12}; // ALTERE COM SEU ENDEREÇO DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ALTERE COM SEU ENDEREÇO DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ALTERE COM SEU ENDEREÇO No topo você precisa adicionar: #define DSUSER

Etapa 8: Pequeno truque ESP8266

ESP8266 Little Trick
ESP8266 Little Trick

Depois de alguns testes, descobri que, se você conectar o esp8266 sem programação, ele não executará o código até que você pressione reset uma vez. Para resolver esse problema, depois de um pouco de pesquisa, descobri que é necessário adicionar um resistor pull-up de 3,3 V a D3. Isso dirá ao processador para carregar o código da memória flash. Com este método, D3 pode ser usado diretamente para a entrada de dados para sensores DS18B20.

Etapa 9: Operação pela primeira vez

Operação pela primeira vez
Operação pela primeira vez
Operação pela primeira vez
Operação pela primeira vez

Se você carregou o código corretamente, mas nunca usa a biblioteca do gerenciador de Wifi, é hora de configurar sua conexão wi-fi. Espere até ver o led RGB piscando mais rápido do que antes, então procure com seu celular ou PC a rede wi-fi chamada "AutoConnectAp" e conecte. Após a conexão, abra um navegador da web e entre em 192.168.4.1, você encontrará a interface GUI do gerenciador wi-fi (veja as fotos) e pressione "Configurar Wifi". Aguarde até que esp8266 pesquise redes wi-fi e selecione a desejada. Insira a senha e pressione "salvar". O Esp8266 irá reiniciar (não se preocupe com o LED RGB desta vez, porque irá produzir algumas informações aleatórias) e se conectará à rede.

Etapa 10: Conclusão

Conclusão
Conclusão
Conclusão
Conclusão
Conclusão
Conclusão
Conclusão
Conclusão

No final, aqui está um gráfico tirado do registrador de dados em ação ao registrar a temperatura do meu freezer. Em laranja está o DS18B20 e em azul o LM35 e seu circuito. Você pode ver a maior diferença na precisão do sensor digital para o analógico (com meu pobre "circuito ADC") que fornece alguns dados não físicos. Resumindo, se você quiser construir este logger, sugiro usar o sensor de temperatura digital DS18B20, pois é mais fácil de ler e quase "plug and play", é mais estável e preciso, funciona a 3,3V e requer apenas um pino para vários sensores. Obrigado pela atenção, espero que este projeto seja bom para você e para você encontrou algumas informações úteis. E para quem quiser perceber, desejo ter dado todas as informações necessárias. Se não se sinta à vontade para perguntar tudo, terei todo o gosto em responder a todas as questões. Como não falo inglês, se algo estiver errado ou incompreensível, por favor me avise. Se você gostou deste projeto, vote para os concursos e / ou deixe um comentário ☺. Isso vai me encorajar a continuar atualizando e publicando novos conteúdos. Obrigada.

Recomendado: