0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

智能家居控制系統(tǒng)設計方案

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-02-28 14:05 ? 次閱讀

?一、環(huán)境介紹

單片機采用:STM32F103C8T6

上網(wǎng)方式:采用ESP8266,也可以使用其他設備代替,只要支持TCP協(xié)議即可。比如:GSM模塊、有線網(wǎng)卡等。

云平臺: 采用中國移動OneNet. 也可以采用騰訊、阿里云、華為云、百度天工物接入、機智云等等。 前面文章有講解。

協(xié)議: 采用MQTT協(xié)議

開發(fā)軟件:keil5

二、包含的硬件與實物圖介紹

1. 一個光敏電阻傳感器

2. 一個DHT11溫濕度傳感器

3. 一個MQ-5 液化氣/天然氣/煤氣監(jiān)測傳感器

4. 一個MQ-2 煙霧傳感器

5. 3盞LED燈表示窗簾開關、空調(diào)開關、電視開關

6. 聯(lián)網(wǎng)WIFI采用: ESP8266

7. 最小系統(tǒng)板: STM32F103C8T6

8. 物聯(lián)網(wǎng)服務器: OneNet平臺

9. 物聯(lián)網(wǎng)手機APP: 設備云

設備云APP下載地址(Android): onenet設備云.zip-桌面系統(tǒng)文檔類資源-CSDN下載

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

三、功能介紹

這是基于STM32設計的智能家居控制系統(tǒng),采用ESP8266連接OneNet云平臺。

設備端可以實時采集煙霧濃度、溫濕度、煤氣天然氣濃度到云平臺,在云平臺網(wǎng)頁端或者手機APP上可以遠程查看數(shù)據(jù),還可以點擊云平臺界面上的按鈕,完成對家里的電器設備控制:窗簾開關、空調(diào)開關、電視開關(采用LED燈模擬)等。

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

四、OneNet創(chuàng)建設備

從0開始創(chuàng)建OneNet設備,參考這里:STM32+ESP8266+MQTT協(xié)議連接OneNet物聯(lián)網(wǎng)平臺_DS小龍哥的專欄-CSDN博客_esp8266mqtt協(xié)議

首地址:OneNET - 中國移動物聯(lián)網(wǎng)開放平臺

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

這是STM32設備端連接OneNet串口打印的提示信息

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

登錄成功的效果:

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

數(shù)據(jù)流收到物聯(lián)網(wǎng)終端上傳的信息。

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

查看設計的網(wǎng)頁界面:

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

五、程序下載介紹

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

點擊開始編程之后,按下開發(fā)板上的RST按鈕,即可啟動下載。

六、STM32設備端代碼

智能家居控制系統(tǒng)設計方案poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

6.1 esp8266.c

#include "esp8266.h"

struct ESP8266_WIFI esp8266_wifi;


/*
函數(shù)功能: 配置ESP8266WIFI為AP模式+TCP服務器模式
函數(shù)參數(shù):
        char *ssid  :將要創(chuàng)建的WIFI熱點名稱(英文字母)
        char *password :將要創(chuàng)建的WIFI熱點密碼(最短長度8位)
        u16 port :TCP服務器的端口號(0~65535)
返 回 值:0表示成功,其他值表示失敗
*/
u8 ESP8266_AP_TCP_ServerMode(const char *ssid,const char *password,u16 port)
{
    u8 i;
    char *find_str=NULL;
    char cmd_buffer[100];
    /*1. 發(fā)送測試指令,檢測WIFI是否正常*/
    printf("發(fā)送測試指令,檢測WIFI是否正常...\n");
    if(ESP8266_SendCmd("AT\r\n"))return 1;
    /*2. 關閉回顯*/
    printf("關閉回顯...\n");
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設置當前WIFI的模式為AP模式*/
    printf("設置當前WIFI的模式為AP模式...\n");
    if(ESP8266_SendCmd("AT+CWMODE=2\r\n"))return 3;
    /*4. 復位模塊,設置的模式必須復位之后才會生效*/
    printf("復位模塊...\n");
    if(ESP8266_SendCmd("AT+RST\r\n"))return 4;
    DelayMs_72M(1000);
    DelayMs_72M(1000);
    DelayMs_72M(1000);
    DelayMs_72M(1000);
    /*5. 關閉回顯*/
    printf("關閉回顯...\n");
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 設置創(chuàng)建的熱點信息*/
    printf("設置創(chuàng)建的熱點信息...\n");
    snprintf(cmd_buffer,100,"AT+CWSAP="%s","%s",1,4\r\n",ssid,password);
    if(ESP8266_SendCmd(cmd_buffer))return 6;
    /*7. 開啟多連接,在服務器模式下才可開啟*/
    printf("開啟多連接...\n");
    if(ESP8266_SendCmd("AT+CIPMUX=1\r\n"))return 7;
    /*8. 設置端口號(0~65535)*/
    printf("設置端口號...\n");
    snprintf(cmd_buffer,100,"AT+CIPSERVER=1,%d\r\n",port);
    if(ESP8266_SendCmd(cmd_buffer))return 8;
    /*9.查詢本地IP地址*/
    printf("查詢本地IP地址...\n");
    if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 9;
    
    /*10. 保存WIFI的信息*/
    esp8266_wifi.port=port;
    strcpy(esp8266_wifi.mode,"AP");
    
    //提取IP地址
    /*
    IP地址=+CIFSR:APIP,"192.168.4.1"
           +CIFSR:APMAC,"86:f3:eb:17:e6:86"
    */
    find_str=strstr((char*)USART3_RX_BUFF,"APIP");
    if(find_str) //判斷是否查找成功
    {
        find_str+=6;
        for(i=0;*find_str!='"';i++)
        {
            esp8266_wifi.ip[i]=*find_str;
            find_str++;
        }
        esp8266_wifi.ip[i]='\0';
    }
    USART3_RX_FLAG=0;
    USART3_RX_CNT=0;
    
    printf("當前WIFI模式:%s\n",esp8266_wifi.mode);
    printf("當前網(wǎng)絡協(xié)議類型:%s\n","TCP");
    printf("當前網(wǎng)絡通信模式:%s\n","server");
    printf("當前網(wǎng)絡端口號:%d\n",esp8266_wifi.port);
    printf("本地網(wǎng)絡IP地址:%s\n",esp8266_wifi.ip);
    return 0;
}

/*
函數(shù)功能:向ESP8266wifi發(fā)送指令
說明:該函數(shù)只是適用于成功后返回OK的指令
返回值: 0表示成功 1表示失敗
*/
u8 ESP8266_SendCmd(char *cmd)
{
   u8 i,j;
   for(i=0;i<5;i++) //測試的總次數(shù)
   {
      USART3_RX_FLAG=0;
      USART3_RX_CNT=0;
      USART_X_SendString(USART3,cmd);
      for(j=0;j<200;j++) //等待的時間(ms單位)
      {
          if(USART3_RX_FLAG)
          {
              USART3_RX_BUFF[USART3_RX_CNT]='\0';
							printf("USART3_RX_BUFF=%s\r\n",USART3_RX_BUFF);
              if(strstr((char*)USART3_RX_BUFF,"OK\r\n"))
              {
                  return 0;
              }
              else break;
          }
          DelayMs_72M(2); //一次的時間
      }
   }
   return 1;
}

/*
函數(shù)功能:ESP8266wifi處于TCP服務器模式下的數(shù)據(jù)發(fā)送函數(shù)
函數(shù)參數(shù):
        u8 id      :已經(jīng)連接服務器的客戶端ID號
        char *data :將要發(fā)送數(shù)據(jù)(字符串)
返回值: 0表示成功 1表示失敗
說明:只有在TCP服務器模式下才可使用該函數(shù)

OK
> 
Recv 12 bytes
SEND OK
*/
u8 ESP8266_ServerSendData(u8 id,char *data)
{
   u32 i,j,n;
   char cmd[100];
   snprintf(cmd,1024,"AT+CIPSEND=%d,%d\r\n",id,strlen(data));
   for(i=0;i<5;i++) //測試的總次數(shù)
   {
      USART3_RX_FLAG=0;
      USART3_RX_CNT=0;
      USART_X_SendString(USART3,cmd);
      for(j=0;j<200;j++) //等待的時間(ms單位)
      {
          if(USART3_RX_FLAG)
          {
              USART3_RX_BUFF[USART3_RX_CNT]='\0';
              if(strstr((char*)USART3_RX_BUFF,">")) //開始發(fā)送數(shù)據(jù)
              {
                  USART3_RX_FLAG=0;
                  USART3_RX_CNT=0;
                  USART_X_SendString(USART3,data); //發(fā)送數(shù)據(jù)
                  for(n=0;n<10000;n++)
                  {
                      if(USART3_RX_FLAG)
                      {
                          USART3_RX_BUFF[USART3_RX_CNT]='\0';
                          if(strstr((char*)USART3_RX_BUFF,"SEND OK")) //開始發(fā)送數(shù)據(jù)
                          {
                              USART3_RX_FLAG=0;
                              USART3_RX_CNT=0;
                              return 0;
                          }
                          else return 1;
                      }
                      DelayMs_72M(1); //一次的時間 
                  }
              }
              else break;
          }
          DelayMs_72M(5); //一次的時間
      }
   }
   return 1;
}

/*
函數(shù)功能: 設置STA模式下連接的熱點信息
返 回 值: 0表示成功,1表示失敗

連接成功的提示符:
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
OK
*/
u8 ESP8266_STA_ModeConnectWIFI(char *cmd)
{
   u32 i,j;
   for(i=0;i<3;i++) //測試的總次數(shù)
   {
      USART3_RX_FLAG=0;
      USART3_RX_CNT=0;
      USART_X_SendString(USART3,cmd);
      for(j=0;j<30000;j++) //等待的時間(ms單位)
      {
          if(USART3_RX_FLAG)
          {
              USART3_RX_BUFF[USART3_RX_CNT]='\0';
              if(strstr((char*)USART3_RX_BUFF,"OK"))
              {
                  return 0;
              }
              else
              {
                  memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
                  USART3_RX_FLAG=0;
                  USART3_RX_CNT=0;
              }              
          }
          DelayMs_72M(1); //一次的時間
      }
   }
   return 1;
}


/*
函數(shù)功能: 用于在客戶端模式下,連接服務器
返 回 值: 0表示成功,1表示失敗
連接成功的提示符:CONNECT
*/
u8 ESP8266_ConnectServer(char *cmd)
{
   u32 i,j;
   for(i=0;i<5;i++) //測試的總次數(shù)
   {
      USART3_RX_FLAG=0;
      USART3_RX_CNT=0;
      USART_X_SendString(USART3,cmd);
      for(j=0;j<10000;j++) //等待的時間(ms單位)
      {
          if(USART3_RX_FLAG)
          {
              USART3_RX_BUFF[USART3_RX_CNT]='\0';
              if(strstr((char*)USART3_RX_BUFF,"CONNECT"))
              {
                  return 0;
              }
              else
              {
                  memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
                  USART3_RX_FLAG=0;
                  USART3_RX_CNT=0;
              }              
          }
          DelayMs_72M(1); //一次的時間
      }
   }
   return 1;
}


/*
函數(shù)功能: 配置ESP8266WIFI為STA模式+TCP客戶端模式
函數(shù)參數(shù):
        char *ssid  :將要連接的WIFI熱點名稱(英文字母)
        char *password :將要連接的WIFI熱點密碼(最短長度8位)
        u16 port :TCP服務器的端口號(0~65535)
返 回 值:0表示成功,其他值表示失敗
*/
u8 ESP8266_STA_TCP_ClientMode(const char *ssid,const char *password,char *server_ip,u16 port)
{
    u8 i;
    char *find_str=NULL;
    char cmd_buffer[100];
    /*1. 發(fā)送測試指令,檢測WIFI是否正常*/
    printf("發(fā)送測試指令,檢測WIFI是否正常...\n");    
    for(i=0;i<10;i++)
    {
        if(ESP8266_SendCmd("AT\r\n")) //可能WIFI正處于透傳模式,無法接收指令
        {
           USART_X_SendString(USART3,"+++"); //退出透傳模式
           DelayMs_72M(80); //等待退出透傳模式
        }
        else break;
    }
    if(i==10)return 1; //檢測失敗
   
    /*2. 關閉回顯*/
    printf("關閉回顯...\n");
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設置當前WIFI的模式為STA模式*/
    printf("設置當前WIFI的模式為STA模式...\n");
    if(ESP8266_SendCmd("AT+CWMODE=1\r\n"))return 3;
    /*4. 復位模塊,設置的模式必須復位之后才會生效*/
    printf("復位模塊...\n");
    if(ESP8266_SendCmd("AT+RST\r\n"))return 4;
    DelayMs_72M(1000);
    DelayMs_72M(1000);
    DelayMs_72M(1000);
    DelayMs_72M(1000);
    /*5. 關閉回顯*/
    printf("關閉回顯...\n");
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 設置連接的熱點信息*/
    printf("設置連接的熱點信息...\r\n");
		
    snprintf(cmd_buffer,100,"AT+CWJAP=\"%s\",\"%s\"\r\n",ssid,password);
		printf("cmd_buffer=%s",cmd_buffer);
    if(ESP8266_STA_ModeConnectWIFI(cmd_buffer))return 6;
    
    /*7. 開啟單連接,在客戶端模式下才可開啟*/
    printf("開啟單連接...\n");
    if(ESP8266_SendCmd("AT+CIPMUX=0\r\n"))return 8;
    
    /*8.查詢本地IP地址*/
    printf("查詢本地IP地址...\n");
    if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 7;
    
    /*9. 保存WIFI的信息*/
    esp8266_wifi.port=port;
    strcpy(esp8266_wifi.mode,"STA");
    
    //提取IP地址
    /*
    +CIFSR:STAIP,"192.168.1.115"
    +CIFSR:STAMAC,"84:f3:eb:17:e6:86"
    */
    find_str=strstr((char*)USART3_RX_BUFF,"STAIP");
    if(find_str) //判斷是否查找成功
    {
        find_str+=7;
        for(i=0;*find_str!='"';i++)
        {
            esp8266_wifi.ip[i]=*find_str;
            find_str++;
        }
        esp8266_wifi.ip[i]='\0';
    }
    
    /*10. 連接服務器*/
    printf("開始連接服務器...\n");
    snprintf(cmd_buffer,100,"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",server_ip,port);
    if(ESP8266_ConnectServer(cmd_buffer))return 9;
    
    /*11. 開啟透傳模式*/
    printf("開啟透傳模式...\n");
    if(ESP8266_SendCmd("AT+CIPMODE=1\r\n"))return 10;
    
    /*12. 開始透傳*/
    printf("開始透傳...\n");
    if(ESP8266_SendCmd("AT+CIPSEND\r\n"))return 11;
    
    printf("當前WIFI模式:%s\r\n",esp8266_wifi.mode);
    printf("當前網(wǎng)絡協(xié)議類型:%s\r\n","TCP");
    printf("當前網(wǎng)絡通信模式:%s\r\n","Client");
    printf("連接的服務器端口號:%d\r\n",esp8266_wifi.port);
    printf("連接的服務器IP地址:%s\r\n",server_ip);
    printf("本地的IP地址:%s\r\n",esp8266_wifi.ip);
    return 0;
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

6.2 esp8266.h

#ifndef ESP8266_H
#define ESP8266_H
#include "stm32f10x.h"
#include "usart.h"
#include "key.h"
#include "led.h"
#include 
#include 


u8 ESP8266_SendCmd(char *cmd);
u8 ESP8266_AP_TCP_ServerMode(const char *ssid,const char *password,u16 port);
u8 ESP8266_ServerSendData(u8 id,char *data);
u8 ESP8266_STA_TCP_ClientMode(const char *ssid,const char *password,char *server_ip,u16 port);

struct ESP8266_WIFI
{
   u16 port;
   char mode[10]; //sta/ap
   char ip[10];   //ip地址
};
extern struct ESP8266_WIFI esp8266_wifi;
#endif
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

6.3 main.c

#include "stm32f10x.h"
#include "led.h"
#include "key.h"
#include "usart.h"
#include 
#include "adc.h"
#include "esp8266.h"
#include "timer.h"
#include "rtc.h"
#include "dht11.h"
//網(wǎng)絡協(xié)議層
#include "onenet.h"
//協(xié)議封裝文件
#include "dStream.h"

/*WIFI信息配置---將要連接的WIFI信息*/
#define WIFI_NAME "Xiaomi_meizi6"
#define WIFI_PASSWORD "12170307yu"

/*Onenet服務器地址:固定的*/
#define SERVER_IP "183.230.40.39"
#define SERVER_PORT 6002

//產(chǎn)品ID
const char OneNetPROID[]="332761";
//鑒權信息 access_key
const char OneNetAUTH_INFO[]="1234567890";
//設備ID
char OneNetDEVID[]="590592359";
//ApiKey
char OneNetAPI_KEY[]="fTgT3L9k3gyalPDMeojEEPrwzlo=";

//onenet數(shù)據(jù)點定義
DATA_STREAM data_stream[]=
{
	{"DHT11_T","66",TYPE_STRING,1}, //溫度
	{"DHT11","66",TYPE_STRING,1}, //濕度
	{"Light","66",TYPE_STRING,1}, //光照強度
	{"MQ2","66",TYPE_STRING,1}, //煙霧濃度
	{"MQ5","66",TYPE_STRING,1}, //液化氣濃度
};

char *WIFI_STAT; //WIFI狀態(tài)指針
//u8 temp,humi;
char DisplayDataBuffer[20];
u8 GL5637_Info[10];  			//光敏傳感器信息
u8 TEMP_Info[10];
u8 HUMI_Info[10];
u8 MQ2_Info[10];
u8 MQ5_Info[10];

/*
工程內(nèi)容介紹: 物聯(lián)網(wǎng)開發(fā)平臺全功能測試代碼! 支持上位機控制
編寫日期    : 20200403
版本        : v4.0
*/
int main(void)
{	
    int cnt_OneNet_time=0;
    u32 time_cnt=0; //記錄時間
    u16 GL5637_temp=0; //光敏信息
    u8 ESP8266_Stat;
    u8 temp,humi;
    u16 mq2_temp,mq5_temp;

    LedInit();
    KeyInit();
    USART_X_Init(USART1,72,115200);
    USART_X_Init(USART3,36,115200); //WIFI的波特率為115200
    ADC1_Init();     			    //ADC初始化
    Timer2Init(72,10000); 		    //10ms中斷一次,輔助串口3接收數(shù)據(jù)--WIFI數(shù)據(jù)
    printf("DHT11=%d\r\n",DHT11_Init());
    //連接至指定的WIFI
    ESP8266_Stat=ESP8266_STA_TCP_ClientMode(WIFI_NAME,WIFI_PASSWORD,SERVER_IP,SERVER_PORT);
    if(ESP8266_Stat)
    {
         printf("ESP8266_Stat=%d\r\n",ESP8266_Stat);
         WIFI_STAT="WIFIConnectERROR";
    }
    else
    {
            WIFI_STAT="WIFI Connect OK";
            //接入OneNET
            while(OneNet_DevLink())
            {
                 printf("Connect OneNet..\r\n");
                 DelayMs_72M(500); 
                 LED=!LED;
            }
            
    }
    while(1)
    {  
        cnt_OneNet_time++;//用于控制向服務器上傳數(shù)據(jù)點的頻率			
        /*輪詢掃描數(shù)據(jù)*/
        if(USART3_RX_FLAG)
        {
            USART3_RX_BUFF[USART3_RX_CNT]='\0';
            //解析平臺返回的數(shù)據(jù)
            OneNet_RevPro(USART3_RX_BUFF);
            USART3_RX_CNT=0;
            USART3_RX_FLAG=0;
            memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
        }
        
            /*獲取光敏數(shù)據(jù)*/
            GL5637_temp=ADC1_GetCHxVal(8);
            sprintf((char*)GL5637_Info,"%d",GL5637_temp); //保存光敏傳感器信息,上傳給上位機
          /*獲取煙霧濃度數(shù)據(jù)*/
            mq2_temp=ADC1_GetCHxVal(1);
            sprintf((char*)MQ2_Info,"%d",mq2_temp); //保存MQ2傳感器信息,上傳給上位機
          /*獲取液化氣濃度數(shù)據(jù)*/
            mq5_temp=ADC1_GetCHxVal(2);
            sprintf((char*)MQ5_Info,"%d",mq5_temp); //保存MQ5傳感器信息,上傳給上位機
            /*獲取溫濕度*/
            if(DHT11_Read_Data(&temp,&humi)==0)
            {
                sprintf((char*)TEMP_Info,"%d",temp); //保存溫度傳感器信息,上傳給上位機
                sprintf((char*)HUMI_Info,"%d",humi); //保存溫度傳感器信息,上傳給上位機
            }
            DelayMs_72M(1); //延時1ms
            time_cnt++;
            if(cnt_OneNet_time>=200 &&ESP8266_Stat==0)
            {
                cnt_OneNet_time=0; //清0
                data_stream[0].dataPoint=TEMP_Info;
                data_stream[1].dataPoint=HUMI_Info;
                data_stream[2].dataPoint=GL5637_Info;
                data_stream[3].dataPoint=MQ2_Info;
                data_stream[4].dataPoint=MQ5_Info;
                printf("GL5637_Info=%s\r\n",GL5637_Info);
                printf("temp=%s,humi=%s\r\n",TEMP_Info,HUMI_Info);
                printf("MQ2_Info=%s\r\n",MQ2_Info);
                printf("MQ5_Info=%s\r\n",MQ5_Info);
                //向OneNet云端服務器上傳數(shù)據(jù)點
                OneNet_SendData(FORMAT_TYPE1,OneNetDEVID,OneNetAPI_KEY,data_stream,5);
                printf("發(fā)送成功\r\n"); 
            }
            /*輪詢掃描數(shù)據(jù)*/
            if(USART3_RX_FLAG)
            {
                USART3_RX_BUFF[USART3_RX_CNT]='\0';
                //解析平臺返回的數(shù)據(jù)
                OneNet_RevPro(USART3_RX_BUFF);
                USART3_RX_CNT=0;
                USART3_RX_FLAG=0;
                memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
            }
    }
}

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

審核編輯:湯梓紅

?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2264

    文章

    10854

    瀏覽量

    354304
  • 智能家居
    +關注

    關注

    1926

    文章

    9472

    瀏覽量

    183889
收藏 人收藏

    評論

    相關推薦

    智能家居開關控制系統(tǒng)功能應用

    智能家居開關控制系統(tǒng)作為現(xiàn)代家庭智能化的重要組成部分,正逐漸改變著我們的生活方式。集成物聯(lián)網(wǎng)、無線通信等技術,將家庭中的照明、安防、能源管理等多個系統(tǒng)連接起來,實現(xiàn)了一鍵
    的頭像 發(fā)表于 11-06 16:37 ?203次閱讀

    智能家居遠程控制系統(tǒng)應用

    在科技日新月異的今天,智能家居遠程控制系統(tǒng)正逐步從科幻電影中的概念走進千家萬戶,成為現(xiàn)代生活不可或缺的一部分。這一系統(tǒng)以其便捷性、高效性和智能化特性,改變居住體驗,讓家不僅是一個遮風擋
    的頭像 發(fā)表于 10-16 16:35 ?172次閱讀

    家居空調(diào)智能控制系統(tǒng)應用

    科技的日新月異,推動家居生活正逐步向智能化、便捷化邁進,空調(diào)智能控制系統(tǒng)作為智能家居的重要組成部分,正悄然改變著我們的生活方式,讓居家環(huán)境變
    的頭像 發(fā)表于 09-12 17:39 ?246次閱讀

    智能家居系統(tǒng)設計方案

    、安全的生活體驗。本案例將詳細介紹一套智能家居系統(tǒng)設計方案,包括系統(tǒng)架構、功能模塊、設備選型、應用場景以及實施步驟等方面。
    的頭像 發(fā)表于 07-23 15:28 ?1320次閱讀

    智能家居控制系統(tǒng)如何設計

    智能家居控制系統(tǒng)設計是一個復雜而細致的過程,它涉及到多個方面的考慮,包括需求分析、設備選型、系統(tǒng)架構設計、網(wǎng)絡安全、用戶交互以及后期維護等。以下是對智能家居
    的頭像 發(fā)表于 07-23 14:45 ?1120次閱讀

    智能家居照明控制系統(tǒng)功能特點與應用

    隨著科技的飛速發(fā)展,智能家居已成為現(xiàn)代家庭不可或缺的一部分。其中,智能家居照明控制系統(tǒng)以其獨特的優(yōu)勢,正在逐步改變我們傳統(tǒng)的生活方式,使家庭環(huán)境更加智能化、舒適化。
    的頭像 發(fā)表于 07-08 16:13 ?355次閱讀

    智能家居系統(tǒng)的開發(fā)-基于米爾瑞薩RZ/G2UL開發(fā)板

    本篇評測由電子工程世界的優(yōu)秀評測者“Bruceou”提供。1、項目背景智能家居控制系統(tǒng),是以智能家居系統(tǒng)為平臺,家居電器及家電設備為主要
    的頭像 發(fā)表于 05-17 08:01 ?931次閱讀
    <b class='flag-5'>智能家居</b><b class='flag-5'>系統(tǒng)</b>的開發(fā)-基于米爾瑞薩RZ/G2UL開發(fā)板

    智能家居燈光控制系統(tǒng)功能特點

    ,為環(huán)保事業(yè)做出貢獻。 智能家居燈光控制系統(tǒng)解決方案,基于物聯(lián)網(wǎng)通信技術,使用智能照明控制終端等智能
    的頭像 發(fā)表于 04-25 16:21 ?1055次閱讀

    智能家居控制系統(tǒng)解決方案功能

    化的居住環(huán)境。 所謂的智能家居控制系統(tǒng)解決方案,不再僅僅是傳統(tǒng)的家具,而是被賦予了“思想”,變得智能化。該方案依托物聯(lián)網(wǎng)云平臺,實現(xiàn)照明
    的頭像 發(fā)表于 04-09 15:58 ?573次閱讀

    深入探討機智云物聯(lián)網(wǎng)智能家居系統(tǒng)的優(yōu)化方案

    體驗,簡單高效,節(jié)能減耗,舒適便捷。采用STM32單片機微控制芯片、WIFI、傳感器和紅外感應技術,我們設計了智能家居控制系統(tǒng),實現(xiàn)了現(xiàn)代化家居功能,如遠程照明、澆花、喂魚和寵物檢測。
    發(fā)表于 03-29 12:35

    智能家居控制方案功能與應用

    智能家居時代的到來,讓我們的家居生活更加豐富多彩,不管是在客廳,書房還是廚房以及臥室,整個智能家居都能在智能手機、PAD、電腦進行控制,實現(xiàn)
    的頭像 發(fā)表于 02-29 16:18 ?668次閱讀

    智能家居控制解決方案應用

    隨著物聯(lián)網(wǎng)和人工智能技術的發(fā)展,各個具有特色智能終端通過系統(tǒng)集成,實現(xiàn)了互聯(lián)互通互控,智能家居逐漸開始走進千家萬戶。 智能家居
    的頭像 發(fā)表于 02-19 17:46 ?608次閱讀

    集中電源控制器在智能家居中的應用

    集中電源控制器在智能家居中也有廣泛的應用。隨著智能家居的普及,各種家電設備、照明系統(tǒng)、安防系統(tǒng)等都需要電源支持,而集中電源
    的頭像 發(fā)表于 01-30 15:05 ?691次閱讀
    集中電源<b class='flag-5'>控制</b>器在<b class='flag-5'>智能家居</b>中的應用

    Python智能家居系統(tǒng)代碼介紹

    Python智能家居系統(tǒng)是一種基于Python編程語言開發(fā)的智能家居控制系統(tǒng),在現(xiàn)代家庭中得到了越來越廣泛的應用。本文將詳細介紹Python智能家居
    的頭像 發(fā)表于 01-25 09:46 ?1219次閱讀

    智能家居控制系統(tǒng)原理與應用

    智能家居控制系統(tǒng)是指利用先進的計算機科學和通信技術,將各種家居設備和系統(tǒng)進行連接和集成,實現(xiàn)智能控制
    的頭像 發(fā)表于 01-10 11:44 ?2628次閱讀