ESP32 IDF小白到大师实战
文章平均质量分 94
以实战代码为主,理论基础为辅助。从基础到wifi蓝牙贯穿所有实战项目,帮助你在项目中快速开发。
物联网程序猿
1、多年的智能家居,智慧酒店、智能安防、及大型公共场所智能控制经验;
2、在工作中积累了多年的RS485总线、dmx512、zigbee、wifi、Nb-Iot、4G、网络相关通信协议。
3、业余时间研究一些新的技术,以为不再年轻的自己留下曾经拼搏的痕迹。
展开
-
ESP32 IDF开发 应用篇㉒ 蓝牙BLE GAP和GATT协议专题讲解
蓝牙协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈包括两个部分:控制器和主机。任何配置文件和应用程序都是建立在 GAP 和GATT 协议层上。· GAP 层:直接与应用程序或配置文件(profiles)通信的接口,处理设备发现和连接相关服务。另外还处理安全特性的初始化。· GATT 层:定义了使用 ATT 的服务框架和配置文件(profiles)的结构。BLE 中所有的数据通信都需要经过 GATT。所以这种主要介绍GAP个GATT协议。原创 2023-11-17 08:45:16 · 841 阅读 · 1 评论 -
ESP32 IDF开发 应用篇㉑ MQTT通信
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。MQTT现在主要用于即时通讯,物联网M2M,物联网采集等。原创 2023-11-16 08:52:53 · 1422 阅读 · 2 评论 -
ESP32 IDF开发 应用篇⑳ WebSocket
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。这里介绍大部分Websocket库的使用更详细的请参考:更多API 参考esp-idf\components\esp_websocket_client\include\esp_websocket_client.hWebsocket API和http API的封装类似使用起来也似曾相识。跟esp_http_client主要是对esp_websocket_client_config_t结构体的操作。原创 2023-11-15 09:03:16 · 1935 阅读 · 3 评论 -
ESP32 IDF开发 应用篇⑲ 空中升级OTA
在实际产品开发过程中,在线升级可以远程解决产品软件开发引入的问题,更好地满足用户需求。OTA(空中)更新是使用 Wi-Fi 连接而不是串行端口将固件加载到 ESP 模块的过程。(1)、ESP32 的 OTA 升级有三种方式:·Arduino IDE:主要用于软件开发阶段,实现不接线固件烧写·Web Browser:通过 Web 浏览器手动提供应用程序更新模块·HTTP Server:自动使用http服务器 - 针对产品应用在三种升级情况下,必须通过串行端口完成第一个固件上传。原创 2023-11-15 08:56:04 · 1964 阅读 · 2 评论 -
ESP32 IDF开发 应用篇⑱ esp_http_client实例分析
在上一篇已经介绍了http的基本概念,这章主要介绍esp_http_client.c文件中封装好的api函数的使用。这里介绍大部分esp_http_client库的使用更详细的请参考:更多API 参考esp-idf\components\esp_http_client\include\esp_http_client.h(1)、esp_http_client的初始化先来看看初始化API/*** @brief 启动HTTP会话。原创 2023-11-14 08:47:02 · 838 阅读 · 3 评论 -
ESP32 IDF开发 应用篇⑰ http请求
http(Hypertext transfer protocol)超文本传输协议,通过浏览器和服务器进行数据交互,进行超文本(文本、图片、视频等)传输的规定。也就是说,http协议规定了超文本传输所要遵守的规则。·无状态:HTTP协议是无状态。对于事务处理没有记忆能力,如果需要处理前面信息,则必须重传,这样可能导致每次连接传送的数据量增大·基于TCP协议:HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。原创 2023-11-14 08:39:23 · 1087 阅读 · 2 评论 -
ESP32 IDF开发 应用篇⑯ SmartConfig一键配网
在前面章节连接wifi我们都是直接在程序中写入ssid和password,但在实际项目中是不允许直接写入代码中。当你拿到一块WiFi模块,如果需要连上网络,则需要将SSID名称、密码设置到模块当中。一般有几种方式:(1)、一种就是通过串口接到输入设备,通过串口输入AT指令(SSID名称和密码),但是前提是该模块本身烧入了AT固件,很明显不符合Arduino core for ESP32开发;原创 2023-11-13 09:05:34 · 1554 阅读 · 3 评论 -
ESP32 IDF开发 应用篇⑮ Wifi UDP通信
在前面章节已经为大家介绍了ESP32 WIFI STA 及AP模式的基本应用,本章是基于wifi sta模式开发。Tcp的理论知识这里就不过多介绍,大家百度一下比我讲解起来好多了。TCP与UDP优缺点:·TCP是面向连接,也就是发送数据之前是需要建立连接;UDP是面向无连接的,即发送数据之前不需要建立连接。·TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力做到可靠,即不保证绝对可靠。原创 2023-11-13 08:51:12 · 1618 阅读 · 5 评论 -
ESP32 IDF开发 应用篇⑭ Wifi TCP客户端和服务器通信
在前面章节已经为大家介绍了ESP32 WIFI STA 及AP模式的基本应用,本章是基于wifi sta模式开发。Tcp的理论知识这里就不过多介绍,大家百度一下比我讲解起来好多了。(1) Tcp 与udp的区别及各自的特点TCP: •面向连接的:发数据前要进行连接。 •可靠的连接:TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达。 •点到点:TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达 •最大长度有限:仅 1500 字节。原创 2023-11-12 10:30:57 · 1835 阅读 · 4 评论 -
ESP32 IDF开发 应用篇⑬ 连接Wifi回调函数esp_event_handler_register专题
在前面章节已经为大家介绍了ESP32 WIFI STA 及AP模式的基本应用,本章是基于上一个章节的详细解析篇所以理论不多说,直接主题。函数的实现是在esp-idf\components\esp_event\default_event_loop.c文件中函数的功能:将事件处理程序注册到系统事件循环,在这里也列数来几个参数的功能/*** @brief 将事件处理程序注册到系统事件循环。*此函数可用于注册以下任一处理程序:(1)特定事件,原创 2023-11-12 10:30:29 · 1638 阅读 · 2 评论 -
ESP32 IDF开发 应用篇⑫Wifi STA模式和AP模式的使用
在前面章节已经为大家介绍了ESP32的基本应用,idf框架已经有了基本认识。从本章开始将带领大家一起探索esp32的核心功能wifi。(1) Wifi的3中工作模式•Station模式,也叫站点模式;•AP模式,也叫Soft-AP模式,可以理解为WiFi热点模式;•以上两种的集合模式,Station 兼Soft-AP,也是Mesh NetWork的实现基础;任何基于ESP32的WiFi功能开发,都是基于上面其中一种工作模式来进行开发。所以,它们是我们WiFi基础学习的重点。原创 2023-11-11 09:47:56 · 4413 阅读 · 6 评论 -
ESP32 IDF开发 系统篇⑪ 系统启动流程及硬件复位问题分析
表示从分区0x10000地址处读取应用程序也就是我们常见的app_main()函数对应的程序,从上面的下载程序中正好对应的有下载应用程序在0x10000处,说明0x10000处下载的是我们写的应用程序。•程序上电之后第一阶段的 bootloader 加载第二阶段的 bootloader,第一阶段的位于 ROM 里面,芯片出厂前固化的程序,第二阶段的位于Flash的 0x1000 地址。•0x1000-0x8000处存放的是bootloader,bootloader的作用就是用来引导系统的启动和程序的下载;原创 2023-11-11 09:38:35 · 728 阅读 · 3 评论 -
ESP32 IDF开发 驱动篇⑩ 存储NVS高级应用和自定义分区表
在“ESP32 IDF开发 驱动篇⑨ 存储NVS的基本应用”章节我们已经介绍了nvs的介绍和基本操作,并且留下了许多疑问。下面就来对这些疑问一一揭开神秘的面纱。(1)分区表的介绍分区表文件位于: esp-idf\components\partition_table文件下, 该路径下所有的.csv文件都是用来对Flash分区进行配置如下图:无OTA分区:partitions_singleapp.csv、partitions_singleapp_coredump.csv。原创 2023-11-10 08:58:08 · 1406 阅读 · 2 评论 -
ESP32 IDF开发 驱动篇⑨ 存储NVS的基本应用
(1)NVS的介绍非易失性存储(Non-volatile storage)简称 NVS,乐鑫使用一套 NVS 库将键值对保存在 SPI flash 中。NVS 库可以使用 read、write、erase 的 API 操作 flash 的一部分,在系统分区表中该库使用 data 类型和 nvs 子类型的所有分区。应用程序可以使用 nvs_open API 选用 nvs 表中的分区或通过nvs_open_from_part API 指定其名称后使用其他分区。注:NVS分区表将在下一章讲解。原创 2023-11-10 08:41:56 · 1406 阅读 · 3 评论 -
ESP32 IDF开发 驱动篇⑧ ADC简单实用与介绍
ESP32 集成了 2 个 12 位逐次逼近模数转换器 (SAR ADC),由 5 个专用转换器控制器管理.支持 18 个通道(模拟使能引脚)的测量. ADC 还可测量 vdd3.3V 等内部信号.其中一些引脚可用于设计 1 个可编程增益放大器,用于测量微弱模拟信号。SAR ADC 使用的 5 个控制器均为专用控制器,其中 2 个支持高性能多通道扫描、2 个经过优化可支持 Deep-sleep 模式下的低功耗运行,另外 1 个专门用于 PWDET/ PKDET (功率检测和峰值监测)。原创 2023-11-09 09:04:38 · 738 阅读 · 3 评论 -
ESP32 IDF开发 驱动篇⑦UART两个串口的使用
(1)熟悉掌握UART相关API;(2)掌握esp32 串口的使用方法;2、Uart库的介绍ESP32最多只有3个串口上。有关Uart详细函数请参考msys32\esp-idf\components\driver\include\driver\uart.h在这里我只做几个重要经常使用的API函数讲解Uart库函数分为:(1)、填充uart结构体设置串口基本参数;(2)、锁定串口引脚;(3)发送接收串口数据uart结构体设置串口API:原创 2023-11-09 08:58:50 · 1865 阅读 · 3 评论 -
ESP32 IDF开发 驱动篇⑥定时器的使用方法
有关Timer相关函数请参考esp-idf\components\esp_common\include\esp_timer.hTimer库也比较简单主要分3步:配置定时器、设置定时器回调函数、启动定时器。/*** @brief 初始化esp_timer库* @return*-ESP_OK成功*-ESP_ERR_NO_MEM,如果分配失败*-ESP_ERR_INVALID_STATE(如果已初始化)*-来自中断分配器的其他错误/*** @brief 取消初始化esp_timer库。原创 2023-11-08 09:36:23 · 1067 阅读 · 2 评论 -
ESP32 IDF开发 驱动篇⑤GPIO及外部中断讲解
①学习 ESP32 GPIO输入/输出的配置②掌握ESP32 GPIO 中断API的使用方法③学习FreeRTOS API的任务创建及消息队列2、原理ESP32 的 GPIO 接口介绍:ESP32芯片具有40个物理GPIO引脚。 某些GPIO引脚无法使用或芯片封装上没有相应的引脚(请参阅技术参考手册)。 每个引脚都可以用作通用I / O或可以连接到内部外围信号。请注意,GPIO6-11通常用于SPI闪存(不可使用)。GPIO34-39只能设置为输入模式,没有软件上拉或下拉功能。提供了单独的“原创 2023-11-08 09:29:14 · 1147 阅读 · 3 评论 -
ESP32 IDF开发流程篇③ vscode的使用
(1)、Visual Studio Code的安装下载界面如图下载完之后安装,一路“下一步”即可(2)、vscode插件安装Vsvode 支持多种语言:c/c++、python、c#等,本教程主要用c/c++所以需要安装c/c++相关的插件包。我们需要安装的插件如下图:我们会看到插件中已经安装了中文插件,最后将环境改成中文按下 “Ctrl+Shift+P”在搜索框中输入“config”,然后选择 “Configure Display Language”原创 2023-11-07 09:12:33 · 443 阅读 · 1 评论 -
ESP32 IDF开发 驱动篇④调试打印hello world讲解
esp32 idf串口打印的在esp_log.h文件中定义*void esp_log_level_set(const char tag, esp_log_level_t level)设置给定标签的日志级别。此功能不能将日志级别提高到menuconfig中的CONFIG_LOG_DEFAULT_LEVEL所设置的级别。要将日志级别提高到给定文件的默认级别以上,请在esp_log.h包含在文件中之前,将LOG_LOCAL_LEVEL定义为ESP_LOG_ *值之一。tag:要启用的日志条目的标签。原创 2023-11-07 10:07:21 · 1347 阅读 · 1 评论 -
ESP32 IDF开发流程篇②环境搭建及常见问题分析
esp32是一种高集成度的嵌入式成品,可在多个平台上开发,如linux、Windows、树莓派等。本文只介绍Windows平台下开发环境,相对而言linux开发的优点是编译过程效率高速度快。ESP32主流开发环境有 ESP-IDF(本章主要介绍)、ESP32 Arduino、ESP32 MicroPytho等开发方式。(1)、IDF主要采用c/c++针对一些有过单片机或嵌入式的开发者;(2)、偏向于硬件底层开发,API操作,相对灵活;原创 2023-11-06 09:22:06 · 998 阅读 · 1 评论 -
ESP32 IDF开发流程篇①走进ESP32的世界
ESP32 IDF开发流程篇①走进ESP32的世界1、 博主写这篇技术文章的目的:2、 ESP32介绍(1)、ESP32(2)、ESP32-S2(2)、ESP32模组介绍4、 引脚映射关系5、 总结别迷路-导航栏快速导航找到你想要的(文章目录)此篇文章如果对你有用,请点赞收藏,您的支持就是博主坚持的动力。1、 博主写这篇技术文章的目的:(1) 了解ESP32的功能特点;(2) 了解市面上ESP32模块的特点;(3) 学会选择适合自己的ESP32模块;2、 ESP32介绍ESP32是Espr原创 2020-05-26 18:30:17 · 537 阅读 · 1 评论