在搞创客这几年,我接触到了许多不同的物联网服务,有EMQX、ONENET、Easy IOT、MixIO、blinker、Siot、Blynk等。其中最好的物联网平台是什么每个人的心中都有自己的答案,但最让我印象深刻的无疑是Blynk,它那轻松上手的拖拽式UI设计与丰富的功能组件拓展深深的吸引了我,曾经我也梦想着去做属于自己的APP,为此我也去学习了Appinventor并小有成就。但当我回过头来重新审视自己,我学Appinventor本意是结合自己所学的开源硬件知识,通过APP控制一些执行器并且显示传感器的值更好的为硬件服务,然而Appinventor尽管同样是图形化编程且相对简单,但想要与开源硬件结合仍然需要一定的技巧,想要学好需要耗费大量的时间和精力,现在的学生学业压力普遍偏重,没有过多的时间学习,这让我意识到,我似乎“误入歧途”了。于是我开始寻找一些简单易用的物联网平台,直到我遇到了Blynk,Blynk是一个与硬件无关的开源物联网平台(开源可控很重要,可以自己私有部署不必担心平台停服),它有着基于组件式低代码编程的特点,只需要极低的代码量便可实现丰富的交互效果,同时通过在手机APP上面进行简单的拖拽与设置便可拥有精美的UI界面与实用功能。为了能够让小伙伴们快速体验Blynk我利用M5stack ATOM Lite写了一个万能Blynk固件,通过网页即可完成相关配置使用,同时通过串口通讯可让任意单片机接入快速接入Blynk,下面一起来看看视频演示,视频中已事先注册账号并配置好了相关设置。
下面我们来看看本教程项目思维导图快速预览本教程关键点
接下来我们将按照思维导图开始本次教程
ATOM Lite 是M5Stack开发套件系列中一款非常小巧的开发板,其大小只有24 * 24mm
,提供更多GPIO供用户自定义,非常适合做嵌入式的智能硬件开发。主控采用了ESP32-PICO-D4
方案,集成Wi-Fi
模块,内置3D天线,拥有4MB
的SPI闪存,提供Infra-Red、RGB Led、按键和GROVE/HY2.0接口。板载Type-C接口可以快速实现程序上传下载,背面提供一个M2螺丝孔用于固定。它体积小巧功能强大,我们可以很方便的将其作为其他开发板的Wifi拓展。
• 基于ESP32开发
• 机身小巧
• 内置红外发射功能
• 带有可编程按键
• RGB LED指示灯
• 可扩展的引脚与接口
• 开发平台: Arduino [1]、 UIFlow[2]
以安卓手机为例下载Blynk软件后按照如下图所示步骤操作
打开APP点击Create New Account
填写注册邮箱与设置账号密码(邮箱用于接收项目授权码与邮箱通知)并点击下方图标自定义服务器地址
切换到CUSTOM并填写服务器地址为182.61.28.31(由齐护教育机器人提供的免费服务器),设置完成后点击OK
点击Sign Up注册新账号
注册成功点击Cool!Got it.
点击右上角二维码图标扫描项目克隆二维码(教程最后提供)非必须也可以自己点击New Project自己编辑
扫描二维码后出现项目基础UI控制界面,点击右上角螺母图标接入项目设置界面
根据实际需求点击下方按钮将项目授权码发送到邮箱或者复制到手机(结束后别忘了返回项目界面点击右上角三角形按钮切换为方形运行状态)
使用电脑在M5stack官网下载M5Burner软件后打开软件按下面步骤操作
选择ATOM板卡先点击Download下载固件然后点击Burn准备烧录固件
确认设备串口与波特率人后点击Start开始烧录固件等待固件烧录完成
打开电脑串口监视器将串口波特率与设置按如图操作(这里以Arduino IDE为例)按住ATOM Lite中间板载按钮不放,单击复位按钮直到ATOM Lite红蓝交替闪烁方可松开按钮。
串口打印提示信息其中包含已记录的服务器地址、端口号、Blynk授权码、WIFI名称与密码,首次使用需要配置自己的Blynk授权码与网络信息,手机或电脑连接提示的WIFI热点访问192.168.4.1进入Web配置界面。
以手机为例步骤如下
打开手机设置连接提示的网络热点
浏览器访问192.168.4.1进入Web配置界面并填写自己的项目授权码与网络信息并点击提交
点击提交后串口监视器打印提交的配置,进一步检查是否正确的
检查无误后重启ATOM Lite出现下面的界面
该信息包含了连接的网络名称,路由器分配IP地址网络延迟等信息,若APP中使用了虚拟引脚那么会自动同步所有的虚拟引脚数据到设备。
下面的表格中列举了项目预定义功能与相关引脚定义
Blynk虚拟引脚定义 | ATOM功能 |
V0 | Blynk颜色斑马组件(RGB LED GPIO27) |
V1 | GPIO25管脚状态(上拉输入) |
V2 | GPIO21管脚状态(上拉输入) |
V3 | GPIO22 PWM模拟输出(0-255) |
V4 | GPIO19 PWM模拟输出(0-255) |
V5 | GPIO23 PWM模拟输出(0-255) |
V6 | ATOM Lite板载多功能按钮单击、双击、长按开始、长按中、长按结束(分别对应0-4) |
V7 | ATOM Lite开机运行时间(时:分:秒形式) |
V8 | 未定义功能显示组件 |
V9 | 未定义功能按钮输入组件 |
ATOM Lite软串口 | 功能定义 |
GPIO 26 | RX |
GPIO 32 | TX |
9600 | 波特率 |
如下图所示将按钮与RGB连接到ATOM Lite
连接电路原理图如下
在Blynk中改变滑块值点击斑马颜色组件观察,按下按钮等快速体验ATOM Lite Demo,如下图所示,左侧改变UI组件观察右侧现象,右侧为改变GPIO19 PWM值
单击颜色斑马组件,ATOM Lite板载RGB灯颜色同步控制
按下外接红色按键GPIO25进度条值为0松开值为1,蓝色按键类比值同步到Blynk
依次改变APP PWM22、PWM19、PWM23将改变RGB红绿灯模块绿色、黄色、红色LED灯亮度
单击APP GPIO33切换红绿灯模块亮灭(红绿灯所有灯PWM值不为0)
ATOM Lite板载多功能按钮单击、双击、长按开始、长按中、长按结束APP板载按钮显示组件分别显示0-4
ATOM Lite板载多功能按钮单击ATOM Lite GPIO 33输出低电平、双击ATOM Lite GPIO 33输出高电平(Eventor Settings组件自定义逻辑方式)
APP系统运行时间显示组件V7显示ATOM Lite开机以来的运行时间
Blynk Eventor Settings组件是一个功能强大的组件,Blynk虚拟引脚上的值改变都会触发该虚拟引脚值改变事件,利用该事件可以动态修改虚拟引脚的值或者属性,下面是一个简单的例子通过单击红色按键(GPIO 25)点亮红绿灯模块,单击蓝色按键(GPIO 21)熄灭红绿灯模块
APP暂停运行项目点击Eventor Settings组件
点击添加新事件
选择触发的虚拟引脚
选择触发的逻辑为当值为某个值时触发
填写0意思为按下按键,然后点击完成
选择事件触发执行的结果为关闭引脚输出
选择控制的引脚为GP33(红绿灯模块GND引脚)
点击OK确认事件
类比添加蓝色按键事件触发开启引脚输出然后返回运行项目
结果如演示视频所示单击红色按键红绿灯模块点亮,单击蓝色按键红绿灯模块熄灭。
对于项目内已经定义功能的虚拟引脚可以直接驱动IO或者反馈IO的值,固件内未定义功能的虚拟引脚例如APP的V9按钮使用,串口(包含软串口)会输出如下所示的JSON格式字符串表示APP虚拟引脚向设备发送数据其中第一个数据V9表示虚拟引脚号是9,后面的0或1表示发送的数据,其都为字符串,设备上可以通过解析该字符串获取特定的虚拟引脚从而执行其他操作(只有固件未使用的虚拟引脚才有该JSON字符串输出)。
在上面我们可以获取到任意未定义功能的虚拟数据,那么如何向虚拟引脚推送数据呢?固件中我提供了与数据接收相同JSON格式的虚拟引脚数据推送方法,不同的是该方法可以向所有虚拟引脚推送数据,其中包括已定义功能的虚拟引脚,如下图所示串口(包含软串口)向虚拟引脚V8发送数据0,数据发送后串口将输出调试信息。
从上面我们可以知道对于未定义的虚拟引脚数据可以通过串口方式进行交互,那么其他单片机或开发板使用该JSON格式即可完成数据交互,接收到该格式数据表示APP向设备发送数据,反之发送格式数据表示设备向APP推送数据。
从上面串口通讯中我们知道了Blynk与其他开发板的数据交互都是JSON格式,其他开发板使用串口就可以方便的接入Blynk,以Makestart(将常见传感器执行器集成到一起的UNO兼容实验板)为例使用软串口将Makestart与ATOM Lite进行连接,接线图如下:
如果你使用的是Arduino UNO那么等效接线图如下,这里我们接入了一个按钮模块与LED模块。
使用Mixly软件编写下面程序,该程序必要程序注释已经标注,其他开发板请参考该程序构造与解析JSON字符串完成交互,该程序接收V9虚拟引脚值并赋值到数字输出引脚11控制LED,同时12引脚按钮单击向云端V8虚拟引脚发送一个随机数。(注意软串口不需要打印换行,ATOM Lite验证数据有效性,以[开头]结尾的才是有效数据)
将程序上传到开发板并按照演示视频操作,到这一步我们便完成了Blynk的快速体验。这里由于篇幅所限,Blynk的更多功能与组件没法一一介绍,如果你正在接触或者了解物联网那么Blynk你值得一试,随着国内图形化编程的兴起,让编程门槛大大降低,让越来越多没有任何基础的素人小白都能“轻松编程”,其中国内优秀的图形化编程平台Mixly与Mind+都已支持了Blynk拓展程序块,可以使用其实现更丰富的Blynk编程个性化控制,感兴趣的小伙伴可以自行去相关平台了解。
对于一个物联网平台来说的,自主可控是非常重要的,对于Blynk它是开源的这也意味着我们可以部署自己的私有服务器,下面我将使用Docker部署Blynk服务器,用到的平台是CasaOS(这个可以在前几期的物联网不求人-3D打印机伴侣一文了解或者自行百度)。第一步我们需要创建mail.properties邮箱配置文件,只有正确的配置该文件我们的Blynk服务器才能使用邮箱相关的功能发送授权码或者通知,配置文件内容如下
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.aliyun.com
mail.smtp.port=25
mail.smtp.username=xxxxxxxx@aliyun.com
mail.smtp.password=xxxxxxxx
mail.smtp.connectiontimeout=30000
mail.smtp.timeout=120000
这里用到的是阿里邮箱,当然你也可以用QQ邮箱等(某些邮箱可能屏蔽Blynk服务,若失败可尝试更换其他邮箱),使用该配置文件请确保你开通了邮箱SMTP服务并修改上面的信息为自己的邮箱服务器与账号信息。修改完配置文件后将该配置文件上传到下图所示中的路径中
Docker的命令如下所示,该Docker镜像支持amd64与arm64架构,可安装到大部分主机上。
docker run -d \
--name blynk \
-e INITIAL_ENERGY=100000 \
-e ADMIN_EMAIL=admin@mail.com \
-e ADMIN_PASS=admin12345 \
-v /blynk/config/mail.properties:/blynk/mail.properties \
-v /blynk/logs:/blynk/logs \
-v /blynk/data/backup:/blynk/data/backup \
-p 8440:8440 \
-p 8080:8080 \
-p 9443:9443 \
gegedesembri/blynk-server:latest
复制该命令然后安装下图所示步骤进行部署
点击图示+号添加自定义应用
点击导入配置文件
切换到Docker CLI命令行
粘贴命令点击提交
阅读注意事项
添加容器名称修改Web UI为图示
根据自己实际需求修改APP初始能量与后台管理账号与密码
耐心等待部署完成,完成后可以点击CasaOS主页Blynk字样图标进入Blynk服务器后台
Blynk能做的还有很多,例如你可以使用ATOM Lite搭配Blynk的WebHook组件通过文中IO或者串口触发方式请求微信或者邮件等通知API接口方式,将其作为一个网络通知模块使用,结合Nodered这个物联网的“万能胶水”甚至还可以将ATOM Lite作为一个类似天猫精灵“按呗”的智能家居控制神器用来实现你的各种奇思妙想。如果你想体验文中的Blynk项目不妨使用Blynk APP注册账号按照文中说明扫描下方二维码进行体验吧。
[1]
Arduino : http://www.arduino.cc/[2]
UIFlow: http://flow.m5stack.com/