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打开和关闭,继电器有动作。
设备端源码
源码里有可使用的.bin
文件,可以直接下载使用。app使用机智云官方app就可以。