色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美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

    瀏覽量

    14335
  • ESP8266
    +關注

    關注

    50

    文章

    962

    瀏覽量

    45262
收藏 人收藏

    評論

    相關推薦

    【貝啟科技BQ3568HM開源鴻蒙開發板深度試用報告】2 - 智能家居中控屏界面設計:打造便捷的家居控制體驗

    設計,并探討其在智能家居中控屏中的應用。 NAPI接口概述 NAPI接口是OpenHarmony提供的一種機制,用于在ArkTS中調用C++編寫的原生模塊。通過NAPI接口,開發者可以利用C++的高性能
    發表于 01-24 16:11

    【「嵌入式系統設計與實現」閱讀體驗】+ 基于語音識別的智能杯墊

    語音命令Q 識別,適用于智能家居控制、玩具、人機交互等多個領域。該模塊以其高識別率、低功耗和易于集成的特點受到廣大開發者的青睞。 主要技術及功能有: 磁力攪拌、重量采集、語音識別、IPS顯示屏
    發表于 01-02 18:15

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

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

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

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

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

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

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

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

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

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

    智能家居控制方式有哪些

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    集中電源控制器在智能家居中也有廣泛的應用。隨著智能家居的普及,各種家電設備、照明系統、安防系統等都需要電源支持,而集中電源
    的頭像 發表于 01-30 15:05 ?818次閱讀
    集中電源<b class='flag-5'>控制</b>器在<b class='flag-5'>智能家居</b>中的應用
    主站蜘蛛池模板: 伊人网综合在线观看 | 国产精品女上位好爽在线短片 | 亚洲午夜精品久久久久久抢 | 洲精品无码高潮喷水A片 | 特黄特黄aaaa级毛片免费看 | 亚洲免费无码中文在线亚洲在 | 1区2区3区4区产品不卡码网站 | 国产露脸无码A区久久 | 妻子撸av中文字幕 | 国产精品永久免费视频观看 | 帅小伙和警官同性3p | eussse手机电影在线观看 | 日韩欧美一级 | 奶头被客人吸得又红又肿 | 91嫩草私人成人亚洲影院 | 奶头从情趣内衣下露了出来AV | 寂寞骚妇女被后入式抽插 | 公粗挺进了我的密道在线播放贝壳 | 新香蕉少妇视频网站 | 日韩欧美一区二区三区在线视频 | 天天噜日日噜夜夜噜 | 久久精品国产eeuss | 阿娇和冠希13分钟在线观看 | 精品国产自在现线拍国语 | 老师那里好大又粗h男男 | 国产亚洲精品久久久久久无码网站 | 国产午夜高潮熟女精品AV | 黑人寄宿羽月希产后奶水 | 98色精品视频在线 | 怡红院美国分院一区二区 | 嫩草影院永久在线一二三四 | 俄罗斯破处 | 久久精品天天爽夜夜爽 | 草民电影网午夜伦理电影网 | 百性阁综合社区 | 张开腿我尝尝你的草莓 | 在线亚洲色拍偷拍在线视频 | 99re8热视频这在线视频 | 动漫女主被扒开双腿羞辱 | 性夜影院爽黄A爽免费动漫 性夜夜春夜夜爽AA片A | 国产又粗又猛又爽黄老大爷 |