XURwW1W73

Electronic fireworks

 
Overview
题目要求
由于各地燃放烟花禁令导致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             {                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 100))            {                key_hold_ms = 0;                KEY1_SHORT_FLAG = 1;                KEY1_FLAG = 0;            }        }    }

    if(KEY2_FLAG == 1)    {        if(KEY_2 == 1)        {            if(key_hold_ms             {                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 100))            {                key_hold_ms = 0;                KEY2_SHORT_FLAG = 1;                KEY2_FLAG = 0;            }        }    }

    if(KEY3_FLAG == 1)    {        if(KEY_3 == 1)        {            if(key_hold_ms             {                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 100))            {                key_hold_ms = 0;                KEY3_SHORT_FLAG = 1;                KEY3_FLAG = 0;            }        }    }

    if(KEY4_FLAG == 1)    {        if(KEY_4 == 1)        {            if(key_hold_ms             {                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             {                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);//Shutdown mode 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)//Set to 16 to unlock all channels { control_time = 0; Fire_launch_status = 2;//Launch complete, enter waiting launch state Beep_flag = 5; } Control_74HC238(control_time); break; }}

 


Physical demonstration instructions and precautions
:
Be careful to prevent fire during operation and avoid being burned by the heating wire.
Demonstration video:
[Play with electronic fireworks, celebrate the cyber New Year - Bilibili] https://b23.tv/VjuAqwB
 
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2026-03-24 10:10:19

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号