童车变身网红买菜车(二)
2023-02-14史泽辉
史泽辉
上期我们利用古德微机器人图形化编程平台实现了买菜车的远程遥控,但实际上路测试你会发现,因为服务器响应速度问题,延迟还是比较厉害的。本期我们换成巴法云物联网平台,用掌控板结合手机APP来优化体验(图1)。
一、实现原理
手机APP通过巴法云物联网平台发送消息,掌控板通过私钥订阅相关主题消息,当收到消息后做出相应动作(图2)。
二、硬件准备
三、实现过程
1. 巴法云物联网平台部署
提供物联网云服务的平台很多,如阿里云、华为云、亚马逊云、微软云、腾讯云、涂鸦智能、百度云、电信CTWing、移动OneNET、中国联通。今天我们用的巴法云是一款轻量级的物联网开发平台,支持发布和订阅模式,支持TCP长连接和MQTT多模式。因为物联网设备的特殊性,为了保证数据在低带宽、不可靠的网络中传输有效的数据,巴法云协议的设计原则是精简,不添加可有可无的功能,尽力保持云平台轻量级的特性,构思了一套新的平台产品交互语言。
1.1 登录注册
打开巴法云官网,https://cloud.bemfa.com,点击注册,邮箱即可注册,也可使用微信扫码,一键登录。
1.2获取私钥
登录完成后,可在控制台看到自己的私钥UID,如图3所示:
这个私钥就是我们手机APP和硬件之间进行通信的通行证,点开小眼睛可以看到私钥内容,复制,后面要用到它。
1.3创建主题
在控制台创建主题。规范名称是字母、数字或字母+数字组合,点击创建主题完成(图4)。
1.4 推送消息
在該主题处输入消息,点击推送即可。如果单片机已联网,并且订阅了这个主题,在此处推送消息,单片机就可以收到推送的消息。当然我们不可能在这里遥控小车,接下来我们来制作的手机APP里,会通过这个物联网平台云推送消息(图5)。
巴法云向主题推送消息,支持POST协议,格式是数据类型 "Content-Type":"application/x-www-form-urlencoded"
API 地址为 https://apis.bemfa.com/va/postmsg,其后必须连接相关参数,如下表所示:
如此,我们的发送方式就是:
https : //apis.bemfa.com/va/postmsg?uid=私钥&topic= 主题&type=3&msg=消息内容
其中私钥就是前面巴法云注册登录后那个UID,这是不可更改的。主题和消息内容是我们自己定义的。编辑完整上面的链接,在手机APP 的逻辑设计里直接使用。
2. 手机APP制作
2.1CoCo编辑器
制作手机APP 的软件和平台也很多,如App Inventor 等。本期我们使用的CoCo是编程猫自研的国内首款面向教育领域图形化手机应用编辑器(coco.codemao.cn)。它的低门槛、跨平台的特性使得不懂编程的人也可以制作出专业的APP,从而解决现实问题、实现创意(图6)。
2.2 组件设计
初次使用时可以跟着平台教程熟悉一下CoCo,点击右下角边看边做按钮进入边看边做模式。
制作我们要控制小车用的APP。从控件库拖四个按钮到舞台区,排列好。可以对舞台画布背景和按钮样式进行编辑,方法是单击选择按钮图标,在右侧的属性里进行相关参数设置(图7)。
2.3逻辑设计
分别给四个按钮编程,设置其HTTP客户端网址为我们在巴法云里编辑的完整推送地址https://apis.bemfa.com/va/postmsg?uid=私钥&topic=主题&type=3&msg= 消息内容,四个按钮分别发送消息内容为0、1、2、3,当然你也可以自定义消息内容如left、right 等,保持与硬件编程中的设置一致即可(图8)。
2.4 打包导出
应用编程完成后,点击打包按钮,生成一个.apk 文件,扫描二维码或者将apk下载传输到手机上,在手机上安装,就可以使用APP 了(图9)(图10)。
3. 掌控板程序编写
本期我们用的开发板是掌控板,编程软件是Mixly 图形化编程。当然你也可以用其他开发板如Micro:bit、树莓派等,编程也可以采用Mind+ 或者Python 代码编程。
3.1硬件连接
掌控板P8、P9、P13、P14 号端口分别接电机驱动板的IN1、IN2、IN3、IN4。电机驱动板从小车原来的12V电瓶取电(图11)。
3.2配置网络
当你的创作能力达到物联网应用的程度时,基本的图形化编程就不需要从基础讲起了吧。这里直接上程序截图,参考制作即可。
打开Mixly 图形化编程, 我们选择Arduino ESP32模块(图12)。
给掌控板配置网络为我们要用的WiFi和巴法云建立的应用(图13)。
3.4接收消息
订阅主题是我们在巴法云平台刚刚创建的,名称要一致。消息是APP里四个按钮发送的四个消息,这里分别是0、1、2、3,代表前进、后退、左转、右转。当接收到相应的消息,分别设置掌控板输出相应的信号,控制四个GPIO端口输出高电平(图14)。
3.2控制电机
电机驱动模块通过掌控板四个GPIO端口信号进行控制,分别对应驱动电机的前进后退和转向电机的左轉右转。这样,我们就实现了手机APP 通过物联网平台向掌控板发送指令继而控制电机的功能了。
逻辑如下表:
四、远程监控
远端图传我们依然采用现成的网络监控摄像头,通过小车上的随身WiFi 提供网络,此处不再赘述。下一期,我们将利用最小的模块ESP8266 亲手打造低造价高性能远程控制小车,敬请关注。