查看: 99967|回复: 96

[使用文档] [Arduino物联网开发实战1]控制开关灯

  [复制链接]

该用户从未签到

发表于 2018-12-15 23:32 | 显示全部楼层 |阅读模式

上一篇:blinker开发实战0-开发准备

下面是我们的第一个blinker程序,请不要着急编译上传,因为我们还要对其进行简单的配置。

连接配置

在程序中找到名为auth、ssid和pswd的变量,
auth中填入在app中获取到的Secret Key,
ssid和pswd中填入你要连接的WiFi名和密码,如:

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

然后编译并上传以下程序:  

#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID or name";
char pswd[] = "Your WiFi network WPA password or WEP key";

// 新建组件对象
BlinkerButton Button1("btn-abc");

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    Blinker.vibrate();
}

void setup() {
    // 初始化串口,并开启调试信息
    Serial.begin(115200);    
    BLINKER_DEBUG.stream(Serial);
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
}

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

在APP中点击设备图标,即可进入该设备控制界面,点击按钮就可以控制Arduino上的LED灯开关。

程序解析

以下对blinker设备程序解析:

选择连接方式

blinker支持多种连接方式,

#define BLINKER_WIFI

用于指定设备接入方式,你还可以使用 BLINKER_BLE,不同的接入方式对应的Blinker初始化函数也不同:

蓝牙接入

#define BLINKER_BLE  
#include <Blinker.h>  

void setup() {  
    Blinker.begin();  
}

WiFi接入

#define BLINKER_WIFI  
#include <Blinker.h>  

void setup() {  
    Blinker.begin(auth, ssid, pswd);  
}

新建组件并绑定回调函数

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

组件类型  对象名(键名)

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

BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");

回调函数

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

绑定回调函数

Button1.attach(button1_callback);

当app中组件触发并发送到设备端时将触发该组件注册的回调函数

Blinker运行时

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

Blinker.run()语句负责处理Blinker收到的数据,每次运行都会将设备收到的数据进行一次解析。
在使用WiFi接入时,该语句也负责保持网络连接

开启调试信息

你可以在setup中添加以下语句,以查看调试信息

BLINKER_DEBUG.stream(Serial);

用于指定调试信息输出的串口,设备开发时调试使用,项目或产品成型后,可以删除。

如果需要查看更多内部信息,可以添加

BLINKER_DEBUG.debugAll();

下一篇:blinker开发实战2-数据反馈








该用户从未签到

发表于 2019-4-9 18:54 | 显示全部楼层
本帖最后由 nyx 于 2019-4-9 19:51 编辑
coloz 发表于 2019-4-9 17:18
1.可以自己在IDE中设置flash大小
2.我这边测试2560是正常的,请更新最新的库再测试 ...

找到问题了,下了今天的库,还有存放路径问题。
看来blinker库的位置很重要:重新翻了下例程,到处是雷啊。要求是库放在“我的电脑>文档>Arduino>libraries 文件夹中我原先是依照经验放在IDE的安装目录C:\Program Files\Arduino\libraries下。

另外可能库也有bug,今天下载的就可以;2月下的就不行


winxp32位下验证编译UNO和2560成功,一个20多k,一个21k。


今天的新问题是"技术员联盟“2017版WIN7 64位没法联网下ESP8266的2.5版,2016版WIN7 32位就可以。估计又是哪出错了。反正小问题,不用便是


点评

arduino IDE1.8.x后,库都是放到 我的电脑>文档>Arduino>libraries blinker库会经常更新,务必保持最新,才能和最新app搭配使用  详情 回复 发表于 2019-4-9 21:18

该用户从未签到

发表于 2019-3-1 17:12 | 显示全部楼层
请问怎么做一个显示灯是否打开的提示按键呢

该用户从未签到

发表于 2019-3-7 21:56 | 显示全部楼层
您好,我现在没法控制开关灯,不知道为什么,能否帮忙看下
这是我的帖子地址
https://www.arduino.cn/forum.php?mod=viewthread&tid=84637&page=1&extra=#pid452641

该用户从未签到

发表于 2019-3-27 19:34 | 显示全部楼层
先码一下,今晚开始研究wifiduino

该用户从未签到

发表于 2019-3-31 18:34 | 显示全部楼层
问个问题,按照你说的编译后上传出现了错误,
C:\Users\nagin\Documents\Arduino\libraries\blinker-library-master\src/Blinker.h:239:6: error: #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting.

     #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting.

exit status 1
为开发板 Arduino/Genuino Uno 编译时出错。

点评

其实你可以百度翻译下这句英文:“请检查你的模式设置” 请看上面例程,例程第一行都设置了连接模式  详情 回复 发表于 2019-3-31 20:01

该用户从未签到

 楼主| 发表于 2019-3-31 20:01 | 显示全部楼层
ockggy 发表于 2019-3-31 18:34
问个问题,按照你说的编译后上传出现了错误,
C:%users\nagin\Documents\Arduino\libraries\blinker-librar ...

其实你可以百度翻译下这句英文:“请检查你的模式设置”
请看上面例程,例程第一行都设置了连接模式

该用户从未签到

发表于 2019-4-2 20:09 | 显示全部楼层
请问BLINKER的WIFI模式是AP+STA模式吗?我想在使用BLINKER的同时再开启一个热点接受其它站点的信息再上传,可行吗?

点评

仅仅是STA模式,我认为是不行的,8266貌似不能同时AP+STA  详情 回复 发表于 2019-4-2 23:52

该用户从未签到

 楼主| 发表于 2019-4-2 23:52 | 显示全部楼层
s1113408363 发表于 2019-4-2 20:09
请问BLINKER的WIFI模式是AP+STA模式吗?我想在使用BLINKER的同时再开启一个热点接受其它站点的信息再上传, ...

仅仅是STA模式,我认为是不行的,8266貌似不能同时AP+STA

该用户从未签到

发表于 2019-4-9 09:04 | 显示全部楼层
ockggy 发表于 2019-3-31 18:34
问个问题,按照你说的编译后上传出现了错误,
C:%users\nagin\Documents\Arduino\libraries\blinker-librar ...

我的也是,后来发现是#define BLINKER_WIFI 语句前的#复制掉了!

该用户从未签到

发表于 2019-4-9 09:05 | 显示全部楼层
另外问问,此例程编译出来大约有527k,那么是不是无法在arduino UNO和2560上运行了?

点评

不同板子编译出来的大小不一样  详情 回复 发表于 2019-4-9 09:39
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

ESP8266结合blinker使用小爱同学电脑远程开机
ESP8266结合blinker使用小
blinker是点灯科技开发的面向广大物联网爱好者和创客公司研发的APP,可以安全快速有效
【Arduino】168种传感器模块系列实验(159)---MAX9814咪头传感器
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
【限时免费领】1000 块 Wi-Fi+BLE MCU 开发板
【限时免费领】1000 块 Wi
有! >>涂鸦智能 Wi-Fi+BLE MCU 开发板
Stduino UNO mini来了,你确定不了解下嘛
Stduino UNO mini来了,你
Stduino UNO mini基于Arduino UNO板型支持数字式调用引脚,例如:pinMode(13,OUTPUT)
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表