用 SIM 4G 模块在 Arduino 上发送数据到 ThingsBoard
正文与示例代码来自原稿。思路:Arduino 串口控制 SIM 4G 模块,用 GPRS + HTTP POST 把遥测打到 ThingsBoard。
1、实现思路
要使用 SIM 4G 模块在 Arduino 上发送数据到 ThingsBoard,可按下列步骤:
确认模块支持 GPRS(或等价蜂窝数据)
需要靠蜂窝数据上网才能访问 ThingsBoard。若不支持数据业务,则无法按本方案上报。把 SIM 4G 模块接到 Arduino
按模块数据手册接电源、接地与 UART(示例用软串口10/11作 RX/TX)。注意电平(3.3V / 5V)与供电电流。安装驱动 / 库
按厂商说明安装驱动,并把所需库加入 Arduino IDE(本示例仅用到 IDE 自带的SoftwareSerial)。在 ThingsBoard 创建设备
注册/登录 ThingsBoard,创建设备,复制设备 Access Token,后面填进 URL。编写并上传 Arduino 代码(见下节)
串口监视器验证
上传后打开串口监视器,观察模块 AT 回显与 HTTP 结果;再到设备遥测页确认是否有temperature/humidity等字段。
2、示例代码
示例通过 AT 命令:附着 GPRS → 配 APN → 开承载 → HTTPINIT → 设置遥测 URL → 周期性 HTTPDATA + HTTPACTION POST JSON。
请把下面几处改成你的环境:
your_apn:运营商 APNhttps://your-thingsboard-url:平台地址(公网可达)YOUR_ACCESS_TOKEN:设备令牌
#include <SoftwareSerial.h>
SoftwareSerial sim4g(10, 11); // RX, TX
void setup()
{
Serial.begin(9600);
sim4g.begin(9600);
delay(1000);
sim4g.println("AT+CGATT=1"); // Attach to GPRS
delay(1000);
sim4g.println("AT+SAPBR=3,1,\"APN\",\"your_apn\""); // Set APN
delay(1000);
sim4g.println("AT+SAPBR=1,1"); // Open GPRS context
delay(1000);
sim4g.println("AT+HTTPINIT"); // Initialize HTTP session
delay(1000);
// ThingsBoard 设备遥测 HTTP API
sim4g.println(
"AT+HTTPPARA=\"URL\",\"https://your-thingsboard-url/api/v1/YOUR_ACCESS_TOKEN/telemetry\""
);
delay(1000);
}
void loop()
{
String data = "{";
data += "\"temperature\":25.0,";
data += "\"humidity\":50.0";
data += "}";
String postRequest = "AT+HTTPDATA=" + String(data.length()) + ",10000";
sim4g.println(postRequest);
delay(1000);
sim4g.println(data);
delay(1000);
sim4g.println("AT+HTTPACTION=1"); // HTTP POST
delay(1000);
sim4g.println("AT+HTTPREAD"); // Read HTTP response
delay(1000);
while (sim4g.available()) {
Serial.write(sim4g.read());
}
delay(60000); // 每 60 秒上报一次
}该代码连接 SIM 4G 并设置 APN,再把 JSON 遥测 POST 到 ThingsBoard。URL 与 Access Token 必须改成你自己的;示例字段为 temperature、humidity。
ThingsBoard 设备侧 HTTP 遥测路径一般为:
POST /api/v1/{ACCESS_TOKEN}/telemetry
Content-Type: application/json3、上传与测试
- 将代码上传到 Arduino。
- 打开串口监视器(波特率与
Serial.begin一致,示例为 9600)。 - 确认 AT 回显正常、
HTTPACTION返回成功类状态。 - 在 ThingsBoard 设备 最新遥测 中查看是否出现上报字段。
补充(辅)
| 点 | 说明 |
|---|---|
| HTTPS | 不少模组对 HTTPS/证书支持有限;若 POST 失败,可先在内网用 http:// 验证链路,再查模组 SSL 应用文档 |
| CONTENT 类型 | 部分模组需额外 AT+HTTPPARA="CONTENT","application/json" |
| MQTT | 模组若支持 MQTT,也可直连 TB 1883/8883,主题如 v1/devices/me/telemetry;本篇按原稿走 HTTP |
| 供电 | 4G 发射瞬时电流大,建议模组独立供电并共地,避免 Arduino 口供电不稳导致掉网 |
| APN | 必须与 SIM 运营商一致,否则 SAPBR 打不开 |
相关文章
- 场景联动(平台侧 MQTT 模拟与规则链)
- MQTT 解码超过限制解决办法
- 专栏导读
