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

Envie dados do sensor de um Arduino para outro usando Firebase

Componentes e suprimentos

Arduino UNO
× 2
Espressif ESP8266 ESP-01
× 2
Sensor DHT11 de Temperatura e Umidade (3 pinos)
× 1
Módulo DFRobot I2C 16x2 Arduino LCD
× 1
Breadboard (genérico)
× 2
Cabos de jumper masculino / feminino
× 1

Aplicativos e serviços online

Arduino IDE
Google Firebase

Sobre este projeto





VISÃO GERAL:


Neste projeto IoT legal, você lê dados de um sensor de umidade e temperatura conectado a um Arduino UNO. Envie esses dados para o Firebase usando um módulo esp8266 e, em seguida, baixe os dados em outro Arduino UNO usando um esp8266, para finalmente exibi-los em um LCD.





ETAPA 1:entenda como o Arduino UNO e o ESP8266 funcionam juntos.


Observe que eles funcionam como duas placas diferentes e têm códigos diferentes. Use o Arduino UNO para se comunicar com o ESP8266. Entenda que você não está conectando o Arduino à internet, mas sim o ESP8266 à internet. Posteriormente, você poderá enviar dados entre as duas placas através do terminal Serial.





ETAPA 2:Conecte um Arduino ao LCD


Para esta parte, você pode usar a comunicação I2C como fizemos ou a comunicação normal. I2C é sempre melhor. Experimente o código de exemplo que eles apresentam lá.

NOTE QUE USAMOS UM LCD 20x4. ALTERE O CÓDIGO SE NECESSÁRIO.





ETAPA 3:conecte o outro Arduino ao sensor DHT11


Você pode seguir este tutorial para fazê-lo funcionar. Lembre-se de experimentar o código do modelo.





ETAPA 4:conecte o ESP8266 ao Firebase para enviar e receber dados


Neste tutorial, eles explicam muito bem como configurá-lo.

Siga este vídeo passo a passo. Eles conectam um NodeMCU ao ESP8266, mas você pode usar as mesmas conexões ao Arduino UNO.

Como conselho, sugiro que você crie uma planilha do google ou excel com as cores que está usando para o ESP8266 para não se confundir.

VÁ PARA A PARTE DO ERRO NO FINAL SE NÃO FUNCIONAR. TAMBÉM , VERIFIQUE OS COMENTÁRIOS NO TUTORIAL.





ETAPA 5:entenda como funciona a comunicação serial.


Neste tutorial, eles enviam outros dados do sensor para o firebase, você pode lê-los para ter uma ideia de como funciona ou até mesmo experimentá-los.

VOCÊ DEVE IMPRIMIR SOMENTE A CADEIA DESEJADA NO MONITOR DE SÉRIE, QUALQUER OUTRA LINHA DE IMPRESSÃO INTERROMPIRÁ A COMUNICAÇÃO.





ETAPA 6:faça upload do código.


Agora que você sabe como fazer upload e receber dados, pode fazer upload do código real para os esp8266s conectados aos Arduinos e Arduinos. Consulte a etapa 4 sobre como fazer upload do código.

LEIA O CÓDIGO ANTES DE CARREGAR E FAÇA AS ALTERAÇÕES NECESSÁRIAS.





ERROS E CONSELHOS COMUNS:


SEMPRE DESCONECTE O CABO ARDUINO ANTES DE DESCONECTAR QUALQUER FIO.

O código não está sendo enviado ao ESP8266:
  • Selecione a placa genérica esp8266.
  • Se o código ainda não estiver sendo enviado e apresentando um erro, faça isso.
  • Se ainda não estiver funcionando, desconecte, reconecte, tente fazer upload e tente a solução anterior novamente.

Código não está sendo enviado ao Arduino UNO:
  • Leia atentamente como fazer upload do código para o Arduino UNO nesta documentação, etapa 7.
  • Retire o GPIO-0 (IO0) do GND e o pino de RESET do Arduino Uno do pino de aterramento / GND do Uno.
  • Remova o pino ESP8266 RX do pino RX do UNO e o pino TX do ESP8266 do pino TX do UNO.
  • Verifique novamente seus pinos, selecione a placa Arduino UNO.

Não funciona depois de enviar os dois códigos:
  • Conecte o pino ESP8266 RX ao pino TX de Uno e o pino TX ESP8266 ao pino RX de Uno. Sim, você deve conectá-los de forma oposta. Não me pergunte por quê. Apenas faça.
  • Desconecte o ESP8266 GPIO-0 (IO0) do GND.
  • Verifique novamente seus alfinetes
  • Certifique-se de imprimir apenas os valores que deseja compartilhar entre o Arduino e o ESP8266 no Serial Monitor. Se você imprimir coisas como "conectado" ou qualquer outra coisa, o código não funcionará.

NOTA: Se você começar a trabalhar e o LCD imprimir algo estranho, ele deve consertar após alguns segundos com o inicializar função. Isso pode ocorrer devido a atrasos na comunicação serial.






Código

  • lcd_arduino.ino
  • lcd_esp8266.ino
  • sensor_arduino.ino
  • sensor_esp8266.ino
lcd_arduino.ino Arduino
Arduino_LCD_Code
 #include  #include  // inicializar a biblioteca associando qualquer pino de interface LCD necessário // com o número do pino Arduino que está conectado aLiquidCrystal_I2C lcd (0x3F, 20, 4); Valores de string, dados_do_sensor; configuração vazia () {Serial.begin (9600); atraso (2000); // configura o número de colunas e linhas do LCD:lcd.begin (20, 4); // Imprime uma mensagem no LCD. lcd.init (); // inicializa o lcd lcd.backlight (); atraso (2000); lcd.setCursor (0, 0); lcd.print ("Temperatura:"); atraso (10); lcd.setCursor (18, 0); lcd.print ("C"); atraso (10); lcd.setCursor (0, 1); lcd.print ("Umidade:"); atraso (10); lcd.setCursor (15, 1); lcd.print ("%"); atraso (2000);} loop vazio () {bool Sr =falso; while (Serial.available ()) {// obter dados do sensor de serial colocados em sensor_data sensor_data =Serial.readString (); Sr =verdadeiro; } atraso (1000); if (Sr ==true) {values ​​=sensor_data; // obtém os dados dos sensores das variáveis ​​de valores dividindo por vírgulas e os coloca nas variáveis ​​String temperature =values.substring (0, 5); Umidade da coluna =valores.substring (6, 11); inicializar(); lcd.setCursor (13, 0); atraso (10); lcd.print (temperatura); // define o cursor para imprimir a temperatura de atraso (10); lcd.setCursor (10, 1); atraso (10); lcd.print (umidade); } atraso (2000);} void initialize () {lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Temperatura:"); atraso (10); lcd.setCursor (18, 0); lcd.print ("C"); atraso (10); lcd.setCursor (0, 1); lcd.print ("Umidade:"); atraso (10); lcd.setCursor (15, 1); lcd.print ("%");} 
lcd_esp8266.ino Arduino
ESP8266_LCD_Code
 #include  #include  #define FIREBASE_HOST "YOUR_FIREBASE_LINK" #define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN" #define WIFI_PASSI "_SORD_SORDE_TOKEN "#define WIFI "_SORD_SORD" configurando "YOUR_FIREBASE_TOKEN" #define WIFI_WORD "String_TOKEN" #define WIFI_WORD "Configuração de WIFI_WORD_SORD" SEU WIFI_WORDSORD "#define WIFI_WORD" SETWORD "#define WIFI_WORD" setup_WASSI_WORD "#define WIFI_WORD" setup_WASSI_WORD "SEU WIFI_WORD". Serial.begin (9600); // conecte-se ao wi-fi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); enquanto (WiFi.status ()! =WL_CONNECTED) {atraso (500); } Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);} void loop () {String temperature =Firebase.getString ("temperature"); String umidade =Firebase.getString ("umidade"); temperatura =temperatura.substring (0, 5); umidade =umidade.substring (0, 5); valores =(temperatura + umidade); atraso (10); // sempre esvazia antes de imprimir Serial.flush (); atraso (1000); Serial.print (valores); atraso (1000);} 
sensor_arduino.ino Arduino
Arduino_Sensor_Code
 #include  #include  #define dht_apin A0dht DHT; Valores de string; void setup () {Serial.begin (9600); atraso (5000); // Atrase para permitir a inicialização do sistema} void loop () {DHT.read11 (dht_apin); valores =(String (DHT.emperatura) + ',' + String (DHT.umidade)); atraso (10); Serial.flush (); atraso (1000); // envia dados dos sensores para serial (envia dados dos sensores para ESP8266) Serial.print (valores); atraso (2000);} 
sensor_esp8266.ino Arduino
Sensor_ESP8266_Code
 #include  #include  #define FIREBASE_HOST "YOUR_FIREBASE_LINK" #define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN" #define FIREBASE_HOST "YOUR_FIREBASE_LINK" #define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN" #define WIFI_AD_TOKEN "#define WIFI_AD_SORD_SORD" sensor YOUR_DIFI_DE_TOKEN "SETWORD_SORD_SORD" SEU WIFI_DEWORD "setup" void_SORD_WORDSORFIN "#define WIFI_AD_SORD" setup do sensor de WIFI_DEWORD "#define_WORD_DASSI_DIFI_DIFI_DIFI_DIFI_WORD_SORD". ) {atraso (1000); // conecte-se ao wi-fi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); enquanto (WiFi.status ()! =WL_CONNECTED) {atraso (500); } Serial.begin (9600); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);} void loop () {bool Sr =false; while (Serial.available ()) {// obter dados do sensor de serial colocados em sensor_data sensor_data =Serial.readString (); Sr =verdadeiro; } atraso (1000); if (Sr ==true) {values ​​=sensor_data; // obtém índices de vírgula da variável de valores int fristCommaIndex =values.indexOf (','); int secondCommaIndex =values.indexOf (',', fristCommaIndex + 1); // obtém os dados dos sensores das variáveis ​​de valores dividindo por vírgulas e os coloca nas variáveis ​​String temperature =values.substring (0, fristCommaIndex); Umidade da string =values.substring (fristCommaIndex + 1, secondCommaIndex); // armazena dados do sensor ultrassônico como string em firebase Firebase.setString ("temperature", temperature); atraso (10); // armazena os dados do sensor IR 1 como string em firebase Firebase.setString ("umidade", umidade); atraso (10); // armazena dados de sensores anteriores como string em firebase delay (1000); if (Firebase.failed ()) {return; }}} 

Processo de manufatura

  1. Transmissão de dados do sensor de uma placa ppDAQC Pi usando InitialState
  2. Aquisição de dados em tempo real do painel solar usando Arduino
  3. Sistema de detecção de humanos usando Arduino Uno
  4. Sensor de batimento cardíaco infravermelho DIY usando Arduino
  5. Sonar usando arduino e exibição no IDE de processamento
  6. Controle de brilho do LED usando Bolt e Arduino
  7. Usando o sensor de pulso vestível MAX30100 com Arduino
  8. Usando o Sensor de Umidade do Solo YL-39 + YL-69 com Arduino
  9. Como criar um site de comunicação do Arduino usando PHP
  10. De um CMMS para outro:diretrizes para migração de dados de software