【手把手教学】用TCP透传的方式向onenet上传数据
- 元器件
- 接线图
- 连入自己的手机热点
- AT指令手动联网
- 云平台部分
- 自动联网及接入设备
- 云平台应用界面和数据查看
- 一些问题和解决方法
其实这种教程超级多,但是一个教程就能确确实实搞定这件事的我似乎没有找到。这两天正好在搞这个,就把我的步骤整理一下发出来,希望各位和我一样懵逼plus的小白们可以少走弯路。
元器件
- arduino uno R3
- esp8266 01s
- 杜邦线,电脑等
接线图
(有好多教程直接贴代码连接线都不说一下查资料的时候真的好崩溃啊)
arduino | esp8266 |
3.3v | 3.3v&EN |
GND | GND |
RXD | TXD |
TXD | RXD |
其实就是一个简单的交叉接法,TXD和RXD交叉连接就好了,一般使用软串口的较多,使用软串口也一样,把你定义的TX,RX和开发板上的交叉连接就好了。
需要注意的地方有两个:
- 如果不使用软串口,烧写程序的时候要把arduino开发板上的0 1(RXD TXD)两个口悬空,否则会上传失败。程序烧好之后再插上就行
- wifi模块的电源和使能都需要连在板子的3.3v上(这款arduino只有一个3.3v的口,但有两个5v,就让人很生气)
- 如果像我一样缺一个3.3v接口或者接口不够用的话可以引出3.3v到面包板,然后从面包板再去接wifi的管教,或者直接焊也可以
对于esp这个芯片再详细说两句。esp 01和esp 01s基本没啥区别,但01s最大的好处是板子上写明了引脚,可以不用去翻原理图。关于他俩的区别我直接复制两款芯片区别
ESP8266系列Wi-Fi模块一共有01~14十多款模块ESP8266-01简称ESP-01,ESP8266-01S简称ESP-01S至于他们的区别请看下图: 左边的是ESP8266-01S,右边的是ESP8266-01外观区别1:ESP8266-01S天线区域右下角只有一个指示灯,ESP8266-01天线区域右下角有两个指示灯。
外观区别2:ESP8266-01S背面有引脚说明,ESP8266-01背面有没有引脚说明。
内部区别:ESP8266-01S内部电路相对应ESP8266-01做了优化。
01s就按照上面表上写的连线就可以了,01的原理图上写的引脚名称不一样,如图。
01接线
arduino | esp8266 |
3.3v | VCC&CH_PD |
GND | GND |
RXD | TXD |
TXD | RXD |
连入自己的手机热点
(哇终于到这了,废话真的好多,可能这就是传说中的话多且密吧)
AT指令手动联网
程序(不知道为什么死活贴不上代码,我就放截图了,源代码我留一个下载链接在文末)
打开串口监视器(右上角放大镜图标)
等待显示“ok
ready”
输入AT 返回ok
输入AT+RST 返回 ok 一长段乱码 ready
输入AT+CWMODE=1 返回ok
输入AT+CWJAP=”SSID“,”password“ 返回ok
查看手机热点中出现名为esp……的设备
连接成果
每个指令输完后要回车
不能连入热点就反复AT+RST(重启esp)重试
这一部分的注意事项有
- 应该没有人会尝试使用中文的SSID吧……
- 串口监视器的波特率,程序里面设置的波特率和硬件的波特率应一致,我贴的程序里面波特率是115200
- 每一句AT指令都要记得加回车,因为回车是终止符,没有检测到回车这个指令就会被判定为没有发完
- 要把串口监视器的结束符设置为NL&CR
- 第一次连入一个新的网络需要先按这个步骤配置一次,后面就不用了。
- 串口通信,烧写程序这些应该不用再废话了吧,如果有小萌新不会的话指路百度经验,百度经验有些回答真的是保姆级交叉,我还挺喜欢的(突然又开始废话)串口通信实验
云平台部分
我们使用的是onenet,其他云平台也差不多,百度搜索名字然后点进去注册/登陆就可以了。
登陆之后进入开发者中心进行我们的产品的构建。
- 创建产品,协议选择TCP透传
- 添加设备
- 上传脚本TCP透传是需要自己上传脚本的,onenet官网提供了脚本模板,只需要下载模板,然后修改成自己的数据流名称和数量就可以了。这部分onenet官网提供了非常好的接入教程,我就不复制过来了,指路开发文档。TCP接入说明
- 特别提醒,数据流部分在程序的最后,前面的程序看不懂只要直接拉到最后改就好了。改完上传脚本这部分就ok
自动联网及接入设备
我们需要把AT指令写进程序让程序自动帮我们发送,并且链接到云平台,还要再实现设备和脚本的关联。
就没啥好说的了,贴程序吧。
我打了码的地方就是需要改的地方。
部分语句说明如下:
Serial.print("AT+CWJAP=\"SSID\",\"Password\"\r\n");
打码的第一句就是输入SSID和密码,其实和前面的AT指令对照就会发现这就是让程序输入AT+CWJAP指令。其他上文已经提及的AT指令下面就不再单独拉出来讲了Serial.print("AT+CIPSTART=\"TCP\",\"183.230.40.40\",1811\r\n");
这一句是链接到云平台,三个参数分别是接入协议,服务器地址和端口号,这句不需要改Serial.print("*产品ID#设备鉴权信息#脚本名*");
这一句是在关联脚本,每个设备可以关联一个脚本,设备的数据流名称,数量和格式都在脚本里面包含了Serial.println(String(int(temp1)));
此句是在发送数据
发送多个数据的格式为Serial.println(String(int(temp1))+String(int(temp2))+String(int(temp3))+String(int(temp4)));
以上步骤都完成后,打开onenet设备列表可以看到绿色的设备在线就是成功了。
云平台应用界面和数据查看
在云平台应用管理界面进行编辑和设计
还可以下载“设备云”实现手机端的查看
emmmm这部分是傻瓜式的应该也不用多说。
一些问题和解决方法
我在调试的过程中遇到的问题,我把他们列出来希望能给大家提供一点帮助。我也不知道为什么会出这样的原因也没啥好的办法,毕竟我只是一只菜狗。
- 烧写完程序后,第一次上电应该可以自动联网,如果不能再手机热点中找到设备,请先手动配网一次再回来烧写程序
- 如果有设备但串口监视器中始终(重复5次以上)出现AT+CWJAP
而不出现"AT+CIPSTART=“TCP”,“183.230.40.33”,80\r\n") 给主控断电后重新上电后(不必重新烧写)再打开串口监视器。 - 第一次加入一个网络必须先手动联网成功后方可进行其他步骤。
我发现了我的解决方案就是重启,疯狂重启,各种重启……
我太菜了。
以上内容参考借鉴以及复制了很多来自网络的内容,我主要是做了一个整理和说明的工作,如果有侵权,或者其他的冒犯请联系我删除或者修改。
感谢素昧平生的大佬们为本文提供的帮助(虽然没有一一去征求各位的意见)