【创意设计】小凌派手势应用之原力控制星球大战BB-8机器人

在上一篇文章中,我分享了 小凌派隔空操作迪文cof智能屏 ,这次再给大家分享一个更有趣的智能手势应用----小凌派rk2206鸿蒙开发板赋予你原力,隔空控制星球大战bb-8机器人。
在这篇文章中,你将会了解到如下的信息:
人气超高的星球大战之bb-8机器人
控制bb-8机器人的服务工具
小凌派rk2206开发板之智能手势
小凌派之openharmony 无线联网
小凌派之openharmony mqtt连接
小凌派手势控制bb-8机器人
本文中,涉及到的代码全部开源,代码库如下:
bb-8 网页控制界面
星球大战bb-8机器人控制测试与转发工具
小凌派手势应用之原力控制星球大战bb-8机器人实例
人气超高的星球大战之bb-8机器人
星球大战系列电影之中,有两个少有的几乎出现于所有星球大战系列电影的角色,那就是r2-d2和c-3po
而在2015年的宇宙史诗电影《star wars:原力觉醒》中登场的bb-8球型机器人,虽然是后辈,但其热度,快速赶超两位前辈,成为铁杆星战迷的最爱之一
万万没想到,接手星球大战的迪斯尼,居然推出了同款玩具
狠狠的掏了我这个老星战迷的腰包。如果上天再给我一次机会,我一定不会后悔第一时间抢到了bb-8机器人!!!
控制bb-8机器人的服务工具
通常情况下,要控制bb-8,需要使用专门的手机app,或者使用sphero的开发工具。
operasoftware/bb8 实现了一个网页界面的基础控制功能,honestqiao/bb8 在此基础上进行了完善,增加了方向键按键控制功能,并实现了websocket、mqtt支持,从而使得其他设备,可以通过websocket和mqtt,来间接控制bb-8。
进一步的,我开发了转发工具,为 honestqiao/bb8 提供完整web运行环境,并对外提供tcp socket、websocket、mqtt控制能力,任何能够使用tcp socket、websocket、mqtt的设备、程序等,均可以控制bb-8。
关于该工具的具体使用,可以查看:星球大战bb-8机器人控制测试与转发工具
网页控制界面:
指令转发界面:
最终,小凌派rk2206开发板将会通过mqtt,根据识别到的手势,发送对应的指令给bb-8,从而控制bb-8机器人。
小凌派rk2206开发板之智能手势
关于开发板对智能手势的具体支持,可以查看: 小凌派-rk2206开发板e53模块开发——智能手势
该智能手势扩展板能够识别的手势,有上下左右、靠近/离开、顺时针、逆时针、摆动。
其具体的代码,在 vendor / lockzhiner / rk2206 / samples / c6_e53_gesture_sensor 目录中,我们可以查看具体的处理细节:
在该代码中,通过 e53_gs_get_gesture_state()接口函数,从手势传感器paj7620u2读取当前识别到的手势,然后输出,并点亮扩展板上对应的led。
在后续的代码中,将会基于上面的代码,使用上下左右控制bb-8的运动,使用靠近来变换bb-8的灯光颜色。
小凌派之openharmony无线联网
在rk2206开发板openharmony的samples中,没有直接提供wifi连接的实例。
从 vendor / lockzhiner / rk2206 / samples / d1_iot_mqtt 中,我们可以得到对应的调用处理方式,实际上,只要下面一行代码,就会自动启用wifi连接功能:
 setwifimodeon();
该接口具体定义,在如下代码中:
我们还需要到该文件的头部,修改ssid和password的定义,就是我们要连接的无线的名称和密码:
设置好对应的ssid和password,在我们的代码中,调用setwifimodeon(),就能具有网络功能了。
小凌派之openharmony mqtt连接
在 vendor / lockzhiner / rk2206 / samples / d1_iot_mqtt 中,我们可以了解到使用mqtt服务的细节:
在上述代码,我们重点关注如下的接口调用:
networkinit(&network):初始化网络句柄
networkconnect(&network, 192.168.0.107, 1883):连接到mqtt服务端口
mqttclientinit(&client, &network...):初始化mqtt client
mqttconnect(&client, &data):开启mqtt服务
mqttsubscribe(&client, substopic...):订阅topic,用于接收
mqttpublish(&client, iot_mqtt, &message):发布topic,用于发送数据
通过这些接口,我们就能够使用mqtt服务来收发数据了。
在使用mqtt服务之前,我们需要先有mqtt服务端,通常有下面的两种方式:
使用emqx提供的公共服务:一文了解主流在线公共 mqtt 服务器
自己建立,可以见参考 快速开始使用 emqx
获得mqtt服务端后,我们可以使用如下的工具进行测试:
其具体使用,可查看上述的 快速开始使用 emqx。
配置并编译 vendor / lockzhiner / rk2206 / samples / d1_iot_mqtt 下载到开发板以后,我们可以在mqtt客户端,给 substopic 这个主题发送指令,开发板就会收到;同时,如果订阅 iot_mqtt ,就能收到开发板发送出来的信息了。
小凌派手势控制bb-8机器人
在以上智能手势识别、wifi联网、mqtt使用的基础上,我们就可以结合起来,进行bb-8的控制了。核心控制部分的代码如下:
在上述代码中,通过手势传感器,获得当前的手势,如果检测到了上下左右手势,就发送move指令;如果检测到了靠近手势,就发送color指令。
控制bb-8时,使用的mqtt的topic为device/bb-8/command,可以通过mqtt客户端给该topic发送指令,检查控制是否生效。
bb-8受控运动时,使用的是直角坐标系,以默认中心点(150,150)为基础在第一象限运动,发送移动后的坐标,其离中心点越远,则移动的速度越快,时间越长。
因此,根据识别到的手势,具体设置的情况如下:
上:x保持不变,y-=50,发送move指令
下:x保持不变,y+=50,发送move指令
左:y保持不变,x-=50,发送move指令
右:y保持不变,x+=50,发送move指令
靠近:灯光颜色索引c_idx++,发送color指令
详细的完整代码实例,可以查看:小凌派手势应用之原力控制星球大战bb-8机器人实例
通过以上的各项关联,我们就可以像星球大战中的绝地大师那样,使用原力,隔空御物,控制bb-8机器人啦。

面筋测定仪的使用步骤及注意要点的介绍
全球制造业正在飞速发展但未来的工业前景仍不明朗
华硕为NUC 9推出RTX 2070 MINI显卡,搭载Auto-Extreme技术
全国政协科协界委员调研燧原科技青年科技人才发展情况
超声波探头的结构组成_常用的超声波探头规格型号
【创意设计】小凌派手势应用之原力控制星球大战BB-8机器人
创近3年新高!这条年增长率超21%的传感器赛道,苹果华为等巨头投入巨大
华为P30Pro摄像头参数曝光 ISO达到惊人的409600可见夜拍能力的恐怖
数字取代模拟工业电脑追求高效成趋势
基于LPC2294控制器的CAN总线网状冗余节点方案
vivo X27将手机拍照再一次推向新的高峰
iOS10.3最新消息汇总:iOS10.3.3,正式版值得升吗?深度评测iOS10.3.3正式版,iOS10.3.3正式版降级教程
与乐视合作Lucid厂商第一款电动车面世 可实现2.5秒百公里加速
台积电集中5纳米投入生产苹果A14芯片 2020年第三季全球前十大晶圆代工厂营收预估排名出炉
GPRS DTU在高压开关柜温度监测当中的应用
比亚迪半导体光伏装机量增势明显带火IGBT市场
霍尔传感器在智能卷发器上的应用方案
智能化前沿:开始探索物联网的4个窍门
位移传感器的七大常见故障及排障方法
基于红外传感器的CO2气体检测电路设计