本文主要是介绍基于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、ADD | GND |
---|---|
VCC | Vcc |
SDA | PB5 |
SCL | PB6 |
(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);}
这是我自己修改的地方,为了代码的客观性,将冗余的代码用函数的形式实现。
接线设置:
SDA | PA7 |
---|---|
SCL | PA5 |
这样就可以将这些模块整合在最小系统里了。
遇到的问题总结
一个是运行总线IIC上面的知识,自己运用的不是很熟练,同时在将这些代码初始时,整体的客观性不强,现在改过来啦
整体自己这样过来还是颇有感触,网上有各种各样的方法和代码,都不如自己慢慢调试,形成自己传感器库,在后面的开发中直接调用就可以了,当然我们还是要借鉴别人的代码,感谢那些引路人,谢谢你们
源码给你哇,一起加油喂
这篇关于基于STM32F103C8T6最小开发板设计的户外环境监测系统(运用了DHT11模块,GY-30数字光照模块,低电平触发蜂鸣器,OLED显示)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!