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上连了个温度传感器
页:
[1]