前言
基于LoRa无线通信和传感器数据采集的嵌入式程序,主要功能是通过LoRa模块发送和接收数据,并在OLED屏幕上显示光照信息
硬件选择
新大陆——LoRa开发板
新大陆——光照传感器 
代码讲解
跳过文件创建过程,直接对代码进行讲解。
1. 头文件和宏定义模块
#include <string.h>
#include <stdio.h>
#include "board.h"
#include "radio.h"
#include "NS_Radio.h"
#include "hal_temHum.h"
#define START_HEAD 0x55
#define CMD_READ 0x01
#define ACK_OK 0x00
#define ACK_NONE 0x01
#define ACK_ERR 0x02
#define MY_NET_ID 0x0138
#define MY_ADDR 0x02
-
功能:这部分引入了程序所需的头文件,并定义了一些常量。
-
START_HEAD
、CMD_READ
、ACK_OK
等宏定义用于协议帧的格式化和解析。 -
MY_NET_ID
和MY_ADDR
分别定义了网络ID和设备地址,用于LoRa通信中的身份标识。
-
2. 全局变量模块
uint16_t LightLux = 0; // 光照变量
-
功能:定义了全局变量 LightLux,用于存储光照的值。初始值为0。
3. 传感器数据采集模块
void LoRa_GetSensorDataProcess(void){
const uint16_t time = 1000;
if(User0Timer_MS > time){
User0Timer_MS = 0;
uint16_t AdcNum , voltage;
//AdcNum
AdcNum = AdcReadChannel(&Adc , ADC_CHANNEL_0);
voltage = AdcNum*3300/(4096 - 1.0);
LightLux = (5 / 2.0)*(voltage / 10.0);
char StrBuf[64] = {0};
memset(StrBuf , '\0' ,64);
sprintf(S