基于STM32F103C8T6最小开发板设计的户外环境监测系统(运用了DHT11模块,GY-30数字光照模块,低电平触发蜂鸣器,OLED显示)

本文主要是介绍基于STM32F103C8T6最小开发板设计的户外环境监测系统(运用了DHT11模块,GY-30数字光照模块,低电平触发蜂鸣器,OLED显示),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于STM32F103C8T6最小开发板设计的户外环境监测系统(运用了DHT11模块,GY-30数字光照模块,低电平触发蜂鸣器,OLED显示)

这个户外监测系统自己还在完善,在这个上传给onenet中移物联网上传出现一点小问题,不过上传数据还是不是很稳定,所以目前个人发表的是自己实现在周遭环境监测系统的1.0版本。后续还会发表自己的升级版,敬请期待吧!

首[在这里插入图片描述是我们这个系统运行的载体是STM32F103C8T6最小系统板
然后就是大家比较熟知的传感器模块:
(1):温湿度传感器
在这里插入图片描述
这个传感器运行是需要经过两次的上拉电平,才能实现将AD转换成数据转发传输,想要更加深入理解这个传感器的原理可以这个大佬学习-(我也是看这个的)

static void DHT11_Rst(void)
{                 GPIO_SETOUT();											//配置成输出模式GPIO_ResetBits(DHT11_IO,DHT11_PIN); //拉低数据线delay_ms(20);    										//拉低至少18msGPIO_SetBits(DHT11_IO,DHT11_PIN); 	//拉高数据线 delay_us(30);     									//主机拉高20~40usGPIO_ResetBits(DHT11_IO,DHT11_PIN);
}

这是启动让DHT11可是进行数据传输。(后面我把代码打个包)
这里是接线安排

OUT管脚接最小系统板的PB11管脚

(2):GY-30光照强度传感器
在这里插入图片描述
这个代码实现的逻辑是由下图
|

GPIO配置配置使能,管脚配置为PB5\6
初始化BH1750设置地址,内存地址,还有IIC信号停止源
延时函数Delay()
读取光照强度读取BH1750内部结构
合成数据运算设置value值

想要了解更多的同学可以看这个博主的博文帅奎奎
管脚插线方法:

GND、ADDGND
VCCVcc
SDAPB5
SCLPB6

(3)OLED显示屏:
在这里插入图片描述
我用的OLED代码是正点原子的,通过这个实验例程移植到我这边的代码上。当然为了更好的实现我自己也改了一些内容:

void OLED_Show(u8 temp,u8 humi,u8 Light)
{	OLED_ShowString(35,2, ":",16);//显示温度中文OLED_ShowCHinese(0,4,10);OLED_ShowCHinese(17,4,11);OLED_ShowString(35,4, ":",16);//显示湿度中文OLED_ShowCHinese(0,6,12);OLED_ShowCHinese(17,6,13);OLED_ShowString(35,6, ":",16);//显示光照中文OLED_ShowNum(45,2,temp,3,16);//显示温度OLED_ShowNum(45,4,humi,3,16);//显示湿度的码值 OLED_ShowNum(45,6,Light,3,16);//显示湿度的码值	 delay_ms(10);}

这是我自己修改的地方,为了代码的客观性,将冗余的代码用函数的形式实现。

接线设置:

SDAPA7
SCLPA5

这样就可以将这些模块整合在最小系统里了。
OLED显示

串口实时反馈

遇到的问题总结
一个是运行总线IIC上面的知识,自己运用的不是很熟练,同时在将这些代码初始时,整体的客观性不强,现在改过来啦
在这里插入图片描述
整体自己这样过来还是颇有感触,网上有各种各样的方法和代码,都不如自己慢慢调试,形成自己传感器库,在后面的开发中直接调用就可以了,当然我们还是要借鉴别人的代码,感谢那些引路人,谢谢你们

源码给你哇,一起加油喂

这篇关于基于STM32F103C8T6最小开发板设计的户外环境监测系统(运用了DHT11模块,GY-30数字光照模块,低电平触发蜂鸣器,OLED显示)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/257457

相关文章

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环