基于小熊派WIFI-ESP8266实践(上)

举报
Engineer-Bruce_Yang 发表于 2020/05/02 09:12:30 2020/05/02
【摘要】 ESP8266相信大家再熟悉不过了,这个东西从我大学开始一直用到工作,至今已经有好几个年头了。这是一款无线WIFI模块,专为移动设备,可穿戴电子产品和物联应用设计,可以通过AT指令配置,和单片机上的串口进行通信,利用WIFI进行数据传输。1、AT指令简介AT指令,是模组(4G、Wifi、蓝牙等等)厂商设计的一组协议规范,大家可以百度一下什么是AT指令。2、小熊派的ESP8266模块介绍以下E...

ESP8266相信大家再熟悉不过了,这个东西从我大学开始一直用到工作,至今已经有好几个年头了。这是一款无线WIFI模块,专为移动设备,可穿戴电子产品和物联应用设计,可以通过AT指令配置,和单片机上的串口进行通信,利用WIFI进行数据传输。

1、AT指令简介

AT指令,是模组(4G、Wifi、蓝牙等等)厂商设计的一组协议规范,大家可以百度一下什么是AT指令。

blob.png

2、小熊派的ESP8266模块介绍

以下ESP8266扩展板模块的硬件原理图、模块图以及在小熊派上的连接示意图。

blob.png

blob.png

blob.png

小熊派有个好处,单独调模块的时候不要飞一堆凌乱的线了,只需把这个开源拨到AT PC即可,调试该模块的方法:

blob.png


  • 1、如果对模块AT指令不熟悉,建议先切换到AT_PC模式把模块的指令玩熟。
  • 2、如果对模块AT指令熟悉,可在AT_PC模式下调试指令作为参考,然后切换到AT_MCU模式进行软件应用程序的开发。

WIFI ESP8266开发难点主要在于SSID和PASSWORD的获取,那么这就涉及到了配网,这里提供了不用SDK开发的几种配网模式,这也是我在项目上用得最多的,当然有时候为了应付检测,我还会另一种更加简单粗暴的方法(接下来的文章里会介绍,这里先不讨论)。

3、ESP8266配网/联网思路(基于AT指令开发)

3.1 ESP8266配网思路

3.1.1 使用手机APP来给ESP8266配置WIFI热点和密码

假设已经开发了一个手机APP,这个APP完成的功能如下:

1、连接设备接的模块ESP8266生成的热点
2、给设备热点发送要连接的路由器的名字和密码

配网流程:

1、让ESP8266进入AP模式
设备MCU通过串口给ESP8266发送AT+CWMODE=2,让ESP8266进入AP模式,如果进入AP模式成功,用手机可以搜索到ESP8266模块的热点信息,此时ESP8266相当于一个路由器。
2、用手机APP去连接这个ESP8266,然后发送配网协议
发送路由器ssid和password,假设格式如下:
ssid:"xxx",password:"xxxx"
3、解析APP发过来的字符串格式
ESP8266串口收到```ssid:"xxx",password:"xxxx"```这个字符串,设备MCU处理收到的这个字符串,将ssid和password提取出来,然后分别保存到缓存区SSID、PASSWORD里。
4、设备让ESP8266进入STA模式
设备MCU通过串口给ESP8266发送AT+CWMODE=1,让ESP8266进入STA模式。
5、设备连接路由器
拿保存在缓存区的SSID和PASSWORD,设备通过串口给ESP8266发送连接指令
AT+CWJAP="SSID","PASSWORD"
6、连接公网服务器===>120.78.136.134:8888
AT+CIPSTART="TCP","xxx.xx.xxx.xxx",xxxx

配网成功!如果以后MCU端程序设置不在初始化设置模式下,不会执行该流程,默认开机就会直接连接对应的热点和服务器。

3.1.2 ESP8266配网(使用上位机串口来给模组配置)

假设以及开发了一个上位机,这个上位机完成的功能如下:

1、上位机通过串口连接设备
2、具有设置wifi帐号和密码的功能(其实就是发送一条串口指令,带有wifi帐号和密码)
3、具有设置服务器ip和端口号的功能(其实就是发送一条串口指令,带有服务器ip和端口号)

配网流程:

1、直接让设备进入STA模式
上位机通过串口给接有ESP8266的设备发送AT+CWMODE=1,让ESP8266进入STA模式。
2、设备接收到上位机发送过来的进入STA模式的指令,透传给ESP8266,这时ESP8266如果设置成功,则处于STA模式
3、特定模式下(初始化设置),线程等待上位机下发的指令
指令格式:
(1)设置wifi连接路由器
SSID:"xxxx","PASSWORD":"xxxxx"
(2)设置wifi连接服务器
SERVER_IP:"xxx.xxx.xxx.xxx",PORT:xxxx
4、设备接收到上位机下发的指令,进行解析后分别保存在缓存区中。
5、设备连接路由器
拿保存在缓存区的SSID和PASSWORD,设备通过串口给ESP8266发送连接指令
AT+CWJAP="SSID","PASSWORD"
6、连接公网服务器
AT+CIPSTART="TCP","xxx.xxx.xxx.xxx",xxxx

配网成功!如果以后MCU端程序设置不在初始化设置模式下,不会执行该流程,默认开机就会直接连接对应的热点和服务器。

3.1.3 ESP8266配网(使用上位机网络TCP来给模组配置)

假设以及开发了一个上位机,这个上位机完成的功能如下:

1、上位机可以用TCP/IP连接wifi热点(ESP8266)===>需要知道esp8266的ip和端口号,通过window网络状态可以查到。
2、具有设置wifi帐号和密码的功能(其实就是发送一条串口指令,带有wifi帐号和密码)
3、具有设置服务器ip和端口号的功能(其实就是发送一条串口指令,带有服务器ip和端口号)

配网流程

设备端

1、直接让设备进入AP模式
上位机通过串口给接有ESP8266的设备发送AT+CWMODE=2,让ESP8266进入AP模式。
指令:AT+CWMODE=2
2、重启设备,确保AP模式设置成功
指令:AT+RST
3、开启多路连接
指令:AT+CIPMUX=1
4、为设备端创建热点
指令:AT+CWSAP=“WIFI名称”,“WIFI密码”,1,4
5、设备端启动服务器
指令:AT+CIPSERVER=1,8080

PC端:

1、事先需要让PC去连接wifi热点===>WIFI名称、WIFI密码
2、通过网络连接详情查看当前热点的IPv4服务器地址
3、PC端开发的上位机连接IPv4服务器地址,端口号就是设备端指定的端口号:8080
4、PC端开发的上位机下发指令给设备端
指令格式:
(1)设置wifi连接路由器
SSID:"xxxx","PASSWORD":"xxxxx”
(2)设置wifi连接服务器
SERVER_IP:"xxx.xxx.xxx.xxx",PORT:xxxx

设备端

1、解析字符串,如果含有SSID:“xxxx”,“PASSWORD”:“xxxxx”,取得ssid和password,保存到设备端的FLASH中,如果为其它,则设定接收出错的条件。
2、解析字符串,如果含有SERVER_IP:“xxx.xxx.xxx.xxx”,PORT:“xxxx”,取得server_ip和port,保存到设备端的FLASH中
,如果为其它,则设定接收出错的条件。
3、如果已经解析完两个字符串,自动重启,切换到STA模式,取出ssid和password,连接ap,连接成功后,却出flash中的server_ip和port,连接服务器,如果成功,则可进入数据上传,如果不成功,则返回ap连接,依次进行,直到成功后,此时程序中连接成功的标志会置一。
4、定时查询与服务器端确认是否连接成功,如果不成功,需要重新连接服务器。
5、可上传数据

4、通过串口工具简单测试一下ESP8266联网

(1)、将开关拨到AT_PC端。

  • 1、如果对模块AT指令不熟悉,建议先切换到AT_PC模式把模块的指令玩熟。
  • 2、如果对模块AT指令熟悉,可在AT_PC模式下调试指令作为参考,然后切换到AT_MCU模式进行软件应用程序的开发。

WIFI ESP8266开发难点主要在于SSID和PASSWORD的获取,那么这就涉及到了配网,这里提供了不用SDK开发的几种配网模式,这也是我在项目上用得最多的,当然有时候为了应付检测,我还会另一种更加简单粗暴的方法(接下来的文章里会介绍,这里先不讨论)。

3、ESP8266配网/联网思路(基于AT指令开发)

3.1 ESP8266配网思路

3.1.1 使用手机APP来给ESP8266配置WIFI热点和密码

假设已经开发了一个手机APP,这个APP完成的功能如下:

1、连接设备接的模块ESP8266生成的热点
2、给设备热点发送要连接的路由器的名字和密码

配网流程:

1、让ESP8266进入AP模式
设备MCU通过串口给ESP8266发送AT+CWMODE=2,让ESP8266进入AP模式,如果进入AP模式成功,用手机可以搜索到ESP8266模块的热点信息,此时ESP8266相当于一个路由器。
2、用手机APP去连接这个ESP8266,然后发送配网协议
发送路由器ssid和password,假设格式如下:
ssid:"xxx",password:"xxxx"
3、解析APP发过来的字符串格式
ESP8266串口收到```ssid:"xxx",password:"xxxx"```这个字符串,设备MCU处理收到的这个字符串,将ssid和password提取出来,然后分别保存到缓存区SSID、PASSWORD里。
4、设备让ESP8266进入STA模式
设备MCU通过串口给ESP8266发送AT+CWMODE=1,让ESP8266进入STA模式。
5、设备连接路由器
拿保存在缓存区的SSID和PASSWORD,设备通过串口给ESP8266发送连接指令
AT+CWJAP="SSID","PASSWORD"
6、连接公网服务器===>120.78.136.134:8888
AT+CIPSTART="TCP","xxx.xx.xxx.xxx",xxxx

配网成功!如果以后MCU端程序设置不在初始化设置模式下,不会执行该流程,默认开机就会直接连接对应的热点和服务器。

3.1.2 ESP8266配网(使用上位机串口来给模组配置)

假设以及开发了一个上位机,这个上位机完成的功能如下:

1、上位机通过串口连接设备
2、具有设置wifi帐号和密码的功能(其实就是发送一条串口指令,带有wifi帐号和密码)
3、具有设置服务器ip和端口号的功能(其实就是发送一条串口指令,带有服务器ip和端口号)

配网流程:

1、直接让设备进入STA模式
上位机通过串口给接有ESP8266的设备发送AT+CWMODE=1,让ESP8266进入STA模式。
2、设备接收到上位机发送过来的进入STA模式的指令,透传给ESP8266,这时ESP8266如果设置成功,则处于STA模式
3、特定模式下(初始化设置),线程等待上位机下发的指令
指令格式:
(1)设置wifi连接路由器
SSID:"xxxx","PASSWORD":"xxxxx"
(2)设置wifi连接服务器
SERVER_IP:"xxx.xxx.xxx.xxx",PORT:xxxx
4、设备接收到上位机下发的指令,进行解析后分别保存在缓存区中。
5、设备连接路由器
拿保存在缓存区的SSID和PASSWORD,设备通过串口给ESP8266发送连接指令
AT+CWJAP="SSID","PASSWORD"
6、连接公网服务器
AT+CIPSTART="TCP","xxx.xxx.xxx.xxx",xxxx

配网成功!如果以后MCU端程序设置不在初始化设置模式下,不会执行该流程,默认开机就会直接连接对应的热点和服务器。

3.1.3 ESP8266配网(使用上位机网络TCP来给模组配置)

假设以及开发了一个上位机,这个上位机完成的功能如下:

1、上位机可以用TCP/IP连接wifi热点(ESP8266)===>需要知道esp8266的ip和端口号,通过window网络状态可以查到。
2、具有设置wifi帐号和密码的功能(其实就是发送一条串口指令,带有wifi帐号和密码)
3、具有设置服务器ip和端口号的功能(其实就是发送一条串口指令,带有服务器ip和端口号)

配网流程

设备端

1、直接让设备进入AP模式
上位机通过串口给接有ESP8266的设备发送AT+CWMODE=2,让ESP8266进入AP模式。
指令:AT+CWMODE=2
2、重启设备,确保AP模式设置成功
指令:AT+RST
3、开启多路连接
指令:AT+CIPMUX=1
4、为设备端创建热点
指令:AT+CWSAP=“WIFI名称”,“WIFI密码”,1,4
5、设备端启动服务器
指令:AT+CIPSERVER=1,8080

PC端:

1、事先需要让PC去连接wifi热点===>WIFI名称、WIFI密码
2、通过网络连接详情查看当前热点的IPv4服务器地址
3、PC端开发的上位机连接IPv4服务器地址,端口号就是设备端指定的端口号:8080
4、PC端开发的上位机下发指令给设备端
指令格式:
(1)设置wifi连接路由器
SSID:"xxxx","PASSWORD":"xxxxx”
(2)设置wifi连接服务器
SERVER_IP:"xxx.xxx.xxx.xxx",PORT:xxxx

设备端

1、解析字符串,如果含有SSID:“xxxx”,“PASSWORD”:“xxxxx”,取得ssid和password,保存到设备端的FLASH中,如果为其它,则设定接收出错的条件。
2、解析字符串,如果含有SERVER_IP:“xxx.xxx.xxx.xxx”,PORT:“xxxx”,取得server_ip和port,保存到设备端的FLASH中
,如果为其它,则设定接收出错的条件。
3、如果已经解析完两个字符串,自动重启,切换到STA模式,取出ssid和password,连接ap,连接成功后,却出flash中的server_ip和port,连接服务器,如果成功,则可进入数据上传,如果不成功,则返回ap连接,依次进行,直到成功后,此时程序中连接成功的标志会置一。
4、定时查询与服务器端确认是否连接成功,如果不成功,需要重新连接服务器。
5、可上传数据

4、通过串口工具简单测试一下ESP8266联网

(1)、将开关拨到AT_PC端。

blob.png

(2)、打开串口调试助手

blob.png]

(3)、发送联网命令

这里需要两个指令

blob.png

blob.png

试试PING百度:

blob.png


后续透传模式及连接服务器,发送数据的过程会在代码中体现。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。