- 博客(71)
- 收藏
- 关注

原创 【ESP32】从零开始学ESP32单片机栏目目录
对于了解过WiFi、蓝牙开发的同学应该听说过或这两款芯片,它们是由上海乐鑫半导体推出的WiFi芯片。在之前如果个人开发者要开发WiFi功能,只能购买像德州仪器、瑞昱这些国外公司的芯片,价格昂贵不说,开发、学习门槛相对较高。ESP32和ESP8266的出现可以说完美解决了这一困局,而且乐鑫的芯片大多以模组的方式进行售卖,更加大大降低了开发者的开发成本,提高了开发效率,像ESP8266的模组,在网上几块钱就能拿下,更高性能的ESP32模组也是十块钱就能拿下。开发方面,乐鑫官方推出了。
2024-09-08 15:58:46
1990
原创 【ESP32】ESP-IDF开发 | 经典蓝牙开发 | HID设备 + 蓝牙键盘例程
HID(Human Input Device),全称人体输入设备。字如其名,它能够提供人体数据的输入输出,如鼠标、键盘、摇杆等等。这种设备最早是在USB协议中被引入的,在我之前的文章()中有对HID设备类详细的讲解,对底层协议感兴趣的可以回看。ESP-IDF框架对HID设备的API进行了封装,使用时基本不需要了解底层协议的逻辑。当然,因为这个HID是基于蓝牙实现的,所以仍然会涉及GAP协议等蓝牙协议,也可以在中找到相关的介绍文章。
2025-03-29 17:14:35
787
原创 【ESP32】ESP-IDF开发 | 经典蓝牙开发 | 蓝牙串口协议(SPP) + 客户端和服务端例程
相信我们最早接触蓝牙,就是在某宝上买一个小巧的蓝牙模块,接到单片机上,通过AT指令进行简单配置,就可以用手机连接该模块,然后远程发送信息给单片机。这里面用到的就是SPP协议(Serial Port Protocol),全称蓝牙串口协议。
2025-03-15 15:20:15
848
原创 【ESP32】ESP-IDF开发 | 经典蓝牙开发 | 协议栈基础(L2CAP、SDP、CAP) + 设备发现例程
蓝牙技术是由,于1998年5月联合宣布的一种无线通信新技术。蓝牙设备是蓝牙技术应用的主要载体,常见蓝牙设备比如电脑、手机等。蓝牙产品容纳蓝牙模块,支持蓝牙无线电连接与软件应用。蓝牙设备连接必须在一定范围内进行配对。这种配对搜索被称之为短程临时网络模式,也被称之为微微,可以容纳设备最多不超过8台。蓝牙设备连接成功,主设备只有一台,从设备可以多台。蓝牙技术具备射频特性。采用了与,在技术上应用了跳频技术、无线技术等,具有传输效率高、安全性高等优势,所以被各行各业所应用。蓝牙工作在全球通用的。
2025-03-08 15:00:11
845
原创 【ESP32】ESP-IDF开发 | WiFi开发 | HTTPS服务器 + 搭建例程
HTTPS(HyperText Transfer Protocol over Secure Socket Layer),全称安全套接字层超文本传输协议,一般理解为,通过SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。该协议使用443端口进行通信。它解决的是HTTP协议,HTTPS协议在数据进行传输之前,对数据进行加密,然后再发送到服务器。这样,就算数据被第三者所截获,但是由于数据是加密的,所以你的个人信息仍然是安全的。
2025-02-16 16:53:25
1301
原创 【ESP32】ESP-IDF开发 | WiFi开发 | HTTP服务器
HTTP(Hyper Text Transfer Protocol),全称超文本传输协议,用于从网络服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还能确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本、图形等)。HTTP是一个应用层协议,由构成,是一个标准的。HTTP是一个,基于传输数据,默认使用。
2025-02-09 15:36:30
1828
原创 【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程
UDP协议(User Datagram Protocol),全称,它是一种,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内容,UDP协议无法控制,因此说UDP协议是一种不可靠的协议。UDP协议适用于一次只传送少量数据、对可靠性要求不高的应用环境。因为UDP的数据传输不一定是一对一的,所以也衍生出单播、组播和广播的概念。单播(unicast),是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。
2025-01-27 15:03:36
1832
原创 【ESP32】ESP-IDF开发 | WiFi开发 | TCP传输控制协议 + TCP服务器和客户端例程
TCP(Transmission Control Protocol),全称。,每一个TCP连接只能是点对点的(一对一);提供;提供;。
2025-01-25 17:38:36
1600
原创 【ESP32】Arduino开发 | WiFi开发 | AP模式 + 基站连接例程
关于AP模式的详细讲解放在了对应的ESP-IDF开发文章中,点击即可跳转找到。
2025-01-19 14:51:12
374
原创 【ESP32】ESP-IDF开发 | WiFi开发 | AP模式 + 基站连接例程
前面一篇讲了WiFi的基站模式,演示了怎么编程连接AP,所以这一篇讲一讲AP模式,ESP32作AP,让其他的设备连接自己。
2025-01-18 17:05:41
1446
原创 【ESP32】Arduino开发 | WiFi开发 | 基站模式 + AP扫描和AP连接例程
WiFi基站模式的详细讲解放在了ESP-IDF开发系列当中,点击即可跳转找到。
2025-01-18 14:14:35
674
原创 【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
1262
原创 【ESP32】Arduino开发 | 红外遥控RMT + WS2812灯驱动例程
有关RMT外设的详细介绍放在了ESP-IDF开发的文章中,跳转即可找到。
2025-01-01 16:23:18
582
原创 【ESP32】ESP-IDF开发 | 红外遥控RMT + WS2812灯驱动例程
字如其名,RMT是一个,可通过软件加解密多种红外协议。RMT模块可以实现将模块内置RAM中的脉冲编码转换为信号输出,或将模块的输入信号转换为脉冲编码存入RAM中。此外,RMT模块可以选择是否对输出信号进行,也可以选择是否对输入信号进行。RMT有,前4个为发送通道,后4个为接收通道。通道3和7支持。
2024-12-29 15:34:50
1591
原创 【GD32】从零开始学GD32单片机 | DAC数模转换器 + 三角波输出例程
上一篇讲解了ADC的使用,所以这一篇讲DAC的使用,两者其实就是互补的关系,ADC将模拟信号转为数字信号,而DAC将数字信号转为模拟信号。具体的使用上DAC就要比ADC要简单地多。下面是DAC的结构框图。
2024-12-21 15:29:35
1464
1
原创 【ESP32】Arduino开发 | DAC数模转换器 + DAC输出例程
这个例程每2秒改变一次DAC的输出电压,使用ADC对输出的电压进行采集,每1秒采集一次。ADC我设置的是12位分辨率和11db的衰减。
2024-12-14 15:36:33
376
原创 【ESP32】Arduino开发 | ADC模数转换器 + 单次转换例程
关于ESP32的ADC外设的详细介绍放在了ESP-IDF开发的对应文章中,通过可以找到。
2024-12-14 15:26:02
458
原创 【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
913
原创 【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
1554
原创 【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程
ESP32支持5种低功耗模式,低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。1.1 RTC单元RTC单元是ESP32低功耗管理的核心,可用于管理低功耗模式的进入和退出,控制时钟源、PLL、电源开关和隔离单元以产生电源门控、时钟门控和复位信号。RTC单元主要包含以下几个模块:RTC主状态机:记录电源状态;数字和模拟电源控制器:可用于为RTC的数字模块和模拟模块生成电源门控/时钟门控信号;
2024-11-09 16:17:10
2396
原创 【ESP32】ESP-IDF开发 | I2C控制器+I2C主从收发例程
I2C(),是由Philips公司在1980年代初开发的一种半双工的同步串行总线,它利用一根时钟线和一根数据线在连接总线的两个器件之间进行信息的传递,为设备之间数据交换提供了一种简单高效的方法。每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。I2C在硬件上是采用了开漏输出,在这种模式下GPIO没有输出负载的能力,因此总线上的每根管脚都需要接上拉电阻才能正常通信。I2C每次通信都由主机发起,
2024-11-03 15:38:06
2503
3
原创 【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
703
原创 【ESP32】ESP-IDF开发 | PWM脉宽调制器+PWM波形输出和捕获例程
脉宽调制器 (PWM) 广泛用于电机和电源的控制。在ESP32的PWM模块如下图所示。PWM外设中包含。定时器和操作器之间是可以相互绑定的,不仅能一对一,也可以一对多,多对多地绑定,这使得ESP32可以适应各种各样的应用需求。
2024-11-02 17:13:41
2149
原创 【ESP32】Arduino开发 | LED PWM控制器+呼吸灯例程
有关ESP32的LED PWM控制器的介绍放在了ESP-IDF的对应开发文章中,跳转可以找到。
2024-10-19 16:17:01
598
原创 【ESP32】ESP-IDF开发 | LED PWM控制器+呼吸灯例程
把函数放到内部RAM中,提高执行速度。回调函数里面就是设置渐变参数,并启动下一轮的渐变。通过cnt变量判断是从灭到亮还是从亮到灭渐变;因为cnt是全局变量,所以这里用了一个互斥量。这个函数返回是否有更高优先级的任务需要唤醒。最后就是配置渐变参数并启动渐变功能了。烧录程序到开发板,就能看到呼吸灯了。
2024-10-13 17:08:42
1881
原创 【ESP32】ESP-IDF开发 | Timer硬件定时器+定时器闹钟例程
ESP32内置。每个定时器包含一个16-bit预分频器和一个64-bit可自动重新加载向上/向下计数器。ESP32的定时器分为2组,每组2个。定时器具有闹钟功能,闹钟事件会引发重新加载和触发中断。硬件定时器的时钟是由APB时钟提供的,;定时器时钟经过预分频器的分频后,才是定时器计数的频率。2. API。
2024-10-07 16:44:27
1711
原创 【ESP32】Arduino开发 | I2C控制器+I2C主从收发例程
有关I2C控制器的详细介绍放在了IDF开发的文章中,跳转可以找到对应的文章。
2024-09-28 16:40:43
1628
原创 【ESP32】Arduino开发 | UART异步收发传输器+串口收发例程
ESP32的UART设备详细介绍会放在ESP-IDF开发文章中,可以跳转找到。
2024-09-21 15:38:09
1079
原创 【ESP32】ESP-IDF开发 | UART通用异步收发传输器+串口收发例程
UART可以说是开发者使用得最多的外设之一了,打印log几乎都是使用串口来实现的。UART是一种异步全双工的通信方式,异步传输的特性使得它仅需2根线就可以完成全双工的传输,但这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同,通信才能成功。一个典型的UART帧开始于一个起始位,紧接着是有效数据,然后是奇偶校验位(可有可无),最后是停止位。ESP32上的UART控制器支持多种字符长度和停止位。另外,控制器还支持软硬件流控和 DMA,可以实现无缝高速的数据传输。2. 硬件架构ESP32中的。
2024-09-21 14:59:23
1965
原创 【ESP32】ESP-IDF开发 | 中断矩阵+按键输入中断例程
ESP32的中断是十分灵活的,依靠中断矩阵,ESP32可以将任一外部中断源单独分配到每个 CPU的任一外部中断上。ESP32总共有71个外部中断源每个CPU可以链接26个外部中断源,因此总共可以生成52个外部中断(双核)。但是外部中断源中有4个是不能任意分配的,只能分配给指定的CPU,像上图的PRO_CPU或APP_CPU。ESP32的每个CPU有32个中断,其中编号6、7、11、15、16、29为内部中断,其余都属于外部中断。具体的外部中断源和内部中断可以查看官方的参考手册。
2024-09-16 16:46:50
991
原创 【ESP32】Arduino开发 | GPIO通用输入输出+LED点灯和按键输入例程
关于ESP32上的GPIO外设详细介绍会放在本栏目的ESP-IDF开发文章中,跳转可以找到对应的文章。
2024-09-15 17:02:00
1116
原创 【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
1711
原创 【GD32】外部存储器控制器(EXMC)驱动16位8080时序并口屏(GD32F470ZGT6)
GD32F4系列中的EXMC外设可以用来驱动外部的储存器,如SDRAM、SRAM等等,在之前的中有介绍其用法。但EXMC还有一种比较特别的玩法就是用来驱动8080并口屏;之前讲过,EXMC的工作原理就是把外部的储存器地址映射到芯片内部的一段地址中。而显示屏的驱动其实也是把数据写到显示芯片的RAM中,这个RAM本质还是储存器的一种,因此我们也可以用EXMC外设把显示芯片的RAM映射到单片机中,这样可以大大提高通讯速度。
2024-09-07 17:37:09
2031
原创 【GD32】RT-Thread实时操作系统移植(GD32F470ZGT6)
最近几年可以发现国产的实时操作系统越来越受欢迎了,本篇要移植的就是当中的翘楚——RT-Thread。RT-Thread诞生于2006年,是国内以开源中立、社区化发展起来的一款高可靠实时操作系统 ,由睿赛德科技负责开发维护和运营。并且在上一年度的市场欢迎程度中位列第一,第一次超过了老牌的FreeRTOS系统。相比于FreeRTOS,它的优势是强大的第三方和官方软件库,这意味着在项目开发中可以大大减少软件库移植的时间,提高了开发效率。不过根据我以往的项目经验,
2024-09-01 14:51:52
2754
2
原创 【GD32】从零开始学GD32单片机 | USB通用串行总线接口+HID键盘例程(GD32F470ZGT6)
USB,全称通用串行总线,相信大家都非常熟悉了,日常生活只要用到手机电脑都离不开这个接口,像鼠标键盘U盘都需要使用这个接口进行数据传输,下面简单介绍一下。
2024-08-31 16:00:25
2207
8
原创 【GD32】FreeRTOS实时操作系统移植(GD32F470ZGT6)
第四个参数是用户数据指针,如果要传数据给任务就可以设置;第五个参数是任务的优先级,数字越大优先级越高,这个跟单片机的优先级逻辑是相反的;第六个参数是任务句柄,如果不需要获取任务的句柄那么可以传空指针。调vTaskStartScheduler启动任务调度。一般来说,在led_task任务函数里面,先初始化LED灯,然后在死循环里面每隔一秒改变一次灯的状态,使用vTaskDelay函数进行延时,里面的数要。
2024-08-25 15:14:39
1765
原创 【GD32】从零开始学GD32单片机 | PMU电源管理单元+深度睡眠和待机例程(GD32F470ZGT6)
PMU电源管理单元通俗讲就是用来管理MCU的电源域的,它主要有两个功能——电压监测和低功耗管理。在GD32中一共有3个电源域——VDD/VDDA域、1.2V域和备份域。VDD/VDDA域主要供PMU控制器、ADC、DAC等外设使用;1.2V域就是大部分外设都会使用的电源域,像芯片核心、AHB外设、APB外设;备份域主要供RTC外设使用。2. 低功耗模式低功耗模式是PMU的重要功能,也是我们平时用得最多的。在GD32F4中,一共有3种低功耗模式——睡眠模式、深度睡眠模式和待机模式。
2024-08-17 15:05:41
974
【项目】环境监测 | 可燃气体传感器+温湿度传感器+雨滴传感器+OLED屏幕
2022-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人