[其他ST产品] 基于STM32蓝牙控制的app智能台灯设计

[复制链接]
 楼主| 是你的乱码 发表于 2023-6-29 14:12 | 显示全部楼层 |阅读模式
前言
基于STM32蓝牙控制的app智能台灯设计,主控使用STM32F103ZET6,在正点原子的精英板上开发(本人也在野火板子上测试成功)。

一、任务书
1.1设计(研究)目标:
针对台灯的个性化和智能化,设计了一套基于蓝牙的多功能台灯控制系统.首先用光敏传感器检测光照强度,用红外感应传感器检测是否有人,用超声波传感器检测使用者与台灯之间的距离,然后将这些检测信号传输到单片机,单片机将信号与设定值进行对比分析,再判断台灯的开/关状态,调节灯光亮度,对使用者的坐姿和使用时间作出语音提醒等.同时,相应参数实时显示在OLED屏和蓝牙终端,使用者通过蓝牙终端可以对台灯进行控制.与蓝牙的联机测试结果显示,系统功能强大,运行稳定
设计(研究)内容及具体要求:

1.2设计(研究)内容:
题目的意义;
1、各种传感器及设备的一般技术和特殊技术的学习:
2、总体方案的选型设计:
3、STM32单片机及其外围设备的软硬件系统的技术开发:
4、系统的调试和总体运行原理
其他设计内容;具体要求:
1、硬件要求1张1号以上的大图:
2、软件以流程图方式表示:
3、有调试的说明。

 楼主| 是你的乱码 发表于 2023-6-29 14:12 | 显示全部楼层
代码思路:
70041649d20e2d1662.png
 楼主| 是你的乱码 发表于 2023-6-29 14:13 | 显示全部楼层
硬件设计
3.1总体设计
基于蓝牙的多功能台灯控制系统是通过传感器检测周围环境,再利用微控制器进行分析处理,它不仅可以实现台灯的自动开/关、亮度调节功能,还可以根据使用者的坐姿和使用时间作出语音提醒.
硬件设计框架如下:
61165649d20f774ffd.png
 楼主| 是你的乱码 发表于 2023-6-29 14:13 | 显示全部楼层
蓝牙部分设计
蓝牙HC05模块用来接收数据并将数据传输至单片机,再通过手机上的蓝牙串口助手发送数据.将蓝牙模块用TTL线与电脑连接,按模块上的按键再上电,进入AT模式.
打开电脑串口调试器,设置好端口号、波特率,选择十六进制显示,就可以对蓝牙模块进行调试了.
蓝牙控制App为现成的蓝牙串口助手,它有12个按键,选择其中4个按键作为台灯的控制按键,分别控制台灯开/关、灯光调亮、灯光调暗和自动/手动模式切换.将串口助手和蓝牙模块进行配对连接,模块上的LED灯由快闪变为2次/s的闪烁,表示连接成功.
 楼主| 是你的乱码 发表于 2023-6-29 14:14 | 显示全部楼层
部分代码
  1. int main (void)

  2. {
  3.         volatile u8 t=0;
  4.         volatile u8 i=0;
  5.         volatile u8 key;        //按键
  6.         volatile u16 led0pwmval = 499;//LED灯亮度值  0为最亮,499为最弱
  7.         volatile u8 SD_Mode = 0;//手动模式
  8.         volatile u16 adcx0;
  9.         volatile u16 adcx1;
  10.                
  11.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  12.         delay_init(168);      //初始化延时函数
  13.         uart_init(115200);                //初始化串口波特率为115200
  14.         LCD_Init();                                        //LCD初始化
  15.         LED_Init();                                        //初始化LED
  16.         KEY_Init();                                 //按键初始化
  17.   Adc_Init();                                 //adc初始化
  18.         TIM13_PWM_Init(500-1,84-1);        //84M/84=1Mhz的计数频率,重装载值500,所以PWM频率为 1M/500=2Khz.
  19.         TIM_SetCompare1(TIM13,led0pwmval);        //修改比较值,修改占空比
  20.         POINT_COLOR=RED;

  21.         LCD_ShowString(30,50,200,16,16,"CANOE [url=home.php?mod=space&uid=72445]@[/url] Light");       
  22.         delay_ms(5000);
  23. while(1)
  24. {
  25.        
  26.   while (SD_Mode == 0)//自动模式
  27.         {
  28.         LCD_ShowString(30,70,200,16,16,"zidongmoshi");       
  29.         LCD_ShowString(30,150,200,16,16,"LIGHT_VAL:");       
  30.         key=KEY_Scan(0);               
  31.         if(key==KEY0_PRES||key==WKUP_PRES)  //在自动模式下,如果检测到有按键按下,则退出自动模式进入手动模式
  32.         {
  33.         SD_Mode = 1;
  34.                
  35.         }
  36.         TIM_SetCompare1(TIM13,499);
  37.         adcx0=Get_Adc_Average(ADC_Channel_2,10);                //通过ADC1探测得到红外探测模块的输出值,当有人活动时会监测得到高电平  
  38.         if (adcx0 >  1500)  //当探测得到高电平时,根据ADC通道3采集得到光敏电阻的值来调节亮度值
  39.                
  40.         {
  41.         for(i=0;i<100;i++)
  42.         {
  43.         adcx1=Get_Adc_Average(ADC_Channel_3,10);//采集得到光敏电阻的值,环境亮度越暗得到的值越小,亮度越高得到的值越大
  44.                                                       //adcx1的值处于1200~4000范围内
  45.         led0pwmval = (adcx1 - 1200)/6;               
  46.         TIM_SetCompare1(TIM13,led0pwmval);        //修改比较值,修改占空比
  47.         POINT_COLOR=BLUE;//设置字体为蓝色
  48.         LCD_ShowxNum(110,150,(500-led0pwmval),4,16,0);                //显示 亮度值       
  49.         delay_ms(100);       
  50.         key=KEY_Scan(0);               
  51.         if(key==KEY0_PRES||key==WKUP_PRES)  //在自动模式下,如果检测到有按键按下,则退出自动模式进入手动模式
  52.         {
  53.         SD_Mode = 1;
  54.         i=100;
  55.         }
  56.         }
  57.         }
  58.        
  59.        
  60.        
  61.         }

  62.         led0pwmval = 300;
  63.         while(SD_Mode == 1)  //手动模式下 按键增减LED亮度
  64.                
  65.         {
  66.                 LCD_ShowString(30,70,200,16,16,"shoudongmoshi");
  67.                
  68.                 LCD_ShowString(30,90,200,16,16,"WK_UP:+  KEY0:-");         
  69.           POINT_COLOR=BLUE;//设置字体为蓝色               
  70.           LCD_ShowString(30,150,200,16,16,"LIGHT_VAL:");          

  71.                 t++;
  72.                 key=KEY_Scan(0);                          
  73.                 if(key==WKUP_PRES)
  74.                 {                 
  75.                         if(led0pwmval<499)led0pwmval+=40;
  76.                         TIM_SetCompare1(TIM13,led0pwmval);        //修改比较值,修改占空比
  77.                 }
  78.                 else if(key==KEY0_PRES)       
  79.                 {
  80.                         if(led0pwmval>45)led0pwmval-=40;
  81.                         else led0pwmval=0;
  82.                         TIM_SetCompare1(TIM13,led0pwmval);        //修改比较值,修改占空比
  83.                 }       
  84.                 if(t==10||key==KEY0_PRES||key==WKUP_PRES)         //WKUP/KEY1按下了,或者定时时间到了
  85.                        
  86.                 {
  87.                         LCD_ShowxNum(110,150,(500-led0pwmval),4,16,0);                //显示 亮度值
  88.                         LED0=!LED0;          
  89.                         t=0;
  90.                 }
  91.                 delay_ms(10);       
  92.        
  93.         }


  94. }



  95. }

szt1993 发表于 2023-6-30 17:45 | 显示全部楼层
楼主创意很新颖,原理很简单
yangxiaor520 发表于 2023-7-1 12:01 来自手机 | 显示全部楼层
大学时安卓刚流行,做了个遥控车APP。
Undshing 发表于 2023-7-1 22:02 | 显示全部楼层
蓝牙和app通信怎么做的啊?
maudlu 发表于 2023-7-5 10:23 | 显示全部楼层
考虑在台灯中添加光照传感器,以便根据环境亮度自动调节灯光亮度。
jkl21 发表于 2023-7-5 11:40 | 显示全部楼层
stm32蓝牙模块如何控制灯              
biechedan 发表于 2023-7-5 12:40 | 显示全部楼层
蓝牙通信协议,以便与手机APP进行数据交换。
wangdezhi 发表于 2023-7-5 13:49 | 显示全部楼层
STM32点亮小灯的程序和方法
wengh2016 发表于 2023-7-5 14:06 | 显示全部楼层
台灯app叫什么名字               
minzisc 发表于 2023-7-5 15:13 | 显示全部楼层
在手机APP上实现远程控制台灯的开关、调节亮度和改变颜色等功能,并通过蓝牙与STM32微控制器通信传输控制指令。
burgessmaggie 发表于 2023-7-5 15:36 | 显示全部楼层
进行性能优化,减少功耗并提高响应速度。
biechedan 发表于 2023-7-5 16:32 | 显示全部楼层
手机App进行控制台灯需要哪些软、硬件?
mickit 发表于 2023-7-5 16:43 | 显示全部楼层
选择具有蓝牙功能的STM32微控制器,例如STM32F4系列或STM32F7系列。
AloneKaven 发表于 2023-7-5 17:50 | 显示全部楼层
上位机怎么实现啊
robertesth 发表于 2023-7-5 20:51 | 显示全部楼层
用MCU的GPIO控制LED灯的亮度和颜色,读取光敏传感器数据等。同时,实现与蓝牙模块之间的通信接口。
usysm 发表于 2023-7-5 21:34 | 显示全部楼层
台灯app叫什么名字               
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

489

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

34

主题

489

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部