那曲檬骨新材料有限公司

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

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

3天內不再提示

基于STM32設計的物聯網環境監測系統(華為云IOT)

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-07-14 10:20 ? 次閱讀

1. 前言

隨著物聯網技術的快速發展,越來越多的家庭開始關注環境監測和遠程控制的需求。為了滿足這一需求,設計了一款基于華為云IOT的物聯網環境監測系統。

該系統實現對家庭環境中的光照強度、溫濕度等信息的實時監測,并通過云端實現遠程查看和控制家里的電器設備。通過使用ESP8266 Wi-Fi模塊,能夠將傳感器獲取的數據通過無線網絡傳輸到云端,實現遠程數據傳輸和控制。

華為云IOT物聯網云平臺作為基礎設施,提供了豐富的功能和接口,能夠幫助我們輕松構建物聯網應用。使用MQTT傳輸協議與華為云IOT平臺進行通信,通過調用其提供的接口,能夠實時獲取傳感器數據,并將其顯示在上位機界面上。

在該系統中,主要目標是實時監測家庭環境的光照強度、溫濕度等信息,并將相關信息和設備狀態實時顯示在上位機界面上。通過遠程控制功能,用戶可以在任何地方使用手機電腦遠程控制家里的電器設備,例如燈光、空調等,從而實現智能化的家居控制。

通過該物聯網環境監測系統,用戶可以隨時隨地監測家庭環境的狀態,了解光照強度、溫濕度等信息,從而做出相應的調整。同時,用戶可以通過遠程控制功能,實現對家里電器設備的遠程控制,提高家居的舒適度和便利性。

2. 具體需求

該項目設計一個基于華為云IOT的物聯網環境監測系統,實現對光照強度、溫濕度等信息的實時監測,并將相關信息、設備狀態信息等實時顯示。通過ESP8266 Wi-Fi模塊進行聯網,實現遠程數據傳輸和遠程控制顯示。

硬件選項要求如下:

  1. ESP8266串口WIFI模塊:用于與華為云IOT平臺進行遠程通信,將傳感器數據上傳到云端,并接收云端的控制指令。
  2. DHT11溫度傳感器:用于檢測本地環境的溫度和濕度信息,通過ESP8266模塊將數據上傳到云端。
  3. 繼電器:用于模擬控制家里的電器設備,通過ESP8266模塊接收云端的控制指令,實現遠程控制家用電器的開關。
  4. BH1750光敏傳感器:用于檢測環境的光強度,通過ESP8266模塊將光照強度數據上傳到云端。
  5. MQ135空氣質量傳感器:用于檢測可燃氣體、煙霧濃度等環境參數,實現火警預警功能。
  6. OLED顯示屏:用于本地顯示傳感器的參數情況,實時展示溫度、濕度、光照強度等信息。

軟件要求如下:

  1. 使用華為云IOT物聯網云平臺:通過MQTT傳輸協議,實現與ESP8266模塊的通信,接收傳感器數據并將其存儲在云端。
  2. 設計上位機界面:通過調用華為云IOT平臺提供的接口,實時顯示光照強度、溫濕度等信息,以及設備狀態信息。
  3. 遠程控制功能:在上位機界面上實現遠程控制家里電器設備的開關,通過華為云IOT平臺向ESP8266模塊發送控制指令。
    項目要求設計一個物聯網環境監測系統,通過ESP8266 Wi-Fi模塊實現傳感器數據的采集和聯網傳輸,利用華為云IOT物聯網云平臺實現數據存儲和遠程控制功能。通過上位機界面實時顯示光照強度、溫濕度等信息,并實現遠程控制家用電器設備的開關。同時,使用DHT11溫度傳感器、BH1750光敏傳感器、MQ135空氣質量傳感器和OLED顯示屏等硬件組件來實現各項功能。

image-20220408095005963

image-20220408095020528

image-20220408095036200

image-20220408212113263

image-20220408212133681

image-20220408212154827

image-20220408212217647

image-20220411114314888

3. 硬件選型

3.1 繼電器

image-20220320120540240

3.2 ESP8266 WIFI

(1)模塊采用串口(LVTTL)與MCU(或其他串口設備)通信,內置TCP/IP協議棧,能夠實現串口與WIFI之間的轉換 (2)模塊支持LVTTL串口,兼容3.3V和5V單片機系統 (3)模塊支持串口轉WIFI STA、串口轉AP和WIFI STA+WIFIAP的模式,從而快速構建串口-WIFI數據傳輸方案

image-20220319213658741

3.3 MQ-135空氣質量傳感器

MQ135傳感器對氨氣、硫化物、苯系蒸汽的靈敏度高,對煙霧和其它有害的監測也很理想。這種傳感器可檢測多種有害氣體,是一款適合多種應用的低成本傳感器。

image-20220319211928010

img

img

3.4 DHT11溫濕度傳感器

DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器。它應用專用的數字模塊采集技術和溫濕度傳感技術,確保產品具有可靠性與卓越的長期穩定性,成本低、相對濕度和溫度測量、快響應、抗干擾能力強、信號傳輸距離長、數字信號輸出、精確校準。傳感器包括一個電容式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。可用于暖通空調、除濕器、測試及檢測設備、消費品、汽車、自動控制、數據記錄器、氣象站、家電、濕度調節器、醫療、其他相關濕度檢測控制。

特點如下:

1、可以檢測周圍環境的濕度

2、可以檢測周圍環境的溫度

3、濕度測量范圍:20%-95%(0度-50度范圍)濕度測量誤差:+-5%4、溫度測量范圍:o度-50度溫度測量誤差:+-2度

4、工作電壓3.3V-5V

5、輸出形式數字輸出

image-20220319211432662

image-20220319211455249

3.5 STM32系統板

主控CPU采用STM32F103RCT6,這顆芯片包括48 KB SRAM、256 KB Flash、2個基本定時器、4個通用定時器、2個高級定時器、51個通用IO口、5個串口、2個DMA控制器、3個SPI、2個I2C、1個USB、1個CAN、3個12位ADC、1個12位DAC、1個SDIO接口,芯片屬于大容量類型,配置較高,整體符合硬件選型設計。當前選擇的這款開發板自帶了一個1.4寸的TFT-LCD彩屏,可以顯示當前傳感器數據以及一些運行狀態信息。

image-20220319202557220

3.6 OLED顯示屏

image-20220321181209155

特點:

OLED是有機發光二極管又稱為有機激光顯示、OLED顯示技術具有自發光的特性、采用非常薄的有機材料涂層、和玻璃基板、當有電流通過時、這些有機材料就會發光、而且OLED顯示屏幕可視角大、功耗低、OLED由于同時具備自發光、不需背光源(只是供電不會亮的、驅動程序和接線正確才會點亮)對比度高、厚度薄視角廣、反應速度快、可用于撓曲面板、使用溫度范圍廣、結構及制程等優異之特性、先接觸的1286屏都是LCD的、需要背光、功耗較高、而OLED的功耗低、更加適合小系統、由于兩者發光材料的不同、在不同的環境中、OLED的顯示效果好、模塊供電可以是3.3v也可以是5V、不需要修改模塊電路、OLED屏具有多個控制指令、可以控制oLED的亮度、對比度、開關升壓電路等指令、操作方便、功能豐富、可顯示漢字、ASCH、圖案等、同時為了方便應用在產品上、預留4個M3固定孔、方便用戶固在機殼上。

3.7 母對母杜邦線

image-20220331175035193

3.8 BH1750光敏傳感器

image-20220331175354383

4. 登錄華為云創建云端設備

4.1 創建產品

華為運官網: https://www.huaweicloud.com/

在這里可以查看接入的協議的端口號和地址。

MQTT (1883) a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

我們設備接入的協議選擇MQTT,端口對應是1883

接下來繼續創建產品,點擊產品頁面,點擊右上角創建產品:

4.2 創建設備

這是我的設備信息:

設備ID
 61a580fad28ce3028832c2d8_esp8266_iot
 ?
 設備密鑰
 1126626497
     
 {
     "device_id": "61a580fad28ce3028832c2d8_esp8266_iot",
     "secret": "1126626497"
 }

4.3 產品模型定義

這一步就是設置上報設備的屬性,也就是設備的數據類型定義。

4.4 生成MQTT登錄密匙

創建完產品、設備之后,接下來就需要知道如何通過MQTT協議登陸華為云服務器。

官方的詳細介紹在這里: https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112

MQTT設備登陸密匙生成地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

下面就得到了MQTT協議設備登錄的參數。

4.5 使用MQTT客戶端軟件登錄

所有的參數已經得到,接下來采用MQTT客戶端登錄華為云進行測試。

下面這個軟件是自己開發的,為了方便測試MQTT協議登錄。

華為云物聯網平臺的域名是: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

華為云物聯網平臺的IP地址是: 121.36.42.100

在軟件里參數填充正確之后,就看到設備已經連接成功了。

接下來打開設備頁面,可以看到設備已經在線了。

4.6 上報數據

官方文檔: https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112

在這個文檔里介紹了MQTT上報數據的格式。

總結的格式:

//訂閱主題: 平臺下發消息給設備
 $oc/devices/61a580fad28ce3028832c2d8_esp8266_iot/sys/messages/down
 ?
 //設備上報數據
 $oc/devices/61a580fad28ce3028832c2d8_esp8266_iot/sys/properties/report
 ?
 //上報的屬性消息 (一次可以上報多個屬性,在json里增加就行了)
 {"services": [{"service_id": "dht11","properties":{"DHT11-C":50}}]}

下面采用MQTT軟件上報數據:

到此,設備數據已經上報成功,如果需要增加更多的屬性,按照流程繼續增加即可。

5. STM32設備端代碼

STM32連接華為云IOT的工程代碼Get: https://download.csdn.net/download/xiaolong1126626497/81993720

串口上會輸出當前程序運行的狀態信息,可以打開串口調試助手查看。

image-20220408201532756

5.1 LCD漢字取模

LCD上需要顯示漢字,使用點陣字模取模軟件進行取模。

image-20220408103722736

5.2 硬件連線

image-20220411103214276

1. ESP8266 WIFI接線
 ATK-ESP8266串口WIFI模塊與STM32的串口2相連接。
 PA2(TX)--RXD 模塊接收腳
 PA3(RX)--TXD 模塊發送腳
 GND---GND 地
 VCC---VCC 電源3.3V~5.0V)
 ?
 2. TFT 1.44 寸彩屏接線
 GND   電源地
 VCC   接5V或3.3v電源
 SCL   接PC8(SCL)
 SDA   接PC9(SDA)
 RST   接PC10
 DC    接PB7
 CS    接PB8
 BL    接PB11
 ?
 3. DHT11 溫濕度
 VCC--VCC
 GND---GND
 DAT---PA5 
 ?
 4. LED燈-模擬房間的照明燈
 VCC--- >5V
 DAT--- >PB12 
 GND--- >GND
 ?
 5. 智能窗簾-模擬家里的窗簾
 VCC--- >5V
 DAT--- >PB13  
 GND--- >GND
 ?
 6. MQ135空氣質量檢測傳感器
 VCC--- >5V
 GND--- >GND
 DAT--- >PA1
 ?
 7. BH1750環境光檢測模塊:
 SDA-----PB5
 SCL-----PB6
 GND---GND 地
 VCC---VCC 電源(3.3V~5.0V)
 ?
 8. 板載LED燈接線
 LED1---PA8
 LED2---PD2
 ?
 9. 板載按鍵接線
 K0---PA0 
 K1---PC5 
 K2---PA15

5.2 keil工程布局

工程Get地址: https://download.csdn.net/download/xiaolong1126626497/81993720

image-20220411103633943

image-20220411103651426

5.3 main.c代碼

MQTT協議連接華為云IOT源碼工程參考: https://download.csdn.net/download/xiaolong1126626497/81993720

#include "stm32f10x.h"
 #include "led.h"
 #include "delay.h"
 #include "key.h"
 #include "usart.h"
 #include < string.h >
 #include "timer.h"
 #include "esp8266.h"
 #include "motor.h"
 #include "oled.h"
 #include "dht11.h"
 #include "adc.h"
 #include < string.h >
 #include < stdlib.h >
 #include "font.h"
 #include "mqtt.h"
 #include "iic.h"
 #include "bh1750.h"
 ?
 /*
 ?
 (1)ESP8266  串口WIFI,用來與華為云IOT進行遠程通信。
 ?
 (2)DHT11 溫度傳感器,檢測本地環境的溫度濕度信息。
 ?
 (3)繼電器,來模擬控制家里的電器。
 ?
 (4)BH1750 光敏傳感器,檢測環境光強度
 ?
 (5)MQ135 空氣質量傳感器。可以檢測可燃氣體、煙霧濃度,實現火警預警。
 ?
 (6)OLED顯示屏顯示本地的傳感器的參數情況,實時展示
 ?
 */
 ?
 ?
 //華為物聯網服務器的設備信息
 #define MQTT_ClientID "61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510"
 #define MQTT_UserName "61b9ba3a2b2aa20288c1e7f1_QQ1126626497"
 #define MQTT_PassWord "385ce91dfe7da5b7431868d5d87e7998163c493344040935d5a00024d6324242"
 ?
 //訂閱與發布的主題
 #define SET_TOPIC  "$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/messages/down"  //訂閱
 #define POST_TOPIC "$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/properties/report"  //發布
 ?
 ?
 //設置連接的路由器信息
 #define CONNECT_WIFI  "Xiaomi_meizi6"   //將要連接的路由器名稱 --不要出現中文、空格等特殊字符
 #define CONNECT_PASS "12170307yu"       //將要連接的路由器密碼
 ?
 #define CONNECT_SERVER_IP "121.36.42.100"   //服務器IP地址
 #define CONNECT_SERVER_PORT 1883            //服務器端口號
 ?
 //JTAG模式設置,用于設置JTAG的模式
 //mode:jtag,swd模式設置;00,全使能;01,使能SWD;10,全關閉;    
 #define JTAG_SWD_DISABLE   0X02
 #define SWD_ENABLE         0X01
 #define JTAG_SWD_ENABLE    0X00       
 void JTAG_Set(u8 mode)
 {
     u32 temp;
     temp=mode;
     temp< <=25;
     RCC- >APB2ENR|=1< 0;     //開啟輔助時鐘       
     AFIO- >MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
     AFIO- >MAPR|=temp;       //設置jtag模式
 }
 ?
 ?
 u8 motor_flag=0; //窗簾的狀態      0表示關閉  1表示打開
 u8 led_flag=0;   //房間照明燈狀態  0表示關閉  1表示打開
 u16 MQ135_data=0; //MQ135煙霧傳感器的值
 u8 DHT11_T=0; //環境溫度
 u8 DHT11_H=0; //環境濕度
 u8 BH1750_data=0; //環境光照強度
 ?
 char request_id[100];
 char mqtt_message[100];
 ?
 //WIFI發送數據存儲區域
 char data_buff[300];
 ?
 int main()
 {
     u8 esp8266_state=0;
     u8 key;
     u8 i;
     u32 time_cnt=0;
     u32 timer_hour_cnt=0; //記錄定時的時間
     
     JTAG_Set(JTAG_SWD_DISABLE); //釋放PA15
     LED_Init();
     KEY_Init();
     USART1_Init(115200);
     Moto_Init();  //風扇、加熱棒初始化
     USART2_Init(115200);//串口-WIFI
     TIMER2_Init(72,20000); //超時時間20ms
     DHT11_Init();       //初始化DHT11
     Lcd_Init(); //LCD初始化
     Lcd_Clear(0); //清屏為黑色
     LCD_LED_SET;//通過IO控制背光亮     
     AdcInit();  //ADC初始化--檢測MQ2煙霧傳感器的數據
     IIC_Init();
     printf("正在初始化WIFI請稍等.rn");
     
     for(i=0;i< 5;i++)
     {
         if(ESP8266_Init()==0)
         {
             esp8266_state=1;
             break;
         }
         else
         {
             esp8266_state=0;
             printf("ESP8266硬件檢測錯誤.n");  
         }
     }
   
    if(esp8266_state)
    {
        printf("準備連接服務器....rn");
         //非加密端口
         printf("WIFI:%dn",ESP8266_STA_TCP_Client_Mode(CONNECT_WIFI,CONNECT_PASS,CONNECT_SERVER_IP,CONNECT_SERVER_PORT,1));
          
         //2. MQTT協議初始化  
         MQTT_Init(); 
 ?
         //3. 連接服務器  
         for(i=0;i< 5;i++)
         {
             if(MQTT_Connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord)==0)
             {
                 esp8266_state=1;
                 break;
             }
             esp8266_state=0;
             printf("服務器連接失敗,正在重試...n");
             delay_ms(500);
         }
         printf("服務器連接成功.n");
 ?
         //3. 訂閱主題
         if(MQTT_SubscribeTopic(SET_TOPIC,0,1))
         {
            printf("主題訂閱失敗.n");
         }
         else
         {
            printf("主題訂閱成功.n");
         } 
    }
    
     
     //環境溫度
    LCD_ShowChineseFont(0,0,16,HZ_FONT_16[0],RED,0);
    LCD_ShowChineseFont(16*1,0,16,HZ_FONT_16[1],RED,0);
    LCD_ShowChineseFont(16*2,0,16,HZ_FONT_16[2],RED,0);
    LCD_ShowChineseFont(16*3,0,16,HZ_FONT_16[3],RED,0);
      
    //環境濕度
    LCD_ShowChineseFont(0,16*1,16,HZ_FONT_16[4],RED,0);
    LCD_ShowChineseFont(16*1,16*1,16,HZ_FONT_16[5],RED,0);
    LCD_ShowChineseFont(16*2,16*1,16,HZ_FONT_16[6],RED,0);
    LCD_ShowChineseFont(16*3,16*1,16,HZ_FONT_16[7],RED,0);
    
    //光照強度
    LCD_ShowChineseFont(0,16*2,16,HZ_FONT_16[8],RED,0);
    LCD_ShowChineseFont(16,16*2,16,HZ_FONT_16[9],RED,0);
    LCD_ShowChineseFont(16*2,16*2,16,HZ_FONT_16[10],RED,0);
    LCD_ShowChineseFont(16*3,16*2,16,HZ_FONT_16[11],RED,0);
    
    //空氣質量
    LCD_ShowChineseFont(0,16*3,16,HZ_FONT_16[12],RED,0);
    LCD_ShowChineseFont(16,16*3,16,HZ_FONT_16[13],RED,0);
    LCD_ShowChineseFont(16*2,16*3,16,HZ_FONT_16[14],RED,0);
    LCD_ShowChineseFont(16*3,16*3,16,HZ_FONT_16[15],RED,0);
    
    //智能照明
    LCD_ShowChineseFont(0,16*4,16,HZ_FONT_16[16],RED,0);
    LCD_ShowChineseFont(16,16*4,16,HZ_FONT_16[17],RED,0);
    LCD_ShowChineseFont(16*2,16*4,16,HZ_FONT_16[18],RED,0);
    LCD_ShowChineseFont(16*3,16*4,16,HZ_FONT_16[19],RED,0);
    
    //智能窗簾
    LCD_ShowChineseFont(0,16*5,16,HZ_FONT_16[20],RED,0);
    LCD_ShowChineseFont(16,16*5,16,HZ_FONT_16[21],RED,0);
    LCD_ShowChineseFont(16*2,16*5,16,HZ_FONT_16[22],RED,0);
    LCD_ShowChineseFont(16*3,16*5,16,HZ_FONT_16[23],RED,0);
    
    while(1)
    {
         //按鍵可以手動控制開啟窗簾和LED燈
         key=KEY_Scan();
         if(key)printf("key=%drn",key);
        
         //控制LED燈
         if(key==2)
         {
             led_flag=!led_flag;
             if(led_flag)
             {
                 LED_OUT=1;
             }
             else
             {
                 LED_OUT=0;
             }
         }    
         
         //控制繼電器
         if(key==1)
         {
             motor_flag=!motor_flag; 
             if(motor_flag)
             {
                 MOTOR_OUT=1;
             }
             else
             {
                 MOTOR_OUT=0;
             }
         }    
         
         //輪詢時間到達
         if(time_cnt >=100)
         {
             time_cnt=0;
             LED1=!LED1;
             
             //讀取光強度
             BH1750_data=Read_BH1750_Data();
             printf("環境光強度:%drn",BH1750_data);
             
             //獲取環境溫濕度
             if(DHT11_Read_Data(&DHT11_T,&DHT11_H))
             {
                 printf("溫度讀取失敗.rn");
             }
             printf("環境溫度:%drn環境濕度:%drn",DHT11_T,DHT11_H);
             
             //獲取空氣質量
             MQ135_data=GetAdcCHxDATA(1);
             printf("空氣質量:%drn",MQ135_data);
             
             //LCD屏實時顯示溫濕度、空氣質量,系統工作狀態等等。
             
             //環境溫度
             sprintf(data_buff,"%d",DHT11_T);
             Gui_DrawFont_GBK16(72,16*0,RED,0,(u8*)data_buff);
             
             //環境濕度
             sprintf(data_buff,"%d",DHT11_H);
             Gui_DrawFont_GBK16(72,16*1,RED,0,(u8*)"       ");
             Gui_DrawFont_GBK16(72,16*1,RED,0,(u8*)data_buff);
               
             //環境光強度
             sprintf(data_buff,"%d",BH1750_data);
             Gui_DrawFont_GBK16(72,16*2,RED,0,(u8*)"       ");
             Gui_DrawFont_GBK16(72,16*2,RED,0,(u8*)data_buff);
             
             //空氣質量
             sprintf(data_buff,"%d",MQ135_data);
             Gui_DrawFont_GBK16(72,16*3,RED,0,(u8*)"        ");
             Gui_DrawFont_GBK16(72,16*3,RED,0,(u8*)data_buff);
     
             //智能照明
             sprintf(data_buff,"%d",led_flag);
             Gui_DrawFont_GBK16(72,16*4,RED,0,(u8*)"        ");
             Gui_DrawFont_GBK16(72,16*4,RED,0,(u8*)data_buff);
 ?
             //智能窗簾
             sprintf(data_buff,"%d",motor_flag);
             Gui_DrawFont_GBK16(72,16*5,RED,0,(u8*)"        ");
             Gui_DrawFont_GBK16(72,16*5,RED,0,(u8*)data_buff);
 ?
             //上報數據
             sprintf(data_buff,"{"services":{"BH1750":[{"v":%d}],"DHT11_H":[{"v":%d}],"DHT11_T":[{"v":%d}],"MQ135":[{"v":%d}],"motor":[{"v":%d}],"LED":[{"v":%d}]}}",
             BH1750_data,DHT11_H,DHT11_T,MQ135_data,motor_flag,led_flag);
             
             MQTT_PublishData(POST_TOPIC,data_buff,0);
             printf("更新數據.rn");
         }
              
         // 接收WIFI返回的數據
         if(USART2_RX_FLAG)
         {
             USART2_RX_BUFFER[USART2_RX_CNT]='?';
             
             printf("WIFI收到數據:rn");
             //向串口打印服務器返回的數據
             for(i=0;i< USART2_RX_CNT;i++)
             {
                 printf("%c",USART2_RX_BUFFER[i]);
             }
             
             /*
             LED_ON    智能照明燈打開
             LED_OFF   智能照明燈關閉
             MOTOR_ON  智能窗簾打開
             MOTOR_OFF 智能窗簾關閉
             */
             
             //如果是下發了屬性
             if(USART2_RX_CNT >5)
             {
                 //向服務器應答
                 if(strstr((char*)&USART2_RX_BUFFER[5],"cmd/request/"))
                 {  
                     char *p=NULL;
                     p=strstr((char*)&USART2_RX_BUFFER[5],"cmd/request/");
                     if(p)
                     {        
                         //解析數據
                         strncpy(request_id,p+12,36);      
                     }
                     
                     
                     //上報給服務器的數據
                     sprintf(mqtt_message,"success");
                     
                     //應答主題
                     sprintf(data_buff,"$sys/501579/dev1/cmd/response/%s",request_id);
                     
                     MQTT_PublishData(data_buff,mqtt_message,0);
                     
                     printf("發布主題:%srn",data_buff);
                     printf("發布數據:%srn",mqtt_message);
                 }
                 
                 //LED:0 LED:1 MOTOR:0 MOTOR:1
                 
                 //開燈
                 if(strstr((char*)&USART2_RX_BUFFER[5],"LED:0"))
                 {
                     LED_OUT=0;
                     led_flag=0;
                 }
                 //關燈
                 else if(strstr((char*)&USART2_RX_BUFFER[5],"LED:1"))
                 {
                     LED_OUT=1;
                     led_flag=1;
                 }
                 //開窗簾
                 else if(strstr((char*)&USART2_RX_BUFFER[5],"MOTOR:0"))
                 {
                     MOTOR_OUT=0;
                     motor_flag=0;
                 }
                 //關窗簾
                 else if(strstr((char*)&USART2_RX_BUFFER[5],"MOTOR:1"))
                 {
                     MOTOR_OUT=1;
                     motor_flag=1;
                 }
             }
             
             USART2_RX_CNT=0;
             USART2_RX_FLAG=0;
         }
         
         DelayMs(10);
         time_cnt++;
         timer_hour_cnt++;
      }
 }

審核編輯:湯梓紅

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

    關注

    2913

    文章

    44923

    瀏覽量

    376988
  • STM32
    +關注

    關注

    2272

    文章

    10923

    瀏覽量

    357544
  • 監測系統
    +關注

    關注

    8

    文章

    2756

    瀏覽量

    81529
  • IOT
    IOT
    +關注

    關注

    187

    文章

    4230

    瀏覽量

    197591
  • 華為云
    +關注

    關注

    3

    文章

    2682

    瀏覽量

    17586
收藏 人收藏

    評論

    相關推薦

    【GoKit申請】基于大數據和計算的環境監測系統

    ,想研究下項目描述:準備依托這款能夠提供服務的板子設計一款基于大數據和計算的環境監測系統,主要是講采集到的環境信息通過將硬件接入互
    發表于 11-02 10:47

    【CANNON申請】家庭室內環境監測系統

    申請理由:想做一個家庭室內環境監測系統,主要是測量室內溫度、濕度、粉塵濃度、光照、噪聲等環境參數,同時對室內換氣設備/空氣凈化設備、燈光等進行控制。本人有STM32F1系列單片機開發經
    發表于 01-26 14:30

    【Intel Edison申請】兒童環境監測

    滿足了簡單的環境監測了,將這些小項目組合起來就可以實現一個簡單的環境監測系統了。這里要調試各個模塊之前的邏輯關系與兼容性,不可以產生沖突。實現一個web或是在一個服務器上可以查看監測
    發表于 06-27 17:20

    【鈦極小龜試用申請】鈦極小龜環境監測及溫濕度遠程調控實驗

    項目名稱:鈦極小龜環境監測及溫濕度遠程調控實驗試用計劃:本人從事多年軟件開發工作, 擅長Java,Android程序開發, 同時對51,STM32單片機也有一定的開發經驗, 對
    發表于 11-13 17:09

    14個環境監測系統設計案例

    工作的前提。隨著現代科學技術的發展,環境監測越來越趨于智能化,無線傳感網絡、微波輻射技術、ZigBee等技術都被運用到環境檢測中來。本文就將為大家介紹一些基于現代技術的環境監測系統的設
    發表于 04-26 09:16

    鴻蒙軟、硬件綜合小案例——環境監測報警系統

    環境監測報警系統,該系統主要實現對環境監測、報警功能,。系統共包含以下三部分:鴻蒙智能手表:實
    發表于 04-14 10:32

    環境監測系統解決方案

    環境監測系統解決方案 一、系統概要 本綜合管控平臺是一套基于計算的
    發表于 07-10 10:53 ?5487次閱讀

    聯網環境監測方面的發展趨勢

    在萬聯時代,聯網技術已經成為環境監測工作主要的手段,在社會發展中所起到的作用也變得十分突出。尤其是在
    發表于 05-24 09:04 ?2695次閱讀

    中易環境監測系統解決方案概述

    感知、精準操作、精細管理,提供穩定、可靠、低成本維護的一站式云端聯網平臺。 ? 環境監測系統通過對現場溫度、濕度、光照、風向、風速、PM2.5、氣壓等參數的數據采集,將參數數據遠至
    的頭像 發表于 01-12 09:15 ?1160次閱讀

    聯網倉儲環境監測系統

    以萬互聯為口號的聯網技術,其應用之廣泛超出想象,不僅能對農業溫室大棚、水肥灌溉等進行遠程管理,也能對倉庫、糧庫、機房等進行環境監測、控制。 倉儲
    的頭像 發表于 02-08 16:16 ?1121次閱讀

    應用筆記|基于STM32聯網環境監測系統

    之間進行數據交互。當無線通訊模組成功連接網絡,并接入機智聯網平臺時,用戶可以通過登錄聯網
    的頭像 發表于 03-18 03:15 ?2606次閱讀

    應用筆記|基于STM32聯網環境監測系統

    本應用筆記以STM32單片機作為控制和數據處理的單元,使用AHT10、BH1750和BMP280傳感器去監測周圍的環境參數,在LCD屏完成傳感器數據和相關信息的顯示。同時,采用了無線模組與單片機之間
    的頭像 發表于 03-30 15:13 ?4180次閱讀
    應用筆記|基于<b class='flag-5'>STM32</b>的<b class='flag-5'>物</b><b class='flag-5'>聯網</b><b class='flag-5'>環境監測</b><b class='flag-5'>系統</b>

    聯網網關設備在環境監測中應用實現對環境狀況的全方位監測和管理

    、大數據、人工智能等技術的快速發展,環境監測行業也在不斷升級和轉型。其中,基于聯網環境監測系統得到了廣泛應用,通過
    的頭像 發表于 12-07 16:46 ?667次閱讀
    <b class='flag-5'>物</b><b class='flag-5'>聯網</b>網關設備在<b class='flag-5'>環境監測</b>中應用實現對<b class='flag-5'>環境</b>狀況的全方位<b class='flag-5'>監測</b>和管理

    LoRa ZWS應用(4)-環境監測設備接入篇

    環境監測系統中,要將監測設備接入聯網平臺,才能進行對
    的頭像 發表于 01-26 08:25 ?798次閱讀
    LoRa  ZWS<b class='flag-5'>云</b>應用(4)-<b class='flag-5'>環境監測</b>設備接入篇

    倉儲環境監測聯網系統方案

    系統的智能化水平,數之能推出了基于聯網技術的倉儲環境監測系統方案。 倉儲環境監測
    的頭像 發表于 12-13 13:41 ?165次閱讀
    澳门百家乐官网网址多少| 喜力百家乐官网的玩法技巧和规则 | 百家乐官网合作| 百家乐官网如何稳赢| 百家乐怎么玩才会赢钱| 百家乐官网五湖四海娱乐平台 | 蓝盾百家乐代理| 捷豹百家乐官网的玩法技巧和规则 | 大发888娱乐场下载 zhldu| 百家乐视频麻将下载| 百家乐官网新庄| 免费百家乐官网奥秘| 大发888娱乐场 zb8| 澳门百家乐赌场娱乐网规则| 百家乐官网筹码片| 百家乐官网自动算牌软件| 至尊娱乐城| 大发888娱乐城官方下载lm0| 水果机遥控器价格| 免费玩百家乐的玩法技巧和规则| 百家乐游戏资料网| 百家乐官网网上赌博网| 全讯网导航| 百家乐路单纸下载| 财神百家乐官网的玩法技巧和规则| 百家乐官网视频交友| 2013现金棋牌游戏| 双色球大赢家| bet365滚球| 大发888 备用6222.com| 宁波水果机遥控器| 大发888体育竞技| 威尼斯人娱乐城金杯娱乐城| 永利博百家乐的玩法技巧和规则 | 马牌百家乐官网的玩法技巧和规则| 波浪百家乐官网游戏中| 百家乐官网的代理办法| 金盛国际| 真钱百家乐赌博| 高尔夫| 网上百家乐官网哪里开户|