
ESP32系列
文章平均质量分 87
ESP32系列芯片零基础开发,ESP-IDF框架和Arduino框架,包含外设、WiFi、蓝牙等开发
马浩同学
佛性更新MCU教程
展开
-
【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GAP协议 + 设备扫描例程
GAP(General Access Protocol),全称通用访问协议,它定义了低功耗蓝牙设备的发现流程,设备管理和设备连接的建立。低功耗蓝牙设备定义了4种角色:广播者(:处于这种角色的设备通过发送广播让接收者发现自己。这种角色只能发广播,不能被连接。观察者(Observer):处于这种角色的设备通过接收广播事件并发送扫描(Scan)请求。这种角色只能发送扫描请求,不能被连接。外围设备(Peripheral):当广播者接受了观察者发来的连接请求后就会进入这种角色。原创 2025-04-19 16:59:35 · 797 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | 经典蓝牙开发 | HID设备 + 蓝牙键盘例程
HID(Human Input Device),全称人体输入设备。字如其名,它能够提供人体数据的输入输出,如鼠标、键盘、摇杆等等。这种设备最早是在USB协议中被引入的,在我之前的文章()中有对HID设备类详细的讲解,对底层协议感兴趣的可以回看。ESP-IDF框架对HID设备的API进行了封装,使用时基本不需要了解底层协议的逻辑。当然,因为这个HID是基于蓝牙实现的,所以仍然会涉及GAP协议等蓝牙协议,也可以在中找到相关的介绍文章。原创 2025-03-29 17:14:35 · 880 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | 经典蓝牙开发 | 蓝牙串口协议(SPP) + 客户端和服务端例程
相信我们最早接触蓝牙,就是在某宝上买一个小巧的蓝牙模块,接到单片机上,通过AT指令进行简单配置,就可以用手机连接该模块,然后远程发送信息给单片机。这里面用到的就是SPP协议(Serial Port Protocol),全称蓝牙串口协议。原创 2025-03-15 15:20:15 · 925 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | 经典蓝牙开发 | 协议栈基础(L2CAP、SDP、CAP) + 设备发现例程
蓝牙技术是由,于1998年5月联合宣布的一种无线通信新技术。蓝牙设备是蓝牙技术应用的主要载体,常见蓝牙设备比如电脑、手机等。蓝牙产品容纳蓝牙模块,支持蓝牙无线电连接与软件应用。蓝牙设备连接必须在一定范围内进行配对。这种配对搜索被称之为短程临时网络模式,也被称之为微微,可以容纳设备最多不超过8台。蓝牙设备连接成功,主设备只有一台,从设备可以多台。蓝牙技术具备射频特性。采用了与,在技术上应用了跳频技术、无线技术等,具有传输效率高、安全性高等优势,所以被各行各业所应用。蓝牙工作在全球通用的。原创 2025-03-08 15:00:11 · 956 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | WiFi开发 | HTTP服务器
HTTP(Hyper Text Transfer Protocol),全称超文本传输协议,用于从网络服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还能确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本、图形等)。HTTP是一个应用层协议,由构成,是一个标准的。HTTP是一个,基于传输数据,默认使用。原创 2025-02-09 15:36:30 · 1951 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程
UDP协议(User Datagram Protocol),全称,它是一种,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内容,UDP协议无法控制,因此说UDP协议是一种不可靠的协议。UDP协议适用于一次只传送少量数据、对可靠性要求不高的应用环境。因为UDP的数据传输不一定是一对一的,所以也衍生出单播、组播和广播的概念。单播(unicast),是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。原创 2025-01-27 15:03:36 · 1911 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | WiFi开发 | TCP传输控制协议 + TCP服务器和客户端例程
TCP(Transmission Control Protocol),全称。,每一个TCP连接只能是点对点的(一对一);提供;提供;。原创 2025-01-25 17:38:36 · 1706 阅读 · 0 评论 -
【ESP32】Arduino开发 | WiFi开发 | AP模式 + 基站连接例程
关于AP模式的详细讲解放在了对应的ESP-IDF开发文章中,点击即可跳转找到。原创 2025-01-19 14:51:12 · 395 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | WiFi开发 | AP模式 + 基站连接例程
前面一篇讲了WiFi的基站模式,演示了怎么编程连接AP,所以这一篇讲一讲AP模式,ESP32作AP,让其他的设备连接自己。原创 2025-01-18 17:05:41 · 1517 阅读 · 0 评论 -
【ESP32】Arduino开发 | WiFi开发 | 基站模式 + AP扫描和AP连接例程
WiFi基站模式的详细讲解放在了ESP-IDF开发系列当中,点击即可跳转找到。原创 2025-01-18 14:14:35 · 699 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | WiFi开发 | 基站模式 + AP扫描和AP连接例程
ESP32带有一个2.4GHz的射频发射器和接收器;内部带有WiFi MAC协议栈,支持IEEE 802.11b/g/n标准,即现在所说的WiFi1/2/3标准;数据速率最高可达150MHz。原创 2025-01-12 15:46:22 · 1326 阅读 · 0 评论 -
【ESP32】Arduino开发 | 红外遥控RMT + WS2812灯驱动例程
有关RMT外设的详细介绍放在了ESP-IDF开发的文章中,跳转即可找到。原创 2025-01-01 16:23:18 · 605 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | 红外遥控RMT + WS2812灯驱动例程
字如其名,RMT是一个,可通过软件加解密多种红外协议。RMT模块可以实现将模块内置RAM中的脉冲编码转换为信号输出,或将模块的输入信号转换为脉冲编码存入RAM中。此外,RMT模块可以选择是否对输出信号进行,也可以选择是否对输入信号进行。RMT有,前4个为发送通道,后4个为接收通道。通道3和7支持。原创 2024-12-29 15:34:50 · 1731 阅读 · 0 评论 -
【ESP32】Arduino开发 | DAC数模转换器 + DAC输出例程
这个例程每2秒改变一次DAC的输出电压,使用ADC对输出的电压进行采集,每1秒采集一次。ADC我设置的是12位分辨率和11db的衰减。原创 2024-12-14 15:36:33 · 403 阅读 · 0 评论 -
【ESP32】Arduino开发 | ADC模数转换器 + 单次转换例程
关于ESP32的ADC外设的详细介绍放在了ESP-IDF开发的对应文章中,通过可以找到。原创 2024-12-14 15:26:02 · 471 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | DAC数模转换器+余弦波输出例程
ESP32上的数字模拟转换器 (DAC) 带有 2 个 8 位通道,因此可输出。在低功耗模式下也可由 ULP 协处理器通过控制寄存器来实现完全控制。内部自带,可用于生成余弦波形/正弦波形,用户可调整。2. 例程。2.1 余弦波生成这个例程使用DAC生成一个余弦波,然后连接ADC进行捕获,捕获的数据发到上位机中。ADC我使用单次采集模式,配置ADC1,通道0,12db衰减。主循环中不断读取ADC值,并发送到串口。最后加一个delay防止看门狗超时。需要注意的是,原创 2024-12-07 16:33:27 · 938 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | ADC模数转换器+ADC连续采集例程
ESP32带有,配置有5个控制器进行控制;其中2个支持高性能多通道扫描、2个支持深度睡眠模式下的低功耗运行,另外1个专门用于PWDET / PKDET(功率检测和峰值监测)。PWDET/PKDET控制器仅供Wi-Fi内部使用。如果Wi-Fi正在使用SAR ADC2,则用户无法使用 SAR ADC2 测量管脚的模拟信号。原创 2024-11-10 16:38:52 · 1617 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程
ESP32支持5种低功耗模式,低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。1.1 RTC单元RTC单元是ESP32低功耗管理的核心,可用于管理低功耗模式的进入和退出,控制时钟源、PLL、电源开关和隔离单元以产生电源门控、时钟门控和复位信号。RTC单元主要包含以下几个模块:RTC主状态机:记录电源状态;数字和模拟电源控制器:可用于为RTC的数字模块和模拟模块生成电源门控/时钟门控信号;原创 2024-11-09 16:17:10 · 2529 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | I2C控制器+I2C主从收发例程
I2C(),是由Philips公司在1980年代初开发的一种半双工的同步串行总线,它利用一根时钟线和一根数据线在连接总线的两个器件之间进行信息的传递,为设备之间数据交换提供了一种简单高效的方法。每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。I2C在硬件上是采用了开漏输出,在这种模式下GPIO没有输出负载的能力,因此总线上的每根管脚都需要接上拉电阻才能正常通信。I2C每次通信都由主机发起,原创 2024-11-03 15:38:06 · 2651 阅读 · 2 评论 -
【ESP32】ESP-IDF开发 | I2C从机接收i2c_slave_receive函数的BUG导致程序崩溃解决(idf-v5.3.1版本)
在调试I2C外设的demo时,按照官方文档的描述调用相关API,烧录程序后发现程序会不断崩溃,系统log如下。初步分析log,原因是访问到了不存在的地址。一开始我以为是自己的代码问题,反反复复改了几次都会出现同样的问题。后面使用backtrace追踪出现问题的代码位置,代码在执行到i2c_slave.c的77行的时候崩溃了。这是I2C中断服务函数内调用的,仔细观察发现,这个函数的处理就有问题。原创 2024-11-03 14:49:51 · 726 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | PWM脉宽调制器+PWM波形输出和捕获例程
脉宽调制器 (PWM) 广泛用于电机和电源的控制。在ESP32的PWM模块如下图所示。PWM外设中包含。定时器和操作器之间是可以相互绑定的,不仅能一对一,也可以一对多,多对多地绑定,这使得ESP32可以适应各种各样的应用需求。原创 2024-11-02 17:13:41 · 2236 阅读 · 0 评论 -
【ESP32】Arduino开发 | LED PWM控制器+呼吸灯例程
有关ESP32的LED PWM控制器的介绍放在了ESP-IDF的对应开发文章中,跳转可以找到。原创 2024-10-19 16:17:01 · 612 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | LED PWM控制器+呼吸灯例程
把函数放到内部RAM中,提高执行速度。回调函数里面就是设置渐变参数,并启动下一轮的渐变。通过cnt变量判断是从灭到亮还是从亮到灭渐变;因为cnt是全局变量,所以这里用了一个互斥量。这个函数返回是否有更高优先级的任务需要唤醒。最后就是配置渐变参数并启动渐变功能了。烧录程序到开发板,就能看到呼吸灯了。原创 2024-10-13 17:08:42 · 1977 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | Timer硬件定时器+定时器闹钟例程
ESP32内置。每个定时器包含一个16-bit预分频器和一个64-bit可自动重新加载向上/向下计数器。ESP32的定时器分为2组,每组2个。定时器具有闹钟功能,闹钟事件会引发重新加载和触发中断。硬件定时器的时钟是由APB时钟提供的,;定时器时钟经过预分频器的分频后,才是定时器计数的频率。2. API。原创 2024-10-07 16:44:27 · 1770 阅读 · 0 评论 -
【ESP32】Arduino开发 | Timer定时器+定时器闹钟例程
有关定时器外设的详细介绍在ESP-IDF的对应文章中,跳转可以找到。原创 2024-10-07 15:08:31 · 1448 阅读 · 0 评论 -
【ESP32】Arduino开发 | I2C控制器+I2C主从收发例程
有关I2C控制器的详细介绍放在了IDF开发的文章中,跳转可以找到对应的文章。原创 2024-09-28 16:40:43 · 1676 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | UART通用异步收发传输器+串口收发例程
UART可以说是开发者使用得最多的外设之一了,打印log几乎都是使用串口来实现的。UART是一种异步全双工的通信方式,异步传输的特性使得它仅需2根线就可以完成全双工的传输,但这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同,通信才能成功。一个典型的UART帧开始于一个起始位,紧接着是有效数据,然后是奇偶校验位(可有可无),最后是停止位。ESP32上的UART控制器支持多种字符长度和停止位。另外,控制器还支持软硬件流控和 DMA,可以实现无缝高速的数据传输。2. 硬件架构ESP32中的。原创 2024-09-21 14:59:23 · 2040 阅读 · 0 评论 -
【ESP32】Arduino开发 | UART异步收发传输器+串口收发例程
ESP32的UART设备详细介绍会放在ESP-IDF开发文章中,可以跳转找到。原创 2024-09-21 15:38:09 · 1113 阅读 · 0 评论 -
【ESP32】Arduino开发 | GPIO通用输入输出+LED点灯和按键输入例程
关于ESP32上的GPIO外设详细介绍会放在本栏目的ESP-IDF开发文章中,跳转可以找到对应的文章。原创 2024-09-15 17:02:00 · 1148 阅读 · 0 评论 -
【ESP32】ESP-IDF开发 | GPIO通用输入输出+LED点灯和按键输入例程
ESP32芯片有34个物理GPIO pad,每个GPIO pad都可用作一个通用IO或连接一个内部的外设信号。IO_MUX、RTC IO_MUX和GPIO交换矩阵用于将信号从外设传输至GPIO pad。从上面看到,每个pad可以配置成GPIO功能(连接GPIO交换矩阵)或者直连功能(旁路GPIO交换矩阵),功能的切换通过IO_MUX来实现。ESP32一共有,要使用某个外设,就要把外设信号连接到对应的GPIO pad上,这个功能就是由GPIO交换矩阵来实现的。原创 2024-09-15 16:28:17 · 1771 阅读 · 0 评论 -
【ESP32】从零开始学ESP32单片机栏目目录
对于了解过WiFi、蓝牙开发的同学应该听说过或这两款芯片,它们是由上海乐鑫半导体推出的WiFi芯片。在之前如果个人开发者要开发WiFi功能,只能购买像德州仪器、瑞昱这些国外公司的芯片,价格昂贵不说,开发、学习门槛相对较高。ESP32和ESP8266的出现可以说完美解决了这一困局,而且乐鑫的芯片大多以模组的方式进行售卖,更加大大降低了开发者的开发成本,提高了开发效率,像ESP8266的模组,在网上几块钱就能拿下,更高性能的ESP32模组也是十块钱就能拿下。开发方面,乐鑫官方推出了。原创 2024-09-08 15:58:46 · 2054 阅读 · 0 评论 -
【ESP32】Platformio+Arduino+LVGL | 如何加载图片(使用C语言数组方法)
总的来说,通过这种方法加载图片的好处就是简单、快捷,比较适合整个项目只有一两张图片这种需求。但缺点也很明显,因为图片是直接被保存在内存中的,所以能加载多少图片取决于你的单片机内存有多大,像我的这一张图片,150X150的分辨率,16位色彩,就需要占掉150x150x(16/8)=45000B≈45KB的内存。所以如果项目中需要加载很多的图片,那么搭建一个文件系统,把图片存在Flash中,需要的时候再加载是更好的方法。原创 2023-01-09 22:33:12 · 2735 阅读 · 0 评论 -
【ESP32】Arduino+LVGL 如何使用PSRAM优化显示
可能有同学在设置了上面的参数后仍然发现屏幕好像还是卡卡的,这是因为以上都是在软件层面进行的优化,软件的优化是有限的,不如直接在硬件上进行优化。就比如,我使用的屏幕虽然只有240X240的分辨率,但它使用的是SPI协议进行通信,相比起使用8080并口的显示屏,刷新速度肯定是大打折扣的;前者每次传输1bit,但后者每次可以传输8bit或16bit,这个差距是巨大的。又比如,PSRAM虽然有4MB的空间,看上去很大,但它走的也是SPI协议;原创 2023-01-06 18:28:02 · 8341 阅读 · 6 评论 -
【ESP32】VSCode+Arduino+Platformio 如何使用ESP32上的PSRAM
最近在做一个基于ESP32的项目,ESP32虽然官方声称自带多达520KB的RAM,比起同价位的STM32可以说是十分良心。然而在做项目的时候发现,这520KB的RAM实际能用的其实没有想象中那么多,特别是ESP32在开启WiFi后会占掉这里面的一大部分。而且我的项目中有用到显示屏,那么这几百KB的RAM就更不够用了。经过我自己的测试,240X240的屏幕在LVGL并不能开启双缓冲全屏刷新。简单计算一下,不算其他的内存开销,实现240X240屏幕的双缓冲全屏刷新只需要240x240x(16/8)x2=230原创 2023-01-05 23:40:32 · 8685 阅读 · 12 评论