提问人:Ayush Pandey 提问时间:11/16/2023 更新时间:11/16/2023 访问量:11
Arduino Uno 未将连接到 A3 的传感器数据传输到 NodeMCU
arduino uno not tranferring the sensor data connected to the a3 to the nodemcu
问:
我正在为我的大学准备一个使用 ARDUINO UNO 和 NODEMCU 8266 的项目。水质监测系统。其中我使用了 4 个传感器,即温度传感器、浊度传感器、pH 传感器和流量传感器,我将传感器模拟线连接到 arduino 引脚,用于电源输入的黑线和红线也将 arduino 的 tx 连接到 nodemcu 的 rx。节点 mcu 将从 arduino 接收传感器数据并将其传输到 firebase 实时数据库,正如我在 arduino 和 nodemcu 的代码中所写的那样,编译时在代码中没有发现错误,但 arduino 没有将数据传输到节点 mcu。arduino 和 nodemcu 处于正常工作状态。如果您查看下面的 ARDUINO UNO 和 NODE MCU CODES 并告诉我代码中有什么问题,为什么没有执行 desire 函数,那将是一个很大的帮助。更正代码以获得所需的结果。我要你做什么.编辑代码以将传感器数据传输到 nodemcu,然后给我 nodemcu 代码以将其传输到 google firebase 实时数据库。
[C++中的所有代码]
Arduino COde:
#include < ArduinoJson.h>
#include < 软件序列号.h>
软件串行 mySerial(0, 1);接收,德克萨斯州
传感器数据变量
浮点 pH = analogRead(14);
浮子浊度 = analogRead(15);
浮点 flowSensor = analogRead(16);
浮子温度 = analogRead(17);
用于存储传感器数据的 JSON 文档
DynamicJsonDocument sensorData(200);
无效设置() {
设置串行通信的波特率
mySerial.begin(9600);
初始化传感器数据变量
pH = 0.0;
浊度=0.0;
流量传感器 = 0.0;
温度 = 0.0;
}
无效循环() {
读取传感器数据
pH = 模拟读取(14);
浊度 = analogRead(15);
flowSensor = analogRead(16);
温度 = analogRead(17);
将传感器数据序列化为 JSON 字符串
sensorData[“pH”] = 酸碱度;
sensorData[“浊度”] = 浊度;
sensorData[“flowSensor”] = flowSensor;
sensorData[“temperature”] = 温度;
字符串 sensorDataString;
serializeJson(sensorData, sensorDataString);
sensorDataString+=“\n”;
将 JSON 数据字符串发送到 NodeMCU
mySerial.println(sensorDataString);
等待 1 秒钟,然后再次读取传感器数据
延迟(3000);
}
节点MCU代码如下:
NodeMCU 身份验证 WALA 代码
#include < Arduino.h>
#include < ESP8266WiFi.h>
#include < 软件序列号.h>
#include < ArduinoJson.h>
#include <Firebase_ESP_Client.h>
软件串行 mySerial(3, 0);RX_PIN和TX_PIN节点MCU
浮子pH值、浊度、流量传感器、温度;
提供令牌生成过程信息。
#include“addons/TokenHelper.h”
提供 RTDB 有效负载打印信息和其他帮助程序函数。
#include“addons/RTDBHelper.h”
插入网络凭据
#define WIFI_SSID “InvinsibleAP”
#define WIFI_PASSWORD“iWontTell”
插入 Firebase 项目 API 密钥
#define API_KEY “AIzaSyCjEnjPjNn3bgPDX-kOel3ZSTQxTt1HOUU”
插入 RTDB URL优化 RTDB URL */
#define DATABASE_URL“https://water-quality-monitoring-47fca-default-rtdb.firebaseio.com/”
定义 Firebase Data 对象
FirebaseData fbdo;
FirebaseConfig 配置;
bool signupOK = false;
无效设置(){
序列号开始(115200);
mySerial.begin(9600);初始化 SoftwareSerial
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print(“连接到 Wi-Fi”);
而 (WiFi.status() != WL_CONNECTED){
序列.print(“.”);
延迟(300);
}
序列.println();
Serial.print(“已连接IP: ”);
序列.println(WiFi.localIP());
序列.println();
config.database_url = DATABASE_URL;
}
无效循环() {
如果 (mySerial.available()) {
连接到 WiFi 后 LED 闪烁
digitalWrite(LED_BUILTIN, 高);
延迟(500);
字符串 sensorData = mySerial.readStringUntil('\n');从Arduino读取一行数据
解析接收到的JSON数据(您需要根据Arduino的数据格式进行调整)
DynamicJson文档jsonDoc(200);根据您的数据调整大小
DeserializationError 错误 = deserializeJson(jsonDoc, sensorData);
如果(错误){
Serial.print(“JSON解析错误: ”);
序列.println(error.c_str());
} else {
从 JSON 中提取传感器数据
pH = jsonDoc[“pH”];
浊度 = jsonDoc[“浊度”];
flowSensor = jsonDoc[“flowSensor”];
温度 = jsonDoc[“温度”];
现在,您可以将这些值存储在 Firebase 实时数据库中
如果 (Firebase.ready()) {
if (Firebase.RTDB.setFloat(&fbdo, “pH”, pH)) {
Serial.print(“pH值: ”);
Serial.println(pH值);
} else {
Serial.println(“无法写入pH值”);
Serial.println(“原因:” + fbdo.errorReason());
}
if (Firebase.RTDB.setFloat(&fbdo, “浊度”, 浊度)) {
Serial.print(“浊度: ”);
Serial.println(浊度);
} else {
Serial.println(“无法写入浊度值。
Serial.println(“原因:” + fbdo.errorReason());
}
if (Firebase.RTDB.setFloat(&fbdo, “温度”, 温度)) {
Serial.print(“温度: ”);
Serial.println(浊度);
} else {
Serial.println(“无法写入温度值”);
Serial.println(“原因:” + fbdo.errorReason());
}
if (Firebase.RTDB.setFloat(&fbdo, “flowSensor”, flowSensor)) {
Serial.print(“流量传感器: ”);
Serial.println(浊度);
} else {
Serial.println(“无法写入 FlowSensor 值”);
Serial.println(“原因:” + fbdo.errorReason());
}
}
}
digitalWrite(LED_BUILTIN, 低);
延迟(500);
}
}
我期望传感器数据将从 arduino 传输到 nodemcu,nodemcu 会将数据上传到 google firebase 在线数据库。请帮忙!
答: 暂无答案
评论