做一個“有思想的插排”--APP控制裝置
阿新 • • 發佈:2018-12-04
APP控制裝置
SoC程式詳解
對程式不是很瞭解的,可以去看一下機智雲官方文件中心的 GoKit-SoC程式詳解
獲取裝置log
官方SoC韌體中,使用TXD1
列印輸出Log
日誌。
我是用的是nodemcu,所以按照引腳圖,使用usb轉串列埠工具,列印Log如下:
開啟APP,連線上裝置,按下switch
開關,開啟開關,可以看到下圖:
注意紅框中顯示當前時間的為一個開關狀態,狀態值為1,即開啟開關狀態。
根據官方教程,可以找到事件執行函式,在此處可以看到列印語句。
接下來新增繼電器控制函式
在/app/driver/
下建立hal_switch.c
檔案,新增以下程式碼。
#include "driver/hal_switch.h"
void ICACHE_FLASH_ATTR switchInit(void)
{
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U,FUNC_GPIO13);
gpio_output_set(0,0,GPIO_ID_PIN(Relay1)|GPIO_ID_PIN(Relay2),0);
os_printf("switchGpioInit \r\n");
}
在/app/Gizwits/gizwits)product.c
#include "driver/hal_switch.h"
上圖中,是響應APP的switch按鈕的事件,控制繼電器的開斷。
在/app/include/
中新增hal_switch.h
,檔案中填寫如下內容:
#ifndef __HAL_SWITCH_H__ #define __HAL_SWITCH_H__ #include <stdio.h> #include <c_types.h> #include <gpio.h> #include "os_type.h" #include "osapi.h" #define Relay1 12 #define Relay2 13 #define Relay1_ON() GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay1),1) #define Relay1_OFF() GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay1),0) #define Relay2_ON() GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay2),1) #define Relay2_OFF() GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay2),0) void ICACHE_FLASH_ATTR switchInit(void); #endif
所有檔案儲存之後,開啟編譯環境,準備編譯。
進入app
路徑,執行./gen_misc.sh
,等待編譯完成。
編譯完成,準備燒錄,觀察現象
燒錄程式
在共享目錄中,將生成的程式燒錄到ESP8266中,按照之前的燒錄方法就可以。
燒錄完成之後,使用APP連線裝置。裝置端注意要連線繼電器觀察現象,我使用的是PGIO12,,即D5引腳。
點選switch開啟和關閉,繼電器有動作。