3001|5

931

帖子

3

TA的资源

纯净的硅(中级)

楼主
 

GD32E231 DIY大赛(7)——人体红外传感模块及音乐IC驱动完成 [复制链接]

本帖最后由 hujj 于 2019-5-13 18:50 编辑

    经过几天的折腾,终于将人体红外传感模块及音乐IC成功地驱动了。下图是测试过程:


    这是人体红外传感模块的正面:



    人体红外传感模块是网上购买的成品(见下图),它有三个引脚,分别为VCC、OUT、GND,当传感器接收信息时输出高电平,我将其接在PA5引脚上,同时开启中断,下图是从网上截图模块的特写:


    下面是中断配置的代码:
void exti_config(void)
{
    /* enable the clock 使能时钟*/
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_CFGCMP);
   
    /* configure GPIO as input 配置GPIO为输入*/
    gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_5);
   
    /* enable and set EXTI interrupt 启用并设置exti中断*/
    nvic_irq_enable(EXTI4_15_IRQn, 1U);
   
    /* connect EXTI line to GPIO pin */
    syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN5);
    /* configure EXTI line */
    exti_init(EXTI_5, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
    exti_interrupt_flag_clear(EXTI_5);
}


    以下是中断处理的代码,我仅仅在中断处理时将mode设置为9,然后在主循环中进行处理:至此,项目的硬件部分基本完成,即将开始软件调试。
void EXTI4_15_IRQHandler(void)
{
    if(RESET != exti_interrupt_flag_get(EXTI_5)){
//        gd_eval_led_toggle(LED2);
  mode = 9;                //建立报警标志
    }
   
    exti_interrupt_flag_clear(EXTI_5);
}

    驱动这个模块没费什么功夫,连线测试一次成功,倒是选择音乐IC费了不少周折。在我的项目中准备用不同的声音来作不同时段的报警,开始打算用多块音乐IC来完成,但测试时发现喇叭共用的效果很差,根本无法接受,若同时使用多个喇叭又太麻烦,最后只好选用了一块四声报警音乐IC(见下图):


    下面是焊接在扩展板上的四声报警音乐IC:



    这种音乐IC有两个设置键,其中K2是控制发出类似机关枪的哒哒声,我未启用此键。K1分浮空、接高电平和接低电平,浮空时发出警车笛声,接高电平发出消防车笛声,接低电平发出救护车笛声。我通过PA4引脚来控制,浮空时设置引脚为输入浮空状态,高低电平则设置成输出状态再设置引脚电平,经测试取得了不错的效果,下面是设置的代码:

  1. /*!
  2.     \brief      报警方式设置
  3. \param[in]  type: 0=低电平,1=高电平,2=浮空
  4.     \param[out] none
  5.     \retval     none
  6. */
  7. void alarm_type(uint8_t type)
  8. {
  9.         if(type>1){
  10.         gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE,GPIO_PIN_4);   //输入模式
  11.                 gd_eval_led_on(LED4);
  12.         }
  13.         else{
  14.             gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_4);
  15.         gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_4);
  16.                 if(type==0){
  17.                         gd_eval_led_on(LED2);
  18.                         gpio_bit_reset(GPIOA, GPIO_PIN_4);
  19.                 }
  20.                 else{
  21.                         gd_eval_led_on(LED3);
  22.                         gpio_bit_set(GPIOA, GPIO_PIN_4);
  23.                 }
  24.         }
  25. }
复制代码



    由于这种音乐IC是通电即响,断电即停,因此需要用一个电子开关来控制,想不到这最简单的三极管开关电路却花费了两天时间。
    开始我随便拿了一个3DG201和一个基极限流电阻焊接了一个开关电路,谁知测试没有达到目的,反复更换三极管和基极限流电阻都不行,音乐IC不能正常发声,最后只好仔细分析电路,发现若控制正极时需要用PNP管,控制负极时需要用NPN管,而我用NPN管来控制正极,所以不能成功,最后换了一个9015PNP管,调整好基极限流电阻后才达到要求(参见下图),至此,本项目的硬件部分基本完成,下一步即将开始软件调试工作。
   




此帖出自GD32 MCU论坛

最新回复

为什么要用音乐IC,单片机不是带PWM吗?  详情 回复 发表于 2019-5-17 09:58
点赞 关注
 

回复
举报

111

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我之前弄mp4模块的时候,为了做低功耗也搞过开关电路停掉mp4模块供电,结果一加8050做的开关电路,mp4模块运放出来的声音就不正常,后来改用光耦IC pc817,直接就没声音出来了。最后没办法,用了一个庞大的蓝色光耦,那种会咔嗒响的那种。不知道你这个9015的电路用多少的电阻?我也想试试
此帖出自GD32 MCU论坛

点评

下拉电阻选用150K,限流电阻开始选用3.3K,但不能正常放音,后来我接上微调电阻测试,最后选择了1K阻值。建议您也通过微调电阻来实际测试,选择合适的阻值。  详情 回复 发表于 2019-5-17 08:42
 
 
 

回复

931

帖子

3

TA的资源

纯净的硅(中级)

板凳
 
tinnu 发表于 2019-5-17 00:29
我之前弄mp4模块的时候,为了做低功耗也搞过开关电路停掉mp4模块供电,结果一加8050做的开关电路,mp4模块 ...

下拉电阻选用150K,限流电阻开始选用3.3K,但不能正常放音,后来我接上微调电阻测试,最后选择了1K阻值。建议您也通过微调电阻来实际测试,选择合适的阻值。
此帖出自GD32 MCU论坛
 
 
 

回复

931

帖子

3

TA的资源

纯净的硅(中级)

4
 
    这个基极限流电阻阻值选择太大的话,三极管不能进入饱和状态,起不到开关的作用;阻值选择太小的话又会增加单片机GPIO引脚的负担,甚至可能会烧坏引脚。
此帖出自GD32 MCU论坛
 
 
 

回复

606

帖子

20

TA的资源

一粒金砂(高级)

5
 
为什么要用音乐IC,单片机不是带PWM吗?
此帖出自GD32 MCU论坛

点评

231不光带PWM,而且还有两路运放,完全有能力驱动喇叭,这个方案还可以自己录制声音文件,更灵活方便。但我还没有涉足过这些应用,为了先完成项目计划,我就先用音乐IC,等以后完善项目时再考虑启用I2S。  详情 回复 发表于 2019-5-17 10:13
 
 
 

回复

931

帖子

3

TA的资源

纯净的硅(中级)

6
 
ketose 发表于 2019-5-17 09:58
为什么要用音乐IC,单片机不是带PWM吗?

231不光带PWM,而且还有两路运放,完全有能力驱动喇叭,这个方案还可以自己录制声音文件,更灵活方便。但我还没有涉足过这些应用,为了先完成项目计划,我就先用音乐IC,等以后完善项目时再考虑启用I2S。
此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表