赞
踩
因为一些个人的毕设需求需要用到接入网络的模块连接OneNET,然后就选择了ESP-01s。仅代表个人知识探索,欢迎提出宝贵意见。
a.ESP8266是实现WiFi通讯的一个模块种类有很多分为ESP8266-12、ESP8266-12E、ESP-01s、ESP32等等这些模块一般用于WiFi通讯。
b.如图是ESP-01s模块它是由一颗ESP8266作为主控再由一颗flash作为存储芯片组成的,带有板载芯片供电采用3.3V电压使用串口进行烧写程序和AT指令集调试的,注意芯片一旦烧写了程序便不可使用AT指令集需要重新刷回AT指令集固件才可以使用AT指令集。(我故意放到键盘旁边就是为了突出它little)
这是ESP-01s的引脚说明,部分模块的CH_PD在板子上面的标识为EN
图片是借别的大佬的但是我再经过时间时遇到了一些他所没有提到的问题,也是花费了一些时间才解决的,所以我想有必要写明一下自己的经过。另外,我也会贴出大佬的[链接(https://blog.csdn.net/zyntxz/article/details/123048504)]。注意:在这里接线的时候我刚开始使用Arduino UNO开发板的3.3V直接连接ESP-01s然后就总是没有什么反馈,最后在看过很多人的经历后我推荐大家把3.3V的电压接到面包版再连接ESP01s。
a.我们本次要使用模拟Rx和Tx与ESP-01s进行通信,因此我们要使用到<SoftwareSerial.h>这个头文件,着这个头文件的下载与使用我也是出现了一些问题——在库管理器搜索不到。查询Arduino官方如下
大致的意思就是如果你的Arduino IDE的版本是1.0 及更高版本中包含的 SoftwareSerial 版本基于新软件串行库由“米卡尔·哈特”撰写。
要使用此库,请执行以下操作:#include <SoftwareSerial.h>。
b.简单联网测试一下,我个人推荐去连接自己的热点可以比较方便的读取AT指令
#include <SoftwareSerial.h> SoftwareSerial mySerial(8, 9); // RX, TX //模拟一个软串口 void setup() { Serial.begin(9600);//设置硬串口波特率 Serial.println("ESP8266 WIFI Test"); while (!Serial) { //串口是否准备好。 ; } Serial.println("hardware serial!"); mySerial.begin(9600);//设置8266的波特率为9600 mySerial.println("software serial!"); } void loop() { if (mySerial.available())//获取从软串口读取有效的字节数 { Serial.write(mySerial.read());//硬串口写软串口中读取的数据 } if (Serial.available()) { //获取从硬串口读取有效的字节数 mySerial.write(Serial.read());//软串口写硬串口中读取的数据 } }
打开Arduino IDE串口监视器 选择波特率9600,下方设为NL和CR
只有出现了ERROR才是运行成功***(如果一直没有就把两个波特率改为115200再试下)***
出现这个ERROR的时候不要惊慌!!!这说明你的ESP在通过Arduino UNO在于你的计算机进行通信。
c.下面开始向ESP-01s发送AT指令进行两位啦。在那之前先给大家介绍以下几个简单的AT指令。
AT`
CSDN的代码块太难用了,这是我用语雀写的
再发送指令的时候建议把Arduino IDE对键盘ENTER键的反馈 改为 换行 或者 换行和回车两者都是
如下图:
把上面的指令依次执行一下后:因为我用的是TCP透传,所以开发中最后我们还需要发送登录报文,只需要在输入框输入再发送就行
执行命令的过程如下:
接下来是我认为最难的部分了OneNET平台接收TCP数据是需要一个lua脚本官方有给的脚本模板在下图会有下载的渠道
虽然lua脚本代码很多很乱但是只需要改两个就够了
用户需要自行完成一下2个函数的实现
– 1、定时下发数据任务初始化函数:device_timer_init(dev)【可选】 --倒数第二个函数
– 2、对设备上传数据进行解析(包括心跳等):device_data_analyze(dev)–倒数第一个函数
下面是我的用的lua脚本
----------------------------------------------------------------------- -- 使用说明: -- -- V1.0 -- -- 用户需要自行完成一下2个函数的实现 -- -- 1、定时下发数据任务初始化函数:device_timer_init(dev)【可选】 -- -- 2、对设备上传数据进行解析(包括心跳等):device_data_analyze(dev) -- ----------------------------------------------------------------------- ------------------------------------------------------- -- 注册C函数 -- -- u2f 将32位整型内存数据转换为浮点数(不同于值转换)-- -- 类似C代码 *(float*)(&u) -- -- function utf(u) -- -- @param u number 整数值 -- -- @return 成功返回浮点数值,否则返回nil -- -- @example local u = 123 -- -- local f = u2f( 123 ) -- ------------------------------------------------------- -------------------------------------------------------- -- 将bytes string转换hex string -- -- @param s string bytes string -- -- @return 返回hex string,类似"0A0B0C0D..." -- -- @example local hex = to_hex("\2\2\0\150\0\37\206") -- -------------------------------------------------------- function to_hex(s) local i local t t={ s:byte</
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。