如何用小爱同学控制灯光

前段时间,无意中在头条看到了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

相关推荐

  • 网站调用百度地图显示公司地址代码错误

    网站做好后,给网站调用地图坐标动态显示公司位置,方便客户在地图上查找你公司位置到公司洽谈业务。设置方法如下,详细教程请看账号里的对应视频 1、获取百度地图秘钥(AK) 百度地图开放…

    数码科技 2023-08-26
  • 手机看哪个软件好

    首选肯定是西瓜视频啦,我老姐二萌很早就开始跟我推荐这个软件,现在我们两个也是西瓜视频忠实的粉丝和创作者。都报名参加西瓜学院的学习,到目前为止已经连续报名学习了好几期,虽然还没有顺利…

    数码科技 2023-04-23
  • 怎么用微信发号到朋友圈(在朋友圈怎么制作9张以上图文)

    微信是现代社交生活中不可或缺的一部分,朋友圈更是用来分享生活中美好瞬间的地方。但微信朋友圈的图片数量限制常常让人感到苦恼,无法一次性分享多张照片。本文将教你如何使用微信发超过9张的…

    2024-01-17
  • 支付宝怎么赚零花钱,赚支付宝钱小游戏

    支付宝的话,有很多的方式去进行赚钱的。 第一:支付宝赏金 这个活动还是挺不错的,大家都有获利。 第二:集卡瓜分2亿红包 现在世界杯阶段,可以进行集公仔卡进行参与瓜分红包的活动。 第…

    2023-02-20
  • 行驶证识别车型(如何识别行驶证真假)

    行驶证识别的存在是因为在行驶证中没有储存证件信息的芯片,如果想要录入行驶证信息的话就只能采用人工录入的方式,但是人工录入速度慢不说,准确率也得不到保证。而中安未来行驶证识别通过oc…

    数码科技 2023-05-07
  • 手机充电器电量越充越少怎么回事

    相信很多小伙伴们都遇到过手机充电时电量不增反降的现象,手机出现这样的充电故障时使人心情很郁闷,因为我们不知道到底是手机本身的问题还是充电器的问题,无奈之下我们只能购买新的数据线或充…

    2024-01-14
  • 腾讯旗下的腾爱医生平台(潍坊人民医院创伤骨科滕医生)

    腾讯腾爱医生是为医生群体量身定做的平台产品。作为一个医生口碑平台,它为患者打造一个可信任的信息渠道,同时医生也可在此平台建立属于自己的品牌,通过信息透明赢取患者的信任,进而建立良好…

    2023-04-22
  • 小白首次使用苹果手机,需要注意哪些问题及设置?

    针对首次使用 Phone 的朋友,整理了一些基础设置指南和非常实用的注意事项(内容较多,建议收藏): 1、当面签收快递并检查包装。发现快递外包装或者手机包装有破损迹象,可以直接拒收…

    2023-06-07
  • oppo手机丢了如何注销oppo账户

    丢手机这件事,相比不少朋友都经历过吧,很多人第一时间都是报警,但其实这是不对的。正确的做法应该是借个电话,第一时间挂失手机号,避免别人获取验证码;随后致电银行客服,挂失手机网银账号…

    2023-02-23
  • 手机刷机后如何恢复数据

    上期我们说到怎么给手机刷机,但在刷机的过程中也有可能造成数据的流失 今天来教大家大家如何恢复原来的数据 1、首先将安卓手机和电脑连接 ,连接成功之后需要利用强力一键ROOT软件获取…

    2023-04-29