论文部分内容阅读
在开源硬件编程中,树莓派是一种卡片般大小的微型电脑,专为学生计算机编程教育或进行嵌入式开发而设计;古德微机器人网站提供了“积木”式编程方式,使得中学生(甚至是小学生)编程的难度大为降低;“钉钉”是类似于QQ的群聊沟通软件,通常的应用场所是企事业单位内部工作群交流。如果将三者联合起来,又会碰撞出什么“火花”呢?本文中我们打造出一个基于古德微和树莓派硬件组合的钉钉“守望者”机器人,这个硬件机器人在钉钉工作群中有一个虚拟机器人账号,当它的摄像头或超声波传感器监测到异常情况时,会在钉钉群中发送文字信息提醒用户,并且将抓拍的画面同步输出。下面,我们分别进行树莓派实验器材连接、钉钉群机器人设置和古德微“积木”编程,最终完成“守望者”的打造。
实验器材:树莓派3B+一块,古德微扩展板一块,HC SR04超声波传感器一个,P5V04A SUNNY定焦摄像头一个。
首先,将树莓派主板的CSI卡槽接口(标注有“CAMERA”字样)的黑色塑料锁扣两端轻轻向上拉起,将摄像头数据线银色一面对准竖纹金属面小心插入后再将锁扣两端向下压紧锁好,完成摄像头与树莓派的连接操作;接着,将古德微扩展板与树莓派进行“对接”;然后,将超声波传感器插入扩展板标注有“超声波”字样的20、21四个插孔,注意四个引脚的标注要与扩展板相同;最后,给树莓派通电,启动操作系统(如图1)。
在电脑端登录自己的钉钉,进入待设置的某钉钉群。
(1)添加自定义机器人
先點击群右上角的齿轮状图标,在“群设置”中点击“智能群助手”,再点击“添加机器人”右侧的“+”图标;在弹出的“群机器人”页面中“选择要添加的机器人”中选择最后一个“自定义:通过Webhook接入自定义服务”,点击“添加”按钮(如图2)。
(2)生成密钥字符串
首先在“机器人名字”处设置机器人名称,比如“古德微树莓派守望者”;接着勾选“加签”,在下方的密钥字符串上点击右键进行复制:“SEC2984……565”,粘贴保存至新建的文本文件中,待用;然后再勾选下方的“我已阅读并同意《自定义机器人服务及免责条款”项,点击“完成”按钮。
(3)生成Webhook
此时就会生成Webhook:
https:∥oapi.dingtalk.com/robot/send?access_token:9bb4d3……a4b6,点击右侧的“复制”按钮,同样将它粘贴至文本文件中进行保存,最后点击“完成”按钮,注意Webhook泄露会有安全风险。
此时返回钉钉群,就有一条新的群消息“大家好!我是古德微树莓派守望者机器人,很高兴为你们服务”弹出,正是由刚刚我们建立的名为“古德微树莓派守望者”的机器人发出的。
注意:生成的密钥字符串和Webhook都要妥善保存好,下一步编程时需要使用它们。
在古德微机器人网站登录自己的账号,进行“积木”编程:
整体结构为一个“重复当‘真’”的循环体。建立的“超声波测距”变量是用来存放每次超声波传感器检测到的与障碍物间的距离值,通过条件“超声波测距<20”来判断是否有异常情况发生,即“闯入者”与超声波传感器的间距小于20(单位为cm);条件成立的话,则控制摄像头执行抓拍动作,生成图片文件image.jpg(保存于树莓派的/home/pi/imageTemp/目录中)。
接着进行钉钉机器人的初始化和参数设置:
从左侧“物联网”-“钉钉”中创建一个钉钉机器人,将Webhook值和secret值分别补充完整(上一步中生成的Webhook和密钥字符串);然后为钉钉机器人添加文字报警信息:“大家请注意,有情况!”同时保持默认的“@所有人@手机号”;接下来,将树莓派摄像头抓拍并生成的图片文件image]Pg进行发送。
最后,为循环体添加一个等待0.3秒的“休息”时间,防止程序一直占用树莓派的系统资源而造成死机(如图3)。
在树莓派安装的超声波传感器前方放置“海盗船”模拟有人入侵的情况,起始距离为20cm之外(如图4)。
在古德微机器人网站中先执行“连接设备”操作,出现五个绿色对钩后点击“运行”按钮;此时,注意观察钉钉群,静悄悄的,无任何异常情况。接着,将“海盗船”逐渐向树莓派靠近,当进入事先设定的小于20cm界限时,钉钉群中的古德微树莓派守望者先是发了一条文字信息:“大家请注意,有情况!”而且是“@所有人”的;然后就是一张图片,拍摄内容正是从树莓派摄像头角度获取的“海盗船”。
经过多次测试,均实现了预期目标,钉钉“守望者”及时发送了文字和图片达到了效果,大家不妨一试。本次我们通过互联网让树莓派和钉钉产生了联动,局域互联网的应用是我们学习编程不能忽略的重要部分,我们会在近期持续介绍类似的应用实例。
1.树莓派实验器材及连接
实验器材:树莓派3B+一块,古德微扩展板一块,HC SR04超声波传感器一个,P5V04A SUNNY定焦摄像头一个。
首先,将树莓派主板的CSI卡槽接口(标注有“CAMERA”字样)的黑色塑料锁扣两端轻轻向上拉起,将摄像头数据线银色一面对准竖纹金属面小心插入后再将锁扣两端向下压紧锁好,完成摄像头与树莓派的连接操作;接着,将古德微扩展板与树莓派进行“对接”;然后,将超声波传感器插入扩展板标注有“超声波”字样的20、21四个插孔,注意四个引脚的标注要与扩展板相同;最后,给树莓派通电,启动操作系统(如图1)。
2.设置钉钉群机器人
在电脑端登录自己的钉钉,进入待设置的某钉钉群。
(1)添加自定义机器人
先點击群右上角的齿轮状图标,在“群设置”中点击“智能群助手”,再点击“添加机器人”右侧的“+”图标;在弹出的“群机器人”页面中“选择要添加的机器人”中选择最后一个“自定义:通过Webhook接入自定义服务”,点击“添加”按钮(如图2)。
(2)生成密钥字符串
首先在“机器人名字”处设置机器人名称,比如“古德微树莓派守望者”;接着勾选“加签”,在下方的密钥字符串上点击右键进行复制:“SEC2984……565”,粘贴保存至新建的文本文件中,待用;然后再勾选下方的“我已阅读并同意《自定义机器人服务及免责条款”项,点击“完成”按钮。
(3)生成Webhook
此时就会生成Webhook:
https:∥oapi.dingtalk.com/robot/send?access_token:9bb4d3……a4b6,点击右侧的“复制”按钮,同样将它粘贴至文本文件中进行保存,最后点击“完成”按钮,注意Webhook泄露会有安全风险。
此时返回钉钉群,就有一条新的群消息“大家好!我是古德微树莓派守望者机器人,很高兴为你们服务”弹出,正是由刚刚我们建立的名为“古德微树莓派守望者”的机器人发出的。
注意:生成的密钥字符串和Webhook都要妥善保存好,下一步编程时需要使用它们。
3.古德微“积木”编程
在古德微机器人网站登录自己的账号,进行“积木”编程:
整体结构为一个“重复当‘真’”的循环体。建立的“超声波测距”变量是用来存放每次超声波传感器检测到的与障碍物间的距离值,通过条件“超声波测距<20”来判断是否有异常情况发生,即“闯入者”与超声波传感器的间距小于20(单位为cm);条件成立的话,则控制摄像头执行抓拍动作,生成图片文件image.jpg(保存于树莓派的/home/pi/imageTemp/目录中)。
接着进行钉钉机器人的初始化和参数设置:
从左侧“物联网”-“钉钉”中创建一个钉钉机器人,将Webhook值和secret值分别补充完整(上一步中生成的Webhook和密钥字符串);然后为钉钉机器人添加文字报警信息:“大家请注意,有情况!”同时保持默认的“@所有人@手机号”;接下来,将树莓派摄像头抓拍并生成的图片文件image]Pg进行发送。
最后,为循环体添加一个等待0.3秒的“休息”时间,防止程序一直占用树莓派的系统资源而造成死机(如图3)。
4.对钉钉“守望者”进行测试
在树莓派安装的超声波传感器前方放置“海盗船”模拟有人入侵的情况,起始距离为20cm之外(如图4)。
在古德微机器人网站中先执行“连接设备”操作,出现五个绿色对钩后点击“运行”按钮;此时,注意观察钉钉群,静悄悄的,无任何异常情况。接着,将“海盗船”逐渐向树莓派靠近,当进入事先设定的小于20cm界限时,钉钉群中的古德微树莓派守望者先是发了一条文字信息:“大家请注意,有情况!”而且是“@所有人”的;然后就是一张图片,拍摄内容正是从树莓派摄像头角度获取的“海盗船”。
经过多次测试,均实现了预期目标,钉钉“守望者”及时发送了文字和图片达到了效果,大家不妨一试。本次我们通过互联网让树莓派和钉钉产生了联动,局域互联网的应用是我们学习编程不能忽略的重要部分,我们会在近期持续介绍类似的应用实例。