sim900a使用ONENET
时间: 2025-01-04 10:31:55 浏览: 4
### SIM900A 模块与 OneNET 平台连接配置
为了使 OCROBOT MANGO II 通过 GPRS 接入网络并上传数据到 OneNet 平台,SIM900A 模块需通过串口发送 AT 命令来初始化 TCP/IP 协议栈并与服务器建立连接[^1]。
#### 初始化设置
确保硬件连线无误之后,在程序启动阶段执行必要的初始化命令:
```c
// 设置 APN 参数 (根据运营商不同而变化)
Serial.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
delay(100);
Serial.println("AT+SAPBR=3,1,\"APN\",\"cmnet\""); // 或者其他指定的 APN 名称
delay(100);
// 打开无线连接
Serial.println("AT+SAPBR=1,1");
delay(2000);
// 获取 IP 地址
Serial.println("AT+SAPBR=2,1");
```
上述代码片段用于激活 PDP 上下文,并获取分配给设备的公网 IP 地址以便后续操作。这里假设使用的是中国移动 CMNET 服务;对于不同的移动网络提供商可能需要调整相应的参数值。
#### 创建持久性 TCP 链接
当成功获得有效的互联网访问权限后,则可以尝试创建指向目标主机(即 OneNet IoT Cloud)的一个稳定可靠的传输控制协议(TCP)会话:
```c
char server[] = "183.230.40.39"; /* 替换成实际的服务端地址 */
int port = 80; /* HTTP 端口号 */
/* 开启 socket */
Serial.print("AT+CIPSTART=\"TCP\",\"");
Serial.print(server);
Serial.print("\",");
Serial.println(port);
delay(5000); /* 给予足够的时间等待响应 */
```
这段脚本负责打开一个新的客户端套接字,并试图向特定的目的地发起三次握手过程从而形成一条双向的数据流通道。注意这里的 `server` 和 `port` 应该被替换为目标云服务平台的具体信息。
#### 数据上报流程
一旦建立了稳固的安全链路,就可以按照 EDP 协议格式化待传送的消息体并向远端推送更新请求了:
```c
String edpData;
edpData += "{\"msg\":\"up\",\"params\":{";
for(int i=0;i<sensorCount;i++){
if(i>0){
edpData += ",";
}
char buffer[20];
dtostrf(sensorValues[i], 6, 2, buffer);
edpData += "\""+ String(sensorNames[i]) +"\":\"" + String(buffer)+ "\"";
}
edpData += "}}";
// 发送长度前缀加消息本身
Serial.print("AT+CIPSEND=");
Serial.println(edpData.length());
delay(1000);
Serial.print(edpData);
```
此部分实现了将传感器采集得到的信息封装成 JSON 字符串的形式并通过已有的通信管道传递出去的功能。每次调用 `CIPSEND` 后都应该紧接着提供确切的内容大小以及具体的负载内容。
阅读全文