自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(164)
  • 收藏
  • 关注

原创 Git快速掌握,通俗易懂

**Git**是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。**Git**是由Linus Torvalds为了帮助管理**Linux**内核开发而开发的一个开放源码的版本控制软件。**Git**可以帮助开发者们管理代码的版本,避免代码冲突,方便合并代码等。而在当下**Git**已经成为最重要的开发工具之一

2024-02-15 21:46:15 1847 1

原创 使用 PlatformIO 将文件上传到 ESP32-S3 的 SPIFFS 文件系统

PlatformIO 是一个流行的开发平台,用于编写、构建和上传嵌入式项目。ESP32-S3 是 Espressif 推出的一款功能强大的嵌入式开发板,具有丰富的外设和通信接口。本文将介绍如何使用 PlatformIO 将文件上传到 ESP32-S3 的 SPIFFS(SPI Flash File System)文件系统中。

2024-06-10 23:08:50 1090

原创 使用 ESP32 和 PlatformIO (arduino框架)实现 Over-the-Air(OTA)固件更新

随着物联网技术的发展,越来越多的设备需要进行固件更新以修复漏洞、添加新功能或提高性能。传统的固件更新方式需要通过串口连接或者直接物理接触设备,但是当设备分布在远程位置时,这种方式就显得非常不便。而 OTA 固件更新技术则能够解决这个问题,使得固件更新可以通过网络实现。通过使用 PlatformIO 环境和 ESP32 开发板,我们可以轻松实现 OTA 固件更新功能。这使得固件更新变得更加灵活和便捷,大大提高了设备管理的效率。在物联网应用中,OTA 技术将会发挥越来越重要的作用,帮助我们更好地维护和管理设备。

2024-06-08 14:38:27 1319 2

原创 [已解决]ESP32-C3上传程序成功但没有反应的问题

ESP32-C3是一款功能强大的微控制器,常用于物联网(IoT)应用的开发和原型设计。然而,有时候在上传程序成功后,设备却没有任何反应,十分让人费解。通过各种尝试已解决这个问题。

2024-06-07 18:10:17 501

原创 13. ESP32-HTTPClient(Arduino)

在ESP32开发里,网络通信是挺重要的一部分,你可能需要从服务器拿数据啊,或者把传感器数据发到云端什么的。不过别担心,ESP32 Arduino框架给我们提供了HTTPClient库,让HTTP请求轻松简单。这篇文章就是来告诉你怎么在ESP32上利用HTTPClient库做HTTP请求的。

2024-06-07 15:32:59 1127

原创 12. ESP32-JSON(Arduino)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写,同时也易于机器解析和生成。JSON 是基于 JavaScript 的一个子集,虽然 JSON 是基于 JavaScript 的,但可以在许多编程语言中使用。现代的大多数编程语言都内置了 JSON 库,或者可以使用第三方库来方便地解析和生成 JSON 数据。。在Arduino框架下,使用ESP32处理JSON数据是物联网开发中一个普遍的需求。

2024-06-07 12:57:10 1188

原创 20. FreeRTOS 直接任务通知当邮箱使用

任务通知是FreeRTOS提供的一种轻量级的任务间通信方式。每个任务都有一个与之关联的32位无符号整数,该整数就是任务通知的值。任务可以等待其任务通知的值被设置,也可以检查其任务通知的值是否已经被设置。

2024-06-04 15:47:54 323

原创 19. FreeRTOS 直接任务通知 代替 事件组

直接任务通知和事件组各有优缺点。直接任务通知高效、简单,但适用场景有限;事件组灵活、功能强大,但需要更多的内存和处理时间。

2024-06-04 14:31:19 284

原创 18. FreeRTOS 直接任务通知取代取代二进制信号量

直接任务通知可以用来替代二进制信号量在任务之间进行同步和简单的事件通知。这个方法有很多好处,比如**占用更少内存**:直接任务通知与任务控制块(TCB)直接相关,不需要额外的内存分配,而二进制信号量则需要额外的信号量控制块。**更高效**:直接任务通知避免了信号量获取和释放的开销,直接修改任务的内部状态,提高了性能。**更简洁**:直接任务通知提供了简洁的 API 调用,减少了代码的复杂性。

2024-06-04 11:39:43 336

原创 17.FreeRTOS直接任务通知 Notification

FreeRTOS 直接任务通知提供了一种高效的任务间通信机制,可以实现任务间的同步和协作,适用于多种实时嵌入式系统中。通过简单的 API 调用,任务可以发送和接收直接任务通知,从而实现灵活的任务管理和事件触发。

2024-06-03 20:18:47 898

原创 16.FreeRTOS数据结构:StreamBuffer,MessageBuffer和Queue的区别

在嵌入式系统开发中,任务间的通信是非常重要的一部分。FreeRTOS提供了多种数据结构来实现任务间的通信,包括`StreamBuffer`,`MessageBuffer`和`Queue`。这三种数据结构各又什么特点又有什么区别呢?

2024-06-02 23:34:10 645

原创 15.FreeRTOS 消息缓存 Message Buffer

消息缓存是 FreeRTOS 提供的一种数据结构,用于在任务之间传递变长消息。与队列不同,队列适合固定长度的数据项,而消息缓存可以处理长度可变的消息。这使得消息缓存非常适用于需要传递不同长度消息的场景,比如传输字符串或结构化数据。FreeRTOS 消息缓存通过在发送和接收消息时记录和读取消息长度,确保了消息的完整传递。这样的设计使得发送的数据和接收的数据大小相等,从而保证了任务间通信的一致性和可靠性。

2024-06-02 22:40:22 870

原创 14.FreeRTOS 流媒体缓存 Stream Buffer

Stream Buffer 是 FreeRTOS 提供的一种数据结构,专门用于在任务之间传递和处理流式数据。与队列不同,Stream Buffer 适用于大数据块的流式传输,而不是单个数据项的传输。这使得它非常适合用于音频、视频和其他连续数据流的场景。

2024-06-02 21:40:12 1299

原创 13.FreeRTOS使用事件标记组

事件标记组是一个24(在 FreeRTOS 中,默认情况下,事件标记组的位数是 24 位)位的变量,每一位(bit)可以独立地被设置或清除。任务可以等待一个或多个事件标记被设置,并且可以选择等待所有指定的事件标记都被设置或任意一个被设置。当某个事件发生时,任务可以设置对应的事件标记,通知等待这些标记的任务。

2024-06-02 18:17:54 584

原创 32-ESP32-S3-WIFI篇-03 Event Loop (事件循环)

在ESP32-S3的WiFi驱动程序中,事件循环是一个非常重要的概念。事件循环是一个无限循环,用于处理和分发系统中发生的各种事件。在WiFi驱动程序中,我们使用事件循环来处理和分发WiFi相关的事件。

2024-05-31 23:54:09 663

原创 31-ESP32-S3-WIFI篇-02 Event Group (事件标记组)

在ESP32-S3的WiFi驱动程序中,事件标记组(Event Group)是一个非常重要的概念。它是FreeRTOS中的一种同步机制,用于在任务之间传递和同步事件。在WiFi驱动程序中,我们使用事件标记组来通知不同的任务有关WiFi状态的变化。

2024-05-31 21:57:34 340

原创 30-ESP32-S3-WIFI篇-01 FreeRTOS

在ESP32中,WIFI的操作与FreeRTOS的多任务紧密相连,并且彼此之间存在相互依赖的关系。实际上,FreeRTOS作为一种用于实时操作系统的开源软件,它提供了任务调度和管理的功能。而ESP32作为一款集成了WIFI功能的芯片,充分利用了FreeRTOS的多任务处理机制来实现同时处理多个WIFI连接和数据传输的能力。因此,了解和熟悉FreeRTOS的多任务编程模型对于有效地操作和管理ESP32的WIFI功能至关重要。

2024-05-31 17:36:08 978

原创 29-ESP32-S3-WIFI篇-00 STA模式扫描全部 AP

ESP32-S3的Wi-Fi库提供了配置和监控ESP32-S3 Wi-Fi网络功能的支持。Station模式(也称为STA模式或Wi-Fi客户端模式):ESP32-S3连接到一个接入点。AP模式(也称为Soft-AP模式或接入点模式):站点连接到ESP32-S3。Station/AP共存模式(ESP32-S3同时作为一个接入点和一个连接到另一个接入点的站点)。

2024-05-29 18:22:19 646

原创 ESP32 实时人脸检测系统:ESP32 与上位机通信(microPython框架)

在这篇博客中,我将介绍如何使用 ESP32 摄像头捕获图像,并通过 UDP 协议将图像传输到上位机进行实时人脸检测。我们将使用 Python 编程语言和 OpenCV 库来实现上位机端的人脸检测功能。

2024-05-28 23:40:36 600

原创 28-ESP32-S3 lwIP 轻量级 TCP/IP 协议栈

ESP32-S3 是一款集成了Wi-Fi 和蓝牙功能的微控制器。它的设计初衷是为了方便嵌入式系统的开发。不过你可能会好奇,ESP32-S3 怎么实现与外部网络的通信呢?这里就要提到一个开源的 TCP/IP 协议栈,它叫做lwIP(轻量级 IP)。通过使用 lwIP 库,ESP32-S3 可以轻松实现与外部网络的交互。它能发送和接收数据包,并处理网络连接等操作。因此,可以说ESP32-S3 是借助lwIP来实现网络功能的利器。

2024-05-28 16:30:23 1124

原创 27- ESP32-S3 USB虚拟串口(USB-OTG 外设介绍)

USB虚拟串口是一种可以让微控制器(如ESP32-S3)通过USB接口与电脑进行串口通信的技术。它的工作原理是在微控制器和电脑之间建立一个虚拟的串口通道,使得电脑可以像操作串口设备一样操作USB设备。同时无需 USB 至 UART 桥,便可直接烧录设备。除了模拟串口,USB-OTG 外设还有许多其他功能。例如,它可以支持连接 USB 存储设备,让用户轻松扩展设备的存储容量。此外,它还能作为 USB 音频设备,让用户连接耳机或扬声器,享受高质量音乐。

2024-05-16 00:22:11 2532 2

原创 00 深度学习 PyTorch框架介绍

是一个开源的深度学习框架,由 Facebook 的人工智能研究团队开发,提供了强大的 GPU 加速的张量计算库和基于 autograd 系统的深度神经网络(DNN)库。它的设计强调简单性和直观性,支持动态计算图,深度集成了 Python 语言,并有一个快速发展和活跃的社区。

2024-05-11 18:45:21 1003

原创 C语言文件操作

C语言提供了丰富的文件操作功能,使得程序能够读取和写入文件,这为数据的持久化存储和处理提供了便利。本篇博客将带您深入了解C语言中的文件操作,包括如何打开、读取、写入和关闭文件。在C语言中,要操作一个文件,首先需要打开它。这通过使用函数完成。函数的原型如下:参数是字符串,表示要打开的文件的名称。参数是一个字符串,指定打开文件的模式,如只读、只写、追加等。例如,要以只读方式打开一个名为的文件,可以这样做:读取文件一旦文件打开成功,就可以使用各种函数从文件中读取数据。常用的函数包括、和等。例如,使用

2024-05-11 16:40:53 192 1

原创 26-ESP32-S3 的 FLASH分区表以及 SPIFFS 文件系统 和spiffsgen.py工具

前面铺垫了这么多,存储有了,哪怎么使用这些空间呢,这就需要文件管理系统了,在我们的windows电脑里有NTFS文件系统,在安卓手机里有F2FS 文件系统,而对于ESP32有SPIFFS文件系统。SPIFFS(Serial Peripheral Interface Flash File System)是 ESP32-S3 的内存管理系统。更具体地说,它是一种在你的 ESP32 关机后不会擦除的内存存储。你可以使用它进行数据记录,保存访问代码,存储文件,以及记住用户输入的设置。SPIFFS有以下特性和用处。

2024-05-11 16:06:53 1810 1

原创 25-ESP32-S3 内置的真随机数发生器(RNG)

在许多应用中,随机数发生器(RNG)是必不可少的。无论是在密码学🔒、游戏🎮、模拟🧪或其他领域,随机数都有着广泛的用途。ESP32-S3,作为一款高级集成的Wi-Fi和蓝牙双模系统级芯片(SoC),内置了一个真随机数发生器(RNG)。本文将详细介绍ESP32-S3的RNG及其应用。

2024-05-07 21:13:28 727

原创 C语言中的Union(共用体)

在C语言中,Union(共用体)是一种特殊的数据结构,它允许你在一个单独的内存空间中存储不同的数据类型。与Struct(结构体)相似,Union可以包含多种不同类型的成员,但与Struct不同的是,Union的成员共享同一块内存区域。这意味着任何时候,Union只存储一个成员的值,即使定义了多个成员。这种特性使得Union在处理需要节省空间或实现类型灵活转换的场景时非常有用。

2024-05-07 11:10:04 1131

原创 24- ESP32S3 内部温度传感器

ESP32S3 的内部温度传感器是一个模拟电路,它可以测量芯片的内部温度。这个传感器的输出是一个模拟电压,这个电压与芯片的温度成正比。我们可以通过读取这个模拟电压来获取芯片的温度。温度传感器的输出值需要使用转换公式转换成实际的温度值 (°C)。

2024-05-04 11:23:06 840

原创 23- ESP32 红外遥控 (RMT)

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点。它被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机和手机系统中。红外遥控系统由发射和接收两大部分组成,应用编码/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。红外遥控器通常使用特定的编解码协议来发送和接收数据。PWM(脉冲宽度调制)的NEC协议和(脉冲位置调制)的RC-5协议的。

2024-05-03 21:34:38 1593

原创 22-ESP32-S3模数转换器(ADC)

模数转换器(ADC)是一种将模拟信号(如电压)转换为数字信号的设备。在ESP32-S3中,ADC用于将模拟电压转换为数字值,以便微控制器可以处理。

2024-05-02 20:49:33 1141

原创 21-ESP32-S3实时时钟(RTC)

ESP32-S3的RTC模块具有以下主要功能:- **时间和日期**:RTC模块可以提供实时的时间和日期信息。- **闹钟**:可以设置RTC模块在特定的时间和日期发出信号。- **定时器**:RTC模块可以作为一个定时器,用于在特定的时间间隔后发出信号。- **低功耗模式**:当ESP32-S3的其他部分关闭时,RTC模块可以继续运行,以节省电能。

2024-05-02 15:29:24 2103 1

原创 STM32 工程移植 LVGL:一步一步完成

LVGL(Light and Variables Graphics Library)是一个免费的开源图形库,提供了创建具有易于使用的图形元素、优美的视觉效果和低内存占用的嵌入式GUI所需的一切。它用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计。

2024-05-01 15:51:59 2502 2

原创 20- ESP32-S3 SPI 外设,主设备编程方法

ESP32-S3 芯片集成了四个SPI 控制器,分别为和SPI3。SPI0 和SPI1 控器主要供内部使用以访问外部 FLASH 和 PSRAM,所以只能使用SPI2 和 SPI3。SPI2 又称为HSPI,SPI3 又称为VSPI,这两个属于GP-SPI。特性描述支持模式主机模式和从机模式支持通信方式半双工通信和全双工通信支持的数据模式。

2024-04-27 16:16:33 2311

原创 c语言里的位域

位域在C语言中是一个既实用又有趣的特性,它像一位节俭的管家,帮助我们精打细算地使用内存空间。不过,这位管家有时也会调皮捣蛋,因为它在不同的环境下可能会有不同的表现,所以我们在使用它时需要多加留心。记住,位域虽好,但也要谨慎使用。它可能会给程序的移植带来一些挑战,因此在使用时需要仔细考虑。希望每位程序员都能善用位域,让它成为优化内存使用的利器,而不是程序维护的负担。愿大家在C语言的旅途中,能够享受编码的乐趣,同时也能写出既高效又优雅的代码。🚀💖。

2024-04-26 00:55:29 376

原创 19-ESP32-S3外设IIC

IIC是一种串行、同步、多设备、半双工通信协议,允许同一总线上存在多个主设备和从设备。IIC使用两个双向开漏线:串行数据线(SDA)和串行时钟线(SCL),由电阻上拉。ESP32-S3有2个IIC控制器(也称为端口),负责处理I2C总线上的通信。每个控制器都可以设置为主机或从机。IIC 总线有如下特点总线由数据线 SDA 和时钟线 SCL 构成的串行总线,数据线用来传输数据,时钟线用来同步数据收发。总线上每一个器件都有一个唯一的地址识别,所以我们只需要知道器件的地址,根据时。

2024-04-25 16:27:18 1776 1

原创 18-HW_PWM(硬件改变 PWM 占空比)

硬件脉冲宽度调制(HW_PWM)是ESP32-S3的一个重要特性,它可以用于控制LED的亮度、电机的速度等。硬件脉冲宽度调制与软件改变 PWM 占空比实验的驱动一致。

2024-04-24 11:54:59 409

原创 17-软件脉冲宽度调制(SW_PWM)

脉冲宽度调制(PWM)是一种在数字系统中模拟模拟信号的方法。通过改变脉冲的宽度,我们可以控制电源的输出,从而控制例如LED的亮度或电机的速度。

2024-04-22 16:02:08 612

原创 16-NVS Iterators (迭代器)

ESP32-S3的NVS库提供了迭代器,允许你根据指定的分区名称、命名空间和数据类型轮询NVS中存储的键值对。使用方法类似于c++里的迭代器(iterator)用于遍历容器,而NVS的迭代器同样用来遍历nvs。

2024-04-20 14:47:34 284 1

原创 15-partition table (分区表)

如果在 menuconfig 中选择“自定义分区表 CSV”,我们一般选用这个👇CSV文件作为我们的自定义分区表,复制将这个文件粘贴到项目的根目录下。✨我们来详细看一下当前分区表中的内容都有什么分区名称类型子类型偏移量大小描述nvsdatanvs留空(具体地址值未指定)0x6000非易失性存储区,用于保存设备重启后仍需保留的配置数据,如Wi-Fi凭据等phy_initdataphy留空(具体地址值未指定)0x1000。

2024-04-20 12:48:32 1071

原创 14-Error Handling (错误处理)

大多数ESP-IDF专用函数都使用 返回值返回错误代码。返回值是有符号整数类型。函数功能执行成功(无错误)时 返回值用代码表示为ESP_OK各种 ESP-IDF 头文件使用预处理器定义定义可能的错误代码。通常,这些定义以前缀开头。文件中定义了一般故障(内存不足、超时、参数无效等)的常见错误代码。ESP-IDF 中的各种组件可能会针对特定情况定义额外的错误代码。更加详细内容,在乐鑫官方文档👇😉。

2024-04-19 16:52:57 355

原创 13-ESP32 NVS BLOB类型存储

BLOB是一种用于存储二进制数据的数据类型。与其他数据类型(如整数和字符串)不同,BLOB可以存储💾可变长度的数据,这使得它非常适合存储诸如图像、音频或任何其他类型的大型数据。🎵🖼️在ESP32-S3的NVS库中,BLOB值的上限为508,000字节或分区大小的97.6%减去4000字节,以较小的值为准。虽然NVS最适合存储许多小值,但是如果需要存储大的BLOB或字符串,可以考虑使用基于磨损均衡库的FAT文件系统。这篇博客讲解了很多关于ESP32-S3的NVS和BLOB的知识。

2024-04-19 14:56:08 587

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除