SIM800L模块HTTPS连接故障求助及Arduino IoT Cloud适配指导
SIM800L R14.18 连接HTTPS服务器(含Arduino IoT Cloud)傻瓜式指南
一、先搞定基础问题(解决601/603/605错误)
这些错误基本都是承载没配好、网络没连上、SSL参数不对,按顺序查:
- 先确认模块连上网了:
发AT+CREG?,返回+CREG: 0,1(本地注册)或+CREG: 0,5(漫游注册)才正常,要是不对先查SIM卡插好没、天线有没有信号 - 激活PDP承载(必做):
- 配置APN:
AT+CGDCONT=1,"IP","CMNET"(移动用CMNET,联通换UNINET,电信换CTNET,根据你用的运营商改) - 激活承载:
AT+CIICR,必须返回OK,失败就换APN试试
- 配置APN:
- 配置SSL版本(对应你的固件):
发AT+CSSLCFG="sslversion",1,0(0是TLS1.0,正好匹配你R14.18的支持范围),返回OK就行
二、HTTPS连接两种玩法(AT命令直接操作)
玩法1:用模块自带的HTTP客户端(推荐,省事)
- 初始化HTTP:
AT+HTTPINIT→ 等OK - 设置HTTPS地址:
AT+HTTPPARA="URL","https://你的目标服务器地址"(比如Arduino IoT Cloud的API:https://api2.arduino.cc/iot/v2/things) - 开启SSL:
AT+HTTPPARA="SSLENABLE",1 - (如果连不上,试试关证书校验):
AT+CSSLCFG="cacert",1,""(R14.18支持这个命令,部分旧固件不行) - 发请求:
- GET请求:
AT+HTTPACTION=0→ 等返回+HTTPACTION: 0,200,xxx(200就是成功) - POST请求:先发
AT+HTTPDATA=数据长度,10000(10000是超时毫秒),收到DOWNLOAD提示后输JSON数据,再发AT+HTTPACTION=1
- GET请求:
- 读响应:
AT+HTTPREAD - 用完关掉:
AT+HTTPTERM
玩法2:直接建SSL TCP连接(适合自定义请求)
- 激活承载后,查本地IP:
AT+CIFSR→ 能返回IP说明网络没问题 - 连服务器:
AT+SSLCONN="目标服务器域名",443(443是HTTPS默认端口)→ 返回OK就是连上了 - 发请求:
AT+CIPSEND→ 看到>后输入完整HTTP请求,比如GET /你的路径 HTTP/1.1\r\nHost: 目标域名\r\nConnection: close\r\n\r\n,输完按Ctrl+Z发送 - 收响应:模块会直接返回服务器发的内容
- 断开:
AT+CLOSSL
三、对接Arduino IoT Cloud API 步骤
- 先在Arduino IoT Cloud里创设备、加变量,然后去设备的「Things」页面→「API Keys」生成API密钥,记好设备ID和密钥
- 构造HTTPS请求:
- 目标URL:
https://api2.arduino.cc/iot/v2/things/你的设备ID/properties/你的变量名 - 请求头要带认证:
Authorization: Bearer 你的API密钥,还有Content-Type: application/json
- 目标URL:
- 用模块HTTP客户端发POST的示例:
AT+HTTPINITAT+HTTPPARA="URL","https://api2.arduino.cc/iot/v2/things/abc123/properties/temperature"(把abc123换成你的设备ID,temperature换成变量名)AT+HTTPPARA="SSLENABLE",1AT+HTTPPARA="HEADER","Authorization: Bearer 你的API密钥"AT+HTTPPARA="HEADER","Content-Type: application/json"AT+HTTPDATA=16,10000(假设发的是{"value":25.5},字符数是16,按需调整长度)- 看到
DOWNLOAD后输入{"value":25.5} AT+HTTPACTION=1- 等返回
+HTTPACTION:1,200,xxx,就说明数据发成功了
四、踩坑排查
- 601错误:HTTP初始化失败→检查承载有没有激活(
AT+CIICR是不是返回OK) - 603错误:URL无效或网络不通→用
AT+CDNSGIP="目标域名"测DNS能不能解析,不行就直接换服务器IP(比如用nslookup api2.arduino.cc查IP) - 605错误:SSL连不上→确认TLS版本设的是0(TLS1.0),或者试试关证书校验
- 要是DNS解析失败,直接把URL里的域名换成IP,比如
https://18.192.xxx.xxx/iot/v2/things
内容的提问来源于stack exchange,提问作者Ahmed Akif Hekimoğlu
相关产品推荐
相关产品推荐

