2024-3-18 09:55:30 [显示全部楼层]
296浏览
查看: 296|回复: 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上连了个温度传感器



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail