姚云凯
(闽江学院 数学与数据科学学院,福建 福州 350100)
据《2019年中国宠物行业白皮书》(消费报告)显示,2019年中国城镇宠物(犬猫)消费市场突破2 000亿的关卡,整体消费规模达到2 024亿元,比2018年增长18.5%。2015年—2019年5年内行业市场规模翻了2倍多,年复合增长率接近20%。从宠物类别看,宠物犬消费市场规模为1 244亿元,比去年增长17.8%;宠物猫消费市场规模为780亿元,增幅达19.6%,超过宠物犬消费市场规模增速。
养宠数量方面,2019年全国城镇宠物犬猫数量达到9 915万只,比2018年增长766万只。其中宠物犬数量为5 503万只,比2018年增长8.2%;宠物猫数量为4 412万只,比2018年增长8.6%,宠物猫数量增幅超过宠物犬的增幅。
《2019年中国宠物行业白皮书》(消费报告)特别选取了一、二线的四大代表城市——北京、上海、西安、成都,并对这4个城市的养宠消费进行了调研和分析。研究显示,北京、上海、西安、成都四大城市2019年养宠消费市场规模达486亿元。一线城市是养宠消费的绝对主力,而二线城市养宠消费不断增长。其中2019年上海养宠(犬猫)市场消费规模达197亿元,位于此次调研4个城市的首位,而北京、成都和西安紧随其后。
纵观为宠物所设计和研发的产品,各种类别,不同型号都表现出人对宠物生活、生存状态的密切关注。智能喂食宠物装置通过比较当今市场现有产品,针对宠物生活需求,提出了更好更优的解决方案。通过对该课题的研究,计划制作出一款新型的宠物喂食器,能够对市场上的产品做出功能上的完善与创新,进而改善宠物喂食方式,可以让宠物处于定时喂食状态,还可以查看宠物的现状,与宠物互动等,让照顾宠物变得没有距离。
该喂食器采用了物联网远程操控技术且在功能设计上弥补了现有宠物喂食喂水器的不足,增添新的功能创意,具有很好的商业价值和研究发展空间。
在第二届中国北京国际宠物用品展览会上,自动喂食器成为展示焦点,这也说明,自动化、智能化已成为宠物用品市场发展趋势。德国特瑞士中国运营中心、青岛特瑞士国际贸易有限公司此次在特装展台亮相,展示了多款自动喂食器等宠物用品。展商均认为,人类相关生活用品一定会向便捷化发展,自动化和智能化已成为宠物用品市场发展趋势,而单片微机在这方面的应用带来了“智能化”,使控制更灵活、设备更精确,并符合“绿色”电子的要求。
中国是世界宠物用品的出口大国之一,如果美国国内近十年宠物行业的发展可称为迅猛,那么中国近十年的发展的速度则堪称惊人。针对目前市场上喂食器功能单一、价格高昂、普及率不高等因素,令中国的大众消费者难以接受,本设计基于单片机以人性化和关爱宠物为理念,设计了这款宠物自动喂食器。由于单片机具有体积小、速度快、抗干扰能力强、环境要求不高、性能可靠和价格低廉等优点,通常在其外部配置外围电路就可构成一完整的控制系统,根据此特点赢得了广泛应用,为单片机的发展奠定了基础,成为单片机发展进程中的一个重要阶段,具有良好的使用前景。
物联网(IoT,Internet of things)即“万物相连的互联网”,是互联网基础上延伸和扩展的网络,将各种信息传感设备与互联网结合起来而形成的一个巨大网络,实现在任何时间、任何地点,人、机、物的互联互通。物联网的大量使用,为研究智能喂食宠物装置提供了很好的解决方案。
喂食器作为自动控制设备及信息传感设备,在自动执行一些任务的同时,将采集到的信息通过物联网发送到手机App展示给人,同时,人也可通过App发送指令到喂食器,为其分配任务,使其执行喂食、上报模块数据等操作,当然,作为智能终端,摄像头查看宠物生活状态,远程与宠物娱乐等功能也均能实现,其他功能也会不断扩展叠加。
本装置的工作内容包含如下几点:①压力传感器和挡板舵机模块可实现对托盘上的饲料进行称重,当达到要求重量时单片机控制挡板舵机,从而使饲料停止下落。②定时装置可实现产品定时投放食物和水的功能。③光电传感器与水位传感器用来实现产品监测食物和水剩余量的功能。④摄像头模块是为了实时观察宠物的情况。⑤托盘马达模块用来实现控制产品底部盛放食物与水的托盘的伸缩功能。⑥网络模块、服务器及App用来实现产品的手机端操控和观察的功能。
喂食器以iTOP-4412作为主控制器,使用四核ARM处理器,能够实现多线程的任务,这是单片机无法做到的。iTOP-4412核心板是迅为电子推出的一款高端四核核心板,配备三星Exynos 4412四核处理器,主频为1.4 GHz,内置8 GB存储空间(见图1)。
图1 智能喂食装置主控制器
开发板上使用的是QT文件系统,支持交叉编译的QT桌面应用。项目中使用到的外设模块都是作为字符类驱动加载的,字符类驱动是最为常用的驱动类型,主要实现以下功能:①测温测湿度。为了检测宠物食物的可食性,用这个模块来探测宠物的食物是否发潮,然后发送消息给用户提示报告当天的情况。需要借助C语言,编写模块并加载为字符驱动,然后烧入内核。②检测余粮。使用压力传感器HX711来记录宠物近期的食用量,然后判断宠物近期有没有好好吃饭和宠物的健康情况,还可以每天定时放粮。编写驱动过程类似于温度传感器一样。③本地给宠物拍照。可选择性上传到服务器或保存到本地相册。摄像头模块用的是OV5640,该传感器支持输出最大为500万像素的图像(2 592×1 944分辨率),支持使用VGA时序输出图像数据,输出图像的数据格式支持RGB565及JPEG等格式。④精准计算投粮动作。使用步进电机,根据脉冲数控制旋转的角度,再加上压力传感器反馈的数据来做到精准投粮的动作。⑤检测是否卡粮。通过Wi-Fi模块与服务器通信,红外对管防卡粮,为了保证粮食的顺利下滑,在出粮口做了一个红外对管传感器,以此来检测是否卡粮。⑥树莓派玩具与宠物互动。它是一款基于ARM的微型电脑主板,以SD/Micro SD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和配套摄像头输入接口,可拓展的IO口,将树莓派装上摄像头,接两个可移动的轮子,可追踪宠物,实现任意方位拍照,也可以用手机人为控制其与宠物玩耍。⑦减少轴承及丝杆摩擦阻力。轴承是为了旋转体减小阻力、顺利进行而选择的,在喂食扇叶活动、托盘进出等控制都会用到,经过对喂食器尺寸的研究,选择了604 ZZ轴承(见图2)。
图2 604 ZZ轴承
有了丝杆的帮助,控制喂食托盘进出会很简单,结合轴承的尺寸,本次选择T4丝杆(见图3)。
图3 T4丝杆
综合以上所需硬件,对其进行了3 D建模,经过调整,外观如图4所示。
图4 喂食器整体外观
其中,控制喂食部分为本次设计的重点,由电机、扇叶、轴承、齿轮等部件组成。储粮部分底部有一孔,与食物滑槽的尺寸吻合,当与齿轮相啮合的齿轮不动时,食物保持在桶内,旋转时,食物通过扇叶空隙落入导槽,然后进入底部托盘,托盘再由另外一个电机控制滑出,完成喂食(见图5、图6)。
图5 储粮桶俯视图
图6 食物滑槽拆解图
如图7所示的设计为可移动的玩具,可由App控制其运动,上面安装摄像头(通过前面一个小孔获得图像)、麦克风及扬声器,可以由手机App发起视频查看宠物,可以跟宠物说话,宠物的声音也可以通过麦克风返回到手机App,由于显示器空间大,所以来自手机App的主人视频流,则转发到喂食器上的显示器显示,可以控制玩具引导宠物到视频前面看主人在做什么,设计封装良好,可以移动逗宠物去追赶,宠物玩具后面的尾巴,一是使重心下移和阻止扭力,防止运动过程中间转而两侧轮子不转,二是可以控制其上下轮动,调整前面摄像头的视角,容易为宠物拍照。
图7 宠物玩具外观
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的App),更重要的是容器性能开销极低。
本项目的每个服务器都放在Docker的容器中,在相互隔离的同时又可以用IP相互访问,便于管理,且达到一定的安全要求。具体实现方式如图8所示。
图8 服务器结构
3.4.1 物联网服务器。典型的物联网云平台包括AWS IoT、IBM Watson、阿里物联网套件和中国移动OneNet等,每个平台都有各自的优势与不足。众所周知,阿里云提供诸多云服务包括数据存储(各类云数据库,Table Store)、数据分析(图像识别、人脸识别)、规则引擎、短信服务等,而物联网云平台的本质无非节点托管、数据存储、远程控制,所以阿里索性把物联云平台当作一种服务集成到阿里云中,中国移动OneNet平台简单易用、入门快,作为一个单纯的设备托管平台还是不错的。
然而,对接这些服务器过程都比较烦琐,因此找到了一个比较好用的部署在自己服务器的开源物联网服务器——EMQ X。EMQ X(Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP平台开发的开源物联网MQTT消息服务器。Erlang/OTP是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed)的语言平台。MQTT是轻量的(Lightweight)、发布订阅模式(PubSub)的物联网消息协议。EMQ X设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:①稳定承载大规模的MQTT客户端连接,单服务器节点支持50万到100万连接。②分布式节点集群,快速低延时的消息路由,单集群支持1 000万规模的路由。③消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。④完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket或私有协议支持。
3.4.2 数据库服务器。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的API用于创建、访问、管理、搜索和复制所保存的数据,也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS即关系数据库管理系统(Relational Database Management System)的特点:①数据以表格的形式出现。②每行为各种记录名称。③每列为记录名称所对应的数据域。④许多的行和列组成一张表单。⑤若干的表单组成database。
数据库在Docker安装与EMQX安装方法类似,拉取镜像、安装、运行,然后是设置用户名与密码。
3.4.3 媒体服务器。媒体服务器是下一代网络的重要设备。该设备在控制设备(软交换设备、应用服务器)的控制下,提供在IP网络上实现各种业务所需的媒体资源功能,包括业务音提供、会议、交互式应答(IVR)、通知、统一消息、高级语音业务等。在应用服务器里,使用MSML(Media Server Markup Language,一种专用于媒体服务器交互的特殊xml)向媒体服务器发送放音等命令。媒体服务器具有很好的可裁剪性,可灵活实现一种或多种功能。
媒体服务器的性能和网速要求高,云服务器租赁贵;逻辑复杂,开发成本高。由于开发条件限制,没有自己开发服务器,而是找到了一个专门提供音视频服务的公司——声网。
声网Agora,一个专注移动端的高清实时通话云服务解决方案。声网在全球部署了近百个数据中心和近千台服务器,能够保障跨大洲、跨国家、跨运营商网络的实时数据传输质量。其团队很有自信地宣称,在语音通话的质量上,他们有信心打败最有竞争力的技术对手,哪怕在硅谷。
由于是to b(to business)的云服务,声网的盈利模式也相对简单。声网面向企业收费,标准是每1 000 min 0.99美元,国内海外统一。这个基于规模效益的定价贴近于产品的成本价格,远低于客户自己运营维护这类服务的成本。
声网已经和国内许多产品在接洽合作,但团队没有透露具体已达成的合作。在国外,由于声网的海外版上线更早,已经有合作一段时间的产品了,比如针对“语言技能交换”的语音社交应用HelloTalk。
使用方法:进入官网,注册账号,里面提供了很多开发者文档,需要什么功能,直接按步骤进行,在此不叙述,将在手机App部分体现。
3.4.4 应用程序服务器。Django是一个由Python写成的Web应用框架。Django的主要目的是简便、快速地开发数据库驱动的网站。它强调代码复用,多个组件可以很方便地以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,甚至可以很方便地开发出自己的工具包。
Django的rest_framework框架是基于Django的,帮助快速开发符合restful规范的接口框架,它主要适用于前后端分离项目。rest_framework是一个能快速提供API接口,方便编程的框架。API是后端编程人员写的,为了让前端拿数据的一个接口,通常就是以url的形式存在。只需要给喂食器及手机App提供相应的URL,即可实现数据的交互,每个URL在服务器端有一个对应的逻辑处理。
整个服务器采用MVC编程模式。MVC是一种使用MVC(Model View Controller,模型-视图-控制器)设计创建Web应用程序的模式:Model(模型)表示应用程序核心(比如数据库记录列表);View(视图)显示数据(数据库记录);Controller(控制器)处理输入(写入数据库记录)。
MVC分层有助于管理复杂的应用程序,因为您可以在一段时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
为了配合App及喂食器工作,一共设计了以下几种API:用户注册、登录、喂食器上报喂食记录和手机App增删改个人信息或者宠物和喂食器信息等。所有的API都是收到消息做数据库操作,内容比较庞杂,在此以用户注册登录为例,见图9。
图9 用户注册登录
手机App软件(App,英文Application的简称,即应用软件,通常是指iPhone、安卓等手机应用软件),主要指安装在智能手机上的软件,完善原始系统的不足与个性化。使手机完善其功能,为用户提供更丰富的使用体验的主要手段。手机软件的运行需要有相应的手机系统,截至2017年6月1日,主要的手机系统包括苹果公司的iOS、谷歌公司的Android(安卓)系统、塞班平台和微软平台。每个系统的开发方式有所不同,由于国内用Android的人占大多数,因此,本项目先开发了一个Android系统的手机App软件,以后再开发出其他系统的同款软件。下面是手机开发的过程:①Java语言基础。②Android的四大组件。Android开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接收者(Broadcast Receive),用于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库。③Android五大存储:内部存储、外部存储、网络存储、SharedPreferences和SQLite。④Android六大布局:线性布局(LinearLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、层布局(FrameLayout)、绝对布局(AbsoluteLayout)、网格布局(GridLayout)。⑤Android编译工具。初学者使用IDE:Eclipse,PraneethVT,Android Studio,IntelliJ IDEA等。
由于手机App是面对用户的,体验很重要,需要不断更新优化,目前,手机App已经开发出的功能有:管理宠物、管理喂食器、显示个人信息、设置余粮不足提醒方式、视频与宠物互动等。
为了突出该项目的特点与创新,调研了市面上的相关产品,见表1。
表1 产品性能对比
图10 App的部分逻辑设计
模块是已经集成好的,只需要按特定方式读取。比如红外对管,有卡粮时电平翻转,获得数字量;称重传感器,有重物时电阻值变化,以模拟量方式反应重物重量。然而,一个CPU要同时读取这些模块数据时,就得将程序逻辑设计好,防止出错。
服务器对数据的操作,体现在数据库的数据进行增删改查。为了便于手机App及喂食器操作,且保证每次查询数据库花的时间尽量少,将所需的数据按对象分为多张表,主要有用户个人信息表、宠物信息表、喂食器信息表和喂食记录表。
为了节省流量,不用每次查看信息都从服务器获取,手机App也使用了数据库,与服务器的表对应起来,而且做相应的操作的时候,数据与服务器同步。手机App,节流、更新、永久化。
毫无疑问,智能喂食宠物装置不仅仅是一款智能设备,它更是连接主人与爱宠的纽带,而功能强大的App将万千家庭集结到一起,相比单纯的产品,这种基于兴趣、圈子的应用与服务更能打动用户,未来智能宠物喂食器的App还有很大优化的空间,而且还会基于游戏娱乐的基础之上进一步开拓空间。
项目设计实现了多功能宠物自动喂食器的一整套系统,使用方便。但我们知道要想使宠物喂食器在实际生活中完全代替人工喂养,还必须对宠物进行适当的培训,这是任何一款新产品都必须突破的瓶颈。也只有通过培训,才能使该喂食器在日常生活中发挥更大的作用。