STM32学习笔记:ESP8266模块(1)

2023-11-07

由于项目要求要涉及到物联网,公司要采用wifi 于是就采购了一块串口wifi模块,ESP8266

开始拿到后首先应该掌握的就是测试,熟悉AT指令,因为串口wifi通信是采用AT指令进行通信的,

在这里需要注意一点的就是:在编写程序的时候,一个串口(usart2)连接ESP8266,另一个串口(USart1)通过USB-TTL连接PC机查看输出信息,

bool ESP8266_Cmd ( char * cmd, char * reply1, char * reply2, u32 waittime )
{    
    strEsp8266_Fram_Record .InfBit .FramLength = 0;               //从新开始接收新的数据包

    macESP8266_Usart ( "%s\r\n", cmd );

    if ( ( reply1 == 0 ) && ( reply2 == 0 ) )                      //不需要接收数据
        return true;

    Delay_ms ( waittime );                 //延时

    strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ]  = '\0';//增加一个结束符。

    printf ( "%s", strEsp8266_Fram_Record .Data_RX_BUF );//将USART2接收到的东西全部打印出来,接收到的保存在这个数组里,通过串口1发送出来,这样就能看到,我们发送的指令的响应,是否出错,例如:发送AT,响应是OK, USART2接收到的数据是AT OK.在交给USART1发送,在PC机的串口调试助手可以看到这些信息,


    if ( ( reply1 != 0 ) && ( reply2 != 0 ) )
        return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply1 ) || 
                         ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply2 ) ); 

    else if ( reply1 != 0 )
        return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply1 ) );

    else
        return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply2 ) );

}

用的是这款,
这里写图片描述
这里写图片描述
这个是连接图,
GPIO0 默认是工作模式(不接线)。如果接了低电平就是下载模式(给模块刷固件!!),所以可以不接线,当然也可以接高电平。

反正一开始连接的时候CH_PD必须为高电平。其余的可以不接。

如果电脑的wifi上显示了你的wifi信号说明模块已经工作。

注意默认的波特率是115200!!!!!!设置好串口调试助手的波特率,再贴张图片吧防止亲们忘。
这里写图片描述
记得输入各种AT指令前,勾选上“发送新行”,然后输出READY!代表系统正

系统启动后,系统会输出一堆乱码,就是系统开机启动电平的变化状态,不影响。开机后,蓝灯会闪,红灯长亮,

来谈谈EPS8266的AT指令

先说一下EPS8266模快的两(三)种工作模式:Station 模式,AP 模式和AP 兼 Station 模式;有玩过路由器的应该知道路由器除了正常使用(AP模式)外,还可以接收其他路由器的信号(Station 模式),然后再发出来(AP 兼 Station 模式)。这两(三)种工作模式各怎样用呢!

先说一下AP模式下的通信:就设置他的模式为AP模式(就相当于普通路由器)

AT+CWMODE=? 响应返回当前可支持哪些模式

AT+CWMODE? 响应当前处于哪种模式

AT+CWMODE=2 1-Station 模式,2-AP 模式,3-AP 兼 Station 模式

步骤1 发送AT+CWMODE=2设置为AP 模式
这里写图片描述
这种模式下模块发出无线wifi信号。用电脑连接它。
步骤2 发送AT+RST 重启模块使AT+CWMODE=2模式生效
这里写图片描述
步骤3 发送AT+CIPMUX=1 启动多连接
这里写图片描述
这里写图片描述
为什么要启动多路连接模式,意思是允许多个客户端连接,当然模块最多允许5个客户端连接(每个客户端对应一个id号,0–4)。也是必须设定的,不然配置为服务器会出错

接着就是怎样与它通信。当然是网络通信,也就是TCP/UDP通信两种。{UDP–分为发送端和接收端,面向无连接的通信(速度快),只向指定的ip(每一台电脑都有自己的ip地址,向指定的ip地址发数据,数据就发送到了指定的电脑)端口(我把数据发送到电脑了,电脑中的哪个程序接收呢。不知道亲们知不知道,其实每一个网络软件都有自己的通信端口,像qq,酷狗音乐的下载端口等等。现在知道了吧,向指定的ip地址和指定的端口发数据,才能发送到指定的电脑的指定的程序上)不管你接没接收到,只管发}

{TCP–分为服务器和客户端,与udp不同的是双方建立正常的连接后,才能通信,每次通信都会检测连接正不正常,(通信可靠,速度比udp慢)}

模块作为服务器
步骤4 发送AT+CIPSERVER=1,8080开启服务器模式,端口号8080
这里写图片描述
这里写图片描述
打开电脑的网络调试助手(别忘了连接它的无线网)
这里写图片描述
对了远程主机地址为什么是192.168.4.1

你可以发送AT+CIFSR指令查看一下模块的自身ip地址
这里写图片描述
这里写图片描述

点击连接

这里写图片描述
这里写图片描述

接着就是发信息(客户端发给服务器)

这里写图片描述

接着就是发信息(服务器发给客户端)

这里写图片描述

去掉发送新行点击发送
这里写图片描述

客户端接收
这里写图片描述

模块作为客户端,PC作为服务器,最有意思的来了

模块作为客户端咱从头再来,

1,还是设置模块的工作模式为ap模式AT+CWMODE=2

2,复位一下AT+RST

3,发送AT+CIPMUX=0 启动单连接,先弄单连接后弄多连接,多连接比较有意思,想知道就慢慢的往下看

4,AT+CIPSTART=”TCP”,”192.168.4.2”,8080

TCP说明是tcp连接,如果写udp就是udp连接

192.168.4.2连接的ip地址,电脑的ip,端口号8080

这里写图片描述
这里写图片描述
这里写图片描述
接着就可以通信了

单路连接时发送指令为AT+CIPSEND=x , x为发送的字节数
这里写图片描述
看多路连接(首先提醒:一个模块可以做到四路连接)

1,还是设置模块的工作模式为ap模式AT+CWMODE=2

2,复位一下AT+RST

3,发送AT+CIPMUX=1 启动多连接

4,AT+CIPSTART=0,”TCP”,”192.168.4.2”,8080

5, AT+CIPSEND=0,20

6,去掉回车随便打些东西

7,发送

接着再发送

AT+CIPSTART=1,”TCP”,”192.168.4.2”,8080

AT+CIPSTART=2,”TCP”,”192.168.4.2”,8080

AT+CIPSTART=3,”TCP”,”192.168.4.2”,8080

AT+CIPSTART=4,”TCP”,”192.168.4.2”,8080

都连接上了!!!!!!
这里写图片描述
5, AT+CIPSEND=1,20

6,去掉回车随便打些东西

7,发送

5, AT+CIPSEND=2,20

6,去掉回车随便打些东西

7,发送

5, AT+CIPSEND=3,20

6,去掉回车随便打些东西

7,发送

5, AT+CIPSEND=4,20

6,去掉回车随便打些东西

7,发送

这里写图片描述
再用网络调试助手给模块发信息试一试
这里写图片描述

好了AP模式就讲这么多,该Station 模式了

Station模式与AP模式不同在于,Station模式需要让模块连接上家里的路由器的wifi。其余的都一样吧!

就让模块在Station模式下做服务器,然后与电脑通信(要在一个wifi下,电脑和模块连接同一个wifi信号)

1,发送AT+CWMODE=1设置为Station模式

2,AT+RST 重启生效

3,连接家里的路由AT+CWJAP=”TP-LINK_A52”,”1234567890”
这里写图片描述
这里写图片描述
发送AT+CWLAP可以查询周围的wifi信号

发送AT+CWJAP可以看一看wifi是否真的连接上

4,AT+CIPMUX=1 启动多连接

5,AT+CIPSERVER=1,8080 打开服务器端口为8080

6,AT+CIFSR 看一下你模块现在分得的ip是多少,因为只要模块连网就会重新分配ip地址。这也是网络助手里面远程主机栏要填写的ip地址
这里写图片描述
这里写图片描述
这里写图片描述
通信啥的就不多说了。

用模块做客户端

1 连接路由器AT+CWJAP=”TP-LINK_A52”,”1234567890”

2 AT+CIPMUX=0 单连接

3 AT+CIPSTART=”TCP”,”192.168.1.101”,8080

后面就是发送数据,如果出现一直连接不上关闭电脑防火墙
这里写图片描述
这里写图片描述
多连接就不演示了,

AT+CIPSTART=0,”TCP”,”192.168.1.101”,8080或

AT+CIPSTART=1,”TCP”,”192.168.1.101”,8080或

AT+CIPSTART=2,”TCP”,”192.168.1.101”,8080或

AT+CIPSTART=3,”TCP”,”192.168.1.101”,8080或

AT+CIPSTART=4,”TCP”,”192.168.1.101”,8080或

发送数据

AT+CIPSEND=0,20或

AT+CIPSEND=1,20或

AT+CIPSEND=2,20或

AT+CIPSEND=3,20或

AT+CIPSEND=4,20

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32学习笔记:ESP8266模块(1) 的相关文章

  • 双轮平衡车实现自平衡功能

    1 功能说明 在双轮小车上安装一个六轴陀螺仪传感器 本文示例将实现双轮小车自主平衡功能 2 电子硬件 在这个示例中 我们采用了以下硬件 请大家参考 主控板 Basra主控板 兼容Arduino Uno 扩展板 Bigfish2 1扩展板 传
  • 【Java】Java中的“引用类型”和C中的“指针”区别

    文章目录 前言 1 Java中 基本数据类型 和 引用数据类型 变量在内存分配时的不同 2 C中 指针 的特点 3 Java中 引用 的特点 4 Java的参数传递 5 参考 前言 在学习Java中变量的数据类型时 发现其分为2大类 基本数
  • spring加载流程之ConfigurationClassPostProcessor

    spring加载流程之ConfigurationClassPostProcessor ConfigurationClassPostProcessor postProcessBeanDefinitionRegistry processConf
  • FPGA面试真题解析

    FPGA面试真题解析 1 1 十进制46 25对应的二进制表达式为 硬件逻辑实习岗 A 101110 11 B 101101 01 C 101110 1 D 101110 01 解析 这个问题看上去很简单 那是因为我们平时可以打开电脑上的计

随机推荐

  • 若依-了解头像(文件)上传流程

    周知 本文主要记录本人关于自主学习若依框架的部分心得经验 必定有许多不足甚至理解有误的部分 如果对你有帮助我也不胜欢喜 如果发现有错误的地方也希望能够分享指出 一起加油 需求原因 客户内部系统 一般不对外开放 因此不适合将文件 如图片 存放
  • 常用的函数接口

    常用的函数接口 FunctionalInterface public interface Function
  • R语言 if else 语句

    R语言中if else语句的编写格式 因为R是解释语言 如果else单独起一行 无法解释执行 所以else不能单独一行 最好这样写 if a print hello else print Hi 转载于 https www cnblogs c
  • 基于vue+element-ui实现Cascader级联选择器+Table树形数据

    开发进度提前50 啊 真香 下面 看图说话 Table树形数据 Cascader级联选择器 功能实现 详细代码 Cascader级联选择器 options属性指定选项数组即可渲染出一个级联选择器 所以后端接口返回的数据结构要保持一一致性 这
  • 记一次Redis批量删除Key问题

    记一次Redis批量删除Key问题 前言 最近在项目中使用redis时发现一个问题 批量删除的时候删除不了 代码如下 redis配置 Bean public RedisTemplate redisTemplate RedisConnecti
  • C/C++中关于位域的一些总结

    转载自 http blog csdn net xkjcf article details 7688528 由于信息存储时 可能只占一位或者几位二进制位 比如开关量 只需要占据一位即可 为了节省存储空间 并且处理简单 C语言提供了一种数据结构
  • 点云地图三维表面重建

    通过对点云进行表面三角化mesh重建 可以使得点云地图更加轻量化 同时针对地面 红色 和非地面 蓝色 使用不同采样率的三角面片顶点 可以进一步减少地图数据量
  • 面试准备:Java常见面试题汇总(二)

    面试准备 Java常见面试题汇总 一 面试准备 Java常见面试题汇总 二 面试准备 Java常见面试题汇总 三 文章目录 43 java 中的 Math round 1 5 等于多少 44 String str abc 与 String
  • CAP简述-一致性、可用性、分区容忍性

    一致性 Consistency 是指在同一时刻 分布式系统中的所有数据备份为相同值 可用性 Availability 指集群中的某一个节点故障宕机后 集群还能响应客户端请求 即假设一个节点挂 另一个备份节点要顶上 分区容忍性 Partiti
  • 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 搞了一下 Vim IDE for Python Go 我将整个搭建的过程整理成本篇文章分享出来 本篇是 Python 版本的保姆级教程 实际上我还写了 Go 版本的 有想看的可以本篇文章点个赞 我下篇就发 一说到 I
  • Linux环境安装Jenkins(详细,亲测可行)

    1 基础环境 Linux java环境 linux安装java1 8 拒绝 emo的博客 CSDN博客 rpm下载 Index of jenkins redhat stable 清华大学开源软件镜像站 Tsinghua Open Sourc
  • 总结一些小细节 ---- Android

    1 Null pointer dereference of parent getItemAtPosition where null comes from constant This error always happened in the
  • Vue注册全局方法,全局组件,全局过滤器,全局自定义指令的方法

    1 添加全局方法 1 使用Vue prototype 在main js中写 Vue prototype getData params gt 2 使用install Vue prototype 在你的全局函数文件fun js中写 export
  • 邻接矩阵的存储方式实现图的广度和深度优先遍历

    在做图的邻接矩阵之前 先做好准备工作 定义存储类型 声明队列的操作 在广度优先遍历中使用 include
  • CSS之定位属性

    一定位介绍 定位的基本思想很简单 它允许你定义元素出现在页面的任何位置 是通过position属性配合left right 等来实 现的 二定位类别 1 相对定位 相对定位就是相对于自己以前在标准流中的位置来移动 语法 position r
  • 初识 TVM

    如有图像或公式显示错误 可以访问我的个人博客 https www wanglichun tech 2019 11 15 tvm 笔者也是最近偶然的机会才开始接触TVM 使用过后发现 经过auto tuning后的TVM模型在速度是竟然超过了
  • 知识图谱02

    知识图谱2 一 引言 二 运行环境 三 搭建知识图谱 四 启动问答测试 五 踩坑 1 关于路径 2 报错 一 引言 主要将项目跑起来 对项目有一个宏观的认识 搭建知识图谱 启动问答测试 构建一个简单的基于知识图谱的对话系统 二 运行环境 p
  • table标签-移动端适配

    封装一个组件 该组件需要根据不同设备屏幕宽度自适应调整展示方式 对于 PC 端 以类似 el table 的形式展示数据 而移动端则以一个类似 item 的形式展示每行数据 可以先在组件中判断设备类型 如以下示例代码所示
  • 杀linux进程的几种命令详解

    之前只知道kill killall命令 能杀死进程就行 有些进程杀不死的也不知道为何 今天看书发现出来kill killall命令 还有一个pkill命令 详细看了下他们的介绍和使用 kill杀进程的工作原理 首先了解下kill为何能杀死进
  • STM32学习笔记:ESP8266模块(1)

    由于项目要求要涉及到物联网 公司要采用wifi 于是就采购了一块串口wifi模块 ESP8266 开始拿到后首先应该掌握的就是测试 熟悉AT指令 因为串口wifi通信是采用AT指令进行通信的 在这里需要注意一点的就是 在编写程序的时候 一个