Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Mini-estação meteorológica Arduino UNO

Componentes e suprimentos

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Arduino Proto Shield
ou um breadboard comum
× 1
Sensor de temperatura DHT22
× 1
Seeed Grove - Sensor de luz
× 1
Seeed Grove - Sensor UV
× 1
Seeed Grove - Sensor Barômetro
× 1
Seeed Grove - Sensor de poeira
× 1
Resistor 1k ohm
× 2
Resistor 10k ohm
× 1
Resistor 4,75 k ohm
× 1
Fios de jumpers (genérico)
× 1

Aplicativos e serviços online

Arduino IDE
API ThingSpeak

Sobre este projeto




Esta é a primeira geração da minha mini estação meteorológica baseada em Arduino com conexão Wi-Fi, que é capaz de postar dados publicamente online usando a plataforma ThingSpeak.

A estação meteorológica coleta os seguintes dados relacionados ao clima e ao meio ambiente usando diferentes sensores:
  • Temperatura
  • Umidade
  • Pressão atmosférica
  • Intensidade da luz
  • índice UV
  • Concentração de poeira

O objetivo é fazer uma pequena e simples estação meteorológica, usando hardware aberto.

Vamos começar e nos divertir!





Componentes eletrônicos


Você não precisará de ferramentas específicas para a montagem deste projeto. Todos os componentes podem ser encontrados online em sua loja de comércio eletrônico favorita.

O circuito é alimentado pela porta USB (conectada a um computador ou carregador de telefone comum), mas você também pode adicionar uma fonte de alimentação DC externa ou uma bateria conectada ao conector de alimentação do Arduino.

Um caso para o circuito de estação meteorológica está fora do escopo deste projeto.





Conectando as peças


Conecte todos os componentes de acordo com o esquema. Você precisará de alguns fios de jumper para conectar cada sensor à placa de ensaio. Você pode usar um proto-escudo (para um circuito mais compacto), uma placa de ensaio comum ou projetar seu próprio escudo Arduino.

Conecte o cabo USB à placa Arduino Uno e prossiga para a próxima etapa.





Código


Supondo que você já tenha instalado o IDE Arduino mais recente, baixe e instale as seguintes bibliotecas:
  • biblioteca DHT22
  • Biblioteca Adafruit BMP085

Para obter instruções sobre como adicionar as bibliotecas ao Arduino IDE, verifique o seguinte guia do Arduino.

Baixe o código do Arduino ( weatherBox.ino ) incluído na seção de código. Substitua XXXXX pelo SSID do seu roteador WiFi, YYYYY pela senha do roteador e ZZZZZ por seu canal ThingSpeak escreva a chave API (veja como obtê-la na próxima etapa).

Conecte a placa Arduino à porta USB do seu computador e faça o upload do código.





Configuração ThingSpeak

  • Crie uma conta ThingSpeak
  • Crie um novo canal

Especifique o nome e a descrição da sua estação meteorológica. Atribua os seguintes canais e salve o canal:
  • canal 1 =luz
  • canal 2 =umidade
  • canal 3 =temperatura (de DHT22)
  • canal 4 =índice UV
  • canal 5 =concentração de poeira
  • canal 6 =pressão
  • canal 7 =temperatura (de BMP085)

Copie a chave de escrita da API. Ele é usado na etapa anterior no código do Arduino. Quando a estação é ligada, os valores do sensor serão carregados para o canal periodicamente. Você pode configurar visualizações públicas e privadas de cada variável.

Exemplo de um canal público:https://thingspeak.com/channels/35540





Usando o aplicativo Android


Você poderá visualizar os dados da estação meteorológica em qualquer navegador. Mas você também pode verificar em seu smartphone com Android e visualizá-lo quando quiser.
  • Baixe e instale o aplicativo ThingsView da Google Play Store em seu dispositivo Android
  • No aplicativo, insira o número do ID do seu canal e clique em adicionar. Você encontrará o ID na configuração do canal ThingSpeak
  • Os valores atuais de cada variável serão exibidos em um gráfico

Divirta-se!

Código

  • weatherBox.ino
weatherBox.ino Arduino
 #include  #include  #include  #include  #include  #include  #define SSID "XXXXX "// substitua XXXXX pelo SSID do roteador # define PASS" YYYYY "// substitua YYYYY pela senha do roteador # define IP" 184.106.153.149 "// thingspeak.com IP # define DHT22_PIN 2String GET =" GET / update? key =ZZZZZ &field1 ="; // substitua ZZZZZ por seu monitor de gravação keySoftwareSerial do canal ThingSpeak (10, 11); // Comunicação serial para o módulo ESP8266 (RX, TX) dht DHT; Adafruit_BMP085_Unified bmp =Adafruit_BMP085_Unified (10085); // Variablesint luminancePin =A0; int uvPin =A1; int dustPin =8; longa duração sem sinal; tempo de início longo sem sinal; sampletime_ms =30000; unsigned long delay_time =60000; unsigned long lowpulseoccupancy =0; float ratio =0; float concentração =0; // setupvoid setup () {// iniciar comunicações seriais Serial.begin (9600); monitor.begin (9600); Serial.println ("Inicializando ..."); // configura os pinos do Arduino pinMode (dustPin, INPUT); // inicializa o sensor de pressão Serial.println ("Detecção do sensor de pressão BMP085 ..."); if (! bmp.begin ()) {Serial.println ("O sensor BMP085 não foi detectado. Verifique suas conexões ou ADDR I2C!"); enquanto (1); } Serial.println ("BMP085 detectado!"); // comunicação com módulo wi-fi monitor.flush (); monitor.println ("AT"); atraso (2000); if (monitor.find ("OK")) {Serial.println ("Comunicação com módulo ESP8266:OK"); } else {Serial.println ("ERRO do módulo ESP8266"); } // conectar roteador wi-fi connectWiFi (); Serial.print ("Amostragem ("); Serial.print (sampletime_ms / 1000); Serial.println ("s) ..."); // inicializa o temporizador starttime =millis ();} void loop () {// medindo a duração das partículas de poeira =pulseIn (dustPin, LOW); ocupação de pulso baixa =ocupação de pulso baixa + duração; // ciclo de 30 segundos if ((millis () - starttime)> =sampletime_ms) {ratio =lowpulseoccupancy / (sampletime_ms * 10.0); // porcentagem (de 0 a 100%) concentração =1,1 * pow (proporção, 3) -3,8 * pow (proporção, 2) + 520 * proporção + 0,62; // da planilha de dados lowpulseoccupancy =0; // lê outros sensores char buffer [10]; // sensor de luz float luminance =analogRead (luminancePin); // Sensor UV float uv =analogRead (uvPin); uv =uv * 0,0049; // converter valores em volts uv =uv * 307; // converter para mW / m² uv =uv / 200; // calcula o índice de UV // temperatura e umidade int chk =DHT.read22 (DHT22_PIN); umidade flutuante =DHT.umidade; temperatura flutuante =DHT.temperatura; // pressão e temperatura1 sensores_event_t evento; bmp.getEvent (&event); pressão flutuante =0; temperatura flutuante1 =0; if (event.pressure) {pressure =event.pressure; bmp.getTemperature (&temperature1); } // converte os valores do sensor em strings String luminanceStr =dtostrf (luminance, 4, 1, buffer); luminanceStr.replace ("", ""); String uvStr =dtostrf (uv, 4, 1, buffer); uvStr.replace ("", ""); String umidadeStr =dtostrf (umidade, 4, 1, buffer); umidadeStr.replace ("", ""); String temperaturaStr =dtostrf (temperatura, 4, 1, buffer); temperaturaStr.replace ("", ""); String dustStr =dtostrf (concentração, 4, 1, tampão); dustStr.replace ("", ""); String pressureStr =dtostrf (pressão, 4, 1, buffer); pressureStr.replace ("", ""); String temperatura1Str =dtostrf (temperatura1, 4, 1, buffer); temperatura1Str.replace ("", ""); // envia dados para ThingSpeak updateSensors (luminanceStr, moistStr, temperatureStr, uvStr, dustStr, pressureStr, temperature1Str); // espera o próximo ciclo de amostragem Serial.print ("Wait"); Serial.print (delay_time / 1000); Serial.println ("s para a próxima amostragem"); Serial.println (); atraso (atraso_tempo); // inicializa o novo ciclo Serial.println (); Serial.print ("Amostragem ("); Serial.print (sampletime_ms / 1000); Serial.println ("s) ..."); hora de início =milis (); }} // Enviar dados para ThingSpeakvoid updateSensors (String luminanceStr, String umidadeStr, String temperatureStr, String uvStr, String dustStr, String pressureStr, String temperature1Str) {String cmd ="AT + CIPSTART =\" TCP \ ", \" "; cmd + =IP; cmd + ="\", 80 "; monitor.println (cmd); atraso (2000); cmd =GET; cmd + =luminanceStr; cmd + ="&field2 ="; cmd + =umidadeStr; cmd + ="&field3 ="; cmd + =temperaturaStr; cmd + ="&field4 ="; cmd + =uvStr; cmd + ="&field5 ="; cmd + =dustStr; cmd + ="&field6 ="; cmd + =pressãoStr; cmd + ="&field7 ="; cmd + =temperatura1Str; cmd + ="\ r \ n"; atraso (1000); int strsize =cmd.length (); monitor.println ("AT + CIPSEND =" + String (strsize)); atraso (2000); monitor.print (cmd); if (monitor.find ("OK")) {Serial.println ("Transmissão concluída com sucesso"); } else {Serial.println ("Falha na transmissão!"); }} void sendDebug (String cmd) {Serial.print ("ENVIAR:"); Serial.println (cmd); monitor.println (cmd);} boolean connectWiFi () {Serial.println ("Conectando wi-fi ..."); String cmd ="AT + CWMODE =1"; monitor.println (cmd); atraso (2000); monitor.flush (); // limpar buffer cmd ="AT + CWJAP =\" "; cmd + =SSID; cmd + =" \ ", \" "; cmd + =PASS; cmd + =" \ ""; monitor.println (cmd); atraso (5000); if (monitor.find ("OK")) {Serial.println ("Conexão bem-sucedida!"); return true; } else {Serial.println ("Falha na conexão!"); retorna falso; } Serial.println ();} 
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/adafruit/Adafruit-BMP085-Libraryhttps://github.com/adafruit/Adafruit-BMP085-Library

Processo de manufatura

  1. Estação meteorológica Raspberry Pi
  2. Sistema de detecção de humanos usando Arduino Uno
  3. Monitoramento de CO2 com Sensor K30
  4. Qual é sua altura?
  5. WebServerBlink usando Arduino Uno WiFi
  6. Calculadora UNO simples
  7. Arduino Cloud Sensor Tower
  8. Persistência da visão
  9. Estação meteorológica local
  10. Estação de Monitoramento de Saúde