亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 Firebase 将传感器数据从一个 Arduino 发送到另一个

组件和用品

Arduino UNO
× 2
乐鑫 ESP8266 ESP-01
× 2
DHT11 温湿度传感器(3 针)
× 1
DFRobot I2C 16x2 Arduino LCD 显示模块
× 1
面包板(通用)
× 2
公/母跳线
× 1

应用和在线服务

Arduino IDE
Google Firebase

关于这个项目

概述:

在这个很酷的物联网项目中,您从连接到一个 Arduino UNO 的湿度和温度传感器读取数据。使用 esp8266 模块将此数据发送到 Firebase,然后使用 esp8266 将数据下载到另一个 Arduino UNO 中,最后将其显示在 LCD 上。

第 1 步:了解 Arduino UNO 和 ESP8266 如何协同工作。

请注意,它们作为两个不同的板工作并且具有不同的代码。您使用 Arduino UNO 与 ESP8266 进行通信。了解您不是将 Arduino 连接到互联网,而是将 ESP8266 连接到互联网您可以稍后通过串行终端在两块板之间发送数据。

第 2 步:将一个 Arduino 连接到 LCD

对于这部分,您可以像我们一样使用 I2C 通信或正常通信。 I2C 总是更好。试试他们在那里展示的示例代码。

请注意,我们使用了 20x4 的 LCD。如有必要,请更改代码。

第 3 步:将另一个 Arduino 连接到 DHT11 传感器

您可以按照本教程进行操作。记得试试模板代码。

第 4 步:将 ESP8266 连接到 Firebase 以发送和接收数据

在本教程中,他们很好地解释了如何设置它。

按照此分步视频进行操作。它们将 NodeMCU 连接到 ESP8266,但您可以使用与 Arduino UNO 相同的连接。

至于建议,我建议您使用您用于 ESP8266 的颜色创建一个 google sheet 或 excel,这样您就不会感到困惑。

如果它不起作用,请转到最后的错误部分。还有 , 查看对教程的评论。

第 5 步:了解串行通信的工作原理。

在本教程中,他们将其他传感器数据发送到 firebase,您可以阅读它以了解它的工作原理,甚至可以尝试一下。

您应该只在串行监视器上打印所需的字符串,任何其他打印线都会中断通信。

第 6 步:上传代码。

现在您知道如何上传和接收数据,您可以将实际代码上传到连接到 Arduinos 和 Arduinos 的 esp8266s。有关如何上传代码,请参阅步骤 4。

在上传之前阅读代码并进行任何必要的更改。

常见错误和建议:

在断开任何电线之前,务必先断开 ARDUINO 电缆。

代码没有上传到 ESP8266:

  • 选择 esp8266 通用板。
  • 如果代码仍未上传并出现错误,请执行此操作。
  • 如果仍然无法正常工作,请拔下电源,重新连接,尝试上传,然后再次尝试之前的解决方案。

代码未上传到 Arduino UNO:

  • 仔细阅读本文档第 7 步中如何将代码上传到 Arduino UNO。
  • 从 GND 中取出 GPIO-0 (IO0),从 Uno 的接地/GND 引脚中取出 Arduino Uno RESET 引脚。
  • 从 UNO 的 RX 引脚上移除 ESP8266 RX 引脚,从 UNO 的 TX 引脚上移除 ESP8266 TX 引脚。
  • 重新检查您的引脚,选择 Arduino UNO 板。

上传两个代码后不起作用:

  • 将 ESP8266 RX 引脚连接到 Uno 的 TX 引脚,将 E​​SP8266 TX 引脚连接到 Uno 的 RX 引脚。是的,您必须将它们反向连接。不要问我为什么。就去做吧。
  • 断开 ESP8266 GPIO-0 (IO0) 与 GND 的连接。
  • 重新检查您的图钉
  • 确保您只在串行监视器中打印要在 Arduino 和 ESP8266 之间共享的值。如果您打印诸如“已连接”之类的内容或任何其他内容,代码将无法工作。

注意: 如果你让它工作并且 LCD 打印出一些奇怪的东西,它应该在几秒钟后修复它 初始化 功能。这可能是由于串行通信延迟而发生的。

代码

  • lcd_arduino.ino
  • lcd_esp8266.ino
  • sensor_arduino.ino
  • sensor_esp8266.ino
lcd_arduino.inoArduino
Arduino_LCD_Code
#include #include // 通过将任何需要的 LCD 接口引脚与连接到 LiquidCrystal_I2C lcd(0x3F, 20, 4) 的 arduino 引脚编号相关联来初始化库;字符串值,sensor_data;void setup() { Serial.begin(9600);延迟(2000); // 设置 LCD 的列数和行数:lcd.begin(20, 4); // 向 LCD 打印一条消息。液晶显示器.init(); // 初始化液晶显示器 lcd.backlight();延迟(2000); lcd.setCursor(0, 0); lcd.print("温度:");延迟(10); lcd.setCursor(18, 0);液晶打印(“C”);延迟(10); lcd.setCursor(0, 1); lcd.print("湿度:");延迟(10); lcd.setCursor(15, 1); lcd.print("%"); delay(2000);}void loop() { bool Sr =false; while (Serial.available()) { //从串口获取传感器数据放入sensor_data sensor_data =Serial.readString(); Sr =真; } 延迟(1000); if (Sr ==true) { values =sensor_data; //通过逗号分割从values变量中获取传感器数据并放入变量String temperature =values.substring(0, 5);字符串湿度 =values.substring(6, 11);初始化(); lcd.setCursor(13, 0);延迟(10); lcd.print(温度);//设置光标打印温度延迟(10); lcd.setCursor(10, 1);延迟(10);液晶打印(湿度); } 延迟(2000);}无效初始化(){ lcd.clear(); lcd.setCursor(0, 0); lcd.print("温度:");延迟(10); lcd.setCursor(18, 0);液晶打印(“C”);延迟(10); lcd.setCursor(0, 1); lcd.print("湿度:");延迟(10); lcd.setCursor(15, 1); lcd.print("%");}
lcd_esp8266.inoArduino
ESP8266_LCD_Code
#include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_SSID "YOUR_WIFI_SSID"#define "WIFI_SSIDWORD"#define "WIFI_SSIDWORD"#define "WIFI_SWITCH_PASSID" Serial.begin(9600); // 连接到无线网络。 WiFi.begin(WIFI_SSID, WIFI_PASSWORD);而(WiFi.status()!=WL_CONNECTED){延迟(500); } Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void loop() { String temperature =Firebase.getString("温度"); String 湿度 =Firebase.getString("湿度");温度 =温度.substring(0, 5);湿度 =湿度.substring(0, 5);值 =(温度 + 湿度);延迟(10); // 在打印之前总是刷新 Serial.flush();延迟(1000); Serial.print(values);延迟(1000);}
sensor_arduino.inoArduino
Arduino_Sensor_Code
#include #include #define dht_apin A0dht DHT;String values;void setup() { Serial.begin(9600);延迟(5000); //延迟让系统启动}void loop() { DHT.read11(dht_apin);值=(字符串(DHT.温度)+','+字符串(DHT.湿度));延迟(10);串行.flush();延迟(1000); // 将传感器数据发送到串口(将传感器数据发送到 ESP8266) Serial.print(values);延迟(2000);}
sensor_esp8266.inoArduino
Sensor_ESP8266_Code
#include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_SSID "YOUR_WIFI_SSID"WORD#define WIFI_PASSID,SWITCH ) { 延迟 (1000); // 连接到无线网络。 WiFi.begin(WIFI_SSID, WIFI_PASSWORD);而(WiFi.status()!=WL_CONNECTED){延迟(500); Serial.begin(9600); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void loop() { bool Sr =false; while (Serial.available()) { //从串口获取传感器数据放入sensor_data sensor_data =Serial.readString(); Sr =真; } 延迟(1000); if (Sr ==true) { values =sensor_data; //从值变量中获取逗号索引 int fristCommaIndex =values.indexOf(','); int secondCommaIndex =values.indexOf(',', fristCommaIndex + 1); //通过逗号分割从值变量中获取传感器数据并放入变量 String temperature =values.substring(0, fristCommaIndex);字符串湿度 =values.substring(fristCommaIndex + 1, secondCommaIndex); //将超声波传感器数据作为字符串存储在firebase Firebase.setString("temperature", temperature);延迟(10); //将红外传感器 1 数据作为字符串存储在 firebase 中 Firebase.setString("湿度", 湿度);延迟(10); //将之前的传感器数据作为字符串存储在 firebase delay(1000) 中; if (Firebase.failed()) { return; } } }}

制造工艺

  1. 使用 InitialState
  2. 使用 Arduino 的太阳能电池板实时数据采集
  3. 使用 Arduino Uno 的人体检测机器人系统
  4. 使用 Arduino DIY 红外线心跳传感器
  5. Sonar 使用 arduino 并在处理 IDE 上显示
  6. 使用 Bolt 和 Arduino 控制 LED 亮度
  7. 使用 MAX30100 可穿戴脉搏传感器和 Arduino
  8. 使用 YL-39 + YL-69 土壤湿度传感器和 Arduino
  9. 如何使用 PHP 创建一个与 Arduino 通信的网站
  10. 将加速度转换为来自 MPU6050 I2C 传感器的角度
  11. 带有 DSM501A 传感器的 Arduino 空气质量监测器
  12. 从一个 CMMS 到另一个:软件数据迁移指南