ESP8266应用--天猫精灵控制电脑开关机

一、准备工作

ESP-01s              

和 ESP-01s配套的继电器模块

天猫精灵

二、ESP8266开发环境搭建(ubuntu)

http://aiclouds3.0-docs.aithinker.com/#/2.device/configuration_linux

根据官网的文档搭建开发环境

注意:1.SDK需要使用 带子模块递归方式拉取,不然编译时会报错

git clone --recursive https://gitee.com/xuhongv/AiThinkerProjectForESP.git

2.编译工具要和sdk的版本匹配,不然编译时会报错

    sdk3.4对应的编译工具是最新的8.4

sdk https://github.com/espressif/ESP8266_RTOS_SDK

编译工具https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz

三、申请点灯科技帐号

https://www.diandeng.tech/home 

1.下载app,在app上注册帐号。

2.根据官方文档在app上新建设备,保存好设备的秘钥

https://www.diandeng.tech/doc/app

2.下载点灯科技的blinker freeRTOS支持库

https://github.com/blinker-iot/blinker-esp-idf

四、工程配置

  1. 将AiThinkerProjectForESP 拷贝一份,将里面的blinker freeRTOS支持库里面的examples\Blinker_Hello\Hello_WiFi拷贝到AiThinkerProjectForESP工程根目录下。

2.根据文档将blinker freeRTOS支持库整合到esp项目中。

整合完成后在Hello_WiFi目录下运行make menuconfig 配置sdk,在菜单主页中可以看到blinker配置选项, 选中blinker进入并配置相关参数

如下图所示配置blinker,AUth Key 填入app创建的设备中的秘钥

配置配网方式

配置完成后保存并且退出blinker,然后进入components配置页面

enable mDNS 

disable Newlib

enable webSocket server support(http_server)

打开mDNS,webSocket server support(http_server) 取消Newlib

设置完成后保存并退出即可开始编译测试 了

五、编程

打开Hello_WiFi\main\blinker_example_main.c文件

1.初始化io口

void init_gpio(){
    gpio_config_t io_conf;
    //禁止中断
    io_conf.intr_type = GPIO_INTR_DISABLE;
    //设置为输出模式
    io_conf.mode = GPIO_MODE_OUTPUT;
    //管脚的位
    io_conf.pin_bit_mask = (1ULL << GPIO_NUM_13);
    //开始配置管脚
    gpio_config(&io_conf);
    gpio_set_level( GPIO_NUM_13, 1 );
}

此处需要修改esp-01s的电路

esp-01s只有gpio0和gpio2引出来了,而gpio0是Boot 模式的配置引脚,esp8266的

Boot 模式由 strapping 管脚的 3 位值 [GPIO15,GPIO0,GPIO2] 共同决定。如下表所示:

7[1,1,1]SDIO HighSpeed V2 IO

6[1,1,0]SDIO LowSpeed V1 IO

5[1,0,1]SDIO HighSpeed V1 IO

4[1,0,0]SDIO LowSpeed V2 IO

3[0,1,1]Flash Boot

2[0,1,0]Jump Boot

1[0,0,1]UART Boot

0[0,0,0]Remapping

与esp-01s配套的继电器驱动板是用gpio0控制的,而esp-01s下载程序的时候gpio0需要接GND,gpio2是控制led灯的。所以我们要飞线,将esp-01s的一个io口引出来用于控制继电器,我这里使用的是gpio13,也就是芯片的12脚。

开关机功能本质上就是一个无锁开关,电脑开关上两根线接通几十毫秒就开机了,关机功能需要在windows 电源选项里面将这里设置为关机。关机状态下继电器接通几十毫秒就开机了,开机状态下继电器接通几十毫秒就关机了。

  1. 加入天猫精灵回调函数

void aligenie_callback(const blinker_va_param_cb_t *val){

    if(val==NULL){
        ESP_LOGE(TAG, "blinker_va_param_cb_t is NULL");
        return;
    }
   cJSON *ali_param = cJSON_CreateObject();
    switch(val->type){
        case BLINKER_PARAM_POWER_STATE:
        
        ESP_LOGI(TAG, "BLINKER_PARAM_POWER_STATE: %s",val->s);
        if((strcmp(BLINKER_CMD_ON, val->s) == 0)){//打开命令

            gpio_set_level( GPIO_NUM_13, 0 );//闭合继电器,低电平有效
            vTaskDelay(500 / portTICK_PERIOD_MS);//延时500ms
            gpio_set_level( GPIO_NUM_13 , 1 );//断开继电器

        }else{//关闭命令
            gpio_set_level( GPIO_NUM_13 , 0 );//闭合继电器,低电平有效
            vTaskDelay(1000 / portTICK_PERIOD_MS);//延时1s
            gpio_set_level( GPIO_NUM_13 , 1 );//断开继电器
        }
        blinker_aligenie_power_state(ali_param,val->s);
        break;
        case BLINKER_PARAM_COLOR:break;
        case BLINKER_PARAM_MODE:break;
        case BLINKER_PARAM_COLOR_TEMP:break;
        case BLINKER_PARAM_COLOR_TEMP_UP:break;
        case BLINKER_PARAM_COLOR_TEMP_DOWN:break;
        case BLINKER_PARAM_BRIGHTNESS:break;
        case BLINKER_PARAM_BRIGHTNESS_UP:break;
        case BLINKER_PARAM_BRIGHTNESS_DOWN:break;
        case BLINKER_PARAM_TEMP:break;
        case BLINKER_PARAM_TEMP_UP:break;
        case BLINKER_PARAM_TEMP_DOWN:break;
        case BLINKER_PARAM_HUMI:break;
        case BLINKER_PARAM_LEVEL:break;
        case BLINKER_PARAM_LEVEL_UP:break;
        case BLINKER_PARAM_LEVEL_DOWN:break;
        case BLINKER_PARAM_HSWING:break;
        case BLINKER_PARAM_VSWING:break;
        case BLINKER_PARAM_MODE_STATE:break;
        case BLINKER_PARAM_GET_STATE:break;
        default:break;

    } 
    cJSON_Delete(ali_param);
}
  1. 在spp_main 函数中初始化gpio,注册天猫精灵回调函数

void app_main()
{
    blinker_init();
    init_gpio();//初始化gpio
    blinker_widget_add(BUTTON_1, BLINKER_BUTTON, button1_callback);
    //
    blinker_aligenie_handler_register(aligenie_callback);//注册天猫精灵回调函数
    blinker_data_handler(data_callback);
}

完成之后开始编译烧写

make all

make flash

六、接线

一般来说电脑关机之后usb5v是正常工作的,所以找一个usb的电源接上这个继电器驱动模块

电脑的开机线接到如图所示的地方。

七、blinker绑定天猫精灵

在天猫精灵app里面搜索blinker然后绑定点灯科技的账号,成功后点灯科技app里面的设备就同步到天猫精灵了,然后就可以用语音通过天猫精灵控制电脑开关机了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现esp8266阿里云接入天猫精灵,你可以按照以下步骤进行操作: 1. 首先,你需要搭建esp8266的开发环境。你可以参考\[1\]中提供的链接,了解如何在Arduino IDE环境下搭建esp8266的开发环境。 2. 接下来,你需要创建阿里云物联网设备并获取设备的MQTT连接三元素。你可以参考\[1\]中的链接,了解如何在阿里云物联网平台上创建设备并获取MQTT连接三元素。 3. 然后,你需要设置天猫精灵的技能。你可以参考\[1\]中提供的链接,了解如何设置天猫精灵的技能。 4. 在天猫精灵发送指令后,你需要在服务器端进行处理并执行相应的控制操作。你可以使用服务器端开发语言PHP,并使用阿里云PHP IoT SDK来实现与阿里云物联网esp8266的交互。 综上所述,要实现esp8266阿里云接入天猫精灵,你需要搭建esp8266的开发环境,创建阿里云物联网设备并获取设备的MQTT连接三元素,设置天猫精灵的技能,以及在服务器端进行处理和执行控制操作。你可以参考\[1\]和\[2\]中提供的链接,了解更多详细的操作步骤和代码示例。 #### 引用[.reference_title] - *1* *3* [ESP8266开发、ESP8266连接阿里云物联网天猫精灵控制esp8266esp8266一键配网、智能家居](https://blog.csdn.net/jiangfeng6533/article/details/111667649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【阿里云生活物联网架构师专题 ③】esp32 sdk 直连接入天猫精灵IOT开放平台,实现天猫精灵找队友零配网功能...](https://blog.csdn.net/xh870189248/article/details/102482053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值