基于stm32的温室大棚系统

  一使用的模块

  本实验使用了stm32f103最小系统板,一个串口转接口,st-link下载器,led灯,温湿度传感器dht11,按键,直流电机,蜂鸣器,舵机以及OLED显示屏。

二实验内容

使用舵机模拟大棚的大门,直流电机模拟风扇,蜂鸣器及LED灯模拟报警器,将实时采集的数据通过串口发送到电脑上,电脑经过QT分析数据画出一个实时数据的分析图,同时如果温湿度过高会启动舵机及风扇,并且风扇的旋转速度和舵机的旋转角度会随着温湿度变化。

三实物展示

(懒得在搭建了勉强看吧👀)

735d044586d3431294e4afbf2fb55f07.jpg

 OLED显示温度湿度以及预设的阙值,这个值可以使用按键进行调节。

78b404d678f04b928ead6a1f3ecca6b4.jpg

 这个是实时采取的波形,感觉还挺有意思的,原本想用MATLAB自己做一个的,看到有现成用QT搭建的就拿过来用了。

四 主程序展示

(狗头保命,我是小白)

#include "stm32f10x.h" // Device header

#include "Delay.h"

#include "OLED.h"

#include "servo.h"

#include "DHT11.h"

#include "buzz.h"

#include "Motor.h"

#include "LED.h"

#include "KEY.h"

#include "serial.h"

#include "timer.h"

 

DHT11_Data_TypeDef DHT11_Data;

uint16_t NUM;

uint8_t KeyNum; //定义用于接收按键键码的变量

int8_t Speed=20; //定义速度变量

float Angle=90;

uint8_t wendu=25; 

uint8_t shidu=60; 

 

int main(void)

{

OLED_Init();

servo_init();

DHT11_GPIO_Config(); 

buzz_init();

Motor_Init(); //直流电机初始化

LED_init(); 

Key_Init();

Serial_init();

Timer_init();

 

while(1)

{

 KeyNum=Key_GetNum();

 

  if(Read_DHT11(&DHT11_Data) == SUCCESS)

  {

   OLED_ShowString(1, 1, "temp:");

         OLED_ShowString(2, 1, "humidity:");

   OLED_ShowString(3, 1, "TEMP:");

   OLED_ShowNum(2, 10, DHT11_Data.humi_int, 2);

   OLED_ShowString(2, 12, ".");

   OLED_ShowNum(2, 13, DHT11_Data.humi_deci, 2);

   OLED_ShowNum(1, 6, DHT11_Data.temp_int, 2);

   OLED_ShowString(1, 8, ".");

   OLED_ShowNum(1, 9, DHT11_Data.temp_deci, 1);

            OLED_ShowNum(3, 6, shidu, 2);   

   }

  

     if(KeyNum==1)

  {

            shidu++;

  }

  else if(KeyNum==2)

{

shidu--;

}

 

if(DHT11_Data.humi_int>shidu)

{

 servo_setAngle(180);

 LED2_ON(); 

 GPIO_ResetBits(GPIOB,GPIO_Pin_12); 

 Motor_SetSpeed(DHT11_Data.humi_int/2); 

}

else if(DHT11_Data.humi_int<=shidu)

{

            servo_setAngle(0);

             LED2_OFF();

            GPIO_SetBits(GPIOB,GPIO_Pin_12);

            Motor_SetSpeed(0);

}

 

if(NUM==2)

{

serial_sendNumber(DHT11_Data.temp_int,2);

Serial_sendstring(".");

serial_sendNumber(DHT11_Data.humi_int,2); 

NUM=0; 

}

 OLED_ShowNum(4, 1, NUM, 2);

}

五总结

 刚开始学,感觉还是学到了挺多的,接着努力学习,奥利给,源码没放上去因为我不知道咋放,要是有要的我可以打包发给你👀,纯纯小白还在上学务喷。

 

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值