100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 物联网Lora模块从入门到精通(五)光照与温湿度传感器

物联网Lora模块从入门到精通(五)光照与温湿度传感器

时间:2020-11-22 09:28:23

相关推荐

物联网Lora模块从入门到精通(五)光照与温湿度传感器

一、前言

在程序开发中,光照与温湿度的获取是十分常见与重要的,本文我们主要是使用M21温湿度光照三合一传感器,其中温湿度数据通过协议获取,而光照通过ADC获取。

二、代码实现

本文内容较为简单,且后续文章将在本文基础上完成。从本文开始,后续将会讲解OLED显示屏、串口通信、Lora无线通信、Flash存储与读取都将在本文的基础上完成。

光照值的获取:

光照值的获取是常见的AD转换,例程中为我们提供了adc_reader.c文件,可以帮助我们快速配置完成任务要求。

ADCS_Init()是初始化ADC的函数,进行基础配置。

AdcScanChannel()被调用时,会获取数据存到本地变量中。

AdcReadCh0()从存储的数据中,读取通道0的值。

温湿度的获取

本文使用的是M21温湿度光敏三合一模块,例程中也提供了hal_temHum.c文件来帮助我们与该模块通信获取数据。

hal_temHumInit()函数是初始化函数,初始化相应配置。

call_sht11()函数是获取数据的方法,其有两个参数,需要传入两个float类型变量的地址,分别代表温度和湿度。

示例代码:

使用库时,记得添加头文件。

#include <string.h>#include "board.h"#include "hal_key.h"#include "tim-board.h"#include "timer_handles.h"#include "led_light.h"#include "adc_reader.h"#include <math.h>//library #include <stdio.h>#include "stm32l1xx_hal.h" // controller register definitions #include "sht1x.h" // controller register definitions #include "sht3x.h"void Init() {BoardInitMcu();BoardInitPeriph();keys_init();//按键初始化setTimer2Callback(Time2Handler);Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次}float temp=0,hum=0,light=0;int main( void ){Init();ADCS_Init();//初始化ADChal_temHumInit();//初始化温湿度模块while( 1 ){HAL_Delay(1000);//延时1000msAdcScanChannel();//更新通道值light=((5.0/2.0)*AdcReadCh0())*100.0;//获取光照并通过公式计算call_sht11(&temp,&hum);//获取温湿度}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。