新手入门之Blinker+ESP32+VsCode平台搭建【小白基础篇】-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8171|回复: 9

[分享] 新手入门之Blinker+ESP32+VsCode平台搭建【小白基础篇】

[复制链接]
发表于 2020-3-28 16:48 | 显示全部楼层 |阅读模式
本帖最后由 Ding3417 于 2020-3-29 00:39 编辑

   前段时间,无意中在头条看到了Blinker+小爱同学的演示视频,觉得挺有趣的,于是就开始了我的探索之路;
   本人从事硬件设计,鉴于之前有过一些ESP32的开发,恰好手头有一块闲置的板子,然后就开始了踩坑之路,本文会以我自己的经历,尽可能详细的描述各个节点的配置,调试方面的工作,防止大家踩坑。

一、准备工作
1.1 搭建软件开发环境
  ·Arduino IDE :https://downloads.arduino.cc/arduino-1.8.12-windows.exe 【如果觉得速度慢,可以拷贝链接到迅雷下载】
   附上百度网盘链接:https://pan.baidu.com/s/1XBxhn1eU9V7DSQa0VBB8rg 提取码:2qwm


·安装blinker 资源库:官方链接:https://codeload.github.com/blinker-iot/blinker-library/zip/master将下载好的blinker库
     解压到 C:\Users\你的电脑名字\Documents\Arduino\libraries\Blinker即可
    安装完成后可以在【文件】-【示例】-【第三方示例】找到安装的库
    如果无法下载的同学可以尝试百度网盘下载手动解压
    附上百度网盘链接:https://pan.baidu.com/s/1Jstu0NpPpuz8KFWOJEvUjQ 提取码:p7ip   



    ·安装ESP8266/ESP32扩展包:依次打开【文件】-【首选项】-【附加开发板管理器网址】,点击右边的小窗口图标
     输入如下信息:https://dl.espressif.com/dl/package_esp32_index.json
                             http://arduino.esp8266.com/stable/package_esp8266com_index.json
      微信截图_20200328144052.png

     本来这个文件也是可以通过Git或者其他途径获取的,然后解压到:C:\Users\你的电脑名字\AppData\Local\Arduino15\packages 下即可。
     **但是本人测试发现,其他途径获取的扩展包,然后解压到指定的位置后,
       在Arduino IDE上没有问题,但是在VScdoe环境中找不到开发板信息,无法继续玩耍了!
    所以建议通过Arduino IDE 【工具】-【开发板管理器】-【搜索ESP32或者ESP8266】进行下载,速度会有点慢,建议早上6点左右下载,这时候速度会比较快;
      微信截图_20200328144900.png
    另外下载过程中千万不要点击停止,或者取消,一旦取消后软件容易卡死,重新打开软件后,看似可以断点续传下载,但是实际上下载完成后直接会报校验错误,需要重新下载;



  ·安装VsCode开发环境及Arduino插件:https://code.visualstudio.com/download  直接下载自己需要的版本,安装即可。
   之后安装Arduino插件:在左边功能栏中选择应用商店,输入 Arduino 选择Microsoft的那个插件下载即可
    微信截图_20200328145649.png

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


  在这里输入你的Arduino IDE的安装路径,到文件夹那一项就可以截止,不需要精确到Arduino.exe ;
【注意一定需要英文字符】我的另外一项是自动保存参数,不要的可以忽略
{
    "arduino.path": "D:/Design/Arduino",
    "files.autoSave": "afterDelay"
}

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

1.2 选择合适的硬件环境

  我这里用的是自己设计的一个小板子,大家有需要可以去买乐鑫的官方开发板:https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-22443450239.17.45d619b0nNhX2U&id=542143157571  【这里没有打广告的意思,大家可以自行选择适合自己的】
不同的开发板就是外设链接以及IO定义不一致,后期可以自行修改


接下来我们去打开一个示例程序:
使用VsCode的 【文件】-【打开文件夹】,选择C:\Users\你的电脑名字\Documents\Arduino\libraries\Blinker\examples\Blinker_Hello里的Hello_WiFi 文件夹

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

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

然后打开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(需要与代码保持一致),按键类型为:开关按键
其余自行设置后,保存配置;

微信截图_20200328161244.png 微信截图_20200328161215.png 微信截图_20200328161310.png 微信截图_20200328161338.png 微信截图_20200328161326.png 微信截图_20200328161806.png
代码更改如下:
#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-选择下方【我的】-【其他平台设备】-【添加】-【点灯科技】-【登录账号】-【同步账号】
你就可以找到你的设备了,之后就可以用小爱同学控制开灯与关灯了;


当然如果你想又要按键控制,也需要小爱控制,你就做两个函数,分别注册一下回调函数就可以啦;
或者更加直接 两个函数写一个也可以的;





微信截图_20200328142520.png
 楼主| 发表于 2020-3-29 19:27 | 显示全部楼层
n1001 发表于 2020-3-29 07:38
VScdoe只识别C:%users\用户名\AppData\Local\Arduino15\packages下的板子,仿照其他的格式将ESP32移过去能 ...

这个暂时还没找到好办法,还是给C盘瘦下身比较合适
发表于 2020-3-28 21:04 | 显示全部楼层
安装blinker lib时,请按照文档所示下载最新的lib,不要通过IDE自带的库管理器安装文档:https://diandeng.tech/doc/getting-start-8266
发表于 2020-3-29 07:38 | 显示全部楼层
VScdoe只识别C:\Users\用户名\AppData\Local\Arduino15\packages下的板子,仿照其他的格式将ESP32移过去能识别,但我C盘要满了,就不干
发表于 2020-3-29 13:45 | 显示全部楼层
QQ截图20200329133450.png
这是什么意思呀
 楼主| 发表于 2020-3-29 19:25 | 显示全部楼层

这个头文件官方库里就没有。这个我之前也有,不过不影响编译;
 楼主| 发表于 2020-3-29 19:27 | 显示全部楼层
奈何col 发表于 2020-3-28 21:04
安装blinker lib时,请按照文档所示下载最新的lib,不要通过IDE自带的库管理器安装文档:https://diandeng. ...

多谢指导,已更正
发表于 2020-3-30 08:03 | 显示全部楼层
Ding3417 发表于 2020-3-29 19:25
这个头文件官方库里就没有。这个我之前也有,不过不影响编译;

那就行,不过还是想把它弄掉。我要是能弄出来给你说
发表于 2020-4-5 18:22 | 显示全部楼层
"WiFi.h" 对应多个库
                 from G:\ArduinoProjects\hello\hello.ino:3:

已使用: D:\Arduino\hardware\arduino-esp32\esp32\libraries\WiFi
C:\Users\Deleter\Documents\Arduino\libraries\blinker-library-master\src/BlinkerESPMQTT.h:11:32: fatal error: Blinker/BlinkerApi.h: No such file or directory

未使用:D:\Arduino\libraries\WiFi
compilation terminated.

exit status 1
为开发板 ESP32 Dev Module 编译时出错。


大佬大佬 这个是什么问题 我要删除其他的库吗
 楼主| 发表于 2020-4-9 07:49 来自手机 | 显示全部楼层
我看前面还有一个错误 没有找到api.h文件,你先看看对应路径有没有这个
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:29 , Processed in 0.125181 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表