【单片机毕业设计】基于STM32单片机的LORA组网温湿度光照强度采集传输系统

22 篇文章 1 订阅
10 篇文章 1 订阅

1、前言

 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉小洪学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,小洪学长分享优质毕业设计项目,今天要分享的是基于STM32单片机的LORA组网温湿度光照强度采集传输系统

2、简介

基于STM32单片机的LORA组网温湿度光照强度采集传输系统

1、采集两个节点的温湿度、光照强度
2、通过lora模块将数据传输给主机
3、主机将接收到的数据通过wifi模块远程传输到手机app显示

3、组成

本设计由STM32F103C8T6单片机最小系统+PM2.5传感器电路+LCD1602液晶显示电路+空气质量电路+按键电路+蜂鸣器报警电路+电源电路组成。

4、实现效果

整体展示

5、设计原理

5.1pm2.5粉尘传感器模块简介

        DHT11温湿度检测模块是当下嵌入式系统开发中环境温湿度检测的主要测量模块,该模块独特的设计能够直接获取环境中的温度数据,该模块是数字温度数据获取方式,采集到的温湿度输出为电平信号。该检测模块体积较小,硬件的引脚开销低,对于外界的环境抗干扰性强。并且该模块能够封装成各种模块,方便多种工作场合的选择。该模块有三个引脚(电压连接引脚、数据传输引脚、接地引脚),该模块检测到数据后会把模拟数据转换位(8+8)位的数字信号进行传输,对于环境模拟数据能够快速进行获取,通过内置的数据存储单元,然后通过不同需求进行读取。该模块最主要的特点是能够采用单总线的接口,通过单传输引脚和微处理器进行双向通信。该模块的供电方式灵活,能够通过依赖电路的电源,不用独立提供电源。数据传输的分辨率能够进行配置灵活选择(9-12位)。温湿度检测模块也提供掉电保护功能,当系统掉电的时候,可以对测量分辨率、设置标志值进行保存。

实物图

5.2 STM32F103C8T6简介

  1. STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
  2. 一、STM32的主要优点:
  3. (1)使用ARM最新的、先进架构的Cortex-M3内核
  4. (2) 优异的实时性能
  5. (3) 杰出的功耗控制
  6. (4) 出众及创新的外设
  7. (5) 最大程度的集成整合
  8. (6) 易于开发,可使产品快速将进入市场
  9. 二、STM32——最佳的平台选项
  10. 对于使用同一平台进行多个项目开发而言,STM32是最
  11. 佳的选择:
  12. (1) 从仅需少量的存储空间和管脚应用到需要更多的存储空间和管脚的应用
  13. (2) 从苛求性能的应用到电池供电的应用
  14. (3) 从简单而成本敏感的应用到高端应用
  15. (4) 全系列脚对脚、外设及软件的高度兼容性,给您带来全方位的灵活性。您可以在不必修改您原始框架及软件的条件下,将您的应用升级到需要更多存储空间或精简到使用更少存储空间/ 或改用不同的封装的规格。
  16. STM32F103C8T6单片机核心板接口电路图如下图所示。

STM32单片机核心板接口原理图

6、部分核心代码

#define LORA_F  		14
#define LORA_S  		1
#define LORA_S_STR  "S1"	
 int main(void)
 {
  char LORASEND[50];
	 uint16_t Prox_data,Lux_data;
  delay_init();
	uart1_init(9600);
	gpio_Init();
	DHT11_Init();//³õʼ»¯DHT11
	apds9930_enable();
	LORA_Init(LORA_F, LORA_S);
  LED = 1;
		
	while(1)
	{  
			if((LRNum & 0x8000) == 0x8000)
			{
			   if(strstr(LRBuff,"get")!=NULL)
				 {
					  DHT11_Read_Data(&TEMP,&HUMI);
					  apds9930_data_readout(&Prox_data, &Lux_data);

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
获取 Lora 模块的温湿度需要连接 Lora 模块和传感器,并使用相应的库来读取传感器的数据,然后通过 Lora 模块将数据发送到接收端。以下是一个简单的示例代码: 1. 首先,需要在 VS 中创建一个 Windows 窗体应用程序项目。 2. 在项目中添加 Lora 相关的库。可以使用 nuget 包管理器来添加库,搜索 "Lora" 并安装即可。 3. 在窗体中添加一个 Label 控件用于显示温度和湿度。 4. 在窗体的代码文件中,编写以下代码: ```csharp using System.Threading.Tasks; using Windows.Devices.Gpio; using Windows.Devices.SerialCommunication; using Windows.Storage.Streams; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using LoraLib; // ... private async void btnSendData_Click(object sender, RoutedEventArgs e) { // 创建 Lora 实例,使用默认的串口和 GPIO 引脚 var lora = new Lora(); // 打开串口 await lora.OpenAsync(); // 创建 DHT11 实例 var dht11 = new DHT11(4); // 获取温湿度数据 var result = dht11.ReadData(); // 将数据转换为字节数组 var data = new byte[] { result.Humidity, result.Temperature }; // 发送数据 await lora.SendAsync(data); // 关闭串口 await lora.CloseAsync(); } private void btnReceiveData_Click(object sender, RoutedEventArgs e) { // 创建 Lora 实例,使用默认的串口和 GPIO 引脚 var lora = new Lora(); // 打开串口 lora.Open(); // 开始接收数据 lora.StartReceive(OnReceiveData); // 等待 10 秒钟 Task.Delay(10000).Wait(); // 停止接收数据 lora.StopReceive(); // 关闭串口 lora.Close(); } private void OnReceiveData(byte[] data) { // 解析温湿度数据 var humidity = data[0]; var temperature = data[1]; // 更新 Label 控件显示的内容 Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { lblTempHumidity.Text = $"温度:{temperature}℃,湿度:{humidity}%"; }); } ``` 在这个示例中,我们在窗体中添加了两个按钮:一个用于发送数据,一个用于接收数据。当用户点击发送数据按钮时,我们创建 Lora 和 DHT11 实例,读取温湿度数据并将其发送出去。当用户点击接收数据按钮时,我们创建 Lora 实例并开始接收数据,等待 10 秒钟后停止接收并关闭串口。在接收数据的过程中,当接收到有效数据时,我们解析温湿度数据并更新 Label 控件的显示内容。 需要注意的是,这个示例中假设 Lora 模块连接在默认的串口和 GPIO 引脚上,如果你使用的是其他引脚或串口,需要修改代码中的相应部分。同时,在使用 Lora 模块时,需要确保模块连接正确,并且发送和接收端使用相同的频率和数据速率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值