研究背景:
孩子很喜欢小动物,一年半前买了两只侏儒兔养在阳台上。在经历了最初的新鲜劲之后,孩子渐渐对小兔不闻不问。只有爸爸每周定时喂养小兔。由于兔子不会叫,还很安静,有时候经常想不起来去照料小兔。如果能够让小兔子开口说话,撒娇卖萌,是不是可以增进孩子与萌宠之间的互动和交流呢?于是就想到与孩子一起,共同制作这样的Demo作品。基于数据采集和数据分析,我们可以模拟一只数字孪生的兔子,实现真实兔子与孪生兔子的信息同步。利用采集到的数据加以分析和整理,让孪生兔子替真实兔子将需求及时的表达出来。对小主人进行提醒,增加孩子和萌宠之间的链接与互动。通过大数据的分析还能够及时了解兔子是否可能生病等,进一步提升小兔的生活品质。
除了关爱家里不会说话的萌宠,未来希望这样的场景可以应用到数字孪生动物园,失能人士陪护等,在满足基本的生理需求的基础上,不论是动物还是人,都应该得到更多的关怀和交流,从而实现生活品质的提升。
需求分析:
(1)怕热:兔子有比较厚的兔毛,它们不怕冷但是很怕热。由于我们身处南方,冬天不会低于5度,但是夏天的炎热天气对小兔子就不太不友好了。我们是把兔笼放在阳台的,所以夏季暴晒时阳台会非常热。
【解决方案】:将温度传感器放置在兔笼顶部,采集阳台的实时数据。如果温度高于37℃,就让虚拟兔子切换为“热兔子”角色,并进行语音提醒。
(2)怕水:小兔子的毛很厚,如果被水打湿,很难自然干透,就非常容易生病。阳台属于开放式的环境,特别是夏季台风来袭时,雨水会飘进来打湿兔笼,小兔也无处躲藏。
【解决方案】:将雨滴传感器放置在兔笼靠近阳台外的一侧,采集是否被雨淋湿。如果模拟量超过2500,让虚拟兔子切换为“湿兔子”角色,并进行语音提醒。
(3)缺水:兔子可以三天不吃兔粮也死不了,但是三天不喝水那就很危险了。对于水壶水量的监控,必不可少。
【解决方案】:将液位传感器固定在喂水器的底部,采集水量实时数据。如果水位低于液位传感器,回传0,虚拟兔子切换为“渴兔子”角色,并进行语音提醒。
(4)缺粮:没有哪种动物可以不吃饭,小兔也不例外,虽然可以少吃,但也不能没有饭。兔粮见底时,需要进行提醒。
【解决方案】:将亮度传感器用保鲜膜包裹,做防水防尘处理后,固定在食盒底部。当有大量食物覆盖其上时,亮度很低,反之如果亮度很高说明食盒可能差不多吃完了,这时切换为“饿兔子”角色,并进行语音提醒。
(5)生病:日常可能放满兔粮需要2-3天会吃完,如果有时候兔子饭量骤减,7-8天都还没有吃完兔粮,那它一定是哪里不太舒服了。上次有阵子母兔怀小宝宝时,就有饭量异常的情况发生。出现这种情况,要引起注意,多加关注。
【解决方案】:对每次缺粮提醒进行判断,如果缺粮了,则更新数据库。需要更新最近一次缺粮时间,并对数据库记录的缺粮次数+1(同一天缺粮只更新一次,因为实时数据每10秒采集一次,也许没有那么快去补粮),计算本次缺粮距离上次的耗时。并根据缺粮耗时计算出平均缺粮耗时,平均缺粮耗时=((上次平均缺粮耗时*未更新前缺粮次数)+本次缺粮耗时)/(未更新前缺粮次数+1)
生病判断基于当前时间与上次缺粮时间进行对比,计算出此时的耗时。用此时的耗时与平均缺粮耗时进行对比,允许1天的误差。如果此时耗时+1仍大于平均缺粮耗时,说明兔子饭量减少了,有可能有生病的风险,需要特别关注。
上图摘自《博物》杂志2023年01月
数据链路:
由于会对采集的数据进行统计分析,所以这里的数据分为两类:实时类数据和统计分析类数据。
(1)实时类数据:利用sci采集器和行空板,直接采集并通过物联网传输至显示侧,显示侧根据数据结果直接呈现对应的动画。
水量、饭量、温度、雨滴这些都是实时类数据,采集后可直接呈现虚拟兔子的不同状态。
(2)统计分析类数据:先将数据采集后利用物联网传输至显示侧,显示侧接收到数据后,更新到tinywebdb中,根据记录的历史信息,计算后再进行判断和呈现。
平均缺粮耗时、平均缺水耗时、缺粮次数、上次缺粮时间、上次缺粮耗时等属于统计分析类数据,经过计算后才对应呈现不同状态的兔子。
整体链路如下:
实现过程:
整个装置分为两组,一组部署在兔笼上,负责采集信息。一组部署在人的周围,负责分析数据并加以提醒。
第一组:由传感器和行空板构成。安装在兔笼上,采集兔笼的温度,湿度,食物和水等的实时数据。行空板连接到物联网,将实时数据与物联网进行同步。
第二组:由电脑构成。在mind+中绘制并构建虚拟的数字孪生兔子。虚拟兔子通过物联网获取真实兔子的实时数据。利用这些数据我们可以得知是否还有兔粮,是否还有充足的水,是否温度过热,是否最近饭量骤减等。通过数据分析,转换为预制的语音mp3,播放出小兔的需求,从而实现与小主人及时交流的功能。提升小主人对兔子的关注度。后续还可以增加移动端,在小主人旅游不在家的时候,也可以对兔子的生活情况进行监控。
上图为部署在兔笼上的硬件
物联网:
在电脑侧启动siot物联网,并设置需要用到的各个主题。在行空板(采集端)和电脑(显示侧)都需要连接物联网地址,并订阅各主题。
数据库(TinywebDB):
其实这里也可以用excel作为数据库进行数据的保存和读取,不过我是觉得有点麻烦,就采用了TinywebDB来做存储和计算。
打开链接:http://tinywebdb.appinventor.space/
注册并登录自己的账号,将下图的内容记录下来,等下连接数据库的时候会用到。
点击数据浏览,进入数据库,可以开始设计需要用的字段。
采集端:
采集端是由行空板连接sci采集器和其他传感器,负责采集数据的。部署在兔笼附近。
采集端编程比较简单,主要是连接物联网,并将获取的数据,每隔10秒发送至物联网即可。在采集的同时,也将数据同步呈现在行空板上,方便实时查看。
代码如下:
显示端:
显示端用到的是电脑,原本是想用另一个行空板显示。但是考虑到想要自己独创造型,以及需要连接tinywebdb(行空板目前没有支持),所以改用电脑来呈现。后续的改进可能会继续转入行空板或安卓手机进行呈现,方便移动使用。
显示端我们设计了独创的表情包造型,一共六组角色:开心兔、饿兔子、渴兔子、湿兔子、热兔子、病兔子。每个角色的每个造型都是小朋友自己绘制的,非常可爱哦!
在背景我们做了主要的计算和数据接收,经过数据判断以广播的形式控制不同表情包的兔子进行动态呈现。
背景部分的代码:
这里比较难的部分是对生病的判断,我们需要知道它至今为止距离上次吃完兔粮过去的天数,如果这个天数(允许误差1天)大于平均每次吃完兔粮的天数,那么认为兔子可能最近胃口不太好,吃的很慢,需要多多关注了。
每个兔子角色的代码(以热兔子为例,其他雷同):
可爱的兔子造型:
总结:
项目亮点
1、数据模型分析:除了使用传统实时数据之外,还采用了统计分析数据。利用对一段时间的数据采集,建立兔粮消耗的数据模型,通过计算和分析,得出预测性的信息,并及时进行提醒。
2、数字孪生:数字孪生的概念已经不是什么新的概念了,但大多都集中在大型组织机构,比如数字孪生电网,数字孪生城市等。落实在个体上,其实也是很好的应用场景,比如可以让不会说话,不善于表达的个体,更好的呈现出自己的各种状态,以便更有针对性的进行改善。
不足之处:
1、布线需要考虑兔子会啃咬,特别是埋在食盒里的传感器。当时安装的时候就一直要防着兔子上来,可能需要对食盒钻孔暗装,并且需要加装比较硬朗的防护装置。比如亚克力板之类覆盖其上,防止兔子啃咬传感器。一方面会破坏设备,另一方面如果误食对兔子也会造成不可逆的伤害。
2、优化数据模型的算法,可以增加兔笼清洁提醒的数据模型,对一段时间未打扫进行预估和判断,提醒主人及时清扫兔笼。
3、增加移动端的设计,方便便携使用。特别是当全家人外出时,更加需要关注萌宠的状态。增设一些兔笼端的互动,例如自动喂食等操作。
hacker_2023.08.25
666