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

AWS - Estação meteorológica Arduino

Componentes e suprimentos

Arduino UNO
× 1
Cabo USB-A para Micro-USB
× 1
Breadboard (genérico)
× 1
Fios de jumpers (genérico)
× 1
Plexiglass 4 mm
× 1
Resistor 221 ohm
× 1
Adafruit LCD padrão - 16x2 branco em azul
× 1
Maxim Integrated DS1307 64 x 8, Serial, I²C Real-Time Relógio
× 1
Resistor de foto
× 1
Sensor DHT11 de Temperatura e Umidade (4 pinos)
× 1
Sensor de temperatura
× 1
Receptor IR (genérico)
× 1
Sensor de nível de água
× 1
Sunfounder Starter RFID Kit
× 1

Ferramentas e máquinas necessárias

Cortador a laser (genérico)

Sobre este projeto


AWS, Arduino Weather Station, fornece dados precisos 24 horas por dia para o ambiente. Em particular, é baseado em uma placa de microcontrolador Arduino e suporta um conjunto completo de sensores para a análise do ambiente.





O objetivo


O objetivo desse controle até é detectar uma série de dados através dos sensores descritos acima e fazer a interface com o usuário através de uma tela LCD. O pequeno tamanho do “hardware” do projeto permite fechá-lo em uma caixinha feita com a máquina lasercut.





Sensores usados ​​





Sensor de nível de água e neve


O indicador de nível de água é usado para indicar o nível de água no tanque superior, através dele podemos evitar o transbordamento de água, e a qualquer momento podemos saber o nível de água no tanque.





Sensor de umidade e temperatura DHT11


O sensor digital de temperatura e umidade DHT11 é um sensor combinado de temperatura e umidade de saída de sinal digital calibrado, cujos módulos específicos da aplicação capturam tecnologia e tecnologia de sensor digital de temperatura e umidade para garantir produtos com alta confiabilidade e excelente estabilidade de longo prazo. O produto tem excelente qualidade, resposta rápida, capacidade anti-interferência, baixo custo e outras vantagens.





Fotorresistor


Os fotorresistores, também conhecidos como resistores dependentes de luz (LDR), são dispositivos sensíveis à luz usados ​​com mais frequência para indicar a presença ou ausência de luz ou para medir a intensidade da luz. No escuro, sua resistência é muito alta, mas quando o sensor LDR é exposto à luz, a resistência cai drasticamente, até mesmo alguns ohms, dependendo da intensidade da luz.





Tela LCD I2C 1602


LCD1602 com um barramento I2C é um tipo de barramento serial. É um barramento serial de alto desempenho que possui regulagem de barramento e função de sincronização de dispositivo de alta ou baixa velocidade exigida pelo sistema de host múltiplo. O potenciômetro azul no I2C LCD1602 é usado apenas para a luz de fundo.

O I2C usa apenas duas linhas de drenagem aberta bidirecionais, Serial DataLine (SDA) e Serial Clock Line (SCL), puxadas com resistores. As tensões típicas usadas são +5 V ou +3,3 V, embora sistemas com outras tensões sejam permitidos.





Módulo de relógio em tempo real DS1302


É baseado no DS1302 integrado, dentro do qual há um relógio / calendário em tempo real e 31 bytes de RAM estática. Você pode ver o formato da hora como hh / mm / ss, enquanto o formato da data é aaaa / mm / dd.





Sensor de temperatura LM35


O sensor de temperatura de precisão LM35 é um sensor que detecta a temperatura de maneira muito precisa. O conversor analógico para digital (ADC) converte valores analógicos em uma aproximação digital com base na fórmula ADCValue =amostra * 1024 / tensão de referência (+ 5v). Portanto, com uma referência de +5 volts, a aproximação digital será =tensão de entrada * 205.





Receptor infravermelho e controle remoto


Esses dois componentes trabalham juntos:o receptor ir permite a recepção de dados do controle remoto. Os dados dependem de qual botão você deseja pressionar. Os seguintes botões foram escolhidos para atribuí-los a funções específicas:
  • Botão 0:você pode ver a hora e a data na tela LCD.
  • 1 Botão:você pode ver os dados de temperatura do LM35 e os dados de umidade do DHT11 na tela LCD.
  • 2 Botão:você pode ver a porcentagem de escuridão na tela LCD.
  • 3 Botão:você pode ver o valor do nível de fluido (mm) na tela LCD.
  • Botão “Ciclo”:você pode ver todas as telas em um intervalo de tempo de 4 segundos entre si.





O A.W.S.





Etapa 1:construção da caixa


Depois de considerar o tamanho do projeto, procedemos com a construção da caixa de plexiglas. Os tamanhos das faces com seus respectivos assentos intertravados e orifícios para a saída dos fios do sensor foram projetados com o software Autocad, depois cortamos as faces com a máquina de lasercut. E finalmente reunimos tudo com alguma cola poderosa.





Etapa 2:conexões esquemáticas e de hardware


Aqui está a imagem do esquema da Estação Meteorológica Arduino. Isso foi feito com software estragado. As conexões são bastante simples.

Etapa 3:Arduino programação

Fizemos o código no Arduino IDE, usamos todas as bibliotecas de que precisávamos e o programamos para que nossa estação meteorológica funcione como queríamos.

Etapa 4:Como funciona

AWS ( Estação meteorológica Arduino ) é uma estação meteorológica que coleta alguns dados do ambiente e os permite ver usando um controle remoto infravermelho. Para fazer a interface com os usuários, possui um display LCD com cinco telas diferentes intercambiáveis ​​pelo usuário.

Estas são as telas:

1. Tela inicial: é a primeira tela que o usuário pode ver quando ligamos a placa. Ele apresenta o projeto com as palavras “Arduino Weather Station”, que têm um efeito de desvanecimento específico. Você pode ver essa tela também após cada vez que você pedir para a AWS ver alguns dados.

2. Tela de data e hora: é a primeira tela que o usuário pode acessar, bastando para isso pressionar o botão 0 do controle remoto. Quando pressionado, a tela tem um atraso de 10 segundos e, em seguida, retorna à tela inicial.

3. Tela de umidade e temperatura: é a tela que dá os dados recebidos pelos sensores DHT11 e LM35 sobre umidade e temperatura respectivamente. Ele é conectado ao botão 1 no controle remoto e, quando pressionado, a tela tem um atraso de 10 segundos e, em seguida, retorna à tela inicial.

4. Tela de escuridão: é a tela que dá os dados recebidos pelo LDR sobre a quantidade de luz no sensor. Mostra a porcentagem de escuridão no sensor. Ele é conectado ao botão 2 no controle remoto e, quando pressionado, a tela tem um atraso de 10 segundos e, em seguida, retorna à tela inicial.

5. Tela de nível de fluido: esta tela dá a altura de uma quantidade de fluido em uma receita. Ele é conectado ao botão 3 do controle remoto e, ao ser pressionado, a tela tem um atraso de 10 segundos e retorna à tela inicial.

As últimas quatro telas podem ser visualizadas em sucessão com um intervalo de tempo de 4 segundos uma da outra, pressionando o botão Ciclo no controle remoto. Com este modo, apenas uma volta de informação é realizada.





Precauções


O primeiro fato a ser considerado para a boa longevidade deste projeto é evitar qualquer contato de líquidos ou outras substâncias nocivas com a placa e com a estação em geral.

Após uma precipitação é necessário esvaziar o reservatório de água, verificar e limpar o sensor.

A bateria recarregável dura cerca de dois dias, por isso é necessário recarregá-la (cerca de 2 horas) se for para descarregar.

Provavelmente às vezes o sensor infravermelho não funciona tão bem quanto queremos, então sua função pode ser interrompida em baixas temperaturas (cerca de 0 graus). Não representa nenhum problema, na verdade é necessário apenas abrir a caixa e pressionar o botão reset:o AWS voltará a funcionar normalmente.

Se pressionarmos o botão reset, o módulo RTC DS1302 não mudará seu valor de data e hora, graças à bateria de suporte presente no módulo que dura cerca de 10 anos.

Se a alimentação do AWS for removida, a data e a hora serão alteradas. Para resolver o problema é necessário reconfigurá-los no ponto indicado na lista de acordo com suas preferências. Depois de carregado, você precisa ocultar as configurações do programa conforme indicado abaixo.
  Antes:Tempo t (2017, 12, 03, 10, 15, 00, 1); rtc.time (t); Depois:// Tempo t (2017, 12, 03, 10, 15, 00, 1) //; rtc.time (t);  





Código

  // incluir bibliotecas de esboço # include  #include  // biblioteca de relógio # incluir  // biblioteca de relógio # incluir  // relógio library # include  // dht11 library # include  // Biblioteca LCD # include  // Wire para a biblioteca LCD # define lmPin A1 // LM35 anexar a A1LiquidCrystal_I2C lcd (0x27, 16, 2); // define o endereço LCD para 0x27 para um displaydht DHT de 16 caracteres e 2 linhas; // cria um tipo de variável de dhtconst int DHT11_PIN =4; // anexar dht11 ao pino 4const int waterSensor =0; // definir sensor de água variableint waterValue =0; // variável para sensorint de água mmwaterValue =0; int sensorPin =A3; // selecione o pino de entrada para o potenciômetroint luce =0; // variável para o ldrint pluce =0; // variável para o ldrfloat tem =0; // variável para a temperatura lmVal =0; // variável para o LM35 // irconst int irReceiverPin =3; IRrecv irrecv (irReceiverPin); // Cria uma variável do tipo IRrecvdecode_results results; // define a variável de relógiouint8_t RST_PIN =5; // Fixação do pino RST touint8_t SDA_PIN =6; // anexar pino IO touint8_t SCL_PIN =7; // clk Pin attach to / * Create buffers * / char buf [50]; char day [10]; / * Cria um objeto DS1302 * / DS1302 rtc (RST_PIN, SDA_PIN, SCL_PIN); // cria um tipo de variável de DS1302void print_time () {/ * Pega a hora e data atuais do chip * / Time t =rtc.time (); / * Nomeia o dia da semana * / memset (day, 0, sizeof (day)); switch (t.day) {case 1:strcpy (day, "Sun"); pausa; caso 2:strcpy (dia, "seg"); pausa; caso 3:strcpy (dia, "Ter"); pausa; caso 4:strcpy (dia, "Quarta"); pausa; caso 5:strcpy (dia, "Qui"); pausa; caso 6:strcpy (dia, "Sex"); pausa; caso 7:strcpy (dia, "Sáb"); pausa; } / * Formate a hora e a data e insira no buffer temporário * / snprintf (buf, sizeof (buf), "% s% 04d-% 02d-% 02d% 02d:% 02d:% 02d", dia, t. yr, t.mon, t.date, t.hr, t.min, t.sec); / * Imprime a string formatada em serial para que possamos ver a hora * / Serial.println (buf); lcd.setCursor (2, 0); lcd.print (t.yr); lcd.print ("-"); lcd.print (t.mon / 10); lcd.print (t.mon% 10); lcd.print ("-"); lcd.print (t.date / 10); lcd.print (t.date% 10); lcd.print (""); lcd.print (dia); lcd.setCursor (4, 1); lcd.print (t.hr); lcd.print (":"); lcd.print (t.min / 10); lcd.print (t.min% 10); lcd.print (":"); lcd.print (t.sec / 10); lcd.print (t.sec% 10);} void setup () {// clock Serial.begin (9600); rtc.write_protect (false); rtc.halt (falso); // ir irrecv.enableIRIn (); // habilita o módulo receptor de IR lcd.init (); // inicializa o lcd lcd.backlight (); // abre a luz de fundo pinMode (sensorPin, INPUT); Time t (2017, 12, 03, 10, 15, 00, 1); // inicializar a hora / * Definir a hora e a data no chip * / rtc.time (t);} void loop () {lcd. setCursor (0, 0); lcd.print ("A"); atraso (50); lcd.setCursor (1, 0); lcd.print ("r"); atraso (50); lcd.setCursor (2, 0); lcd.print ("d"); atraso (50); lcd.setCursor (3, 0); lcd.print ("u"); atraso (50); lcd.setCursor (4, 0); lcd.print ("i"); atraso (50); lcd.setCursor (5, 0); lcd.print ("n"); atraso (50); lcd.setCursor (6, 0); lcd.print ("o"); atraso (50); lcd.setCursor (8, 0); lcd.print ("W"); atraso (50); lcd.setCursor (9, 0); lcd.print ("e"); atraso (50); lcd.setCursor (10, 0); lcd.print ("a"); atraso (50); lcd.setCursor (11, 0); lcd.print ("t"); atraso (50); lcd.setCursor (12, 0); lcd.print ("h"); atraso (50); lcd.setCursor (13, 0); lcd.print ("e"); atraso (50); lcd.setCursor (14, 0); lcd.print ("r"); atraso (50); lcd.setCursor (4, 1); lcd.print ("S"); atraso (50); lcd.setCursor (5, 1); lcd.print ("t"); atraso (50); lcd.setCursor (6, 1); lcd.print ("a"); atraso (50); lcd.setCursor (7, 1); lcd.print ("t"); atraso (50); lcd.setCursor (8, 1); lcd.print ("i"); atraso (50); lcd.setCursor (9, 1); lcd.print ("o"); atraso (50); lcd.setCursor (10, 1); lcd.print ("n"); delay (50); if (irrecv.decode (&results)) // se os dados do receptor do módulo receptor ir {if (results.value ==0xFF6897) // se "0" for pressionado print TIME {lcd.clear (); // limpa o LCD print_time (); atraso (10000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); // aguarde um pouco irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF30CF) // se "1" for pressionado print TEMPERATURE and HUMIDITY {lcd.clear (); // limpar o LCD // LER DADOS do DHT int chk =DHT.read11 (DHT11_PIN); // EXIBIR DADOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // ler o valor de A1 tem =(lmVal * 0,0048828125 * 100); // 5/1024 =0,0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime a unidade "?" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); lcd.print (umidade DHT, 1); // imprime a umidade no lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); atraso (10000); // aguarde 3000 ms lcd.clear (); // limpa o atraso do LCD (200); // aguarde um pouco irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF18E7) ​​// se "2" for pressionado imprima o DARKNESS {lcd.clear (); // limpa o LCD lcd.setCursor (4, 0); // coloque o cursor em 4 colunas, 1 linha lcd.print ("Darkness:"); luce =analogRead (sensorPin); // leia o ldr pluce =map (luce, 0, 1023, 0, 100); // o valor do sensor é convertido em valores de 0 a 100 lcd.setCursor (6, 1); // coloque o cursor no meio do LCD lcd.print (pluce); // imprime o percentual lcd.print ("%"); // imprime o símbolo delay (10000); // atrasar 10000 ms lcd.clear (); // limpa o atraso do LCD (200); // aguarde um pouco irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF7A85) // se "3" for pressionado imprima a NEVE ou o NÍVEL DA ÁGUA {lcd.clear (); // limpa o LCD lcd.setCursor (0, 0); // coloque o cursor na coluna 0, 1 linha lcd.print ("Nível de fluido (mm):"); // imprime "Nível de fluido (mm):" int waterValue =analogRead (waterSensor); // obtém o valor do sensor de água lcd.setCursor (6, 1); // posiciona o cursor em 6 colunas, 2 linhas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor exibido no lcd delay (10000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF9867) // se "APRESENTAÇÃO" for pressionado imprima TIME, TEM e HUM, DARKNESS e S ou W LEVEL uma vez {lcd.clear (); // limpa o LCD print_time (); atraso (4000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); // espera um pouco // LEIA OS DADOS do DHT int chk =DHT.read11 (DHT11_PIN); // EXIBIR DADOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // ler o valor de A0 tem =(lmVal * 0,0048828125 * 100); // 5/1024 =0,0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime a unidade "?" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); lcd.print (umidade DHT, 1); // imprime a umidade no lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); atraso (4000); // aguarde 3000 ms lcd.clear (); // limpa o atraso do LCD (200); // espere um pouco lcd.setCursor (4, 0); // coloque o cursor em 4 colunas, 1 linha lcd.print ("Darkness:"); luce =analogRead (sensorPin); // leia o ldr pluce =map (luce, 0, 1023, 0, 100); // o valor do sensor é convertido em valores de 0 a 100 lcd.setCursor (6, 1); // coloque o cursor no meio do LCD lcd.print (pluce); // imprime o percentual lcd.print ("%"); // imprime o símbolo delay (4000); // atrasar 10000 ms lcd.clear (); // limpa o atraso do LCD (200); // espere um pouco lcd.setCursor (0, 0); // coloque o cursor na coluna 0, 1 linha lcd.print ("Nível de fluido (mm):"); // imprime "Nível de fluido (mm):" int waterValue =analogRead (waterSensor); // obtém o valor do sensor de água lcd.setCursor (6, 1); // posiciona o cursor em 6 colunas, 2 linhas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor exibido no lcd delay (4000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); irrecv.resume (); // Receba o próximo valor}}}  

Em vez de escrever uma letra "Estação meteorológica Arduino" por letra, é possível escrevê-la com o modo "switch / case".





CONCLUSÕES


Fizemos uma estação meteorológica com Arduino que leva em conta a data e hora atuais e coleta alguns dados ambientais para imprimi-los em uma tela LCD controlada por um controlador remoto infravermelho.




Código

  • AWS code.ino
AWS code.ino C / C ++
 // incluir bibliotecas de esboço # include  #include  // biblioteca de relógio # include  // biblioteca de relógio # include  // biblioteca de relógio # incluir  // dht11 library # include  // Biblioteca LCD # include  // Wire para a biblioteca LCD # define lmPin A1 // LM35 anexar a A1LiquidCrystal_I2C lcd (0x27, 16, 2 ); // define o endereço LCD para 0x27 para um displaydht DHT de 16 caracteres e 2 linhas; // cria um tipo de variável de dhtconst int DHT11_PIN =4; // anexar dht11 ao pino 4const int waterSensor =0; // definir sensor de água variableint waterValue =0; // variável para sensorint de água mmwaterValue =0; int sensorPin =A3; // selecione o pino de entrada para o potenciômetroint luce =0; // variável para o ldrint pluce =0; // variável para o ldrfloat tem =0; // variável para a temperatura lmVal =0; // variável para o LM35 // irconst int irReceiverPin =3; IRrecv irrecv (irReceiverPin); // Cria uma variável do tipo IRrecvdecode_results results; // define a variável de relógiouint8_t RST_PIN =5; // Fixação do pino RST touint8_t SDA_PIN =6; // anexar pino IO touint8_t SCL_PIN =7; // clk Pin attach to / * Create buffers * / char buf [50]; char day [10]; / * Cria um objeto DS1302 * / DS1302 rtc (RST_PIN, SDA_PIN, SCL_PIN); // cria um tipo de variável de DS1302void print_time () {/ * Pega a hora e data atuais do chip * / Time t =rtc.time (); / * Nomeia o dia da semana * / memset (day, 0, sizeof (day)); switch (t.day) {case 1:strcpy (day, "Sun"); pausa; caso 2:strcpy (dia, "seg"); pausa; caso 3:strcpy (dia, "Ter"); pausa; caso 4:strcpy (dia, "Quarta"); pausa; caso 5:strcpy (dia, "Qui"); pausa; caso 6:strcpy (dia, "Sex"); pausa; caso 7:strcpy (dia, "Sáb"); pausa; } / * Formate a hora e a data e insira no buffer temporário * / snprintf (buf, sizeof (buf), "% s% 04d-% 02d-% 02d% 02d:% 02d:% 02d", dia, t. yr, t.mon, t.date, t.hr, t.min, t.sec); / * Imprime a string formatada em serial para que possamos ver a hora * / Serial.println (buf); lcd.setCursor (2, 0); lcd.print (t.yr); lcd.print ("-"); lcd.print (t.mon / 10); lcd.print (t.mon% 10); lcd.print ("-"); lcd.print (t.date / 10); lcd.print (t.date% 10); lcd.print (""); lcd.print (dia); lcd.setCursor (4, 1); lcd.print (t.hr); lcd.print (":"); lcd.print (t.min / 10); lcd.print (t.min% 10); lcd.print (":"); lcd.print (t.sec / 10); lcd.print (t.sec% 10);} void setup () {// clock Serial.begin (9600); rtc.write_protect (false); rtc.halt (falso); // ir irrecv.enableIRIn (); // habilita o módulo receptor de IR lcd.init (); // inicializa o lcd lcd.backlight (); // abre a luz de fundo pinMode (sensorPin, INPUT); Time t (2017, 12, 9, 11, 20, 00, 7); // inicializar a hora / * Definir a hora e a data no chip * / rtc.time (t);} void loop () {lcd. setCursor (0, 0); lcd.print ("A"); atraso (50); lcd.setCursor (1, 0); lcd.print ("r"); atraso (50); lcd.setCursor (2, 0); lcd.print ("d"); atraso (50); lcd.setCursor (3, 0); lcd.print ("u"); atraso (50); lcd.setCursor (4, 0); lcd.print ("i"); atraso (50); lcd.setCursor (5, 0); lcd.print ("n"); atraso (50); lcd.setCursor (6, 0); lcd.print ("o"); atraso (50); lcd.setCursor (8, 0); lcd.print ("W"); atraso (50); lcd.setCursor (9, 0); lcd.print ("e"); atraso (50); lcd.setCursor (10, 0); lcd.print ("a"); atraso (50); lcd.setCursor (11, 0); lcd.print ("t"); atraso (50); lcd.setCursor (12, 0); lcd.print ("h"); atraso (50); lcd.setCursor (13, 0); lcd.print ("e"); atraso (50); lcd.setCursor (14, 0); lcd.print ("r"); atraso (50); lcd.setCursor (4, 1); lcd.print ("S"); atraso (50); lcd.setCursor (5, 1); lcd.print ("t"); atraso (50); lcd.setCursor (6, 1); lcd.print ("a"); atraso (50); lcd.setCursor (7, 1); lcd.print ("t"); atraso (50); lcd.setCursor (8, 1); lcd.print ("i"); atraso (50); lcd.setCursor (9, 1); lcd.print ("o"); atraso (50); lcd.setCursor (10, 1); lcd.print ("n"); delay (50); if (irrecv.decode (&results)) // se os dados do receptor do módulo receptor ir {if (results.value ==0xFF6897) // se "0" for pressionado print TIME {lcd.clear (); // limpa o LCD print_time (); atraso (10000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); // aguarde um pouco irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF30CF) // se "1" for pressionado print TEMPERATURE and HUMIDITY {lcd.clear (); // limpar o LCD // LER DADOS do DHT int chk =DHT.read11 (DHT11_PIN); // EXIBIR DADOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // ler o valor de A1 tem =(lmVal * 0,0048828125 * 100); // 5/1024 =0,0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime a unidade "" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); lcd.print (umidade DHT, 1); // imprime a umidade no lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); atraso (10000); // aguarde 3000 ms lcd.clear (); // limpa o atraso do LCD (200); // aguarde um pouco irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF18E7) ​​// se "2" for pressionado imprima o DARKNESS {lcd.clear (); // limpa o LCD lcd.setCursor (4, 0); // coloque o cursor em 4 colunas, 1 linha lcd.print ("Darkness:"); luce =analogRead (sensorPin); // leia o ldr pluce =map (luce, 0, 1023, 0, 100); // o valor do sensor é convertido em valores de 0 a 100 lcd.setCursor (6, 1); // coloque o cursor no meio do LCD lcd.print (pluce); // imprime o percentual lcd.print ("%"); // imprime o símbolo delay (10000); // atrasar 10000 ms lcd.clear (); // limpa o atraso do LCD (200); // aguarde um pouco irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF7A85) // se "3" for pressionado imprima a NEVE ou o NÍVEL DA ÁGUA {lcd.clear (); // limpa o LCD lcd.setCursor (0, 0); // coloque o cursor na coluna 0, 1 linha lcd.print ("Nível de fluido (mm):"); // imprime "Nível de fluido (mm):" int waterValue =analogRead (waterSensor); // obtém o valor do sensor de água lcd.setCursor (6, 1); // posiciona o cursor em 6 colunas, 2 linhas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor exibido no lcd delay (10000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); irrecv.resume (); // Recebe o próximo valor} if (results.value ==0xFF9867) // se "APRESENTAÇÃO" for pressionado imprima TIME, TEM e HUM, DARKNESS e S ou W LEVEL uma vez {lcd.clear (); // limpa o LCD print_time (); atraso (4000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); // espera um pouco // LEIA OS DADOS do DHT int chk =DHT.read11 (DHT11_PIN); // EXIBIR DADOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // ler o valor de A0 tem =(lmVal * 0,0048828125 * 100); // 5/1024 =0,0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime a unidade "" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); lcd.print (umidade DHT, 1); // imprime a umidade no lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); atraso (4000); // aguarde 3000 ms lcd.clear (); // limpa o atraso do LCD (200); // espere um pouco lcd.setCursor (4, 0); // coloque o cursor em 4 colunas, 1 linha lcd.print ("Darkness:"); luce =analogRead (sensorPin); // leia o ldr pluce =map (luce, 0, 1023, 0, 100); // o valor do sensor é convertido em valores de 0 a 100 lcd.setCursor (6, 1); // coloque o cursor no meio do LCD lcd.print (pluce); // imprime o percentual lcd.print ("%"); // imprime o símbolo delay (4000); // atrasar 10000 ms lcd.clear (); // limpa o atraso do LCD (200); // espere um pouco lcd.setCursor (0, 0); // coloque o cursor na coluna 0, 1 linha lcd.print ("Nível de fluido (mm):"); // imprime "Nível de fluido (mm):" int waterValue =analogRead (waterSensor); // obtém o valor do sensor de água lcd.setCursor (6, 1); // posiciona o cursor em 6 colunas, 2 linhas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor exibido no lcd delay (4000); // atrasar 10000ms lcd.clear (); // limpa o atraso do LCD (200); irrecv.resume (); // Receba o próximo valor}}} 

Peças personalizadas e gabinetes

box_a5et5f4U9F.dwg

Esquemas

aws_DMDwb4iUZp.fzz

Processo de manufatura

  1. Estação meteorológica V 2.0
  2. Detector de linguagem TinyML baseado em Edge Impulse e Arduino
  3. Jogo Arduino Gyroscope com MPU-6050
  4. 6-Shooter:Estação de Mistura de Bebidas Arduino
  5. Dados digitais Arduino
  6. Encontre-me
  7. Arduino Audio Reactive Desk Light
  8. Registrador de dados do balão meteorológico Arduino
  9. $ 10 Estação meteorológica portátil Arduino (AWS)
  10. NeoMatrix Arduino Pong