“FireBeetle 2 ESP32 C6开发板”制作呼吸彩灯
1.FireBeetle 2 ESP32 C6开发板简介FireBeetle 2 ESP32-C6是一款基于ESP32-C6芯片设计的低功耗物联网主控板,适用于智能家居项目。ESP32-C6支持Wi-Fi 6、Bluetooth 5、Zigbee 3.0、Thread 1.3通讯协议,可接入多种通讯协议的物联网网络。FireBeetle 2 ESP32-C6支持Type-C、5V DC、太阳能供电,部署时有更多的供电方式选择。多种传输协议支持,扩展无线连接性
FireBeetle 2 ESP32-C6支持Wi-Fi、Thread通讯协议,因此可以制作Matter Wi-Fi 终端设备和 Matter Thread 终端设备,实现多系统、多平台智能家居设备的无缝通信与协作。此外,FireBeetle 2 ESP32-C6还支持BLE、Zigbee通讯协议,与其他MCU组合,可作为Thread 边界路由器、Matter 网关和 Zigbee 网桥。支持Wi-Fi 6,实现超低功耗物联网设备
ESP32-C6是乐鑫首款支持Wi-Fi 6协议(802.11ax)的芯片,Wi-Fi 6有更好的网络容量,可以让设备进行高效率、低延迟的工作。此外,Wi-Fi 6的目标唤醒时间(TWT,Target Wake Time)技术,能有效降低设备功耗,延长电池使用时间,让设备长久续航。优秀的电源系统,设备供电更方便
FireBeetle 2 ESP32-C6集成了锂电池充电管理,可以通过type-C、5V DC、太阳能板为锂电池进行充电,太阳能充电解决了部署在阳台、窗户、屋顶等无电源线的场景带来的问题。FireBeetle 2 ESP32-C6使用太阳能电源管理模块 5V@1A同款太阳能电源管理芯片,可最大限度的利用输入电源的电流输出能力,可最大化太阳能板在各种光照条件下的输出功率。FireBeetle 2 ESP32-C6支持电池电量监测,以便在电量不足时采取措施,确保设备持续运行。
2.PWM主要内容
使用FireBeetle 2 ESP32-C6制作呼吸彩灯,使用器件,七彩灯*1,MEL7132PG-N*4个,电阻*4,排针1*8P。
脉冲宽度调制或PWM是用于改变脉冲串中的脉冲宽度的常用技术。PWM有许多应用,如控制伺服和速度控制器,限制电机和LED的有效功率。
[*]Arduino输出模拟信号,也就是可变电压输出。
[*]pwm技术原理及实现方法
[*]利用不同技术实现pwm
1 PWM的基本原理
脉冲宽度调制基本上是一个随时间变化而变化的方波。基本的PWM信号如下图所示。
2 基本PWM信号
有很多术语与PWM相关:
[*]On-Time(导通时间) - 时间信号的持续时间较长。
[*]Off-Time(关断时间) - 时间信号的持续时间较短。
[*]Period(周期) - 表示为PWM信号的导通时间和关断时间的总和。
[*]Duty Cycle(占空比) - 它表示为在PWM信号周期内保持导通的时间信号的百分比。
周期
如图所示,Ton表示导通时间,Toff表示信号的关断时间。周期是导通和关断时间的总和,并按照以下公式计算:
占空比
占空比用于计算为一段时间的导通时间。使用上面计算的周期,占空比计算为:
3 调节电压变化
(1)改变电路中的电压。
[*]缺点:体积增大,电能变成热能
(2)省电又环保的PWM变频技术
[*]称为:脉冲宽度调制(Pulse Width Modulation)
[*]通过改变脉冲宽度,将能仿真模拟电压高低变化的效果。
[*]公式:
4 模式输出(PWM)指令和默认频率
(1) analogWrite()函数
[*]analogWrite()函数将模拟值(PWM波)写入引脚。它可用于以不同的亮度点亮LED或以各种速度驱动电机。在调用analogWrite()函数之后,引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()或在相同引脚上调用digitalRead()或digitalWrite()。
[*]Arduino 的模拟输入(analogRead)的范围值介于0~1023之间,而模拟输出(analogWrite)介于0 ~ 255。
[*]在调用analogWrite()之前,不需要调用pinMode()将引脚设置为输出。
5.硬件连接
(1)原理图
(2)PCB
(3)成品做了适当修改加入了其他元素,只做彩灯部分可按上图操作
6.示例程序(程序以一个灯为例)
示例程序1
#define LED_PIN 15
void setup()
{
// put your setup code here, to run once:
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
for(int i = 0;i<256;i++)
{
analogWrite(LED_PIN, i);
delay(10);
}
for(int i = 255;i>=0;i--)
{
analogWrite(LED_PIN, i);
delay(10);
}
}
示例程序2
#define FREQ 2000//频率 #define CHANGE 1 //通道
#define RESOLUTION 8 //分辨率
#define LED_PIN 15 //引脚
void setup()
{
//设置通道()
// ledcSetup(CHANGE,FREQ,RESOLUTION);
// ledcAttachPin(LED_PIN,CHANGE);
//注意:新版本ledcSetup();和ledcAttachPin();已改为ledcAttach();
ledcAttach(LED_PIN,FREQ,RESOLUTION);
}
void loop()
{
//实现渐凉
for(int i = 0;i<pow(2,RESOLUTION);i++)
{
//输出PWM
ledcWrite(CHANGE,i);
delay(10);
}
//实现渐灭
for(int i = pow(2,RESOLUTION)-1;i>=0;i--)
{
//输出PWM
ledcWrite(CHANGE,i);
delay(10);
}
}
页:
[1]