1269| 0
|
[求助] 4G模块发送AT指令连接onenet显示设备不在线 |
#include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire_2(2); DallasTemperature sensors_2(&oneWire_2); DeviceAddress insideThermometer; const char* mqtt_server = "183.230.40.39"; // OneNet的IP地址 const char* mqtt_devid = "1205002978"; // 设备ID const char* mqtt_pubid = "628726"; // 产品ID const char* mqtt_password = "4g"; // 鉴权信息 float ds18b20_2_getTemp(int w) { sensors_2.requestTemperatures(); if(w == 0) { return sensors_2.getTempC(insideThermometer); } else { return sensors_2.getTempF(insideThermometer); } } void setup4G() { Serial1.println("AT"); delay(100); // 查询卡状态 Serial1.println("AT+CPIN?"); delay(100); // 查询网络注册情况 Serial1.println("AT+CREG?"); delay(100); // 激活网络 Serial1.println("AT+CSTT"); delay(100); Serial1.println("AT+CIICR"); delay(100); Serial1.println("AT+CIFSR"); delay(100); } void setupMQTT() { // 设置 MQTT 相关参数 Serial1.print("AT+MCONFIG="); Serial1.print(mqtt_devid); Serial1.print(","); Serial1.print(mqtt_pubid); Serial1.print(","); Serial1.print(mqtt_password); Serial1.println(); delay(200); } void connectToServer() { // 建立 TCP 连接 Serial1.print("AT+MIPSTART="); Serial1.print(mqtt_server); Serial1.print(",6002"); Serial1.println(); delay(200); // 客户端向服务器请求会话连接 Serial1.println("AT+MCONNECT=1,60"); delay(100); } void publishMessage(float temp) { // 发布消息 Serial1.print("AT+MPUB="); Serial1.print("$dp"); Serial1.print(",0,0,{\"temp\":"); Serial1.print(temp); Serial1.println("}"); delay(1000); } void setup() { Serial1.begin(115200); // 设置串口1波特率 Serial.begin(9600); delay(100); sensors_2.begin(); sensors_2.getAddress(insideThermometer, 0); sensors_2.setResolution(insideThermometer, 9); setup4G(); // 初始化4G模块 setupMQTT(); // 设置MQTT参数 } void loop() { connectToServer(); // 连接服务器 // 获取温度数据 float temperature = ds18b20_2_getTemp(0); // 发布温度数据 publishMessage(temperature); // 查询 MQTT 连接状态 Serial1.println("AT+MQTTSTATU"); delay(500); // 检查串口是否有数据可读 if (Serial1.available()) { // 读取并打印串口数据 Serial.println("Received data from Serial1:"); while (Serial1.available()) { char receivedChar = Serial1.read(); Serial.print(receivedChar); } Serial.println(); } } 代码运行出现乱码,onenet云平台还是没有设备显示在线,用串口调试助手去发送at指令就能连上云平台,写在Arduino上就没有反应,求大神朋友们告知我原因,4g模块的rx和tx连接的ESP32的1号串口,ESP32用的USB线连接电脑,esp32上连了个温度传感器 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed