Arduino Uno 未将连接到 A3 的传感器数据传输到 NodeMCU

arduino uno not tranferring the sensor data connected to the a3 to the nodemcu

提问人:Ayush Pandey 提问时间:11/16/2023 更新时间:11/16/2023 访问量:11

问:

我正在为我的大学准备一个使用 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 在线数据库。请帮忙!

Arduino IoT Arduino-uno nodemcu

评论

0赞 hcheung 11/18/2023
首先阅读这篇文章,了解如何将代码放入代码块中,以及如何在代码中添加代码缩进以便于阅读。

答: 暂无答案