做一个“有思想的插排”--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电压,貌似不同,后来换成固态继电器,就可以使用了

猜你喜欢

转载自blog.csdn.net/jeek_we/article/details/84780921