admin 管理员组

文章数量: 1184232


2024年4月25日发(作者:浏览器打开index html)

科技创新导报

2019 NO.03

Science and Technology Innovation Herald

工业技术

DOI:10.16660/.1674-098X.2019.03.098

智能家居宠物看护系统的设计与实现

孙晴 方明星 陈露瑶

(安徽师范大学物理与电子信息学院 安徽芜湖 241000)

摘 要:本文主要阐述设计了一款智能家居宠物看护系统。该系统硬件部分采用单片机STM32F103主控芯片及wifi模块

ESP8266芯片;软件部分利用Java作为服务端,Spring Boot搭建服务器,通过Socket向单片机发送指令,使用HBuilder开

发用户界面,使用nginx服务器实现实时监控。经实验表明,该系统运行稳定,可成功实现预期目标。

关键词:智能家居 宠物看护 springboot搭建框架 HBuilder软件开发

中图分类号:TP216 文献标识码:A 文章编号:1674-098X(2019)01(c)-0098-04

Absrtact: This is a smart home pet care the hardware part of the system, single-chip Microcomputer

STM32F103 master control chip and wifi module ESP8266 chip are software part uses Java as the

server,Spring Boot server,sending instructions to single-chip Microcomputer through Socket,developing user

interface Interface with HBuilder,use nginx server to realize real-time experimental results show that

the system runs stably and can achieve the expected goal successfully.

Key Words: Amart home; Pet care; Springboot framework; HBuilder software development

近年来,随着智能家居技术的不断完善,科学技术已经

不再是人类的专属财产。也就是说,生物也可以享受科技

带来的服务。目前,国外已经有部分科研人员将目光放在了

宠物的智能看护方面,其中,NamKyung Lee在2014年先提

出了基于物联网的智能家居系统中的宠物护理服务

[1]

,而后

在2016年将系统改进为基于对象网络体系结构的智能宠

物护理系统

[2]

,这些系统成本较为昂贵,不易普及。国内对

于宠物智能家居的研究却少之又少,仅有一些针对单一用

途的简单系统,例如宠物自动喂食系统

[3-4]

等,功能不够全

面。本文提出的智能家居宠物看护系统就是将智能家居

技术应用到家庭宠物的看管和护理中,使用手机就可以实

时监控家中宠物的状态,方便初次养宠以及经常出差的用

户更轻松的照顾宠物。其中,为了给用户更好的使用体验,

本文还将宠物的行为“翻译”成人类的语言,教会宠物“说

话”。

1 宠物看护系统整体设计方案

宠物看护系统包括Android智能客户端软件、远程服

务器、单片机及WiFi模块、传感器模块四部分,总体框图

如图1所示。手机客户端使用HBuilder完成界面开发,通

过HTML5+JS+CSS来控制界面的样式以及完成与服务

端的数据交互;使用Java作为服务端,采用Spring Boot

来搭建微服务,通过Socket来实现向单片机发送指令;

STM32F103主控芯片控制各个传感器,通过TCP/IP协议与

服务器进行通信,然后通过串口URAT协议与ESP8266芯

片通讯,通过AT指令实现对网络中TCP链接的回应。

2 宠物看护系统的实现

宠物看护系统的总体结构可分为软件和硬件两部分,

98

科技创新导报

Science and Technology Innovation Herald

软件部分采用Android操作系统,使用Spring Boot框架搭

建服务器,HBuilder开发前台界面,并调用了智能聊天机器

人;硬件部分以STM32F103主控芯片为核心,其中,wifi模

块使用了ESP8266芯片,饮食模块使用了非接触式液位传

感器和电阻应变式传感器,声音检测模块使用了麦克风

接收声音,温度检测模块使用了GY906红外温度传感器,

以及支持rtsp视频流的摄像头

[5-8]

。宠物看护系统可以让用

户随时通过手机客户端查看宠物的状态。系统运行期间,

如果饮食模块检测到没有食物或者水时,手机客户端会提

示用户喂食或者添加饮用水;如果声音检测模块检测到宠

物发出较高分贝的声音时,手机客户端会询问用户是否安

抚宠物;如果温度检测模块检测到宠物体温不正常时,手

机客户端会提示用户带宠物去就医。

2.1 宠物看护系统的软件设计

2.1.1 服务端的设计与实现

本系统使用了Eclipse进行服务端的代码编写,Java作

为服务端。Java语言可以通过提供最基本的方法来完成指

定的任务,是一种面向对象的语言。我们仅需理解部分基

本概念,就可以根据情况用它编写出相应的应用程序

[9]

Java语言的设计集中于对象及其接口,对象中封装了Java

语言的状态变量及方法,实现了信息隐藏及模块化;Java

语言还提供了简单的类机制以及动态的接口模型,其中,

类提供了一类对象的原型,可以通过子类使用父类所提供

的方法,即继承机制,从而实现代码的复用

[10]

。不仅如此,

通过Java语言提供的类库还可以处理TCP/IP协议,用户访

问其他对象时,可以在网络上非常方便的使用URL地址访

问。开发软件eclipse则是一个可扩展的开放源代码的集成

开发环境(IDE),它不仅免费、免安装,还具有纯java语言

工业技术

编写、拓展性强等特点。

由于系统中服务端需要提供的服务较少,可以采用

Spring Boot框架来搭建微服务

[11]

。Spring Boot能够以jar

包形式独立运行,运行一个Spring Boot项目只需要通过

java -jar 来运行;它可以选择内嵌Tomcat、jetty或者

Undertow这样的servlet容器,就不需要以war包的形式来添

加项目;它还提供了一系列的start pom从而简化了Maven的

依赖加载;Spring Boot支持在实际开发中自定义自动配置

Bean;而且,Spring Boot不是借助与代码生成来实现的,而

是通过条件注解来实现的;它还可以基于http ssh telne监

控运行时的项目;具有很高的开发和部署效率。

因为本系统的硬件中配有wifi模块,于是选择通过

Socket来实现向单片机发送指令。Socket是应用层与TCP/

IP协议族通信的中间软件抽象层,它是一组接口

[12]

。在

设计模式中,Socket其实就是一个门面模式,它把复杂的

TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组

简单的接口就是全部,让Socket去组织数据,以符合指定

的协议。

我们通过IP及端口发送的约定协议到WIFI模块的来

完成与单片机之间的通讯,然后接受到来自单片机的数据

后进行解析,解析完成后反馈给用户,为了防止在我们解

析还未完成时,用户再次获取液位引起的冲突或者覆盖掉

单片机之前的操作,我们引入了Map 静态

变量,变量名为lockMap,如果没有使用,添加逻辑锁,锁定

该设备((key, "1")),如果在使用就不发送指定

到单片机同时反馈给用户,如果解析完成了,则清除掉该逻

辑锁((key)),这样就实现了通过URL的方

式来获取液位了,其他的诸如声音、体温等都是同样的原

理。

本文系统中实现与单片机交互的部分代码如下:

调用socket方法,发送十六进制字符串数据,返回指定

字节长度,其中ip为ip地址,port为端口号,msg 为发送字符

串,readLen代表数据长度的字节位置,加上前一字节共两

个字节代表长度:

public static String send(String ip,int port,String

msg,int readLen){

Socket s = null;

OutputStream out = null;

InputStream in = null;

try{

s = new Socket(ip, port);

imeout(6000);

out = putStream();

("发送命令:" + msg);

byte[] cbufs = 2byte(msg);

(cbufs, 0, );

in = utStream();

byte [] cbuf = new byte[readLen];

2019 NO.03

Science and Technology Innovation Herald

科技创新导报

(cbuf);

return ToHexString(cbuf);

}

catch (Exception ex) {

(sage());

}

主函数如下:ip为192.168.8.156,端口为8234,发送字

符串55AA55AA0129,并调用send方法返回字节长度:

public static void main(String[] args) {

String s = send("192.168.8.156",8234,"55

AA55AA0129",6);

n(s);

由于采用的是springboot搭建的微服务,它替我们省去

了大量的配置文件,在代码中我们只需加入注解就可以通

过http发布我们的服务供前台展示,部分代码如下:

调用自定义方法,请求服务器获取宠物状态及参数:

public void doMethod(HttpServletRequest request,

HttpServletResponse response) {

String method = ameter("method");

n(method);

switch (method) {

获取宠物饮用水的液位高度:

case "waterLevel": SQService.

getWaterLevel(request, response);

获取宠物的声音大小:

case "getVoice":

ce(request, response);

获取宠物的体温:

case "getTemperature": SQService.

getTemperature(request, response);

获取食物的剩余量:

case "getFoodQuantity": SQService.

getFoodQuantity(request, response);

发送喂食指令:

case "feed":

(request, response);

break;

default:

}

以获取食物剩余量为例,如果正常运行,则发送“操作

成功”;如果匹配值为“-1”,则发送“设备正在使用中”;

如果匹配值为“-2”,则发送“返回的数据格式异常”;如

果匹配值为“-3”,则发送“返回的数据为空或长度不为

12”;服务类代码如下:

public void getFoodQuantity(HttpServletRequest

request, HttpServletResponse response) {

String IP = ameter("IP");

String port = ameter("port");

科技创新导报

Science and Technology Innovation Herald

99

科技创新导报

2019 NO.03

Science and Technology Innovation Herald

工业技术

图1 宠物看护系统整体结构图

图2 宠物看护系统硬件结构图

if (rimEmpty(IP) && StringUtils.

isNotTrimEmpty(port)) {

String foodQuantityMesMes = Route.

getFoodQuantity(IP, port);

SQReturn sqr = new SQReturn();

switch (foodQuantityMesMes) {

case "-1":

sage("设备正在使用中");

break;

case "-2":

sage("返回的数据格式异常");

break;

case "-3":

sage("返回的数据为空或长度不为12")

break;

default:

sage("操作成功");

ult(true); sqr.

setObj(ouble(foodQuantityMesMes));

break;

100

科技创新导报

Science and Technology Innovation Herald

}

myOutPut(request, response, sqr);

}

2.1.2 前台页面的开发

宠物看护系统前台页面开发使用HBuilder来完成,

HBuilder是DCloud推出的一款支持HTML5的Web开发

IDE。HBuilder的最大优势是简单快捷,通过完整的语法

提示和代码输入法、代码块等,大幅提升HTML、js、css的

开发效率。同时,它还包括最全面的语法库和浏览器兼容

性数据

[13]

本文系统的前台页面通过HTML5+JS+CSS来控制界面

的样式以及完成与服务端的数据交互。其中智能聊天机器

人是通过调用图灵提供的接口实现的

[14]

。首次登陆时,需

要录入服务端的IP和端口、视频流服务的IP和端口、宠物

的类别、名称等。由于需要展示的数据有限,就没有特意

去搭建数据库了,所有的数据都是缓存在本地的手机上,

数据量只有几kB,相信对于现在的手机来说是微不足道

的。这些缓存数据的也是可以修改的,APP的设置中就有

相应的页面来修改或清理这些缓存。进入页面后展示给

我们的是一个聊天界面,当然,与我们聊天的不可能是我

工业技术

们的宠物,而是智能聊天机器人。这里我们调用的是图灵

官方提供的接口,只需将我们要发送的信息封装好提供

给接口即可实现。其中,接口地址为123.

com/openapi/api。

2.1.3 监控视频的实现

本系统通过搭建nginx服务来实现推流与拉流,首先

从摄像头获取rtsp的视频流,通过来对它进行

切片成m3u8文件,当然,这些信息都是要配置在nginx服务

的配置文件中的,包括切片成m3u8文件的位置也是需要

事先配置的,否则我们就不能通过URL的方式访问到了。

由于每次启动,都需要输入一堆的指令,很是繁琐,这

里采用go语音写了一段脚本封装成bat文件,以便每次启动

只需双击执行这个脚本即可,脚本边角简单,具体内容如

下:

@echo off

set BASEDIR=%CD%

start%CD%ffmpeg-i"rtsp://IP/11" -ccopy-fhls-

hls_time2.0-hls_list_size0-hls_wrap3D:/hls/pet.

m3u8Nginx(engine)

2.2 宠物看护系统的硬件设计

宠物看护系统的硬件主要以单片机为核心,wifi模块

及各个检测模块组成。单片机采用了STM32F103芯片作为

主控芯片。STM32F103是ST公司生产的基于Cortex-M3内

核的ARM处理器,48pin,最高主频达72MHz,拥有20K的

SRAM、64K的FLASH、1个DMA控制器、1个高级定时器、2

个串行外设接口(SPI)、3个通用同步异步收发器(USART)、

模拟/数字转换(ADC)、3个通用定时器等等,功能强大、

种类齐全,并且由于RCC对外设时钟的管理,它的功耗很

[15-16]

。Wifi模块采用了ESP8266芯片承担网络链接协议

层转化,内部编程实现AT指令接受、网络信号扫描、WIFI

信号连接、TCP/UDP协议实现、网络透传实现等功能,

ESP8266 集成了32位Tensilica处理器、标准数字外设接

口、天线开关、射频balun、功率放大器、低噪放大器、过

滤器和电源管理模块等,仅需很少的外围电路,可将所占

PCB空间降低,具有便宜、高性能、开发环境便利等优点。

智能宠物看护系统的硬件结构图如图2所示。

3 结语

本文讲述了智能家居宠物看护系统的硬件和软件部

分,其中重点讲述了软件设计中服务端及前台页面的设

计与实现。服务器采用了Java作为服务端,Eclipse编写代

码,使用Spring Boot框架来搭建微服务。前台页面使用

HBuilder开发,通过HTML5+JS+CSS来控制界面的样式,

并通过搭建nginx服务来实现视频流。目前,宠物看护系统

运行稳定可靠,可成功实现预期目标。

参考文献

[1] NamKyung based Pet-Care Service in Smart

Home[J].IEEE ICTC.2014:1003-1004.

[2] Namkyung -Aware Smart Pet-Caring System

2019 NO.03

Science and Technology Innovation Herald

科技创新导报

with Internet of Things on Web of Object Architecture[J].

IEEE ICTC.2016:1247-1252.

[3] 蒲小年,戚慧珊,李智豪.基于微信小程序的宠物自动喂

食系统[J].物联网技术,2018(9):79-81.

[4] 邵彦达,沈睿,眭耀宇.基于AT89C51单片机的智能宠物

家居[J].科技创新导报,2017(14):1-2.

[5] 黄成云,卢选民,李戈.基于Android的智能家居控制软件

设计与实现[J].计算机与现代化, 2014(11):102-105.

[6] 熊琼.基于ARM Cortex-A8与Android平台的智能家居系

统设计[D].太原理工大学, 2014.

[7] 王朝华,陈德艳,黄国宏,等.基于 Android的智能家居系

统的研究与实现[J].计算机技术与发展,2012, 22(6):

225-233.

[8] 张涛.基于Android的智能家居系统的设计与实现[D]. 安

徽大学, 2015.

[9] 周清平,颜一鸣.Web前端项目开发实践[M].长沙:中南大

学出版社, 2015.

[10]谭浩强.Java编程技术[M].北京:人民邮电出版社,2003.

[11]刘云浩,李沛.基于Spring Boot的后台服务器开发[J].中

国科技信息,2018(17):61-62.

[12]罗亚非.基于TCP的Socket多线程通信[J].电脑知识与技

术,2009,5(3):563-565,598.

[13]韩旭东.基于HTML5的跨平台开发[J].中国新通

信,2018(3):49.

[14]林承师.基于Java平台与图灵聊天机器人的接入实现[J].

信息与电脑,2018(21):113-116.

[15]王超,骆德汉,郑魏,等.基于STM32的嵌入式智能家居

无线网关设计[J].计算机技术与发展,2013(3):3-4.

[16]朱重阳.基于单片机控制的智能家居系统的设计[J].电

子技术与软件工程, 2014(15):77-78.

科技创新导报

Science and Technology Innovation Herald

101


本文标签: 宠物 系统 实现