• 物联网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类型变量的地址,分别代表温度和湿度。

            示例代码:

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

    1. #include
    2. #include "board.h"
    3. #include "hal_key.h"
    4. #include "tim-board.h"
    5. #include "timer_handles.h"
    6. #include "led_light.h"
    7. #include "adc_reader.h"
    8. #include //library
    9. #include
    10. #include "stm32l1xx_hal.h" // controller register definitions
    11. #include "sht1x.h" // controller register definitions
    12. #include "sht3x.h"
    13. void Init() {
    14. BoardInitMcu();
    15. BoardInitPeriph();
    16. keys_init();//按键初始化
    17. setTimer2Callback(Time2Handler);
    18. Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次
    19. }
    20. float temp=0,hum=0,light=0;
    21. int main( void )
    22. {
    23. Init();
    24. ADCS_Init();//初始化ADC
    25. hal_temHumInit();//初始化温湿度模块
    26. while( 1 )
    27. {
    28. HAL_Delay(1000);//延时1000ms
    29. AdcScanChannel();//更新通道值
    30. light=((5.0/2.0)*AdcReadCh0())*100.0;//获取光照并通过公式计算
    31. call_sht11(&temp,&hum);//获取温湿度
    32. }
    33. }
  • 相关阅读:
    WEB-Wordlist-Generator:为扫描后的Web应用生成相关联的字典
    拍立淘助力电商新趋势:以图搜图购物成主流
    天池2023智能驾驶汽车虚拟仿真视频数据理解--baseline
    腾讯云~kafka伪集群搭建
    解释 JavaScript 的执行上下文和堆栈
    HAProxy终结TLS双向认证代理EMQX集群
    载均衡技术全解析:Pulsar 分布式系统的最佳实践
    单指标时间序列异常检测——基于重构概率的变分自编码(VAE)代码实现(详细解释)
    统计学习导论(ISLR) 第六章变量选择课后习题
    AD知识总结
  • 原文地址:https://blog.csdn.net/qq_39724355/article/details/131146070