基于STM32的智能家居设计(有三款设计)

目录

1、设计要求

2、系统功能

3、演示视频和实物

 3.1蓝牙款:​编辑

3.2WIFI款:

3.3WIFI+语音款:

4、系统设计框图

5、软件设计流程图

6、原理图

6.1WIFI+语音款:

7、主程序

8、总结


大家记得点赞关注哦!

🤞大家好,这里是5132单片机毕业设计项目分享,今天给大家分享的是《9、基于STM32的智能家居设计》

设备的详细功能见网盘中的文章《9、基于STM32智能厨房控制系统设计》:

链接:https://pan.baidu.com/s/1uWSZX2zbZwy9sYwwnvyktQ?pwd=5132

提取码:5132

本次设计了三款:

✨蓝牙款。

✨WIFI款。

✨WIFI+语音款。

1、设计要求

本设计是基于单片机的物联网的智能家居控制系统设计,主要设计了一款智能家居系统,实现了房间温湿度、光照强度和烟雾浓度的检测,并且可以通过WIFI模块ESP8266-01s上传数据,用户可以远程查看数据,当检测的数值大于设定阈值就会报警,提醒用户,避免发生不必要的生命财产损失。也可以远程控制灯光、风扇和蜂鸣器报警。其中主控模块采用STM32系列单片机。

2、系统功能

这里值介绍WIFI款的功能:

本次设计采用STM32C8T6作为主控,用来采集传感器数据和处理数据,并控制输出设备。

  1. 光敏传感器用来采集房屋的光照强度
  2. DHT11温湿度传感器用来采集房屋的温度和湿度。
  3. MQ-2烟雾传感器用来采集房屋的烟雾浓度。
  4. LED灯和蜂鸣器组成了声光报警装置。
  5. ESP8266-01S用来实现远程控制,可以把传感器数据和输出设备状态上传到云平台,手机也可以通过云平台控制输出设备。
  6. 风扇作为输出设备,用来降温和驱散烟雾。
  • 有其他设计要求的可以通过网盘中的联系方式私聊博主。非诚勿扰!

3、演示视频和实物

 3.1蓝牙款:

D28-基于STM32的智能家居设计(蓝牙版)

3.2WIFI款:

D29-基于STM32的智能家居—WFI款

3.3WIFI+语音款:

4、系统设计框图

只展示WIFI语音款的。

5、软件设计流程图

WIFI款的:

6、原理图

6.1WIFI+语音款:

6.2蓝牙款:

7、主程序

 下面的程序只是代码工程的主程序,是设计的逻辑设计,咨询项目代码和设计的可通过上面的网盘联系,非诚勿扰!🤞

#include "sys.h"     //有问题和需求的,可以联系VX:lwfw123456789
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "usart3.h"
#include "gizwits_product.h"
#include "dht11.h"
#include "Key.h"
#include "Buzzer.h"
#include "OLED.h"
#include "AD.h"

extern uint32_t bufe[5];
uint16_t AD0, AD1, AD2, AD3;    //´æ´¢4·ADCÖµ
uint32_t WenYu = 30;
uint32_t YanYu = 40;

u8 temp, humi;
u8 state;
u8 t = 0;
uint8_t KeyNum;

void MY_Gizwits_Init(void)
{
    TIM3_Int_Init(9, 7199); //1MSϵͳ¶¨Ê±
    usart3_init(9600);//WIFI³õʼ»¯
    memset((uint8_t *)&currentDataPoint, 0, sizeof(dataPoint_t)); //É豸״̬½á¹¹Ìå³õʼ»¯
    gizwitsInit();//»·Ðλº³åÇø³õʼ»¯
    gizwitsSetMode(2);   //ÉèÖÃģʽ
}
int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
    uart_init(9600);       //´®¿Ú³õʼ»¯Îª9600
    delay_init();      //ÑÓʱº¯Êý³õʼ»¯

    LED_Init();            //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
    DHT11_Init();
    Buzzer_Init();
    OLED_Init();
    Key_Init();
    AD_Init();

    MY_Gizwits_Init();   //»úÖÇÔÆ³õʼ»¯

    OLED_ShowChinese(1, 3, 53);
    OLED_ShowChinese(1, 4, 54);
    OLED_ShowChinese(1, 5, 55);
    OLED_ShowChinese(1, 6, 56);

    OLED_ShowChinese(2, 1, 26);
    OLED_ShowChinese(2, 2, 28);
    OLED_ShowString(2, 5, ":");
    OLED_ShowChinese(2, 5, 27);
    OLED_ShowChinese(2, 6, 28);
    OLED_ShowString(2, 13, ":");

    OLED_ShowChinese(3, 1, 35);
    OLED_ShowChinese(3, 2, 36);
    OLED_ShowChinese(3, 3, 37);
    OLED_ShowChinese(3, 4, 38);
    OLED_ShowString(3, 9, ":");

    OLED_ShowChinese(4, 1, 4);
    OLED_ShowChinese(4, 2, 5);
    OLED_ShowChinese(4, 3, 6);
    OLED_ShowChinese(4, 4, 7);
    OLED_ShowString(4, 9, ":");

    while (1)
    {
        userHandle();    //Êý¾ÝÉÏ´«
        gizwitsHandle((dataPoint_t *)&currentDataPoint);   //ºǫ́´¦Àí£¬±ØÐë·ÅÔÚwhileÀï

//        if (t % 10 == 0)
//        {
            DHT11_Read_Data(&temp, &humi);  //¶ÁÈ¡ÎÂʪ¶È²¢ÏÔʾÔÚOLEDÉÏ
            bufe[0] = temp;
            bufe[1] = humi;
            OLED_ShowNum(2, 6, bufe[0], 2); //ʪ¶È
            OLED_ShowString(2, 8, "%");
            OLED_ShowNum(2, 14, bufe[1], 2); //ʪ¶È
            OLED_ShowString(2, 16, "%");

            AD0 = AD_GetValue(ADC_Channel_0);    //ÑÌÎí´«¸ÐÆ÷     PA0
            if (AD0 > 4000)AD0 = 4000;
            bufe[2] = (u8)((AD0 / 40));
            OLED_ShowNum(3, 10, bufe[2], 3);
            OLED_ShowString(3, 13, "%");

            AD2 = AD_GetValue(ADC_Channel_2);    //¹âÕÕÇ¿¶È´«¸ÐÆ÷      PA2
            if (AD2 > 4000)AD2 = 4000;
            bufe[3] = (u8)((AD2 / 40));
            OLED_ShowNum(4, 10, bufe[3], 3);
            OLED_ShowString(4, 13, "%");
//        }
//        t++;

        KeyNum = Key_GetNum();

        if (KeyNum == 1)      //PB1¿ØÖÆÉ豸¿ª¹Ø
        {
            delay_ms(20);
            if (KeyNum == 1)
            {
                state++;
                if (state > 1)
                {
                    state = 0;
                }
            }
        }
        if (state == 0)    //¹Ø±Õ
        {
            OLED_ShowChinese(4, 8, 14);
LED3 = 1;

        }
        if (state == 1)    //¿ªÆô
        {
            OLED_ShowChinese(4, 8, 12);
LED3 = 0;
            if (bufe[0] > WenYu | bufe[2] > YanYu)
            {
                LED7 = 0;   //·çÉÈ
							Buzzer_ON();
            }
            else
            {
                LED7 = 1;
							Buzzer_OFF();
            }
								
        }     
    }
}

8、总结

主要针对智能家居的一部分功能进行设计,主要实现功能需要使用STM32单片机作为主控芯片,使用DHT11温湿度传感器、光照传感器、MQ-2烟雾传感器等,用于家居环境的实时监测。最后通过ESP8266-01S模块 把测得的数据远程上传到云端,方便用户查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5132单片机设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值