5-基于stm32单片机温室大棚温湿度光敏检测蓝牙上传APP源程序、原理图、PCB、元件清单实物制作

采用stm32单片机+OLED显示屏+HC-05蓝牙模块+DHT11温湿度+继电器+光敏模块+蜂鸣器,设计主要通过DHT11检测温湿度,光敏模块检测光照强度,数据显示到OLED屏幕上,当温度或者湿度大于设置值,继电器打开进行模拟通风或者浇水,设置值程序可以进行更改,然后采集到的数据经过HC-05蓝牙模块进行上传到手机APP,文末有资料分享:

5-基于stm32单片机温室大棚温湿度光敏检测蓝牙上传APP(程序+原理图+PCB+全套资料)

 

	void fasong()//蓝牙发送函数
	{
		USART_SendData(USART1,DHT11_Data .temp_int/10+48); //发送温度整数十位
		delay_ms(70);
		USART_SendData(USART1,DHT11_Data .temp_int%10+48); //发送温度整数个位
		delay_ms(70);
		USART_SendData(USART1,'.');
		delay_ms(70);
		USART_SendData(USART1,DHT11_Data .temp_deci+48);  //发送温度小数个位
		delay_ms(70);
		USART_SendData(USART1,'C');
		delay_ms(70);
		USART_SendData(USART1,' ');
		delay_ms(70);
		USART_SendData(USART1,' ');
		delay_ms(70);
		USART_SendData(USART1,' ');
		delay_ms(70);
		USART_SendData(USART1,DHT11_Data .humi_int/10+48); //发送湿度整数十位
		delay_ms(70);
		USART_SendData(USART1,DHT11_Data .humi_int%10+48); //发送湿度整数个位
		delay_ms(70);
		USART_SendData(USART1,'%');
		delay_ms(70);
		USART_SendData(USART1,' ');
		delay_ms(70);
		USART_SendData(USART1,' ');
		delay_ms(70);
		USART_SendData(USART1,' ');
		delay_ms(70);
		USART_SendData(USART1,temp%100/10+48);//发送光照整数十位
		delay_ms(70);
		USART_SendData(USART1,temp%10+48);//发送光照整数个位
				delay_ms(70);
		USART_SendData(USART1,'%');
				delay_ms(70);
		USART_SendData(USART1,' ');
	}

void	GPIOB_init(void) 
{
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//GPIO B  时钟打开
	//==PB5 输出
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//指定管脚
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//  做PWM
		//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//做led控制
		GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;//指定管脚LED背光
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//  做输出	
		GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB
}
int main()
{

	TIMER2_init(999,71);	
	SysTick_Init(72);
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
	USART1_Init(9600);
	LED_Init();
	OLED_Init();
	OLED_ColorTurn(0);//0正常显示,1 反色显示
  OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
	OLED_Clear();
	DHT11_Init ();
//KEY_Init();
	beep1=1;Q1=1;
		//Ultrasonic_init();
	//	GPIOB_init();
		Adc_Init();	
	while(1)
	{
				DHT11_Read_TempAndHumidity ( & DHT11_Data );//读温湿度
				sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_DHT11_%d.%d_%d.%d_ENDDHT11_BUZZER_%d_ENDBUZZER_END", 
									ucLed1Status, ucLed2Status, ucLed3Status, DHT11_Data .temp_int, 
			            DHT11_Data .temp_deci, DHT11_Data .humi_int, DHT11_Data .humi_deci,
                  ucBuzzerStatus );


	 		DHT11_Read_TempAndHumidity ( & DHT11_Data );//读温湿度
						OLED_ShowNum(0,0,DHT11_Data .temp_int,2,16,1);//显示相关数据
				OLED_ShowString(16,0,".",16,1);
				OLED_ShowNum(24,0,DHT11_Data .temp_deci,1,16,1);
				OLED_ShowString(35,0,"C",16,1);
								
				OLED_ShowNum(50,0,DHT11_Data .humi_int,2,16,1);
				OLED_ShowString(70,0,"%",16,1);
					OLED_Refresh();	
				adcx=Get_Adc_Average(ADC_Channel_6,10);//读光敏参数
				temp=100-(float)adcx/4096*3.3*33;
	
		
	
	OLED_ShowString(1,20,"GM:",16,1);//显示光敏参数

OLED_ShowNum(35,20,temp,3,16,1);
OLED_ShowString(65,20,"%",16,1);
if(DHT11_Data .temp_int>29||DHT11_Data .humi_int>80) //如果温度大于30湿度大于80 报警
{
	beep1=0;
	Q1=0;
}

下面是原理图和PCB展示: 

百度云盘资料链接 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值