时间:2024-05-04
陈伟汉 吴可测 陈灿华 邓坚成 方锐凯 毋茂盛
摘 要:随着移动互联网技术的发展,越来越多的人喜欢线上购物和叫外卖,快递和外卖量快速增长,无法及时准确接收快递或外卖的问题日益突出。针对这个问题,设计一款基于手机的远程控制收纳系统,该系统基于安卓平台开发了具有图像实时显示及给收纳箱发送指令的APP,基于阿里云服务器搭建了nginx-rtmp流媒体服务器,基于STM32开发了一套硬件控制系统。文中先是介绍了系统的结构和工作原理,然后,论述了相关的硬件设计以及云服务器开发方法,最后,讨论了手机APP的程序的设计。
关键词:外卖收纳箱;远程监控;STM32;远程接收;物联网技术;云服务器
中图分类号:TP393.06文献标识码:A文章编号:2095-1302(2020)04-00-03
0 引 言
当前手机已经成为人们的第二伴侣,用手机进行网购和叫外卖已经成为很多人的生活习惯,据新华网消息,2018年移动宽带用户总数已达13.1亿户,其中,网购用户规模达
6.1亿。我国的快递业务量,2018年达到507亿件,持续保持世界第一,外卖量也同样惊人。因此,如何及时准确接收快递或外卖的问题变得日益突出[1]。为了解决这个问题,本文设计开发了一款用手机远程控制的收纳系统。当物主不在家或者不方便出门接收物品时,可以通过手机APP远程控制收纳箱,实现远程接收快递或外卖物品。
1 系统的结构与工作原理
1.1 系统整体结构
系统的整体结构如图1所示。
系统主要由手机控制端、阿里云服务器、收纳箱三大部分组成。手机控制端包括安卓手机及安卓APP;服务端包括服务端处理程序和数据库;收纳箱包括双控门箱子、控制电路以及相关控制程序。
1.2 工作原理
首先,手机APP进入绑定功能模块,通过扫描二维码与收纳箱中主控电路板上的WiFi模块连接,配置收纳箱连接的家中路由器的账号密码。同时主控芯片将账号和密码通过串口分享给图像采集模块完成设备的绑定配置。然后,收纳箱通过互联网连接阿里云服务器开始轮询,不断向服务器发送状态信息,并查询服务器的指令信息。
接着手机APP注册登录,开始连接云服务器,服务器中的数据库会保存用户的注册信息。APP运行过程中会轮询检查设备的状态信息,并将状态信息显示在手机APP的设备控制界面上。当用户点击控制按钮后,APP会向服务器发送相关的指令,电子收纳箱轮询到指令后便立即执行指令,实现开、关摄像头以及收纳箱门操作;然后,将执行结果返回给服务器;最终在APP设备控制界面上显示操作结果。
2 系統实现
2.1 电子收纳箱设计
电子收纳箱控制电路主要包括:主控电路板、图像采集模块、门控制模块等。硬件组成结构如图2所示。
主控电路板采用STM32作为主控芯片控制双路继电器分别接通开门驱动和关门驱动单元;摄像头模块主要由硬件电路及专用摄像头组成,受主控芯片控制,负责摄像信息的采集、传输,控制采集图像上传至服务器;门控制模块由步进电机、传统锁、电锁等组成,实现收纳箱门的打开和关闭。
2.1.1 主控电路板开发
主控电路板采用STM32作为主控芯片,该芯片具有睡眠、停止、待机三种低功耗工作模式,使用方便,功能强
大[2]。主控电路板通过串口和WiFi模块与图像采集模块相连。另外,扩展了8个I/O口,5个用于输出,3个用于输入。输出口分别用于控制步进电机脉冲、旋转方向、步进电机电源、电锁的开关、WiFi指示灯;3个输入口分别用于检测门的状态、摄像头的状态和重置按键的状态。重置键用于WiFi账户和密码的重置。主控电路板程序设计框图如图3所示。
2.1.2 图像采集模块
图像采集模块通过串行口与主控电路板连接,完成WiFi配置以及指令接收和返回状态。同时,将采集的图像信息上传至服务器。
2.1.3 门控制模块
门控制模块由插梢、传统锁、电锁、电机、牵引线、传感器等组成。当设备故障或者停电时,物主用传统方式可以开锁。电锁用于远程的开、关收纳箱。传感器用于采集门的当前状态信息。
2.2 服务器开发设计
用阿里云服务器[3]配置tomcat,创建MySQL数据库[4]以及搭建nginx-rtmp环境[5],进行视频推流。用Eclipse创建Web项目等。
2.2.1 数据库开发
创建数据库[6],添加用户信息表,存储客户信息,如账号、密码、密保、电话、地址等;添加指令表,存放控制收纳箱及摄像头的指令及状态。
2.2.2 Web程序设计
采用Java语言编写连接数据库及操作数据库代码[7]。注册、登录、修改密码以及传送指令等操作均通过数据库的增删查改实现。注册程序部分代码如下:
try{
con=DriverManager.getConnection(uri,"root","111");
String condition= "insert into member (logname,password,mibao,phone,mailbox) values ('"+logname+"','"+password+"','"+mibao+"' ,'"+phone+"' ,'"+mailbox+"' )";
sql = con.prepareStatement(condition);
int rSet = sql.executeUpdate(condition);
if(rSet!=0) {
out.println("registersuccessfully!");}
else {
out.println("can not register!");}
con.close();
}
2.3 安卓APP设计
据统计,目前安卓系统的市场占有率[8]达到76%。所以,在移动端开发软件进行远程控制箱子更加方便操作。
本系统APP采用Java语言基于MVC模式[9]开发,APP主要功能包括:登录注册,找回和修改密码,扫描二维码读取设备信息并连接设备,设置设备连接家用WiFi账号密码,连接服务器获取摄像头视频信息并显示,获取设备状态信息并通过灯泡亮灭显示,发送开关门和摄像头指令等。APP功能设计框图如图4所示。
2.3.1 用户信息模块
用户信息模块包括:登录、注册、密码修改以及指令的处理。用户通过文本输入框录入信息,APP通过TCP/IP协议[10]将信息上传至云服务器,实现对用户信息的处理和指令的中转。与服务器通信部分代码如下:
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");//获取服务器数据
connection.setReadTimeout(8000);//设置读取超时的毫秒数
connection.setConnectTimeout(8000);//设置连接超时的毫秒数
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
result = reader.readLine();
//读取服务器进行逻辑处理后页面显示的数据
connection.disconnect();
2.3.2 绑定设备程序设计
通过扫描二维码连接设备后,可配置设备连接路由器的账户密码,并进行设备的绑定。
手机与箱子的通信采用WiFi热点连接,用Socket封装信息。部分代码如下:
socket = new Socket(HOST,8080);
PrintStream ps = new
PrintStream (socket.getOutputStream());
ps.println(content);
2.3.3 控制设备程序设计
控制界面包含显示区域和控制区域。顶部是摄像头和门状态的指示灯,中间是视频显示区域,下方是控制按钮。
通过轮询服务器,手机APP可以不断获取收纳箱的状态信息。每个按钮对应一种控制指令,按下时会发送指令给服务器,服务器修改数据库指令表,箱子查询到指令后便执行。指令的上傳与用户信息上传类似,这里不再累赘,部分APP轮询代码如下:
new Thread(() -> {
while (true) {
try {Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();}
try {Trans alwaystrans = new Trans(urlpath); String url_result = alwaystrans.get();
if (url_result.equals("0 btn_chat_check")||url_result.equals("btn_chat_check btn_chat_check")||url_result.equals("2 btn_chat_check"))
{ivState.setImageResource(R.drawable.sxtclose);}if (url_result.equals("0 2")||url_result.equals("btn_chat_check 2")||url_result.equals("0 2")) {ivState.setImageResource(R.mipmap.sxtopen);}} catch (Exception e) {
e.printStackTrace();}
}
}).start();
程序运行界面如图5所示。
3 结 语
本文设计了一套用手机远程控制收纳箱接收外界物品的系统,箱子具有传统开锁功能,视频信息可上传至服务器,并由服务器推流,经过不断的进行代码优化,将视频延时控制在3 s内。
注:本文通讯作者为毋茂盛。
参考文献
[1]刘袁梦,黄文彬,许小郡,等.快递物品远程自动接收系统设计与开发[J].物联网技术,2016,6(12):86-88.
[2]张勇.ARM Cortex-M3嵌入式开发与实践:基于STM32F103[M].北京:人民邮电出版社,2017.
[3]基夫·莫里斯.基础设施即代码云服务器管理[M].北京:人民邮电出版社,2018.
[4]明日科技.MySQL从入门到精通[M].北京:清华大学出版社,2017.
[5]卓郎科技技术团队.直播系统开发:基于Nginx-rtmp-module[M].北京:电子工业出版社,2019.
[6]万常选,廖国琼,吴京慧,等.数据库系统原理与设计[M].3版.
北京:清华大学出版社,2009.
[7]张延军,王保民,何月梅,等.Java程序设计教程:微课·实训·课程设计[M].北京:清华大学出版社,2017.
[8]郭金尚.Android经典项目案例开发实战宝典[M].北京:清华大学出版社,2013.
[9]何成万,余秋慧.MVC模型2及软件框架Structs的研究[J].计算机工程,2002,28(6):274-275.
[10]谢希仁.计算机网络简明教程[M].3版.北京:电子工业出版社,2017.
作者简介:陈伟汉(1997—),男,广东人,本科。
吴可测(1999—),男,广东人,本科。
陈灿华(1999—),男,广东人,本科。
邓坚成(1999—),男,广东人,本科。
方锐凯(1998—),男,广东人,本科。
毋茂盛(1963—),男,河南人,博士,教授,主要研究方向为嵌入式技术。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!