写在前面的话
第二轮的项目分成了两部分来完成,Part A在国内完成了,Part B的编程部分在国内完成了大部分,到墨尔本后又接着写完了剩下的部分。而作品的外观除了生肖板是在学校切割的,其他都是女儿完成的。这个季节正好是女儿学校的暑假,教室里没人,所以我们去她教室里干活。特别感谢她,先设计了草图,又去学校的美术店买了两块巨大的纸板,一点点的裁剪、绘制,用热熔胶枪粘合,花了整整两天的时间纯手工完成了外观的制作。最后又帮我拍了视频并进行了编辑。大家可以看到Part A和Part B两个视频风格有很大的不同,这大概就是搞艺术和搞技术不一样的地方吧。
Chinese Zodiac Part A视频
Chinese Zodiac Part B视频
带出国的器材:
怕托运损坏,全部随身携带。收拾行李的时候被娃爸吐嘈,你是去看女儿还是去工作。俺说带着女儿一块儿玩。
本来还怕安检有问题,结果在香港海关只需把电脑单独拿出来,其他手机、平板、充电宝啥的都不用拿。到了墨尔本更夸张,全部走的自动通道,不用和活人打交道就入境了。安检...就没有安检。
作品外观草图:
裁剪巨型纸板:
修剪、绘制亭子的墙面:
假花:
将上面的假花草修剪,用热熔胶粘到亭子周围进行装饰:
大年29这天完成如下成果:
大年初四这天完成了所有外观并组装完成:
本来年初一去了一趟教室,结果building跳闸停电,保安说可能周一或周二才能弄好,为保险起见就年初四才过去。
步骤1 项目分析
把构思先用思维导图绘制出来,并不断修正
第二轮的比赛限制比较多,需要使用Mind+编程,需要使用硬件,还需要使用百度AI智能技术。这样可发挥的余地非常小。自己想实现的功能又比较多。因为寒假都呆在澳洲,想着做一个全英文的介绍中国属相的项目,输入出生年份,给出属相、属相的含义、优点,算出2020的运势。想使用语音识别及英文语音合成,因为限定了Mind+,上传模式下,语音合成模块只支持中文合成及英文字母合成,语音识别模块也没有列入。权衡下来,考虑使用两个掌控板,一个使用实时模式,一个实用上传模式。实时模式下实现英文播报和中文语音识别(在Mind+中百度语音识别只能识别中文);上传模式下实现英文显示及中文播报。本来想使用MQTT让两个掌控板之间进行通讯。但是上传模式下我要使用光环板定位生肖,而Mind+中RGB灯与wifi在上传模式下不能同时使用,会产生冲突(文末有详细测试)。所以这两个掌控板就做成相互独立但是互为补充的功能。当然也可以用舵机替代光环板,转动舵机指向对应的属相,这样两块掌控板可以实现通过MQTT通信,但是走的匆忙,舵机没有带出来,墨尔本这里吃穿用都齐全,只是想买电子器材只能呵呵了。而且这种小亭子的外观使用舵机没有灯光的效果好。目前的方案Part B上传模式的作品可以脱机运行,用来展示或送人也是挺好的。
以下是完整的思维导图:
Part A 实时模式
实现功能:
输入出生年份(语音识别、键盘输入、图像识别数字)后,计算出生肖,并显示生肖图片,播报生肖特点,还可预测生肖运势,幸运指数从1~5。
材料清单
- 掌控板 X1 链接
步骤2 编写程序:Part A实时模式
一、解决出生年份的输入问题
年份的输入有以下方式:
1. 通过键盘输入
2. 使用语音识别,通过语音输入
3. 使用百度AI图像识别,识别手写的数字
触摸P键通过键盘输入出生年份;触摸T键通过语音输入出生年份;触摸O键通过图像识别输入出生年份,以下为代码:
二、计算属相
函数calcZodiac:通过参数year计算出属相并朗读
函数showpic:显示对应的属相图片,并朗读属相特点
函数luckyPoint:播报幸运指数,显示不同造型图片
Part B 上传模式
实现功能:
使用语音合成进行语音播报,使用小MU视觉传感器器输入出生年份,计算出生肖后光环板在激光切割的生肖板所在生肖亮灯,播放十二生肖童谣,帮助大家记忆生肖顺序。
另外还使用了BME680环境传感器,它可以检测温湿度、气压、海拔和空气电阻值。一个是因为澳洲大火空气质量不好,想测一下实际空气质量;还有一个就是墨尔本的天气简直魔幻,照女儿的说法就是“一天里面经历四季”,这段时间热的时候能有41度,冷的时候只有12、13度,温差很大。每次女儿要出门都要开窗把手伸出去感觉一下温度再决定穿什么衣服。我说你这个不准,用我这个吧,离线方式测量室外温度,多么方便精准!
步骤3 编写程序:Part B上传模式
一、初始化变量及设备,语音播报及屏幕显示使用方法
函数:初始化设备
本来准备使用DF的掌控板扩展板,在国内用的时候还是正常的。结果到墨尔本后接上设备测试,语音合成一直有问题,无法正常播报。所以换成了盛思的掌控扩展板,它的P13P14、P15P16引脚正好在一起,还带两个I2C接口,使用也比较方便。
函数:初始化变量
英文列表用于在掌控板OLED显示屏上显示,中文列表用于朗读识别结果。
二、解决年份的输入问题
上传(脱机)方式下考虑年份的输入有以下方式:1. 使用掌控板PYTHON触摸输入
优点:无需额外的器材
缺点:编程较复杂;对用户不友好,因为年份有4位,每一位都有0~9共10种可能,可以设计多种输入方案,但对用户来说操作都比较复杂,容易出现混乱。
2. 使用手机输入年份
优点:对用户比较友好,可以使用文本输入框或语音输入年份,再通过MQTT传给掌控板
缺点:需要搭配手机使用。且由于上传模式下wifi和RGB灯有冲突,不能同时使用。故放弃。
3. 使用视觉识别模块
优点:对用户比较友好;使用视觉识别,用户体验比较新奇
缺点:需要使用视觉识别模块,成本较高。用户需要经过一定的训练,对设备有所了解才能熟悉使用。
结论:实现方案3
使用视觉识别输入年份
实现方法:
播报:请输入第"N"个数字,用户使用小MU视觉模块搭配的数字卡输入出生年份的第N个数字,重复4次,得到出生年份。
输入年份实现方法:
播报:请输入第"N"个数字,用户使用MU视觉模块搭配的数字卡输入出生年份的第N个数字,重复4次,得到出生年份。
技巧:当MU传感器LED灯闪烁为红色时,说明传感器已经准备好,可以开始识别;当LED灯闪烁为蓝色时,说明识别成功。
说明:由于外观设计需要,将MU传感器倒置放置,所以识别的时候数字也是倒置的。
函数:视觉识别数字
三、计算年份及生肖
函数:计算年份及生肖
四、光环板点亮
光环板先正向、反向点亮流水灯各一次,然后在生肖位置点亮对应的两盏灯。
上图是光环板正常放置时的程序图。本项目中因为接线要求,所以光环板也需要上下倒置,点亮灯的位置需要如下图换算一下:
五、播报环境值:
BME680可以测量温度、湿度、海拔、气压、气体电阻值。将测量结果显示在屏幕上,并用语音播报。
六、mp3播放生肖童谣
因为mp3模块容量不大,所以只放了一首童谣,并进行了裁剪。童谣吐字不太好分辨,所以使用掌控板依照播放速度显示歌词,方便使用者记忆十二生肖的顺序。
特别提醒:这首童谣有毒,大家慎听慎听哈哈。我和女儿测试的时候听了几遍,结果接下来这几天,我们两个时不时的总会不由自主的哼唱这首曲子的旋律,简直让人哭笑不得!!
解决的问题:激光切割的bug
下图是原始的生肖板的设计图
切割完成后,发现有一个生肖无法雕刻出来。看设计图设计没有问题,进行模拟造物的时候显示如下图,说明无法正常完成这个生肖的雕刻。
删除这个生肖,再次模拟造物,结果下方另外一个又无法雕刻了。
删除两个生肖后,造物才正常,余下的可以正常雕刻。
临放假前参加了深圳的教师创客培训,正好有雷宇的工程师过来,问了他这个问题,答复说是切割机的bug,可能是缓存不足,已经记录下来反馈上去了。希望这个bug厂家可以迟早解决。
将下方的两个复制出来,移动激光头,重新雕刻到板子上。
可以看到定位还是偏了点,不过临放假时间特别紧,因为不是普通的切割,要进行一些处理,比较麻烦,也不想再重新切割了。
切割技巧:
这个生肖板生肖的图片比较小,如果不做些处理,由于切割的时候要吹气,高温附着板子的表面,导致图案周边吹糊了,特别不清晰。所以先贴了张白纸进行局部测试,发现效果很好。左边是贴了纸后的切割效果,右边是直接切割的效果,差别非常明显。
先用一张信纸贴到木板表面,纸不要太厚,注意要贴牢,否则切割的时候可能会被吹开。
切割的时候可以看到表面糊的很厉害,图案不清晰。切割完了10个生肖:
重新定位激光头,切完余下的两个生肖:
将纸用流水洗干净,将板子吹干就可以了。下图的板子拍的时候还没有完全干,完全干透的效果在前面的对比图里可以看到。
调试程序时出现的问题:
使用wifi,和RGB灯冲突,无法使用MQTT传递消息。删除RGB则可以正常获取IP地址,MQTT正常。
因为以上的原因,在上传模式下只能使用掌控板直接输入年份。
删除RGB灯模块后,不再显示有冲突:
掌控板上传模式程序如下:
掌控板实时模式程序如下:
在实时模式上输入1969,属相Rooster上传到IoT。上传模式下的掌控板通过MQTT获得生肖值并显示在OLED屏幕上,数字10是生肖索引:
如果用舵机替换RGB灯,可以根据MQTT的值来确定舵机的转向角度,方法和RGB灯基本类似。因为要到2.7号晚才回国,已经接近到截止日期,就不再改了。
2020年2月8日补充:
昨天准备飞香港回国,已经出境在登机口等,广播说航班要推迟13个小时起飞。想着深圳疫情也很严重,当机立断退票取消行程。
广东教育厅刚出了通知,开学时间不早于3月1号。准备继续在墨尔本呆到月底避开返工潮高峰。希望香港机场到蛇口的客船到时还能正常通行。现在香港到深圳的口岸已经全部关闭了。
rzegkly2020.03.16
好好学习一下
云天2020.02.26
完美,祝,在异国他乡生活顺利!
木子呢2020.02.02
太赞了