手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信(上)

手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信(上)

前言:

本次实验是通过MQTT来进行手机端-设备端-电脑端三者之间的通信,MQTTX客户端实际上是模拟了第二个设备端,这样做能通过MQTTX客户端来更加清楚地了解其中的通讯过程。

手机端:我们采用点灯科技的blinkerAPP,使用点灯科技的APP能够十分方便我们在手机端的开发,其内部集成了很多组件,而且官网上也有很多的教程和示例文件,能够十分快捷的上手搭建可视化移动物联网平台,节省我们大量的手机端的开发时间。

注:对于blinker的broker(MQTT服务器)来说,若想连接它的服务器,利用它的服务器进行MQTT消息中转必须要通过APP中设备的密钥来请求指定的URL来获取官方提供的用户名和密码,在连接的时候必须使用该用户名和密码进行连接。

设备端(由于本篇中博主用的硬件设备是ESP32后续称设备端皆为ESP32)我们通过点灯blinker添加设备获取秘钥,再通过blinker提供的示例代码将密钥替换为自己设备的密钥,再烧入进我们的设备,这样我们就能够直接通过手机APP来控制我们的硬件设备来进行开关灯或者各种制动的操作。

MQTTX客户端:通过MQTTX客户端模拟第二个硬件设备连接点灯科技的broker(MQTT服务器),然后订阅ESP32发送的消息,用于测试手机端发送的消息ESP32能否成功接收到消息。

注:使用MQTTX模拟第二个硬件设备连接点灯科技的broker的目的是因为,要先接入该服务器才能订阅同一服务器内的其他硬件设备(接入的第一个设备:ESP32)。

PC端:我们使用Node-red中的MQTT来订阅接收手机端发来的消息,只要能够成功订阅接收到手机端和设备发布的消息,在通过Node-red中的其他组件即可完成对消息内容的解析和获取,从而实现PC端的数据显示和处理。

手机端的APP——点灯blinker

首先在手机上下载点灯blinker的APP
可以从博主分享的百度网盘链接下载也可以自己去官网下载APP。

百度网盘:

链接:https://pan.baidu.com/s/1DbUzs4NZd9DBf7bUVDRelA 
提取码:1234

官网:

https://diandeng.tech/home

在这里插入图片描述
①手机上下载完后,是这个图标。
在这里插入图片描述
②点开后注册blinker然后登录自己的账号,点击右上角的加号或者直接点击添加设备。
在这里插入图片描述

③选择独立设备
在这里插入图片描述
④接入方式选择网络接入
在这里插入图片描述
⑤网络接入,点灯科技给我们提供了多种方式,为了兼容其他版本的APP我们选择点灯科技的通信服务商。(由于博主的blinker版本是2.5.2的,所以接入方式有多种,但是有些新版本没有阿里云等其他的接入方式,只有点灯科技的选项,咨询过官方人员,答复是兼容性问题,因此我们选择点灯科技的服务商。)

在这里插入图片描述
⑥点击完毕后,会获取一串Secret Key点击复制key(记录下该密钥,后期有重用)
在这里插入图片描述
⑦点击返回我的设备,点击新的设备进入,此时设备处于离线状态不过无关紧要

在这里插入图片描述
⑧进入引导界面,我们直接载入示例界面即可,本次教学只做简单测试,后续其他组件功能自行根据官方文档进行探索。
在这里插入图片描述
⑨此时界面如此,我们点击右上角的省略号进入设置页面,该页面能够更改设备名称方便记忆,也可以重新查看设备的密钥(Secret Key)
在这里插入图片描述
此时我们ESP32的手机APP的这边的准备已经结束了,接下来我们准备烧录Arduino程序进我们的ESP32硬件设备中了。

设备端—ESP32

①博主的设备长这样
在这里插入图片描述
②可以登陆点灯科技的开发者社区来学习点灯科技Arduino部分的学习。
在这里插入图片描述

网址:https://www.arduino.cn/forum-132-1.html

②查看点灯官方的文档。查看教程详细步骤
在这里插入图片描述

详细步骤,博主就在此不演示了,有兴趣的可以查看文档学习学习,博主在此处直接贴出源码和blinker的库文件包。

③blinker的库文件包。
在这里插入图片描述

百度网盘:

链接:https://pan.baidu.com/s/1jcTujA87I4lZtebMQ1CKTA 
提取码:1234

将其下载下来然后解压到Arduino的libraries的目录下即可,当你再次打开Arduino的软件的时候,会自动加载该库文件,即可调用该库文件中的方法。
在这里插入图片描述

注意:该libraries的路径一定要正确,注意查看自己的安装路径,一般都在系统盘的文档目录下。

④打开Arduino选择自己开发板对应的开发板型号
在这里插入图片描述

⑤输入这段代码,并将设备密钥和WiFi改成自己的,然后烧录进硬件设备中

#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "2395afc2d3e7"; //之前在点灯手机APP中获取的密钥
char ssid[] = "401";          //设备所连接的WIFI
char pswd[] = "04010401";     //设备所连接的WIFI的密码

// 新建组件对象
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();
}

⑥烧录完毕后,硬件设备的LED2会亮起。

源码定义的地方
原因是因为在点灯提供的库文件中的定义了若硬件设备为ESP8266或者ESP32的话LED_BUILTIN的宏值为2,若为其他的硬件设施LED_BUILTIN的宏值则为13,若想修改则需要修改源码中的宏定义。
在这里插入图片描述
设备状态
运行该示例代码的时候引进2会驱动小灯亮,博主的ESP32板载了LED灯,因此可以看到此时的蓝色小灯已经亮起。
在这里插入图片描述
手机APP-blinker的界面状态
点灯blinker手机APP上之前添加的设备会显示ESP32设备在线,而且每隔60秒点灯科技的服务器会给设备发送一个消息来判断设备是否在线,若设备在线则会自动返回一下设备的状态。(成为心跳)
在这里插入图片描述
⑦点击右上角的“点我开关灯”组件按钮,关闭小灯
此时服务端会给ESP32设备发送一串JSON报文(蓝色的报文),此时ESP32设备端会返回一串报文响应(黑色报文),然后ESP32硬件上LED灯会由亮变暗
界面状态
在这里插入图片描述
设备状态
在这里插入图片描述

至此:手机端和设备端之间通信和制动的部分已经完成,由于篇幅过长,博主将会在下一篇中,继续完成剩余部分。

Blinker是一个支持多种平台的物联网开发框架,可以方便地在Arduino上使用Blinker手机App进行设备控制。以下是使用Blinker手机App在Arduino上进行设备控制的步骤: 1. **准备工作**: - 硬件:Arduino开发板(如Arduino Uno)、网络模块(如ESP8266)、LED灯、杜邦线等。 - 软件:Arduino IDE、Blinker库。 2. **安装Blinker库**: - 打开Arduino IDE,进入`工具` -> `库管理器`。 - 在库管理器中搜索“Blinker”,然后点击安装。 3. **连接硬件**: - 将网络模块(如ESP8266)连接到Arduino开发板。 - 将LED灯的正极(长脚)连接到Arduino的一个数字引脚(如D2),负极(短脚)连接到GND。 4. **编写代码**: - 打开Arduino IDE,新建一个项目。 - 在代码中引入Blinker库,并配置WiFi和Blinker的认证信息。 ```cpp #include <Blinker.h> char auth[] = "Your Device Secret Key"; char ssid[] = "Your WiFi network SSID"; char pswd[] = "Your WiFi network password"; #define LED_PIN D2 BlinkerButton button1("button1"); void button1_callback(const String & state) { if (state == "ON") { digitalWrite(LED_PIN, HIGH); Blinker.print("LED ON"); } else if (state == "OFF") { digitalWrite(LED_PIN, LOW); Blinker.print("LED OFF"); } } void setup() { Serial.begin(115200); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); Blinker.begin(auth, ssid, pswd); button1.attach(button1_callback); } void loop() { Blinker.run(); } ``` 5. **上传代码**: - 将Arduino开发板通过USB连接到电脑。 - 在Arduino IDE中选择正确的开发板和口。 - 点击上传按钮,将代码上传到Arduino开发板。 6. **配置Blinker手机App**: - 下载并安装Blinker手机App。 - 打开App,登录或注册账号。 - 添加新设备,输入设备的认证信息(Device Secret Key)。 - 在App中添加一个按钮组件,并将其与代码中的按钮ID(如button1)关联。 7. **测试**: - 打开App,点击按钮组件,观察LED灯的状态变化。 通过以上步骤,您就可以使用Blinker手机App在Arduino上控制LED灯了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值