
电子烟花
简介
由于各地燃放烟花禁令导致up所在地区也中招了,但是烟花作为中华民族千年的智慧结晶传统手艺不能丢,所以我做了这款电子烟花,采用能买到的零件组装安全无毒,而且由于性质特殊,发射出的烟花声音小只有光效
简介:由于各地燃放烟花禁令导致up所在地区也中招了,但是烟花作为中华民族千年的智慧结晶传统手艺不能丢,所以我做了这款电子烟花,采用能买到的零件组装安全无毒,而且由于性质特殊,发射出的烟花声音小只有光效开源协议
:CC BY-SA 4.0
描述
题目要求
由于各地燃放烟花禁令导致up所在地区也中招了,但是烟花作为中华民族千年的智慧结晶传统手艺不能丢,所以我做了这款电子烟花,采用能买到的零件组装安全无毒,而且由于性质特殊,发射出的烟花声音小只有光效,家里有宝宝的小伙伴也不会担心吓到宝宝,而且可以进行重复使用,不会产生环境污染,最重要的,没有禁止燃放地区的老铁也可以做一个用做燃放窜天猴一放一个不吱声
题目分析
为了实现远程燃放使用433数传模块进行通讯同时使用这个淘宝店家的遥控进行控制
搭配天线可以做到100米点燃
采用硝化棉纸也就是魔术火纸进行燃放发射,无毒也安全就算在手上点燃也不会出现烫伤情况可以说是十分安全了
点燃方式为电子点烟器发热丝点燃方便成本低
原理图设计说明
原理方面也比较简单通过控制ao3400这个n沟道场效应管控制u62 发热丝开启点燃火纸进行发射
因为采用的是合宙001处理器导致引脚数量有限无法大量同时控制不同的ao3400所以我想起当初自学电子是学习模拟电路的痛苦回忆
也就是这个74hc238是译码器是把三个二进制输入信号转换成八个输出信号,工作原理是将三个二进制输入信号的不同组合映射到八个不同的输出信号上,利用这个芯片即可通过5个引脚控制16个引脚进行输出
PCB设计说明
没什么好说的直接打样即可
软件说明
部分代码展示
void key_press_handle(void)
{
if(1 == KEY_1)
{
KEY1_FLAG = 1;
}
if(1 == KEY_2)
{
KEY2_FLAG = 1;
}
if(1 == KEY_3)
{
KEY3_FLAG = 1;
}
if(1 == KEY_4)
{
KEY4_FLAG = 1;
}
}
void key_handle(void)
{
if(KEY1_FLAG == 1)
{
if(KEY_1 == 1)
{
if(key_hold_ms <= 1000)
{
key_hold_ms ++;
}
else if(key_hold_ms > 1000)
{
key_hold_ms = 0;
KEY1_LONG_FLAG = 1;
KEY1_FLAG = 0;
}
}
else
{
if((key_hold_ms <= 1000) && (key_hold_ms > 100))
{
key_hold_ms = 0;
KEY1_SHORT_FLAG = 1;
KEY1_FLAG = 0;
}
}
}
if(KEY2_FLAG == 1)
{
if(KEY_2 == 1)
{
if(key_hold_ms <= 1000)
{
key_hold_ms ++;
}
else if(key_hold_ms > 1000)
{
key_hold_ms = 0;
KEY2_LONG_FLAG = 1;
KEY2_FLAG = 0;
}
}
else
{
if((key_hold_ms <= 1000) && (key_hold_ms > 100))
{
key_hold_ms = 0;
KEY2_SHORT_FLAG = 1;
KEY2_FLAG = 0;
}
}
}
if(KEY3_FLAG == 1)
{
if(KEY_3 == 1)
{
if(key_hold_ms <= 1000)
{
key_hold_ms ++;
}
else if(key_hold_ms > 1000)
{
key_hold_ms = 0;
KEY3_LONG_FLAG = 1;
KEY3_FLAG = 0;
}
}
else
{
if((key_hold_ms <= 1000) && (key_hold_ms > 100))
{
key_hold_ms = 0;
KEY3_SHORT_FLAG = 1;
KEY3_FLAG = 0;
}
}
}
if(KEY4_FLAG == 1)
{
if(KEY_4 == 1)
{
if(key_hold_ms <= 1000)
{
key_hold_ms ++;
}
else if(key_hold_ms > 1000)
{
//key_hold_ms = 0;
KEY4_LONG_FLAG = 1;
KEY4_FLAG = 0;
}
}
else
{
if((key_hold_ms <= 1000))
{
key_hold_ms = 0;
KEY4_SHORT_FLAG = 1;
KEY4_FLAG = 0;
}
}
}
else
{
if(KEY_4 == 1)
{
key_hold_ms = 0;
}
}
}
extern uint8_t Fire_launch_status;//发射器状态 0 锁定模式 1 解锁模式 2 待机模式(蜂鸣器闪烁) 3 发射模式
uint8_t Press_time = 0;
//KEY1 锁定 KEY2 解锁 KEY3 待机 KEY4 发射、暂停
void Func_handle(void)
{
if(KEY1_SHORT_FLAG == 1)//短按锁定键锁定设备 此时任何操作都无效
{
Fire_launch_status = 0;
Beep_flag = 5;
KEY1_SHORT_FLAG = 0;
}
if(KEY1_LONG_FLAG == 1)
{
KEY1_LONG_FLAG = 0;
}
if(KEY2_SHORT_FLAG == 1)
{
// 处理 KEY2 短按事件
Beep_flag = 1;
KEY2_SHORT_FLAG = 0;
}
if(KEY2_LONG_FLAG == 1)
{
// 处理 KEY2 长按事件
Press_time ++;
if(Press_time == 5)//长按5秒之后
{
if(Fire_launch_status == 0)
{
Fire_launch_status = 1;//设备解锁
//Beep_flag = 3;
}
Press_time = 0;
}
KEY2_LONG_FLAG = 0;
}
if(KEY3_SHORT_FLAG == 1)
{
// 处理 KEY3 短按事件
if(Fire_launch_status == 1)
{
Fire_launch_status = 2;//设备待机 此时 蜂鸣器急促鸣叫
}
Beep_flag = 1;
KEY3_SHORT_FLAG = 0;
}
if(KEY3_LONG_FLAG == 1)
{
// 处理 KEY3 长按事件
KEY3_LONG_FLAG = 0;
}
if(KEY4_SHORT_FLAG == 1)
{
// 处理 KEY4 短按事件
// if(Fire_launch_status == 3)
// {
// Fire_launch_status = 2;//暂停发射 设备待机。
// }
Beep_flag = 1;
KEY4_SHORT_FLAG = 0;
}
if(KEY4_LONG_FLAG == 1)
{
// 处理 KEY4 长按事件
if(Fire_launch_status == 2)
{
Fire_launch_status = 3;//进入发射状态
}
KEY4_LONG_FLAG = 0;
}
}
uint8_t control_time = 0;
void fire_handle(void)
{
switch(Fire_launch_status)
{
case 0 ://锁定模式
Control_74HC238(0);//关机模式
LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_4);
control_time = 0;
control_counter = 0;
break;
case 1:
control_counter ++;
if(control_counter == 1000) //1s
{
control_counter = 0;
}
if(control_counter % 250 == 0)
{
Beep_flag = 1;
LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_4);
}
break;
case 2:
control_counter ++;
if(control_counter == 1000) //1s
{
control_counter = 0;
}
if(control_counter % 40 == 0)
{
Beep_flag = 1;
LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_4);
}
Control_74HC238(0);//关机模式
break;
case 3:
control_counter ++;
if(control_counter == 2000) //2s
{
control_counter = 0;
LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_4);
control_time++;
}
if(control_time > 16)//设置为16 解锁所有通道
{
control_time = 0;
Fire_launch_status = 2;//发射完毕 进入等待发射状态
Beep_flag = 5;
}
Control_74HC238(control_time);
break;
}
}
实物展示说明
注意事项
操作过程中注意防火而且也要注意不要被加热丝烫到
演示视频
【玩电子烟花,过赛博新年-哔哩哔哩】 https://b23.tv/VjuAqwB
设计图

BOM


评论