Arduino IDE安装esp32 SDK

  1. 安装Arduino IDE
  2. 打开Arduino IDE
  3. 打开Arduino IDE菜单 > 文件 > 首选项
image-20220609220616699

附加开发板管理器网址 输入框中,填入以下网址:
https://www.arduino.cn/package_esp32_index.json

image-20220609220747265
  1. 下载社区打包的esp32安装包,直接运行,程序会自动解压到相应位置

    下载地址:https://cloud.codess-nas.top:5213/s/2Ocn

二 实现LED灯闪烁

开发板:esp32-c3

编译环境如下图:

image-20220609224000695

完整程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int led1 = 12;
int led2 = 13;
void setup() {
//设置io口为输出模式
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
}
void loop() {
//向io 口写入高电平
digitalWrite(led1,1);
digitalWrite(led2,1);
//延迟1秒钟
delay(2000);
//向io 口写入底电平
digitalWrite(led1,0);
digitalWrite(led2,0);
//延迟1秒钟
delay(2000);
}

Blinker控制开关灯

  1. 下载并安装blinker APP

  2. 下载并安装blinker Arduino库(点灯科技官网下载)

  3. 通过Arduino IDE 菜单>项目>加载库>添加.ZIP库 导入到库,如图:

img

  1. APP中添加设备,获得key

Collage_20220609_230517_edit_18601561713306

5. 在app中创建按钮组件(以开关按键为例)

Collage_20220609_230424

6. 实例程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#define BLINKER_WIFI
#include <Blinker.h>

int led1 = 12;
int led2 = 13;

char auth[] = "e14b44d9a095"; // 设备key值
char ssid[] = "3-512传媒"; // WiFi名称
char pswd[] = "Mm.512512"; // WiFi密码

// 新建组件对象
BlinkerButton Button1("btn-abc"); // 创建的按钮组件名

// 按下按键即会执行该函数
void button1_callback(const String & state)
{
if (state=="on") {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
Button1.print("on");
}else if(state=="off"){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Button1.print("off");
}
}

void setup()
{
Serial.begin(115200);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
}

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

这里之所以使用开关类型的按键是因为esp32-c3digitalRead()函数没有进行适配,导致无法读取电位状态

四 数据反馈

  1. 添加DIY组件

Screenshot_20220609_232742_iot.clz.me
  1. 示例程序

实现按键按下向设备发送模拟数据,并更新温度和湿度值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#define BLINKER_WIFI
#include <Blinker.h>

char auth[] = "e14b44d9a095";
char ssid[] = "3-512传媒";
char pswd[] = "Mm.512512";

BlinkerButton Button1("btn-abc");
BlinkerNumber HUMI("num-wen");
BlinkerNumber TEMP("num-shi");

void button1_callback(const String & state)
{
if (state=="on") {
HUMI.print(25);
TEMP.print(30);
Button1.print("on");
}else if(state=="off"){
HUMI.print(0);
TEMP.print(0);
Button1.print("off");
}
}

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

Blinker.begin(auth, ssid, pswd);
}

void loop()
{
Blinker.run();
}
  1. 最终效果

Screenshot_20220610_000110_iot.clz.me

五 定时,设备共享

  1. 先设置动作指令(JSON格式)

1
2
3
4
5
6
7
8
{
"cmd":{"btn-abc":"on"},
"text":"打开?name"
},
{
"cmd":{"btn-abc":"off"},
"text":"关闭?name"
}
  1. 设置定时

Screenshot_20220610_001851_iot.clz.me
  1. 设备共享

    主用户 共享设备

    1. 在 设备设置页>设备共享 或 用户中心>设备共享>对应设备 可进入 设备共享页

    2. 点击 +添加共享,输入要共享的用户的手机号(用户需已经注册blinker)

    3. 等待用户接受共享

    子用户 接受/拒绝 共享

    1. 在用户中心>设备共享>接受 点击对应设备后的同意/拒绝

    1. 接受的设备不能修改设备相关配置
    2. 设备最多可共享给9位用户使用

blinker接入小爱同学

  1. 下载米家和小爱同学APP

  2. 打开米家App。通过 我的>其他平台设备>点击添加>点灯科技>绑定账号 ,绑定blinker账号

  3. 配置设备

1
2
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
  1. 打开米家App扫描到设备

  2. 示例程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>

int led1 = 12;
int led2 = 13;

char auth[] = "e14b44d9a095";
char ssid[] = "3-512传媒";
char pswd[] = "Mm.512512";

//语音控制电源,控制灯亮灭
void miotPowerState(const String & state)
{
if (state == BLINKER_CMD_ON) {
BlinkerMIOT.powerState("on");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
BlinkerMIOT.powerState("off");
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
BlinkerMIOT.print();
}
}

void setup()
{
// 初始化串口
Serial.begin(115200);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Blinker.begin(auth, ssid, pswd);
BlinkerMIOT.attachPowerState(miotPowerState);
}

void loop() {
Blinker.run();
}
  1. 用小爱同学发送指令(打开/关闭 灯)

LuatOS点亮lcd

编译器:Luatools

  1. 示例程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
PROJECT = "lcddemo"
VERSION = "1.0.0"

_G.sys = require("sys")

spi_lcd = spi.deviceSetup(2, 7, 0, 0, 8, 40000000, spi.MSB, 1, 1)

lcd.init("st7735s",{
port = "device",
pin_dc = 6,
pin_pwr = 11,
pin_rst = 10,
direction = 2,
w = 160,
h = 80,
xoffset = 1,
yoffset = 26
},spi_lcd)

sys.taskInit(function()
log.info("lcd.drawLine", lcd.drawLine(20,20,150,20,0x001F))
log.info("lcd.drawRectangle", lcd.drawRectangle(20,40,120,70,0xF800))
log.info("lcd.drawCircle", lcd.drawCircle(50,50,20,0x0CE0))
end)

sys.run()
  1. 效果展示

![qq_pic_merged_1654796015724](D:\Document\Tencent Files\2319507087\FileRecv\MobileFile\qq_pic_merged_1654796015724.jpg)

  1. 字符显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
PROJECT = "lvgldemo"
VERSION = "1.0.0"

log.info("main", PROJECT, VERSION)

_G.sys = require("sys")

spi_lcd = spi.deviceSetup(2, 7, 0, 0, 8, 40000000, spi.MSB, 1, 1)
log.info("lcd.init",
lcd.init("st7735s",{
port = "device",
pin_dc = 6,
pin_pwr = 11,
pin_rst = 10,
direction = 2,
w = 160,
h = 80,
xoffset = 0,
yoffset = 26
},spi_lcd))

log.info("lvgl", lvgl.init())
lvgl.disp_set_bg_color(nil, 0xFFFFFF)
local scr = lvgl.obj_create(nil, nil)
local btn = lvgl.btn_create(scr)
lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)
local label = lvgl.label_create(btn)
lvgl.label_set_text(label, "I LOVE YOU")
lvgl.scr_load(scr)

sys.taskInit(function()
while 1 do
sys.wait(1000)
end
end)

sys.run()
  1. 效果演示

![qq_pic_merged_1654796591427](D:\Document\Tencent Files\2319507087\FileRecv\MobileFile\qq_pic_merged_1654796591427.jpg)

八 AD的使用

1、绘制SCH libray 元件

1

2

3

4

2、画出原理图

5

3、绘制PCB library

6

7

8

9