色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

開發者作品:一款智能家居系統,實現了 4 種控制方式(三)

機智云 ? 2022-05-19 17:16 ? 次閱讀

前言

本項目通過闡述基于ESP8266作為處理器(SoC模式開發)接入機智云,借助機智云安卓開源框架設計的APP,實現了燈的控制、門禁的控制、溫濕度的讀取、有毒氣體的檢測、人體紅外檢測等功能

通過改造機智云開源框架,還實現了一個智能硬件系統支持多種控制方式,如:安卓APP控制、本地按鍵控制、紅外遙控控制、天貓精靈控制,且每一種操作都能和APP同步顯示。

本文是第三篇:ESP8266接入機智云,驗證APP的功能。


1.ESP8266原理圖及外設接法

c96b258a-d214-11ec-8521-dac502259ad0.png

GPIO12-GPIO14用于驅動LED

c9854884-d214-11ec-8521-dac502259ad0.png

GPIO16接到繼電器,用于控制門禁

c9abad08-d214-11ec-8521-dac502259ad0.png

GPIO5用于溫濕度傳感器接口

c9c5be32-d214-11ec-8521-dac502259ad0.png

GPIO4和GPIO15分別用于人體紅外檢測和有毒氣體檢測。


2.下載工程和工程準備

在上一篇已經說明了如何去新建一個工程和數據點了,不贅述。

數據點如下:

c9ddeda4-d214-11ec-8521-dac502259ad0.png

2.2.生成工程

選擇MCU開發->SOC方案->ESP8266硬件平臺->生成代碼包

ca353ec4-d214-11ec-8521-dac502259ad0.png

2.3.下載工程

cab5af50-d214-11ec-8521-dac502259ad0.png

下載完成后解壓

cace7558-d214-11ec-8521-dac502259ad0.png

2.4.打開工程

使用一體化編譯工具,如下所示:

cafb48bc-d214-11ec-8521-dac502259ad0.png

環境教程搭建:https://club.gizwits.com/thread-6447-1-1.html

導入工程

步驟:

cb13bc30-d214-11ec-8521-dac502259ad0.png

cb215304-d214-11ec-8521-dac502259ad0.png

cb2ecce6-d214-11ec-8521-dac502259ad0.png

2.5.修改Makefile

cb7b6f60-d214-11ec-8521-dac502259ad0.png

cb962b5c-d214-11ec-8521-dac502259ad0.png

備注:注意保存修改后的文件,CTRL + S簡單粗暴。

2.6.編譯工程

cbe59c6e-d214-11ec-8521-dac502259ad0.png

編譯通過:

cc124d0e-d214-11ec-8521-dac502259ad0.png

生成的bin文件在工程的bin目錄下:

cc4359bc-d214-11ec-8521-dac502259ad0.png


3.編寫LED及繼電器控制代碼

3.1.新建一個hal_led.c和hal_led.h文件:

cc518000-d214-11ec-8521-dac502259ad0.png

3.1.1建立hal_led.c

cc6d6568-d214-11ec-8521-dac502259ad0.png

3.1.2.新建hal_led.h

cce3f9e4-d214-11ec-8521-dac502259ad0.png

3.2.編寫hal_led.h的代碼

為了方便使用宏定義來設置IO的電平。

/*
 * hal_led.h
 *
 *  Created on: 2019年3月16日
 *      Author: Yuan
 */

#ifndef APP_INCLUDE_DRIVER_HAL_LED_H_
#define APP_INCLUDE_DRIVER_HAL_LED_H_
#include 
#include 
#include 
#include 

#define RGB_R  12
#define RGB_G  13
#define RGB_B  14
#define Beep  15

//LED燈的控制
#define RedOn()          GPIO_OUTPUT_SET(GPIO_ID_PIN(RGB_R),1)
#define RedOff()     GPIO_OUTPUT_SET(GPIO_ID_PIN(RGB_R),0)
#define GreenOn()     GPIO_OUTPUT_SET(GPIO_ID_PIN(RGB_G),1)
#define GreenOff()     GPIO_OUTPUT_SET(GPIO_ID_PIN(RGB_G),0)
#define BlueOn()     GPIO_OUTPUT_SET(GPIO_ID_PIN(RGB_B),1)
#define BlueOff()     GPIO_OUTPUT_SET(GPIO_ID_PIN(RGB_B),0)
//繼電器控制
#define RelayOn()     gpio16_output_set(0)
#define RelayOff()     gpio16_output_set(1)

//函數聲明
void ledgpio_init(void);
void relaygpio_init(void);
void get_motion_gas(bool *move,bool *gas);
void body_gas_gpio_init();


#endif /* APP_INCLUDE_DRIVER_HAL_LED_H_ */

3.3.編寫hal_led.c文件

/*
 * led_hal.c
 *
 *  Created on: 2019年2月26日
 *      Author: Yuan
 */


#include "driver/hal_led.h"
#include "driver/hal_key.h"
#include "osapi.h"
#include "eagle_soc.h"

void ICACHE_FLASH_ATTR
ledgpio_init(void)
{
  //初始化led用到的IO口設置為輸出
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U,FUNC_GPIO13);
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U,FUNC_GPIO14);
  //默認輸出為低電平,滅
  RedOff();
  GreenOff();
  BlueOff();

  os_printf("GPIO_init_OK\n\r");
}
void ICACHE_FLASH_ATTR
body_gas_gpio_init(void)
{
  //設置GPIO15和GPIO4為輸入
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U,FUNC_GPIO15);
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);
}
//獲取人體紅外檢測和有毒氣體檢測的電平
void ICACHE_FLASH_ATTR
get_motion_gas(BOOL *move,BOOL *gas)
{

  *move = GPIO_INPUT_GET(GPIO_ID_PIN(4));
  *gas  = GPIO_INPUT_GET(GPIO_ID_PIN(15));

}
//繼電器初始化函數
void ICACHE_FLASH_ATTR
relaygpio_init(void)
{
  //設置GPIO15為輸出
  gpio16_output_conf();
  //關閉繼電器
  gpio16_output_set(1);
}

4.編寫溫濕度讀取函數

溫濕度讀取函數是直接采用機智云官方的源碼,進入:https://download.gizwits.com/zh-cn/p/92/93

接著下載示例工程:

cd234950-d214-11ec-8521-dac502259ad0.png

下載完成后解壓,復制出想要的文件:

cd3fdf3e-d214-11ec-8521-dac502259ad0.png

把hal_temp_hum.c放在和hal_led.c同一個目錄,把hal_temp_hum.h放置在和hal_led.h同一級目錄下(工程中)

如下:

cd570c68-d214-11ec-8521-dac502259ad0.png


5.設置開發版配網按鍵

從原理圖可知,配網按鍵是GPIO0

進入user_main.c函數:

cd8393a0-d214-11ec-8521-dac502259ad0.png

5.1.包含使用到文件,如溫度和led的頭文件

cdb5c302-d214-11ec-8521-dac502259ad0.png

5.2.修改配網按鍵

在工程中默認是GPIO0和GPIO14兩個按鈕

cdcf1672-d214-11ec-8521-dac502259ad0.png

現在我們只需要一個就是GPIO0,修改如下:

cdff0b20-d214-11ec-8521-dac502259ad0.png

刪除無用的代碼:

ce150862-d214-11ec-8521-dac502259ad0.png

ce2c5652-d214-11ec-8521-dac502259ad0.png

修改key0按鍵的短按事件響應函數:

ce59830c-d214-11ec-8521-dac502259ad0.png

修改后:

cea591fc-d214-11ec-8521-dac502259ad0.png


6.調用初始化函數:

在user_init()函數中初始化各個設備:

ced7e80a-d214-11ec-8521-dac502259ad0.png


7.編寫機智云事件處理函數

打開gizwits_product.c文件

cf26b458-d214-11ec-8521-dac502259ad0.png

添加頭文件以及定時器時間間隔修改:

cf3564c6-d214-11ec-8521-dac502259ad0.png

定位到gizwitsEventProcess函數。

7.1.修改數據點對應控制的函數

比如在云端:currentDataPoint.valueRed_OnOff這個點的值為真,則使ESP8266的第12引腳輸出高電平(RedOn),反之輸出低電平,其他的同理。

修改后如下:

int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len)
{
    uint8_t i = 0;
    dataPoint_t * dataPointPtr = (dataPoint_t *)data;
    moduleStatusInfo_t * wifiData = (moduleStatusInfo_t *)data;

    if((NULL == info) || (NULL == data))
    {
        GIZWITS_LOG("!!! gizwitsEventProcess Error \n");
        return -1;
    }

    for(i = 0; i < info->num; i++)
    {
        switch(info->event[i])
        {
        case EVENT_Red_OnOff :
            currentDataPoint.valueRed_OnOff = dataPointPtr->valueRed_OnOff;
            GIZWITS_LOG("Evt: EVENT_Red_OnOff %d \n", currentDataPoint.valueRed_OnOff);
            if(0x01 == currentDataPoint.valueRed_OnOff)
            {
              RedOn();
                //user handle
            }
            else
            {
              RedOff();
                //user handle
            }
            break;
        case EVENT_Green_OnOff :
            currentDataPoint.valueGreen_OnOff = dataPointPtr->valueGreen_OnOff;
            GIZWITS_LOG("Evt: EVENT_Green_OnOff %d \n", currentDataPoint.valueGreen_OnOff);
            if(0x01 == currentDataPoint.valueGreen_OnOff)
            {
              GreenOn();
                //user handle
            }
            else
            {
              GreenOff();
                //user handle
            }
            break;
        case EVENT_Blue_OnOff :
            currentDataPoint.valueBlue_OnOff = dataPointPtr->valueBlue_OnOff;
            GIZWITS_LOG("Evt: EVENT_Blue_OnOff %d \n", currentDataPoint.valueBlue_OnOff);
            if(0x01 == currentDataPoint.valueBlue_OnOff)
            {
              BlueOn();
                //user handle
            }
            else
            {
              BlueOff();
                //user handle
            }
            break;
        case EVENT_Door_OnOff :
            currentDataPoint.valueDoor_OnOff = dataPointPtr->valueDoor_OnOff;
            GIZWITS_LOG("Evt: EVENT_Door_OnOff %d \n", currentDataPoint.valueDoor_OnOff);
            if(0x01 == currentDataPoint.valueDoor_OnOff)
            {
              RelayOn();
                //user handle
            }
            else
            {
              RelayOff();
                //user handle
            }
            break;



        case WIFI_SOFTAP:
            break;
        case WIFI_AIRLINK:
            break;
        case WIFI_STATION:
            break;
        case WIFI_CON_ROUTER:
            GIZWITS_LOG("@@@@ connected router\n");

            break;
        case WIFI_DISCON_ROUTER:
            GIZWITS_LOG("@@@@ disconnected router\n");

            break;
        case WIFI_CON_M2M:
            GIZWITS_LOG("@@@@ connected m2m\n");
      setConnectM2MStatus(0x01);

            break;
        case WIFI_DISCON_M2M:
            GIZWITS_LOG("@@@@ disconnected m2m\n");
      setConnectM2MStatus(0x00);

            break;
        case WIFI_RSSI:
            GIZWITS_LOG("@@@@ RSSI %d\n", wifiData->rssi);
            break;
        case TRANSPARENT_DATA:
            GIZWITS_LOG("TRANSPARENT_DATA \n");
            //user handle , Fetch data from [data] , size is [len]
            break;
        case MODULE_INFO:
            GIZWITS_LOG("MODULE INFO ...\n");
            break;

        default:
            break;
        }
    }
    system_os_post(USER_TASK_PRIO_2, SIG_UPGRADE_DATA, 0);

    return 0; 
}

8.數據上報

數據上報到云端使用的是userHandle函數,定時上報數據

代碼如下:

void ICACHE_FLASH_ATTR userHandle(void)
{
    /*
    currentDataPoint.valueMove_Detection = ;//Add Sensor Data Collection
    currentDataPoint.valueGas_Detection = ;//Add Sensor Data Collection
    currentDataPoint.valuetemp = ;//Add Sensor Data Collection
    currentDataPoint.valuehum = ;//Add Sensor Data Collection
    */

    uint8_t ret=0;
    uint8_t curTemperature=0;
    uint8_t curHumidity=0;
    uint8_t curIr=0;
    static uint8_t thCtime=0,dection_timer=0;
    static BOOL move=true,gas=true;  //默認為真,也就是高電平
    thCtime++;
    dection_timer++;  //定時器間隔為100ms
    /*新添加代碼:溫濕度傳感器數據獲取*/
    if(TH_TIMEOUT
    {
        thCtime=0;
        ret=dh11Read(&curTemperature,&curHumidity);



        if(0==ret)
        {
            currentDataPoint.valuetemp=curTemperature;
            currentDataPoint.valuehum=curHumidity;
        }
        else
        {
            os_printf("@@@ dh11Read error! \n");
        }
    }
    get_motion_gas(&move,&gas);
    if(move == false)   //檢測到電平
    {
      currentDataPoint.valueMove_Detection = true;//Add Sensor Data Collection
    }
    else
    {
      currentDataPoint.valueMove_Detection = false;//Add Sensor Data Collection
    }
    if(gas == false)
    {
      currentDataPoint.valueGas_Detection = true;//Add Sensor Data Collection
    }
    else
    {
      currentDataPoint.valueGas_Detection = false;//Add Sensor Data Collection
    }

    system_os_post(USER_TASK_PRIO_2, SIG_UPGRADE_DATA, 0);
}

支持所有的代碼已經編寫完成。


9.下載到開發版驗證

燒錄軟件:ESPFlashDownloadTool_v3.4.4

下載地址:https://download.csdn.net/download/qq_36243942/11025638

下載后解壓打開:

步驟:

cf469e4e-d214-11ec-8521-dac502259ad0.png

cf559458-d214-11ec-8521-dac502259ad0.png

選擇下載文件和地址

cfa0c32e-d214-11ec-8521-dac502259ad0.png

在這里特別需要注意,如下:

查看源文件生成的目錄

cfc6c236-d214-11ec-8521-dac502259ad0.png

燒錄文件位置及說明:

cfe3cbc4-d214-11ec-8521-dac502259ad0.png

燒錄

d014d6b0-d214-11ec-8521-dac502259ad0.png


10.配網

下載完成之后對開發版進行復位。

步驟:

1.按開發版的SW1按鍵,綠色的LED亮起,進入SOFT_AP配網模式。

2.手機連接到需要連接的WIFI,打開機智云軟件

d03c84d0-d214-11ec-8521-dac502259ad0.png

2.填寫wifi信息

d06d1438-d214-11ec-8521-dac502259ad0.png

3.下一步

d0a4ad62-d214-11ec-8521-dac502259ad0.png

4.去連接ESP8266發射出來的熱點,密碼默認為:123456789

d0c0f508-d214-11ec-8521-dac502259ad0.png

5.連接完成后就可以使用手機進行控制了。

注意:如果你想遠程控制設備是需要登陸賬號的。


11.機智云開發中心查看設備

進入機智云開發中心的項目就可以看到設備在線。

d15fc78c-d214-11ec-8521-dac502259ad0.png

12.使用安卓開源框架的APP控制

在上一篇使用開源框架寫了APP,既然ESP8266的本地數據能夠上報,那么我們寫APP就能夠去控制這個設備啦,而且是不需要登錄的哦。因為我們已經把這個APP和云端綁定了。

那看一下界面吧,肯定是比自動生成的美觀那么一丟丟啦。哈哈哈哈

1.進入APP

d192aefe-d214-11ec-8521-dac502259ad0.png

2.查看已聯網設備

d1db2d1e-d214-11ec-8521-dac502259ad0.png

3.進入控制界面

d1fc34f0-d214-11ec-8521-dac502259ad0.png

d224895a-d214-11ec-8521-dac502259ad0.png

4.控制設備

d243356c-d214-11ec-8521-dac502259ad0.png

d26a49f4-d214-11ec-8521-dac502259ad0.png

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

    關注

    1

    文章

    101

    瀏覽量

    14297
  • ESP8266
    +關注

    關注

    50

    文章

    962

    瀏覽量

    44964
收藏 人收藏

    評論

    相關推薦

    機智云智能家居網關方案的組網方式與通訊協議解析

    智能家居的組網方式中,主要采用的是LoRa、WiFi及藍牙Mesh、zigbee、射頻和串行接口等組網方式開發者可根據需求選擇對應的組網方式
    的頭像 發表于 11-23 01:02 ?327次閱讀
    機智云<b class='flag-5'>智能家居</b>網關方案的組網<b class='flag-5'>方式</b>與通訊協議解析

    機智云智能家居網關方案的組網方式與通訊協議解析

    采用的是LoRa、WiFi及藍牙Mesh、zigbee、射頻和串行接口等組網方式開發者可根據需求選擇對應的組網方式。 1.藍牙或WiFi Mesh:這種方式適合于短距離的設備連接,通
    的頭像 發表于 11-22 18:01 ?251次閱讀

    基于語音識別技術的智能家居控制系統

    于語音識別的智能控制系統智能家居的重要組成部分,相比傳統的遙控或觸控方式,基于語音識別控制智能家居
    的頭像 發表于 11-19 17:25 ?519次閱讀
    基于語音識別技術的<b class='flag-5'>智能家居</b><b class='flag-5'>控制系統</b>

    簡述三種esp32的開發方式是什么

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍牙雙模無線通信芯片,廣泛應用于物聯網、智能家居智能硬件等領域。本文將詳細介紹三種ESP32的
    的頭像 發表于 08-20 09:11 ?2853次閱讀

    智能家居控制系統如何設計

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

    智能家居控制方式有哪些

    智能家居控制方式多種多樣,這些方式不僅提升了家居生活的便捷性,還使得家居環境更加
    的頭像 發表于 07-23 14:30 ?1241次閱讀

    智能家居照明控制系統功能特點與應用

    隨著科技的飛速發展,智能家居已成為現代家庭不可或缺的部分。其中,智能家居照明控制系統以其獨特的優勢,正在逐步改變我們傳統的生活方式,使家庭
    的頭像 發表于 07-08 16:13 ?427次閱讀

    智能家居燈光控制系統功能特點

    智能照明是可以實現自動控制的先進照明方式智能家居燈光控制系統是現代
    的頭像 發表于 04-25 16:21 ?1213次閱讀

    OpenHarmony南向開發案例:【 智能家居中控】

    今天打造的這一款全新智能家庭控制系統,凸顯應用在智能控制和用戶體驗的特點,開創國內智能家居
    的頭像 發表于 04-23 15:50 ?997次閱讀
    OpenHarmony南向<b class='flag-5'>開發</b>案例:【 <b class='flag-5'>智能家居</b>中控】

    智能家居控制系統解決方案功能

    化的居住環境。 所謂的智能家居控制系統解決方案,不再僅僅是傳統的家具,而是被賦予“思想”,變得智能化。該方案依托物聯網云平臺,實現照明
    的頭像 發表于 04-09 15:58 ?634次閱讀

    東勝物聯攜多款智能網關亮相瑞芯微RK開發者大會

    東勝物聯基于瑞芯微芯片的智能網關產品在RK開發者大會的智能家居區域進行展出。
    的頭像 發表于 03-15 10:17 ?927次閱讀
    東勝物聯攜多款<b class='flag-5'>智能</b>網關亮相瑞芯微RK<b class='flag-5'>開發者</b>大會

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

    是以物聯網作為核心技術支撐,利用網絡通信手段,實現對住宅中各種設備與建筑設施進行自動控制與管理。集成開發智能家居控制方案,快速啟動、多種人機
    的頭像 發表于 02-29 16:18 ?790次閱讀

    Python智能家居系統代碼介紹

    Python智能家居系統一種基于Python編程語言開發智能家居控制系統,在現代家庭中得到了
    的頭像 發表于 01-25 09:46 ?1352次閱讀

    智能家居控制系統原理與應用

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

    開源項目!教你如何復刻自平衡賽車機器人、智能家居中控、競技機器人先進模糊控制器等

    三種不同的操控方式 經常翻車的朋友們都知道,能在翻車后快速擺正車身的車才是好車。 就像動畫《四驅兄弟》中展現的那樣,在比賽中需要跟著賽車起跑圈,而且賽車如果被撞翻還需要重新用手扶正
    發表于 12-26 09:17
    主站蜘蛛池模板: 99热热在线精品久久| 伦理片92伦理午夜| 天天操狠狠操夜夜操| 边摸边吃奶边做带声音| 美女MM131爽爽爽| 影音先锋男人av橹橹色| 黄色毛片a| 亚洲成人免费在线| 国产精品视频yy9099| 天海翼精品久久中文字幕| 成人亚洲视频| 日本无修肉动漫在线观看| wwwzzz日本| 皮皮在线精品亚洲| adc影院在线| 欧美午夜福利主线路| 99热6精品视频6| 欧美xxbb| www亚洲欲色成人久久精品| 欧美精品久久久久性色AV苍井 | 18 japanese宾馆直播| 久久99精品国产免费观看| 亚洲精品国产高清不卡在线| 国产午夜精品理论片免费观看 | 麻豆精品无码久久久久久久久| 又黄又猛又爽大片免费| 久久热精品18国产| 张津瑜的9分58秒7段免费| 麻豆免费高清完整版| 97视频在线免费播放| 欧美18在线| 成人伊人青草久久综合网| 色一欲一性一乱一区二区三区| 国产成人精品免费视频大 | 四虎精品久久| 国产三级影院| 亚洲乱码国产一区三区| 精品视频中文字幕| 早乙女由依在线观看| 秘密教学93话恩爱久等了免费| asian极品呦女xx农村|