-
1 知识介绍
-
2 PPT
-
3 教学视频
-
4 名人名言
任务3为智慧植物园区下的子系统,主要完成园区环境光线采集并在显示屏上进行数据显示,并将数据传回总控。
任务3 LoRa光照传感器节点数据采集
光照传感器节点数据采集过程包括:首先由传感器采集光照的强度,然而光照传感器是模拟量的传感器,需要通过ADC来将采集到的数据转换成数字量,再由MCU来对采集的光照值数据进行处理。通过模块上OLED屏来显示当前的信息,最后再将采集到的数据组帧,将数据传输到汇集节点。
通过对任务进行分析,难点有2个:
ADC转换,
ADC转换过程 :采样、保持、量化、及编码。MCU通过编程都采集到的数据进行处理,组帧,将数据发给汇聚节点。
基础知识讲解
编写程序前我们首先认识一下我们的硬件,如下


根据厂家提供的光敏传感器的规格书可以查到,在一定的光照度范围内,环境光强度的变化与光敏传感器的输出电流成正比,光电流与光照强度关系曲线如

参考厂家提供的数据手册,结合上
光电参数 | (Ta=25℃) | ||||||
参数名称 | 符号 | 测试条件 | 最小值 | 典型值 | 最大值 | 单位 | |
暗电流 | Idrk | 0 Lux,Vdd=10V | - | - | 0.2 | μA | |
亮电流 | Iss | Vdd=5V,10Lux,Rss=1KΩ | 2 | 4 | 8 | μA | |
Vdd=5V,100Lux,Rss=1KΩ | 20 | 40 | 80 | ||||
感光光谱 | λ | \ | - | 800 | 1050 | nm | |
响应 速度 | 上升 | tr | Vdd=5V,Iss=5mA,RL=100Ω | - | 4 | - | μS |
下降 | tf | - | 4 | - | μS | ||
ADC为Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。ADC的作用:采集传感器的数据,测量输入电压,检查电池电量剩余,监测温湿度等。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。过程分为4步,分别是采样、保持、量化及编码,在ADC转换完成前,是需要等待数据转换的。切记在取值之前需要判断,过程是否完成。
ADC的性能指标:
量程:能测量的电压范围,一般来收量程越大越好;
分辨率:ADC的分辨率通常以输出二进制数的位数表示,位数越多,分辨率越高,精度越大,外部微小的变化都可以被显示。一般来说分辨率越高,转化时间越长;
转化时间:模拟输入电压在允许的最大变化范围内,从转换开始到获得稳定的数字量输出所需要的时间称为转换时间,希望时间越短越好。
LoRa光照传感器节点数据采集具体实施步骤如下:
步骤1 硬件连接
1、 取一块LoRa模块,将显示屏下方的开关JP1往右拨。其中JP1右拨为正常工作,左拨为固件下载。 2、 开关JP2往左拨。JP2是STM32单片机的usart1的接通选择开关,左拨用于接通到NewLab主机上,右拨用于断开与NewLab主机的连接。3、 编码开关往上拨。编码开关是控制STM32的SPI引角和SX1278模组的SPI接通。全部上拨的时候,STM32的SPI和SX1278模组接通,全部下播的时候,STM32的SPI和SX1278模组断开连接。 4、 插上LoRa模块儿天线。 5、 LoRa模块插上光照传感器模块。准备NewLab主机和配套12V电源。NewLab主机接通12V电源,通讯旋钮开关旋至通讯模式,将LoRa传感器节点放置NewLab主机上。
步骤2 LoRa 光照传感器节点应用程序开发
本步骤要在温湿度传感器节点的应用开发基础上,完成LoRa光照传感器节点应用程序的开发,采集光照度并在OLED屏上显示出来。首先,工程模板操作前面已经完成了温湿度传感器节点的应用开发,在此工程的基础上修改出光照传感器节点的应用程序。
复制工程源码文件夹LoRaModemSensorTempRhProject为副本,并重命名为 LoRaModernSensorLightProject。进入文件夹LoRaModernSensorLightProject,并打开该工程源码。应用程序编写全部在main.c文件中进行修改。修改内容主要分四部分:1、 变量定义及外设初始化部分的修改;2、 光照数据采集部分修改;3、 传输数据内容的修改;4、 OLED液晶显示部分修改。
1、 变量定义及外设初始化部分的修改。光照传感器节点需要采集光照度信息,删除原先的定义和存放温度、湿度的变量,并重新定义一个全局变量用于存放光照度。这里定义全局变量LightLux=200。由于温湿度传感器节点和光照传感器节点是在同一个无线网络中的,不同设备要修改main.c中MY_ADDR的数值,这里宏定义期值为2。MY_NET_ID的值无需修改。修改函数PlatformInit()。首先打开函数PlatformInit(),函数末尾的原printf 提示信息改为“Lora Light \r\n”。其次,删除原初始化温湿度模块的代码,改为配置带ADC模块转换功能的初始化函数,函数void AdcInit()定义在adc.c文件中可以直接调用。最后在board.c中定义Adc_t Adc,在board.h中定义:#define ADC_0 PA_0。
2、 光照数据采集部分修改。光照传感器节点和温湿度传感器节点的采集传感数据的机制是一样的,只是传感器类型不一样。根据厂家提供的光敏传感器的规格书,我们可以得出一个光电流Iss与光照强度lux的一个关系式:
3、 传输数据内容的修改。光照传感节点收到网关读取传感数据的命令后,数据解析和生成响应的代码是一样的。唯一不同的是数据域部分光照传感器的标识名这里写为:LightLux,单位:lux。因此仅仅需要修改函数LoRa_DataParse()内的sprintf所在位置的代码,代码中把温湿度数据及其单位换成了光照度数据及其对应的单位。
4、 OLED液晶显示部分修改。OLED12864显示屏用于显示提示信息,显示当前传感类型和数据信息。温湿度传感节点程序中显示的是温湿度数据,而任务中需要显示光照度信息,因此这部分代码只需把温湿度的提示及数据替换成光照度的提示和数据既可。修改OLED_InitView()函数,将LoRa Temp/Rh 改为 LoRa Light,用于提示当前采集数据是光照度信息,到这里就完成了光照传感器节点的应用程序的编写编译工程,编译完成后无错误,无警告既可进行下一步。
步骤3 程序烧录
1、将温氏度传感器LoRa模块JP1往左拨,按一下复位键。2、 打开STMFlashLoaderDemo软件,在PortName 下拉列表框中选择对应的窗口。3、读到硬件设备后,BaudRate波特率选:115200,点击NEXT命令按钮。4、 选择MCU型号为STM32L1_Cat1-128k,点击NEXT命令按钮。5、 选中Download device单选按钮,选择xxx.hex下载程序对应的路径,点击NEXT命令按钮。注意:路径要根据.hex文件的实际路径选择。6、 等待下载完成,将LoRa模块的JP1往右拨,同时按一下复位键KEY1。温湿度程序便开始运行了。

