技术标签: ESP8266
这阵子在学esp8266+stm32的知识,从小白学起,一步一步记录着
工具:TTL-usb,esp8266-01s,杜邦线,xcom串口助手
如图:
串口助手
连线:接线的时候要注意接好,我一开始没有接好,芯片会发烫,电压选用3.3v
TTL | ESP8266 |
3.3V | 3.3V |
TXD | RX |
RXD | TX |
GND | GND |
注意:我们先不要刷固件,直接拿来用就好,默认的波特率是115200,如果不清楚的,调试的时候,可以一个一个试下你的模块在哪个波特率下有接收
学习过程:
ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。
ESP8266可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。ESP8266硬件接口丰富,可支持UART,IIC,PWM,GPIO,ADC等,适用于各种物联网应用场合。
主要功能
ESP8266可以实现的主要功能包括:串口透传,PWM 调控,GPIO控制。
串口透传:数据传输,传输的可靠性好,最大的传输速率为:460800bps。
PWM 调控:灯光调节,三色LED 调节,电机调速等。
GPIO控制:控制开关,继电器等。
工作模式:
ESP8266模块支持STA/AP/STA+AP 三种工作模式。
应用领域
串口CH340 转Wi-Fi;工业透传DTU;Wi-Fi 远程监控/控制;玩具领域;色LED 控制;消防、安防智能一体化管理;智能卡终端,无线POS 机,Wi-Fi 摄像头,手持设备等。
透传模式只能在单连接模式下进行,所以在建立连接之前一定要用(AT+CIPMUX=0 设置单连接)
将TTL工具与ESP8266-01连接后,连接上电脑等待一段时间,等驱动安装成功,然后看到wifi芯片有蓝灯在闪烁
打开XCOM串口助手,并且手机开热点,接下来测试下面的AT指令
单连接客户端:
单连接客户端
AT+CWMODE = 3 //设置wifi模式,3为sta+ap共存模式,响应:ok
AT+RST //重启生效,响应:OK
AT+CWJAP = "SSID","PASSWORD" //连接路由,传入路由的wifi名跟密码,响应:ok
AT+CIFSR //查询设备ip,返回设备的IP地址,假设192.168.61.102
在电脑上使用网络助手,创建一个服务器,假设服务器IP地址为192.168.61.112
AT+CIPSTART = "TCP","192.168.61.112",8080 //响应:ok
AT+CIPSEND = 4 //发送四个字节,字节数可以按需任意定
> //输入要发送的四个字节内容,无需回车,响应:SEND OK
注意:若发送的字节数目超过了指令设定的长度n,则会响应busy,并发送数据的前n个字节,完成后响应send ok
+IPD,n:xxxxxxx //接收到的数据长度为n个字节,xxxxxxx为数据内容
手机开热点,电脑连接wifi,打开网络调试助手,配置电脑为server,ip地址要注意,然后打开XCOM进行调试,结果如下图所示
单连接服务器
单连接服务器
AT+CWMODE = 3 //设置wifi模式,3为sta+ap共存模式,响应:ok
AT+RST //重启生效,响应:OK
AT+CIPSERVER = 1 //默认端口333,响应:ok
电脑链接softAP,电脑作为客户端(client)连接设备
注意:esp8266作为server有超时机制,如果连接建立后,一段时间内无数据来往,server会将client踢掉,需要在电脑网络助手上,连上esp8266后,建立一个2s的循环数据发送,用于保持连接
AT+CIPSEND = 4 //发送四个字节,字节数可以按需任意定
>iopd //输入要发送的四个字节内容,无需回车,响应:SEND OK
注意:若发送的字节数目超过了指令设定的长度n,则会响应busy,并发送数据的前n个字节,完成后响应send ok
+IPD,n:xxxxxxx //接收到的数据长度为n个字节,xxxxxxx为数据内容
下面的是我参考的一些AT指令的说明,可以参考,或者可以找其他AT文档查看
AT指令:
命令类型 |
语法 |
返回和说明 |
执行命令 |
AT |
OK |
wifi功能的AT指令
AT+CWMODE:选择WiFi应用模式
命令类型 |
语法 |
返回和说明 |
设置命令 |
AT+CWMODE = <mode> |
OK |
此指令需重启后生效(AT+RST) |
||
查询命令 |
AT+CWMODE? |
+CWMODE:<mode>
OK |
当前处于哪种模式? |
||
测试命令 |
AT+CWMODE? |
+CWMODE:(<mode>取值列表)
OK |
当前可支持哪些模式? |
参数 |
定义 |
取值 |
对取值的说明 |
<mode> |
WiFi应用模式 |
1 |
Station模式 |
2 |
AP模式 |
||
3 |
AP+Station模式 |
AT+CWLAP:列出当前可用接入点
命令类型 |
语法 |
返回和说明 |
执行命令 |
AT+CWLAP |
+CWLAP: <ecn>,<ssid>,<rssi>[,<mode>]
OK |
此指令返回AP列表 |
参数 |
定义 |
取值 |
对取值的说明 |
<ecn> |
加密方式 |
0 |
OPEN |
1 |
WEP |
||
2 |
WPA_PSK |
||
3 |
WPA2_PSK |
||
4 |
WPA_WPA2_PSK |
||
<ssid> |
接入点名称 |
|
字符串参数 |
<rssi> |
信号强度 |
|
|
<mode> |
连接模式 |
0 |
手动连接 |
1 |
自动连接 |
AT+CWJAP:加入接入点
命令类型 |
语法 |
返回和说明 |
设置命令 |
AT+CWJAP=<ssid>,<pwd>
|
OK 或 ERROR |
加入该AP成功则返回OK,失败则返回ERROR |
||
查询命令 |
AT+CWJAP? |
+CWJAP:<ssid>
OK |
返回当前选择的AP |
参数 |
定义 |
取值 |
对取值的说明 |
<ssid> |
接入点名称 |
|
字符串型 |
<pwd> |
密码 |
|
字符串型,最长64字节,ASCII编码 |
AT+CWQAP:退出接入点
命令类型 |
语法 |
返回和说明 |
执行命令 |
AT+CWQAP |
OK |
表示成功退出该AP |
||
测试命令 |
AT+CWQAP=? |
OK |
查询该命令是否支持AT+CWSAP |
AT+CWSAP:设置AP模式下的参数
命令类型 |
语法 |
返回和说明 |
设置命令 |
AT+CWSAP=<ssid>,<pwd>,<chl>, <ecn> |
OK |
设置参数成功 |
||
查询命令 |
AT+CWSAP? |
OK |
查询当前AP参数 |
参数 |
定义 |
取值 |
对取值的说明 |
<ecn> |
加密方式 |
0 |
OPEN |
1 |
WEP |
||
2 |
WPA_PSK |
||
3 |
WPA2_PSK |
||
4 |
WPA_WPA2_PSK |
||
<ssid> |
接入点名称 |
|
字符串参数 |
<pwd> |
密码 |
|
字符串型,最长64字节,ASCII编码 |
<chl> |
通道号 |
|
|
AT+CIPSTART:建立TCP/UDP连接
命令类型 |
语法 |
返回和说明 |
设置命令 |
单 路 连 接 (+CIPMUX=0)时:
AT+CIPSTART=<type>,<addr>,<port>
多路连接(+CIPMUX=1)时:
AT+CIPSTART=<id>,<type>,<addr>,<port> |
如果格式正确,返回: OK
否则返回: +CME ERROR: invalid input value
连接成功,返回: CONNECT OK (CPIMUX=0) <id>, CONNECT OK (CIPMUX=1)
如果连接已经存在,返回: ALREADY CONNECT
连接失败返回: CONNECT FAIL (CIPMUX=0) <id>, CONNECT FAIL (CIPMUX=1) |
参数 |
定义 |
取值 |
对取值的说明 |
<id> |
Link No. |
0~4 |
表示连接序号 0号连接可client或server连接,其他id只能用于连接远程server |
<type> |
连接类型 |
“TCP”/”UDP” |
|
<addr> |
远程服务器IP地址 |
|
字符串型 |
<port> |
远程服务器端口号 |
|
|
AT+CIPSTATUS:获得TCP/UDP连接状态
命令类型 |
语法 |
返回和说明 |
执行命令 |
AT+CIPSTATUS |
如果是单路连接(AT+CIPMUX=0),返回: OK
STATE: <sl_state> |
如果是多路连接 (AT+CIPMUX=1),返回: OK
STATE:<ml_state> |
||
如果配置为服务器: STATE:IP STATUS S: <sid>,<port>,<server state> C:<cid>, <TCP/UDP>, <IP address>, <port>, <client state> |
||
测试命令 |
AT+CIPSTATUS=? |
返回: OK |
参数 |
定义 |
取值 |
对取值的说明 |
<sl_state> |
单连接状态
|
IP INITIAL |
初始化 |
IP STATUS |
获得本地 IP 状态 |
||
TCP CONNECTING/UDP CONNECTING |
TCP 连接中/UDP 端口注册中 |
||
CONNECT OK |
连接建立成功 |
||
TCP CLOSING/UDP CLOSING |
正在关闭 TCP 连接,正在注销 UDP 端口 |
||
<ml_state> |
多链接状态 |
IP INITIAL |
初始化 |
IP STATUS |
获得本地 IP 状态 |
||
<sid> |
服务器id |
0~1 |
取值为0和1 |
<server state> |
服务器状态 |
OPENING |
正在打开 |
LISTENING |
正在监听 |
||
CLOSING |
正在关闭 |
||
<cid> |
客户端id |
0~4 |
取值为0,1,2,3,4 |
<IP address> |
IP 地址 |
- |
字符串参数(字符串需要加引号) |
<port> |
服务器监听端口号 |
- |
整数型 |
<client state> |
客户端状态 |
CONNECTED |
已连接 |
CLOSED |
已关闭 |
AT+CIPMUX:启动多连接
命令类型 |
语法 |
返回和说明 |
设置命令 |
AT+CIPMUX=<mode>
|
OK
如果已经处于多连接模式,则返回 Link is builded |
启动多连接成功 |
||
查询命令 |
AT+CIPMUX? |
+CIPMUX:<mode>
OK |
查询当前是否处在多连接模式 |
参数 |
定义 |
取值 |
对取值的说明 |
<mode> |
是否处在多连接模式 |
0 |
单连接模式 |
1 |
多连接模式 |
AT+CIPSEND:发送数据
命令类型 |
语法 |
返回和说明 |
|
设置命令 |
单 路 连 接 (+CIPMUX=0)时: AT+CIPSEND=<length>
多路连接(+CIPMUX=1)时: AT+CIPSEND=<id>,<length> |
响应 |
模块收到指令后先换行返回”>”,然后开始接收串口数据,当数据长度满length时发送数据
如果未建立连接或连接被断开,返回ERROR如果数据发送成功,返回SEND OK
|
说明 |
发送指定长度的数据 |
||
测试指令 |
AT+CIPSEND? |
响应 |
单路连接(AT+CIPMUX=0)返回: +CIPSEND: <length>
OK |
多路连接(AT+CIPMUX=1)返回: +CIPSEND: <0-7>,<length>
OK |
|||
执行命令 |
AT+CIPSEND |
说明 |
AT+CIPMODE=1并且作为客户端模式下,进入透传模式(需要支持硬件流控,否则大量数据情况下会丢数据)
模块收到指令后先换行返回”>”,然后会发送串口接收到的数据。 |
参数 |
定义 |
取值 |
对取值的说明 |
<length> |
数据长度 |
|
单位:字节 |
<id> |
Link No. |
0~4 |
连接序号 |
AT+CIPCLOSE:关闭TCP/UDP连接
命令类型 |
语法 |
返回和说明 |
设置命令 |
单路连接时
AT+CIPCLOSE=<id> |
返回: CLOSE OK |
多路连接时
AT+CIPCLOSE=<n>[,<id>] |
返回: <n>,CLOSE OK |
|
执行命令 |
AT+CIPCLOSE |
如果关闭成功,返回: CLOSE OK
如果关闭失败,返回: ERROR |
测试命令 |
AT+CIPCLOSE? |
返回: OK |
注意事项 |
|
参数 |
定义 |
取值 |
对取值的说明 |
<id> |
关闭模式 |
0 |
慢关(缺省值) |
1 |
快关 |
||
<n> |
Link No. |
0~7 |
整数型,表示连接序号 |
AT+CIFSR:获取本地IP地址
命令类型 |
语法 |
响应和说明 |
|
执行命令 |
AT+CIFSR |
响应 |
+ CIFSR:<IP address>
OK 或者 ERROR |
测试命令 |
AT+CIFSR=? |
响应 |
OK |
参数 |
定义 |
取值 |
对取值的说明 |
<IP address> |
本机目前的IP地址(station) |
|
|
文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别
文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具
文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量
文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置
文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖
文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...
文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序
文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码
文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型
文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件
文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令
文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线