基于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);
GPIO_SetBits(DHT11_IO,DHT11_PIN);
delay_us(30);
GPIO_ResetBits(DHT11_IO,DHT11_PIN);
}
这是启动让DHT11可是进行数据传输。(后面我把代码打个包) 这里是接线安排
(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);
}
这是我自己修改的地方,为了代码的客观性,将冗余的代码用函数的形式实现。
接线设置:
这样就可以将这些模块整合在最小系统里了。
遇到的问题总结 一个是运行总线IIC上面的知识,自己运用的不是很熟练,同时在将这些代码初始时,整体的客观性不强,现在改过来啦 整体自己这样过来还是颇有感触,网上有各种各样的方法和代码,都不如自己慢慢调试,形成自己传感器库,在后面的开发中直接调用就可以了,当然我们还是要借鉴别人的代码,感谢那些引路人,谢谢你们
源码给你哇,一起加油喂
|