基于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); //拉低至少18ms
GPIO_SetBits(DHT11_IO,DHT11_PIN); //拉高数据线
delay_us(30); //主机拉高20~40us
GPIO_ResetBits(DHT11_IO,DHT11_PIN);
}
这是启动让DHT11可是进行数据传输。(后面我把代码打个包)
这里是接线安排
[tr]OUT管脚接最小系统板的PB11管脚[/tr]
(2):GY-30光照强度传感器
这个代码实现的逻辑是由下图
|
[tr]GPIO配置配置使能,管脚配置为PB56[/tr]
初始化BH1750 | 设置地址,内存地址,还有IIC信号停止源 |
延时函数 | Delay() |
读取光照强度 | 读取BH1750内部结构 |
合成数据运算 | 设置value值 |
想要了解更多的同学可以看这个博主的博文帅奎奎
管脚插线方法:
[tr]GND、ADDGND[/tr]
(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);
}
这是我自己修改的地方,为了代码的客观性,将冗余的代码用函数的形式实现。
接线设置:
[tr]SDAPA7[/tr]
这样就可以将这些模块整合在最小系统里了。
遇到的问题总结
一个是运行总线IIC上面的知识,自己运用的不是很熟练,同时在将这些代码初始时,整体的客观性不强,现在改过来啦。
基于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); //拉低至少18ms
GPIO_SetBits(DHT11_IO,DHT11_PIN); //拉高数据线
delay_us(30); //主机拉高20~40us
GPIO_ResetBits(DHT11_IO,DHT11_PIN);
}
这是启动让DHT11可是进行数据传输。(后面我把代码打个包)
这里是接线安排
[tr]OUT管脚接最小系统板的PB11管脚[/tr]
(2):GY-30光照强度传感器
这个代码实现的逻辑是由下图
|
[tr]GPIO配置配置使能,管脚配置为PB56[/tr]
初始化BH1750 | 设置地址,内存地址,还有IIC信号停止源 |
延时函数 | Delay() |
读取光照强度 | 读取BH1750内部结构 |
合成数据运算 | 设置value值 |
想要了解更多的同学可以看这个博主的博文帅奎奎
管脚插线方法:
[tr]GND、ADDGND[/tr]
(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);
}
这是我自己修改的地方,为了代码的客观性,将冗余的代码用函数的形式实现。
接线设置:
[tr]SDAPA7[/tr]
这样就可以将这些模块整合在最小系统里了。
遇到的问题总结
一个是运行总线IIC上面的知识,自己运用的不是很熟练,同时在将这些代码初始时,整体的客观性不强,现在改过来啦。
举报