Arduino+esp32+blinker第一课点灯
文章目录
- Arduino+esp32+blinker第一课点灯
- 前言
- 一、开发环境搭建
- 二、开发第一个点灯程序
- 1.添加设备
- 2.载入示例
- 3.代码部分
- 4.关键代码讲解
- 5.程序烧写
- 总结
前言
为了实现远程控制,加深为物联网知识的认识,今天就教大家如何用手机app来控制我们的开发板,通过控制开发板点亮一盏灯。我们的开发环境是以arduino IDE为开发基础,通过blinker服务器来控制我们的esp32 WiFi模块,来点主板上的闪光灯。
一、开发环境搭建
- arduino的安装
选择 arduino开发的环境原因是,它有好的库,所以在开发过程中就非常的简单
Arduino IDE 是Arduino官方提供的开发环境–点击下载
- 添加esp32开发板
- 我们刚安装的 ide中是没有 esp32开发板选项的。我们需要自己手动安装
- 我们首先下载,这个安装包,然后直接运行就可以将其导入
esp32开发板下载地址 - 我们打开工具,点击开发板观察到,多出来上面的开发板选项就证明安装成功
- blinker库的导入
我们是通过blinker服务器进行开发的,所有我们需要添加blinker库,正因为有这些库,我们只需要使用里面封装好的函数就可以了
下载地址:
点击去下载
添加方法
我们需要将我们下载的文件,解压到我们arduino 软件安装目录下的 libraries文件夹下
安装成功我们可以看到如下
4.下载并安装blinker APP
android下载:点击下载 IOS下载:app store中搜索“blinker”下载
二、开发第一个点灯程序
1.添加设备
2.载入示例
根据提示,有好多种组件可选,我们可以先尝试最简单的
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这个是比较简单的程序,我们先搞明白app如何调用到的esp32开发板,后面再进行拓展学习,注意一点现在市面上的wifi模块的开发板很多,所以在模块的选择和电脑的连接上存在差异。