如何用小爱同学控制灯光

前段时间,无意中在头条看到了Blinker+小爱同学的演示视频,觉得挺有趣的,于是就开始了我的探索之路;

本人从事硬件设计,鉴于之前有过一些ESP32的开发,恰好手头有一块闲置的板子,然后就开始了踩坑之路,本文会以我自己的经历,尽可能详细的描述各个节点的配置,调试方面的工作,防止大家踩坑。

一、准备工作

1.1 搭建软件开发环境

·Arduino IDE :***/arduino-1.8.12-windows.exe 【如果觉得速度慢,可以拷贝链接到迅雷下载】

附上百度网盘链接:***/s/1XBxhn1eU9V7DSQa0VBB8rg 提取码:2qwm

·安装blinker 资源库:安装好Arduino IDE后,依次打开【项目】-【加载库】-【库管理器】-搜索【Blinker】,选择第一个By 【i3Water】0.3.3版本安装

DIY-小爱同学控制灯光

安装速度可能会有点慢,耐心等待即可,不要中途取消,否则可能会导致文件校验出错; 安装完成后可以在【文件】-【示例】-【第三方示例】找到安装的库

.默认安装路径在 C:Users你的电脑名字DocumentsArduinolibrariesBlinker ;实在无法下载的同学可以尝试手动解压,不过个人建议还是通过IDE下载

附上百度网盘链接:***/s/1Jstu0NpPpuz8KFWOJEvUjQ 提取码:p7ip

·安装ESP8266/ESP32扩展包:依次打开【文件】-【首选项】-【附加开发板管理器网址】,点击右边的小窗口图标

输入如下信息:***/dl/package_esp32_index.json

***/stable/package_esp8266com_index.json

DIY-小爱同学控制灯光

本来这个文件也是可以通过Git或者其他途径获取的,然后解压到:C:Users你的电脑名字AppDataLocalArduino15packages 下即可。

**但是本人测试发现,其他途径获取的扩展包,然后解压到指定的位置后,

在Arduino IDE上没有问题,但是在VScdoe环境中找不到开发板信息,无法继续玩耍了!

所以建议通过Arduino IDE 【工具】-【开发板管理器】-【搜索ESP32或者ESP8266】进行下载,速度会有点慢,建议早上6点左右下载,这时候速度会比较快;

DIY-小爱同学控制灯光

另外下载过程中千万不要点击停止,或者取消,一旦取消后软件容易卡死,重新打开软件后,看似可以断点续传下载,但是实际上下载完成后直接会报校验错误,需要重新下载;

·安装VsCode开发环境及Arduino插件:***/download 直接下载自己需要的版本,安装即可。

之后安装Arduino插件:在左边功能栏中选择应用商店,输入 Arduino 选择Microsoft的那个插件下载即可

DIY-小爱同学控制灯光

接着设置一下插件的相关信息,依次点击【文件】-【首选项】-【设置】,在搜索设置框中输入 Arduino ,在结果中点击 在Setting.json中编辑

DIY-小爱同学控制灯光

在这里输入你的Arduino IDE的安装路径,到文件夹那一项就可以截止,不需要精确到Arduino.exe ;

【注意一定需要英文字符】我的另外一项是自动保存参数,不要的可以忽略

{
"arduino.path": "D:/Design/Arduino",
"files.autoSave": "afterDelay"
}

到此位置,软件配置就完成的差不多啦;

1.2 选择合适的硬件环境

我这里用的是自己设计的一个小板子,大家有需要可以去买乐鑫的官方开发板:***/item.htm?spm=a1z10.3-c-s.w4002-22443450239.17.45d619b0nNhX2U&id=542143157571 【这里没有打广告的意思,大家可以自行选择适合自己的】

不同的开发板就是外设链接以及IO定义不一致,后期可以自行修改

接下来我们去打开一个示例程序:

使用VsCode的 【文件】-【打开文件夹】,选择C:Users你的电脑名字DocumentsArduinolibrariesBlinkerexamplesBlinker_Hello里的Hello_WiFi 文件夹

DIY-小爱同学控制灯光

之后点击软件的右下方Selece Board 选项,然后选择一个适合你的开发板,将板子链接至电脑,装好串口驱动,获取到自己的端口号 我这里也是随便选了一个板子,然后根据我自己的参数选择配置,各位不清楚自己硬件配置的可以去问购买的店家

DIY-小爱同学控制灯光

然后按照套路,或者网上的其他教程你肯定会去点击编译,下载了;这时候的你可能会发现串口无法打开,怎么点都没有反应【当然串口驱动必须装好的,而且串口也存在】
别着急,因为楼主也遇到了这种坑,待我慢慢道来
先找到你打开的编辑器,注意HELLO_WIFI 下方有一个ino文件,同时还有一个vscode 的配置文件,可能很多新用户没有这个文件,那也别着急,去任意地方拷贝一个,或者新建一个

DIY-小爱同学控制灯光

然后打开arduino配置文件,输入以下信息,端口号就是你的电脑实际端口号,输入正确后就可以点击编译,下载程序了;
{
"board": "esp32:esp32:esp32",
"configuration": "PSRAM=disabled,PartitiOnScheme=default_8MB,CPUFreq=240,FlashMode=dio,FlashFreq=80,FlashSize=8M,UploadSpeed=115200,DebugLevel=none",
"port": "COM3"
}

另外还有一个c_cpp_properties.json的配置文件,输入以下信息,其中第一个是你Blinker库的位置,下面两个是ESP32和ESP8266的扩展位置,方便后续程序跳转
这个Arduino IDE 无法跳转的问题实在是坑,用惯了跳转的我,第一次入手都不知道程序的参数和函数都是写些啥
{
"configurations": [
{
"name": "Win32",
"includePath":
[
"C:\Users\Dhg-PC\Documents\Arduino\libraries\Blinker\**",
"C:\Users\Dhg-PC\AppData\Local\Arduino15\packages\esp32\tools\**",
"C:\Users\Dhg-PC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\**"
],
"forcedInclude": [],
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}

接下来我们开始改造一下Hello_WiFi的例程,然后试一下用APP创建一个开关按钮,来控制一个LED灯的亮灭;
【App下载注册流程舍去。。。】
App端配置流程简略带过如下:【右上角添加】-【DIY设备】-【Arduino】-【WIFI接入】-【记住提供给你的Key】,然后返回我的设备,
这时候点击右上角的编辑,在下方菜单栏中选择添加一个按键,点击按键进入基础设置;数据键名为:btn-red(需要与代码保持一致),按键类型为:开关按键
其余自行设置后,保存配置;

DIY-小爱同学控制灯光DIY-小爱同学控制灯光DIY-小爱同学控制灯光DIY-小爱同学控制灯光DIY-小爱同学控制灯光DIY-小爱同学控制灯光

代码更改如下:

#define BLINKER_WIFI

#include <Blinker.h>
char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID";
char pswd[] = "Your WiFi network password";
// 新建按钮组件
BlinkerButton Button("btn-red"); //此处名字和你app上按钮保持一致
#define GPIO_RED_LED 5 //定义LED引脚的IO口,需要保持和你的硬件IO一致
// 按下按键即会执行该函数
void button_callback(const String & state) //这是按键的回调函数
{
BLINKER_LOG("get button state: ", state); //获取按键的状态,打印
if (state == BLINKER_CMD_ON) //如果收到ON信号
{
digitalWrite(GPIO_RED_LED, LOW); //将LED灯IO拉低,对于低有效的LED灯点亮,
BLINKER_LOG("Open red Success "); //如果是高有效需要将LOW改为High
Button.print("on"); //给App返回状态信号,方便后续关闭;
}
else if (state == BLINKER_CMD_OFF) //如果收到OFF信号
{
digitalWrite(GPIO_RED_LED, HIGH);
BLINKER_LOG("Close red Success ");
Button.print("off");
}
}
//初始化函数
void setup()
{
// 初始化串口
Serial.begin(115200); //设置波特率115200
BLINKER_DEBUG.stream(Serial);
// 初始化有LED的IO
pinMode(GPIO_RED_LED, OUTPUT);
digitalWrite(GPIO_RED_LED, HIGH); //将LED灯引脚初始化为高,关闭LED灯;
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button.attach(button_callback); //注册按键的回调函数
}
void loop()
{
Blinker.run(); //循环函数
}

然后选择下载,等待设备上线之后,就可以直接用按钮或者语音控制设备了;接下来如果要让小爱音箱控制那要怎么办呢;首先要更改代码,添加支持小爱的控制接口;

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT //小爱函数接口
#define BLINKER_PRINT Serial //小爱函数接口
#include <Blinker.h>
char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID";
char pswd[] = "Your WiFi network password";
// 新建按钮组件
BlinkerButton Button("btn-red"); //此处名字和你app上按钮保持一致
#define GPIO_RED_LED 5 //定义LED引脚的IO口,需要保持和你的硬件IO一致
// 按下按键即会执行该函数
void button_callback(const String & state) //这是按键的回调函数
{
BLINKER_LOG("get button state: ", state); //获取按键的状态,打印
if (state == BLINKER_CMD_ON) //如果收到ON信号
{
digitalWrite(GPIO_RED_LED, LOW); //将LED灯IO拉低,对于低有效的LED灯点亮,
BLINKER_LOG("Open red Success "); //如果是高有效需要将LOW改为High
BlinkerMIOT.powerState("on"); //给小爱返回状态信号,
BlinkerMIOT.print(); //发送状态信号
}
else if (state == BLINKER_CMD_OFF) //如果收到OFF信号
{
digitalWrite(GPIO_RED_LED, HIGH);
BLINKER_LOG("Close red Success ");
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
//初始化函数
void setup()
{
// 初始化串口
Serial.begin(115200); //设置波特率115200
BLINKER_DEBUG.stream(Serial);
// 初始化有LED的IO
pinMode(GPIO_RED_LED, OUTPUT);
digitalWrite(GPIO_RED_LED, HIGH); //将LED灯引脚初始化为高,关闭LED灯;
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
BlinkerMIOT.attachPowerState(button_callback);//注册小爱控制的回调函数
}
void loop()
{
Blinker.run(); //循环函数
}
然后需要将点灯App与小爱音箱进行关联,
打开米家App-选择下方【我的】-【其他平台设备】-【添加】-【点灯科技】-【登录账号】-【同步账号】
你就可以找到你的设备了,之后就可以用小爱同学控制开灯与关灯了;
当然如果你想又要按键控制,也需要小爱控制,你就做两个函数,分别注册一下回调函数就可以啦;
或者更加直接 两个函数写一个也可以的;

本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023-08-26 16:38
下一篇 2023-08-27 09:58

相关推荐

  • 华为手机丢了捡到还能用吗,捡到华为手机怎么处理才能自己用

    正文: 题主的意思是,我的华为手机丢了,别人捡去能否解锁继续使用。 答案是: 完全可以最坏的结果是,别人可以数据都不用清楚就可以解锁。 是不是非常的可怕?自己的照片,拍的小视频吖,…

    2023-03-31
  • 如何找回已被删除的安装包

    如果你手机下载的安装包或者链接文件,被删除了该怎么找回来? 今天,我就来教你一些实用性技巧,记得仔细认真看!如果你在手机上的QQ文件已经把对方手机聊天记录拉黑删除,又想找回对方发的…

    2023-07-27
  • 如何利用手机热点连上电脑上网

    出差在外,用电脑处理事情临时要用网络,而周边又没有安全的网络时,最好的办法就是用手机热点来连电脑。方便快捷又安全,连接方法如下: 1、手机端设置 在手机端要做的就是把WIFI热点设…

    2023-08-28
  • 老人手机什么品牌好(手机品牌销量排行榜)

    【大牌新品】精致耐用的高端按键老人机 飞利浦 E183A 国际品牌 老人专用设计 质量好信号强 好看好用 168元 产品名称:E183A 主屏参数:2.4英寸 320×2…

    数码科技 2023-08-26
  • 移动话费充值卡回收平台(50元移动充值卡怎么充话费)

    随着时间的推移,互联网充值系统愈加完善和便捷。在功能手机时代,常用的话费充值卡已经被人们淘汰。当时,只有输入卡密才能完成充值,但现在可通过多种应用程序直接购买或支付电话费。一旦手机…

    2023-06-04
  • 你走狗屎运什么意思

    有人曾说:“命由天定,运由己生”。人的一生都有辉煌的时刻,只不过有的人好运来得早些,有的人来得晚些! 那么,人的好运从哪里来呢? 第一,要从好身体来。拥有一个好身体不等于拥有一切,…

    2023-04-17
  • 小米手机定时开关机在哪里设置方法

    米粉们!你们知道小米手机定时开关机吗?小米手机定时开关机在哪里设置?先不说定时开关机,其实我们再使用包括小米手机在内的任何手机时,都很少会去关机吧! 手机工作了一天,在没能得到适度…

    2023-07-20
  • 苹果相机像素和安卓区别,苹果原相机曝光前后对比

    提到苹果,相信很多人都会想到流畅的iOS系统,也有人会想到万年不变的外观。的确,苹果在外观设计上确实挤牙膏明显,不少机型连续很多代都没有很大的改变,其中最具代表的就是iPhone …

    2023-04-30
  • 工作中常用ppt制作技巧有哪些

    一起学习一下: 1. 两幅图片同时动作 PowerPoint的动画效果比较多,但图片只能一幅一幅地动作。如果你有两幅图片要一左一右或一上一下地向中间同时动作,可就麻烦了。其实办法还…

    2023-02-01
  • 闲鱼的运营方式是什么

    闲鱼也是一个搞副业的好去处,虽然已经被一小部分人搞臭了,但是还是有运营的价值的 闲鱼原来是一个人二手商品的交易平台,随着电商流量分配不匀,很多商家就把商品放到了闲鱼进行交易,现在的…

    2023-04-18