如果我们用Arduino核心在ESP8266上写任何代码,很可能已经遇到了这个瓶颈。你写的每一行代码都运行在loop()函数内部,而loop()是协作式的——它从上到下依次执行,只有在完成所有操作后,SDK才会有机会进行后台处理,然后再调用你。只要你的代码足够快且高效,这没有问题。但一旦某段代码决定卡住——比如阻塞式传感器读取、大量数值运算、或等待某个条件的while循环——其他所有操作就会被暂停。你正在闪烁的LED会冻结,串口输出会停滞,定时器也会漂移。通常建议是“不要阻塞,使用millis()和状态机”,这种方法确实有效。但当达到某个程度后,你不得不在每个程序中手动编写自己的小型调度器,这让人感到疲惫不堪。
《声音记忆:训练你的耳朵》是一款利用RFID卡片进行声音匹配的游戏,帮助你区分不同声音并找到配对的声音。请选择A类声音卡或B类声音卡开始游戏。
驱动高密度可寻址LED阵列(如WS2812、WS2811、WS2813和WS2815)通常需要32位ARM微控制器或系统级芯片。然而,8位AVR微控制器在嵌入式应用中依然具有极高的性价比、易获取性和可靠性。
Arduino UNO R4 WiFi 是 Arduino UNO 系列的重大升级,集成了瑞萨(Renesas)RA4M1 32位 ARM Cortex-M4 微控制器,并内置 ESP32-S3 Wi-Fi 和蓝牙连接功能。此外,它还配备了 12×8 可编程 LED 矩阵、USB Type-C 接口、CAN 总线以及 12 位 DAC,是物联网、机器人、嵌入式系统和教育项目中的理想选择。Arduino UNO R4 WiFi 是 Arduino 生态系统中最先进的开发板之一,它结合了经典 UNO 的简洁性、现代的处理能力、内置无线连接以及全新的硬件功能。该板搭载瑞萨(Renesas)RA4M1 32位ARM Cortex-M4微控制器,并集成ESP32-S3无线模块,支持Wi-Fi®和蓝牙®连接。
OpenTherm 协议使用 8 位数据 ID 字段,可提供 256 种可能的寄存器编号。官方规格文档仅覆盖了其中一部分,而制造商可能会在上面实现自己的私有寄存器。为了准确了解我的锅炉所暴露的所有信息,我将 ESPHome 修改为一个寄存器扫描器,依次查询所有可能的 OpenTherm 数据 ID。
语音控制在消费电子产品中已十分常见,但将其集成到嵌入式项目中却仍然令人意外地困难。大多数解决方案依赖云服务、需要大量编程,或仅限于固定的一组预设命令。对于创客、学生和业余爱好者而言,将离线语音识别功能融入ESP32项目可能会迅速变得令人望而生畏。
reTerminal E1001 不仅是一款搭载 ESP32-S3 的电子纸显示屏,更是一款功能多样的边缘设备,专为持续监测而设计,具备超低功耗特性,电池续航时间最长可达三个月。
车辆检测是一种基于深度学习的对象检测技术,用于识别和定位车辆(注:已修正原文中“检测人”一词的错误)。该技术可广泛应用于停车场管理、交通分析等多种场景,是非法停车识别、交通拥堵检测以及交通流量统计等多类应用的基础算法。
本项目使用RT-Spark开发板和STM32F407ZGT6微控制器构建,主要通过代码延时来产生频率,实现引脚的开关控制、读取按钮输入、保存状态,并通过被动蜂鸣器发出提示音。
在这次实验活动中,我学习了如何在STM32F407ZGT6微控制器上使用定时器、中断和任务调度。主要目标是理解中断的工作原理、多个任务如何在系统中运行,以及不同的调度方法对任务性能的影响。
显示屏每100毫秒刷新一次,使时钟更新平稳且准确。一个每毫秒运行一次的定时器中断在后台负责时间记录,确保时钟保持精确。同时,一个外部LED灯每秒闪烁一次,然后逐渐变暗直至关闭,通过PWM实现平滑的淡出效果。
电压监测是嵌入式系统中的基本任务。本项目在STM32 RT-Spark开发板上构建了一个软件比较器,通过ADC读取电位器的输出,并将其与电阻分压参考值进行比较。当电压超过设定阈值时,内置LED会改变颜色,从而提供即时的视觉反馈。实验中对比了轮询方式和中断驱动方式,以了解它们对系统效率和响应时间的影响。