Arduino+esp32+blinker第一课点灯


文章目录

  • Arduino+esp32+blinker第一课点灯
  • 前言
  • 一、开发环境搭建
  • 二、开发第一个点灯程序
  • 1.添加设备
  • 2.载入示例
  • 3.代码部分
  • 4.关键代码讲解
  • 5.程序烧写
  • 总结



前言

为了实现远程控制,加深为物联网知识的认识,今天就教大家如何用手机app来控制我们的开发板,通过控制开发板点亮一盏灯。我们的开发环境是以arduino IDE为开发基础,通过blinker服务器来控制我们的esp32 WiFi模块,来点主板上的闪光灯。


一、开发环境搭建

  1. arduino的安装
    选择 arduino开发的环境原因是,它有好的库,所以在开发过程中就非常的简单

    Arduino IDE 是Arduino官方提供的开发环境–点击下载

esp32点亮自带灯珠 esp32 点灯科技_#define

  1. 添加esp32开发板
  • 我们刚安装的 ide中是没有 esp32开发板选项的。我们需要自己手动安装
  • 我们首先下载,这个安装包,然后直接运行就可以将其导入
    esp32开发板下载地址
  • esp32点亮自带灯珠 esp32 点灯科技_esp32点亮自带灯珠_02

  • 我们打开工具,点击开发板观察到,多出来上面的开发板选项就证明安装成功

esp32点亮自带灯珠 esp32 点灯科技_arduino_03

  1. blinker库的导入
    我们是通过blinker服务器进行开发的,所有我们需要添加blinker库,正因为有这些库,我们只需要使用里面封装好的函数就可以了

下载地址:
点击去下载

添加方法
我们需要将我们下载的文件,解压到我们arduino 软件安装目录下的 libraries文件夹下

esp32点亮自带灯珠 esp32 点灯科技_esp32点亮自带灯珠_04


安装成功我们可以看到如下

esp32点亮自带灯珠 esp32 点灯科技_物联网_05


4.下载并安装blinker APP

android下载:点击下载 IOS下载:app store中搜索“blinker”下载

二、开发第一个点灯程序

1.添加设备

esp32点亮自带灯珠 esp32 点灯科技_物联网_06

2.载入示例

根据提示,有好多种组件可选,我们可以先尝试最简单的

esp32点亮自带灯珠 esp32 点灯科技_物联网_07

3.代码部分

#define BLINKER_WIFI 
#include <Blinker.h>

char auth[] = "4b35a5b03044";
char ssid[] = "xiaomi";
char pswd[] = "126789667";

#define BUTTON_1 "btn-abc"
#define LED_BUILTIN       4


BlinkerButton Button1(BUTTON_1);

void button1_callback(const String & state)
{
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    BLINKER_LOG("get button state: ", state);

    if (state == BLINKER_CM_BUTTON_TAP) {
        BLINKER_LOG("Button tap!");

        Button1.icon("fas fa-air-freshener");
        Button1.color("#FFFFFF");
        Button1.text("第一点灯程序");
        Button1.print();
    }
    
}

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();
    
    uint32_t BlinkerTime = millis();
    
    Blinker.print("millis", BlinkerTime);
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachata(dataRead);
    Button1.attach(button1_callback);
}

void loop()
{
    Blinker.run();
}

我们需要修改的部分
配置esp32连接网络的部分

char auth[] = " "; //上一步中在app中获取到的Secret Key
char ssid[] = " "; //你的WiFi热点名称
char pswd[] = " "; //你的WiFi密码

4.关键代码讲解

新建组件并绑定回调函数
blinker app上每个UI组件在设备端都可以创建一个对应的对象。创建方式如下:

组件类型  对象名(键名)

app中组件对应的键名可以在界面编辑模式下看到。
使用组件的数据键名创建对应的对象,这个对象就与blinker app界面上的UI组件进行了绑定。
blinker库定义了多种组件类型,对应app上UI组件类型,如
BlinkerSlider 滑块组件
BlinkerRGB 颜色拾取组件
BlinkerNumber 数值组件
BlinkerText 文本组件
如下,创建了按键组件和数值组件对应的对象:

BlinkerButton Button1("btn-abc");

定义开发板上的灯的io编号

#define LED_BUILTIN       4

新建组件对象

BlinkerButton Button1(BUTTON_1);

app调用esp32的回调函数

void button1_callback(const String & state)
{
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    BLINKER_LOG("get button state: ", state);

    if (state == BLINKER_CMD_BUTTON_TAP) {
        BLINKER_LOG("Button tap!");

        Button1.icon("fas fa-air-freshener");
        Button1.color("#FFFFFF");
        Button1.text("第一点灯程序");
        Button1.print();
    }
    
}

让程序一直运行永不停止

void loop()
{
    Blinker.run();
}

5.程序烧写

我们在改为代码之后就可以往esp8266开发板内烧写程序了

注意

一般所购买的wifi模块,通过数据线就可以连接进行烧写

特殊的我们需要用到usb-ttl 来为其烧写程序

esp32点亮自带灯珠 esp32 点灯科技_开发板_08


总结

提示:这里对文章进行总结:
对于ESP32这个是比较简单的程序,我们先搞明白app如何调用到的esp32开发板,后面再进行拓展学习,注意一点现在市面上的wifi模块的开发板很多,所以在模块的选择和电脑的连接上存在差异。