1. 程式人生 > >做一個“有思想的插排”--APP控制裝置

做一個“有思想的插排”--APP控制裝置

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開啟和關閉,繼電器有動作。

基本上一個插排就完成了

第一次寫一個完整的東西,描述不清之處,請大家給我留言,一起探討。

我選用的是普通的觸點繼電器,用來控制AC220V電壓,貌似不同,後來換成固態繼電器,就可以使用了