当前位置: 首页 > ai >正文

14.Wifi模组(ESP8266)

目录

WIFI 模组讲解

WIFI 模组和 TCP/IP 的关系

常见的 WIFI 模组ESP8266

ESP8266 相关 AT 指令集介绍

        AT 指令集的格式

        指令分类 1

        指令分类 2

        与 ESP8266 通信,串口参数如何配置

ESP8266WIFI 设置 3 种无线通信模式:

开发板相关的硬件电路

作为客户端,连接本地服务器/远程服务器

        如何确定需要发送哪些 AT 指令

        ESP8266 的调试

                调试的目的

                直接使用 USB 转 TTL 和模块调试通信

                不依赖程序和 ESP8266 模块调试通信--借助板子的 CH340

                依赖程序的调试

        验证一些基本的指令 -- 是否开启回显

        验证查询、测试、设置、执行指令等

        连接指定的服务器 – 安信可透传云

                透传发送数据到平台

                非透传发送数据到平台

        透传和非透传的区别

        从调试到编程--调试获取的信息


WIFI 模组讲解

WIFI 模组和 TCP/IP 的关系

        TCP/IP 是一种网络协议,现在很多网络模块是集成了 TCP/IP 协议。就像单片机集成了硬件 SPI,硬件 IIC,和串口等。

常见的 WIFI 模组ESP8266

        

        乐鑫:生产芯片,以无线为主,ESP8266 ESP32

        安信可:在厂家基础上,二次开发

ESP8266 相关 AT 指令集介绍

        AT 指令集是一个通用的说法:WIFI 模块,4G 模块,CAT1 模块,NB_IOT,蓝牙模块..

        AT 指令集的格式

                指令格式:(AT)开头 + 数据 + (回车+换行)结尾

                        串口传输方式:UART 的 TTL

                        默认波特率:根据从设备确定

                字符串:”AT+数据+回车+换行”

        指令分类 1

        指令分类 2

                ESP8266 指令集主要分为:基础 AT 指令、 Wi-Fi 功能 AT 指令、 TCP/IP 相关的 AT 指令。

        与 ESP8266 通信,串口参数如何配置

        注意:需要发送新行(\r\n)

ESP8266WIFI 设置 3 种无线通信模式:

        混合模式(同时只能使用一种模式)

        AP 模式 -- 相当于手机释放热点,让别人连接

        STA 模式 -- 相当于手机连接别人的热点

开发板相关的硬件电路

/*结合硬件原理图 ESP8266 接在 UART3PE6 ESP_EN 通用推挽输出 R52 R53 两个上拉电阻未焊接,如果焊接,也可以开漏PB10 USART3_TX 复用推挽输出PB11 USART3_RX 浮空输入*/ 

作为客户端,连接本地服务器/远程服务器

        如何确定需要发送哪些 AT 指令

                最核心的问题:拿到一本 AT 指令集,内部 AT 指令太多了,如何确定要用哪些指令

                1.看文档

                2.找厂家

        ESP8266 的调试

                调试的目的

                有的ESP8266 是焊在板子上,当我们拿到一个新模块,比如说 ESP8266,我们给它供电,他的接口是 TTL,如果想电脑和模块通信,就需要用 USB 转 TTL 跟它通信,通过这个过程,去学习和确定这个模块到底怎么用,确认发哪些指令,确认发的指令对不对,多长时间回复,正确和错误回复是什么内容

                直接使用 USB 转 TTL 和模块调试通信

                1. 用 USB 转 TTL 跟 ESP8266 通信(TTL 电平,交叉)

                2. 根据需要指令,测试完整的配置过程,能够实现功能,证明 AT 指令的顺序是对的

                3. 之后在单片机编程,实现发送 AT 指令的过程

                不依赖程序和 ESP8266 模块调试通信--借助板子的 CH340

                1. 单片机编译下载没有串口 1 收发数据的程序,避免程序操作串口 1 影响-- 直接空工

                2. 接线--目的是让板载的 CH340 直接和 ESP8266 通信

                        PB11(ESP_TX) 接 PA9(CH340_RX)

                        PB10(ESP_RX) 接 PA10(CH340_TX)

                        PE6(ESP_EN) 接 3.3V--模块开机 -- 切记不要接 5V

                3. 串口助手按如下设置

                4. 输入要发送的指令 --点击发送

                注意:光标要放在 T 的后面,不能放下一行

                5. 正确的回复截图

                6. 如果回复 busy --确认第 4 步是否正确

                依赖程序的调试

                1. 将板子上的刚才的三根线都拔掉

                2. 修改串口 1 的初始化中的波特率为 115200

                3. 编写串口 3 的初始化,波特率 115200,开启接收中断和空闲中断,EN 引脚也需要配置。

                4. 编写串口 1 和串口 3 的中断服务函数

                        串口 1 和电脑通信

                        串口 3 和 ESP8266 通信的

                5. 在串口 1 中断服务函数中调用串口 3 发送数据

                        USART_SendData(USART3,data); //调用串口 3 的发送函数,将收到的数据转发给 ESP8266

                        注意:两个串口波特率要一致,都是 ESP8266 要求的波特率 115200

                        注意:使用的发送函数,是库直接提供的,不使用二次封装的单字节

                6. 在串口 3 中断服务函数中调用串口 1 发送数据

                        USART_SendData(USART1,data); //调用串口 1 的发送函数 , 将收到的数据转发给 CH340,CH340 接电脑

        验证一些基本的指令 -- 是否开启回显

        验证查询、测试、设置、执行指令等

        连接指定的服务器 – 安信可透传云

                透传发送数据到平台

                        1. 按下复位,模块重启

                        2. 确定发送哪些指令

                        3. 按照手册第 4 章的顺序发送指令

AT 测试模块AT+RST 重启模块 ,非必须AT+CWMODE=1 设置为 STA 模式AT+CWJAP="Smartisan","12345678" 连接 wifiAT+CIPSTART="TCP","122.114.122.174",33582 连接服务器AT+CIPMODE=1 进入透传模式AT+CIPSEND 开始传输数据+++ 退出透传模式 

                        4. 打开安信可透传云

                                http://tt.ai-thinker.com:8000/ttcloud

                        5. 手机释放热点 -- 热点一定要使用 2.4G 频段,5G 连不上

注意 1:热点一定要是 2.4G 的注意 2:注意一下连接的数量,限制连接数量可能就连不上了注意 3:WIFI 名称不要有中文 

                        6. 修改要连接的参数

                        7. 按照指令顺序依次发送

                        23 25 26 27 28 29 30 34

                        8. 成功平台就会显示 GOGOGO

                重复执行第 7 步就可以重复发送到平台

                        9. 平台下发数据到 ESP8266

                        10. 如果想恢复 AT 指令模式 -- 退出透传

透传:透明传输,配置成透传之后,发的数据无论是否是什么数据,都会发出去

退出透传 发送+++ 并且无换行回车 延时 1s

                        11. 再次发送 AT 指令,就可以正常回复了

                非透传发送数据到平台

                        1. 按下复位键,模块重启

                        2. 确定发送哪些 AT 指令

                        3. 按照手册第 2 章的顺序发送指令

                        4. 打开安信可透传云

                        5. 手机释放热点 -- 热点一定要使用 2.4G 频段,5G 连不上

                        6. 修改要连接的参数

                        7. 按照下面的图片顺序发送指令

                        8. 成功之后,截图

                                注意:AT+CIPSEND=5\r\n 中的 5,表示要发送的数量 ,超过的数据会被截断

                        9. 重复发送,需要重复执行截图中步骤的第 5、6 步

        透传和非透传的区别

                透传:透明传输建立透传之后,ESP8266 收到什么数据,就转发什么数据,即使这个数据是 AT 指令,也转发,不处理。

                非透传模式:永远处于 AT 指令模式

        从调试到编程--调试获取的信息

1. 每一条指令,ESP8266 正确和错误执行回复的什么内容,因为我们编程要检测

2. 每一条指令, ESP8266 需要多长时间反应,才能处理结束。

3. 这条指令正确和错误的回复,分别是什么内容

4. 判断回复的时候,要判断尾巴

5. 上一条指令处理完,再发送新的指令,否则提示 busy

6. 如果指令错误,就会回复 ERROR

/*
发送AT指令检测是否正确回复
参数1 待发送指令
参数2 期望回复
参数3 接收数据存放缓冲区
参数4 超时时间
参数5 是否检测回复
返回值 0 未检测到期望回复
返回值 1 检测到期望的回复
*/
uint8_t Send_CMD_Check_Rec(uint8_t *cmd, uint8_t *ack, uint8_t *buff, uint64_t time_out, uint8_t ack_flag)
{//发之前清除接收缓冲区,正式使用最好不要有这句话ESP_R_Buff_Clear();//发送要发送的指令ESP_SendStr(cmd);//根据是否需要检测回复处理if(ack_flag == 0){//不需要检测,延时对应的时间,返回Delay_ms(time_out);return 1;}while(strstr((char *)Esp.R_Buff, (char *)ack) == NULL){//查找不成功time_out--;Delay_ms(1);if(time_out <= 0){//等待时间,还未查找成功,返回失败return 0;}}return 1;
}

作为客户端,连接时间服务器获取时间

作为客户端,连接心知天气服务器获取天气

作为服务端,处理 AP 模式

http://www.xdnf.cn/news/10419.html

相关文章:

  • LeetCode 热题 100 208. 实现 Trie (前缀树)
  • 724.寻找数组的中心下标前缀和
  • 网页前端开发(基础进阶2)
  • 多线程( Thread)
  • Python训练打卡Day39
  • 电子电路:时钟脉冲与上升沿的详细解析
  • CppCon 2014 学习:ASYNCHRONOUS COMPUTING IN C++
  • ssm 学习笔记day03
  • OVD开放词汇检测 Detic 训练COCO数据集实践
  • 28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
  • 【Java学习笔记】枚举
  • 怎么更改cursor chat中的字体大小
  • XCPC 常用技巧
  • Beta分布Dirichlet分布
  • [Python] Python中的多重继承
  • 飞牛fnNAS装机之迷你小主机的利旧
  • SolidWorks软件的安装与卸载
  • 12 Java GUI
  • Word双栏英文论文排版攻略
  • 【解决】【亲测下载obsidian可行】打不开github.com 或者 加速访问 github
  • Pull Request Integration 拉取请求集成
  • Python实现HPSO-TVAC优化算法优化支持向量机SVC分类模型项目实战
  • QT/c++航空返修数据智能分析系统
  • 重读《人件》Peopleware -(15)Ⅱ 办公环境 Ⅷ 撑伞之步:构建理想办公环境(上)
  • 数据中台(大数据平台)之数据安全管理
  • InternVL2.5-多模态大模型评估专业图片
  • Python爬虫:AutoScraper 库详细使用大全(一个智能、自动、轻量级的网络爬虫)
  • 从模式到架构:Java 工厂模式的设计哲学与工程化实践
  • 【办公类-22-05】20250601Python模拟点击鼠标上传CSDN12篇
  • 开始使用 Elastic AI Assistant for Observability 和 Amazon Bedrock