针对台灯的个性化和智能化,设计了一套基于蓝牙的多功能台灯掌握系统.首先用光敏传感器检测光照强度,用红外感应传感器检测是否有人,用超声波传感器检测利用者与台灯之间的间隔,然后将这些检测旗子暗记传输到单片机,单片机将旗子暗记与设定值进行比拟剖析,再判断台灯的开/关状态,调节灯光亮度,对利用者的坐姿和利用韶光作出语音提醒等.同时,相应参数实时显示在OLED屏和蓝牙终端,利用者通过蓝牙终端可以对台灯进行掌握.与蓝牙的联机测试结果显示,系统功能强大,运行稳定设计(研究)内容及详细哀求:
1.2设计(研究)内容:题目的意义;1、各种传感器及设备的一样平常技能和分外技能的学习:2、总体方案的选型设计:3、STM32单片机及其外围设备的软硬件系统的技能开拓:4、系统的调试和总体运行事理其他设计内容;详细哀求:1、硬件哀求1张1号以上的大图:2、软件以流程图办法表示:3、有调试的解释。二、代码思路三、硬件设计3.1总体设计基于蓝牙的多功能台灯掌握系统是通过传感器检测周围环境,再利用微掌握器进行剖析处理,它不仅可以实现台灯的自动开/关、亮度调节功能,还可以根据利用者的坐姿和利用韶光作出语音提醒.硬件设计框架如下:
3.2蓝牙部分设计蓝牙HC05模块用来吸收数据并将数据传输至单片机,再通过手机上的蓝牙串口助手发送数据.将蓝牙模块用TTL线与电脑连接,按模块上的按键再上电,进入AT模式.打开电脑串口调试器,设置好端口号、波特率,选择十六进制显示,就可以对蓝牙模块进行调试了.蓝牙掌握App为现成的蓝牙串口助手,它有12个按键,选择个中4个按键作为台灯的掌握按键,分别掌握台灯开/关、灯光调亮、灯光调暗和自动/手动模式切换.将串口助手和蓝牙模块进行配对连接,模块上的LED灯由快闪变为2次/s的闪烁,表示连接成功.四、部分代码
int main (void){volatile u8 t=0;volatile u8 i=0;volatile u8 key;//按键volatile u16 led0pwmval = 499;//LED灯亮度值 0为最亮,499为最弱volatile u8 SD_Mode = 0;//手动模式volatile u16 adcx0;volatile u16 adcx1;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168); //初始化延时函数uart_init(115200);//初始化串口波特率为115200LCD_Init();//LCD初始化LED_Init();//初始化LED KEY_Init(); //按键初始化 Adc_Init(); //adc初始化TIM13_PWM_Init(500-1,84-1);//84M/84=1Mhz的计数频率,重装载值500,以是PWM频率为 1M/500=2Khz.TIM_SetCompare1(TIM13,led0pwmval);//修正比较值,修正占空比POINT_COLOR=RED; LCD_ShowString(30,50,200,16,16,"CANOE @ Light");delay_ms(5000);while(1){ while (SD_Mode == 0)//自动模式{LCD_ShowString(30,70,200,16,16,"zidongmoshi");LCD_ShowString(30,150,200,16,16,"LIGHT_VAL:");key=KEY_Scan(0);if(key==KEY0_PRES||key==WKUP_PRES) //在自动模式下,如果检测到有按键按下,则退出自动模式进入手动模式{SD_Mode = 1;}TIM_SetCompare1(TIM13,499);adcx0=Get_Adc_Average(ADC_Channel_2,10);//通过ADC1探测得到红外探测模块的输出值,当有人活动时会监测得到高电平 if (adcx0 > 1500) //当探测得到高电平时,根据ADC通道3采集得到光敏电阻的值来调节亮度值{for(i=0;i<100;i++){adcx1=Get_Adc_Average(ADC_Channel_3,10);//采集得到光敏电阻的值,环境亮度越暗得到的值越小,亮度越高得到的值越大 //adcx1的值处于1200~4000范围内led0pwmval = (adcx1 - 1200)/6;TIM_SetCompare1(TIM13,led0pwmval);//修正比较值,修正占空比POINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowxNum(110,150,(500-led0pwmval),4,16,0); //显示 亮度值delay_ms(100);key=KEY_Scan(0);if(key==KEY0_PRES||key==WKUP_PRES) //在自动模式下,如果检测到有按键按下,则退出自动模式进入手动模式{SD_Mode = 1;i=100;}}}}led0pwmval = 300;while(SD_Mode == 1) //手动模式下 按键增减LED亮度{LCD_ShowString(30,70,200,16,16,"shoudongmoshi");LCD_ShowString(30,90,200,16,16,"WK_UP:+ KEY0:-"); POINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(30,150,200,16,16,"LIGHT_VAL:"); t++;key=KEY_Scan(0); if(key==WKUP_PRES){ if(led0pwmval<499)led0pwmval+=40;TIM_SetCompare1(TIM13,led0pwmval);//修正比较值,修正占空比}else if(key==KEY0_PRES){if(led0pwmval>45)led0pwmval-=40;else led0pwmval=0;TIM_SetCompare1(TIM13,led0pwmval);//修正比较值,修正占空比}if(t==10||key==KEY0_PRES||key==WKUP_PRES) //WKUP/KEY1按下了,或者定时韶光到了{LCD_ShowxNum(110,150,(500-led0pwmval),4,16,0); //显示 亮度值LED0=!LED0; t=0;}delay_ms(10);}}}
完全代码可进群免费领取。
嵌入式物联网的学习之路非常漫长,不少人由于学习路线不对或者学习内容不足专业而错失落高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!
记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料