资讯专栏INFORMATION COLUMN

LoRa模块获取光照值

rozbo / 3734人阅读

摘要:任务要求使用提供的未完成的工程进行开发。设备上电后,板上的亮,灭。

基于hal库下LoRa模块获取光照值

一、问题要求:

使用一个 LoRa 模块、一个光照传感器模块完成一个光环境的监控。
任务要求:
–> 使用提供的未完成的工程进行开发。
–> 设备上电后,板上的 LED1 亮,LED2 灭。

–> 液晶屏上实时显示当前光照值,效果如下:

–> 当光照低于某一 设定值时(可用手遮住),板上的 LED2 灯亮起,高于
这一值(手拿开)时 LED2 灭

二、逻辑分析:

使用Visio画出流程图:

三、主要代码实现:

1.主函数main

对液晶初始化OLED_Init(),串口1初始化USART1_Init(115200),清空液晶屏的内容OLED_Clear(),显示初始化信息OLED_InitView(),ADC初始化ADCS_Init(),串口答应信息printf(),打开LED1,关闭LED2,然后不断获取关照强度,并对LED2进行控制

int main( void ){    Init();			//开发板设备初始化		OLED_Init();				//液晶初始化		USART1_Init(115200);		//串口1初始化		OLED_Clear();		OLED_InitView();			//OLED屏幕显示初始化信息		ADCS_Init();				//ADC初始化		printf("LoRa Light/r/n");	//串口输出信息			HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);			//打开LED1		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);				//关闭LED2    while( 1 )    {        LoRa_GetSensorDataProcess();		//获取光照值				Light_up();				   //设置阈值为80Lux,如果光照强度小于80Lux,打开LED2,否则关闭LED2				handlerPre10Ms();    }}

2.OLED显示初始化信息函数:OLED_InitView()

OLED显示“光照值:”,具体oled显示中文汉字的方法,在之前的文章有写过,有不懂可以查阅之前的博文

void OLED_InitView(){	OLED_Clear();	OLED_ShowCHinese(0*16+10,3,29);//光	OLED_ShowCHinese(1*16+10,3,30);//照	OLED_ShowCHinese(2*16+10,3,52);//值	OLED_ShowChar(3*16+10,3,":");//:	}

3.获取光照值函数LoRa_Get_SensorDataProcess();

获取ADC0的值,并将其转化为光照值显示

void LoRa_GetSensorDataProcess(void)  {  		float voltage;    		AdcScanChannel();					//转换ADC双信道寄存器数据为电压值    voltage = AdcReadCh0();					//获得ADC0获得电压值				     LightLux = (uint16_t)(5/2.0)*(voltage*100); 		//转化为光照强度 						 printf("光照值:%d",LightLux);					//把光照强度打印到串口     char StrBuf[64]={0};       memset(StrBuf, "/0", 64);       sprintf(StrBuf, " %d Lx",LightLux);       OLED_ShowString(4*16,3,(uint8_t *)StrBuf); 		//oled显示光照值}

4.控制LED2亮灭函数Light_up();

光照值小于80Lux时,打开LED2,否则关闭LED2

void Light_up(void){	if(LightLux <= 80)	{		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);			//光照值小于80Lux时,开启LED2	}	else	{		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);			//光照值大于80Lux时,关闭LED2	}}

四、注意事项与实现难点:

1.注意事项

(1)使用某个GPIO或其它外设前,得初始化!
(2)注意光照传感器的AD值靠ADC0获取;
(3)获取到的ADC值还需要进行转化为传感器电压值,再转化为光照值;

2.实现难点

(1) 初始化ADC通道0 --> 转换ADC双信道寄存器数据为电压值 --> 获得ADC0获得电压值;
(2) (电压值)voltage = (ADC0Value/4096.0) * 3300 , 单位为mV;
(3)(光照强度值)LightLux = (5/2.0) * (voltage /10.0) ,单位为Lux

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119229.html

相关文章

  • 几种典型的智慧农业物联网解决方案

    摘要:本文分享几种典型具有实际应用过的智慧农业物联网解决方案,供大家参考。智慧农业物联网解决方案由三部分组成智慧农业物联网平台智慧农业物联网网关无线节点。 智慧农业是现代农业发展的必然趋势,也是科学技术发展的必然结果。本文分享几种典型具有实际应用过的智慧农业物联网解决方案,供大家参考。 结合多年与...

    animabear 评论0 收藏0
  • 毕设-基于LoRa的智能农业大棚(一)

    摘要:为了防止数据冲突采用轮询的方式,轮询发送数据。使用作为核心的开发板,需要的资源定时器中断,外部中断,串口接受中断。定时器负责轮询发送关键字给模块,并由发送给各终端节点的模块。 ...

    OldPanda 评论0 收藏0
  • stm32mini开发板lora模块例程中中文字库更新失败的解决方案

    摘要:此文章用于解决开发板的模块中文字库加载问题,也可用于其它关于中文字库无法加载的问题。如下图,已经完成了中文字库烧入,无需再挂载。 正点原子stm32mini板lor...

    longmon 评论0 收藏0
  • 基于E220-400T30D模块实现简单的Lora无线通信

    摘要:模块简介用户手册下载采用全新一代的扩频技术,基于芯片方案设计的无线串口模块。具有多种传输方式,工作在频段默认,电平输出,兼容与的口电压。 1.模块简介 用户手...

    不知名网友 评论0 收藏0
  • 基于单片机的蓝牙控制窗帘电路系统

    摘要:设计简介本设计是基于单片机的蓝牙控制窗帘电路系统,主要实现以下功能可通过显示温湿度光照强度窗帘状态和模式可通过按键调整光照强度最小值可通过蓝牙连接手机进行远程控制可通过获取温湿度可通过光敏电阻获取光照强度。 设计简介: 本设计是基于单片机的蓝牙控制窗帘电路系统,主要实现以下功能: 可通过LC...

    lowett 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<