基于STM32的光照度自动调节系统
基于STM32的光照度自动调节系统
1、硬件器材
STM32F103C8T6
HC-05
光照度传感器BH1750
一个LED灯(作为被调节对象)一个限流电阻(1k~10k)
2、硬件PCB绘制
这个硬件电路其实很简单,直接用洞洞板焊也很快,但是毕竟是我的课设作业,我还是画了一下PCB,显得高级hhh
最终效果:
需要PCB文件的话可以私信我(免费),画的比较简陋
3、stm32cubeMX配置
时钟和下载方式配置:
定时器1kHZ(72M/72/1000)不用定时器中断:
I2C(光照传感器需要)
串口通信(蓝牙需要)注意波特率一致:
要开串口中断:
勾选这三项,然后生成代码:
4、自己添加的代码
添加光照度传感器的代码,基本上就是普通的I2C通信,不细说了(下图不完整,完整的参考https://blog.csdn.net/weixin_43469377/article/details/120923774?spm=1001.2014.3001.5501 或者在我的资源里下载):
串口通信在usart.c添加下面的代码重定向printf函数:
记得添加头文件#include stdio.h
#ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printfset to 'Yes') calls __io_putchar() */#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/*** @brief Retargets the C library printf function to the USART.* @param None* @retval None*/
PUTCHAR_PROTOTYPE
{/* Place your implementation of fputc here *//* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);return ch;
}
主函数:
头文件需要添加这些
一些参数:
靠调节PWM占空比来调节LED亮度:
初始化串口、LED灯亮度为50%,读取当前光照度:
主要逻辑(注释复制过来乱码了,下面有截图):
/* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */Set_Value=0;Now_Value=0;if(Flag==1) //½ÓÊÕÍêÒ»´ÎÀ¶ÑÀÖ¸Áî{Set_Value=strtoul((char *)Light_Buffer,NULL,10); //É趨ֵ±£´æHAL_Delay(500);printf("SET:%lu lx\r\n",Set_Value); //»Ø¸´¸øÊÖ»úÉ趨ֵNow_Value=Value_GY30();HAL_Delay(500);printf("NOW:%d lx\r\n",Now_Value); //»Ø¸´¸øÊÖ»úµ±Ç°¹âÕÕ¶Èif(Set_Value>Now_Value) //É趨¹âÕÕ¶È>µ±Ç°¹âÕÕ¶È{printf("lighter"); //»Ø¸´¸øÊÖ»úµ÷ÁÁwhile(Set_Value>Value_GY30()){pwmVal+=15;__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal); //Ôö´óLEDÁÁ¶ÈÖ±µ½µ±Ç°¹âÕնȴﵽÉ趨ֵ}printf("NOW:%d lx\r\n",Value_GY30()); //»Ø¸´¸øÊÖ»úµ±Ç°¹âÕÕ¶È}else if(Set_Value<Now_Value) //É趨¹âÕÕ¶È<µ±Ç°¹âÕÕ¶È{printf("Darker"); //»Ø¸´¸øÊÖ»úµ÷°µwhile(Set_Value<Value_GY30()){pwmVal-=15;__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal); //¼õСLEDÁÁ¶ÈÖ±µ½µ±Ç°¹âÕնȴﵽÉ趨ֵ}printf("NOW:%d lx\r\n",Value_GY30()); //»Ø¸´¸øÊÖ»úµ±Ç°¹âÕÕ¶È}Flag=0; //Ò»´Îµ÷½Ú½áÊø£¬µÈ´ýÏÂÒ»´ÎÖ¸Áî}}/* USER CODE END 3 */
串口的中断回调函数:
/* USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{UNUSED(huart);if(huart->Instance==USART1){RxLine++; //接收到的数据加一Light_Buffer[RxLine-1]=RecieveBuffer[0]; //保存收到的正确数据if(RxLine==3){
// HAL_UART_Transmit_IT(&huart1, (uint8_t *)Light_Buffer, sizeof(Light_Buffer));Flag=1;}RecieveBuffer[0]=0;HAL_UART_Receive_IT(&huart1, (uint8_t *)RecieveBuffer, 1);}
}
/* USER CODE END 4 */
有个使用的BUG就是,手机给单片机发送指定光照度时需要发三位数,例如设定为25LX,需要发送025
如果需要使光照度快速达到要求,可以更改这个值,让占空比改变速度变大(下图中的15),但是可能会调过了:
成果展示
光照度调节-演示视频
整个工程已上传到我的资源,需要的朋友可以看看
基于STM32的光照度自动调节系统相关推荐
- 【毕业设计】基于STM32的宠物自动喂食装置
目录 修改记录 1.摘要 2.整体功能分析 3.硬件选型 3.1 ESP8266 WIFI模块 3.2 STM32F103ZET6 3.3 CLS150TD舵机 3.4 压力传感器 3.5 HX711 ...
- 基于STM32单片机智能自动伸缩衣架雨滴重量光强温度检测伸缩速度可调-蓝牙版
实践制作DIY- GC0010-智能自动伸缩衣架 一.功能说明: 基于STM32单片机设计-智能自动伸缩衣架 功能介绍: 基于STM32F103C系列,LCD1602显示器,光敏电阻采集光强,雨滴传感 ...
- 基于STM32单片机智能自动伸缩衣架雨滴重量光强温度检测伸缩速度可调
实践制作DIY- GC0010-智能自动伸缩衣架 一.功能说明: 基于STM32单片机设计-智能自动伸缩衣架 功能介绍: 1.基于STM32F103C系列,LCD1602显示器,光敏电阻采集光强,雨滴 ...
- 基于STM32的esp8266WIFI自动校时+语音报时可调时钟(附源代码)
基于STM32WIFI自动校时+语音报时可调时钟(附源代码) 概述 STM32f103C8T6最小系统 共阴数码管 74HC595芯片 JQ5600语音模块 ESP8266-01SWIFI模块 ds1 ...
- c语言单片机制作自动售卖机,基于STM32单片机的自动售水售卖机系统设计-RFID-(电路图+程序源码)...
2019-150.STM32自动售水系统设计-RFID-LCD12864-RELAY-BELL-KEY 本设计由STM32F103C8T6单片机核心板电路+RFID模块电路+LCD12864液晶显示模 ...
- 【毕业设计】基于单片机的宠物自动喂食系统 - 物联网 嵌入式 单片机 宠物喂食系统 宠物投食系统
文章目录 0 简介 1 系统说明 2 背景意义 3 系统设计 3.1 总体方案 3.2 硬件设计 3.2.1 STC89C52 3.2.2 CLS150TD舵机 3.2.3 压力传感器 3.2.4 H ...
- 基于STM32的智能抽油烟机系统与设计
基于STM32的智能抽油烟机系统与设计 功能实现: 本课题是基于STM32的抽油烟机自动监控系统设计,通过STM32单片机实现对家用抽油烟机的检测与控制.完成有毒气体检测,并能自动发出报警信息,根据烟 ...
- 18、基于STM32的自动浇花系统
18.基于STM32的自动浇花系统 引言 1 系统概述 1.1设计任务 1.2设计要求 2 方案设计与论证 2.1芯片选择方案 2.2 系统概述 2.3系统总体设计思路 2.4各功能模块程序实现原理分 ...
- 【毕业设计】基于 STM32 的自动泊车系统 -智能小车 - 物联网单片机
文章目录 1 简介 1 背景 2 设计概要 3 硬件选型 3.1 主控 - STM32 3.2 电机驱动 3.3 红外遥控设计 3.4 传感器部分 3.4.1 循迹模块 3.4.2 红外避障模块 3. ...
- 基于STM32的智能行车辅助系统(自动大灯,倒车报警,自动雨刷,温湿度传感器,TFT 1.3寸LCD屏幕显示,ESP8266WIFI)
基于STM32+ESP8266的智能行车辅助系统 基于STM32的智能行车辅助系统(自动大灯,倒车报警,自动雨刷,温湿度传感器,TFT 1.3寸LCD屏幕显示,ESP8266WIFI),这是一个课程设 ...
最新文章
- OSSIM下部署HIDS
- 计算机组成原理设计一个Isa,计算机组成原理
- 重磅推出校园疫情填报系统,永洪BI助力疫情防控
- 对口单招考试能用计算机吗,对口单招计算机能考试标准.doc
- 实时通信服务中的语音解混响算法实践
- MicroStation VBA 操作提示
- Dom4J 解析xml ,类查询
- 数据结构与算法-- 八皇后问题(多种实现方案)
- 信息学奥赛一本通 1028:字符菱形 | OpenJudge NOI 1.1 09
- Python实现生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
- 时空平稳性,空间自相关、异质性与非平稳性
- 如何调整Exadata DB节点文件系统大小
- [转载]谈谈我对攻读计算机研究生的看法
- macBigSur使用mathtype数学公式编辑
- 在线引入 iconfont 特殊图标字体
- 中国计算机网络设备制造业总体趋势免费版,致自己的心灵鸡汤说说,句句经典,引人深思!...
- 为什么按序发射只有RAW冲突?
- 如何找课题的综述文献
- JUC-Callable接口-概述
- SQL Server 安装程序遇到以下错误: 无法生成临时类(result=1)。 error CS1567: 生成 Win32 资源时出错: 另一个程序正在使用此文件,进程无法访问。...