智能鸡蛋盒的设计与实现

时间:2022-10-07 02:01:25

【前言】智能鸡蛋盒的设计与实现由文秘帮小编整理而成,但愿对你的学习工作带来帮助。1 智能鸡蛋盒的设计 1.1 硬件电路的设计 在设计硬件方案时,需要考虑以下几个因素: (1)该智能鸡蛋盒在低温封闭的环境中工作,所以芯片以及其它元器件必须具备能在低温环境下正常工作的能力; (2)由于是在冰箱内工作,所以无线网络要有一定的无线穿透能力。 经过...

智能鸡蛋盒的设计与实现

摘 要:智能鸡蛋盒采用当下最热门的RT5350芯片和嵌入式Linux衍生出的OpenWrt控制系统,应用ST188光电传感器的光电感应功能通过I/O端口将电平信号传输到主芯片,主芯片经过简单处理后再将鸡蛋数量和储存时间等信息通过TCP协议传输显示到Android客户端。

关键词:智能鸡蛋盒;RT5350;LD1117;Android;Socket;JSON

中图分类号:TP273 文献标识码:A 文章编号:2095-1302(2017)01-00-02

0 引 言

智能鸡蛋盒作为智能家居的一类产品,它解决了人们一直烦恼的忘记家里鸡蛋数量和忘记鸡蛋是否新鲜的问题。本论文实现了把鸡蛋数量和储存时间等数据传输到Android客户端,并记录的功能,用户可以随时查看鸡蛋盒里鸡蛋的数量并检查鸡蛋是否新鲜。

1 智能鸡蛋盒的设计

1.1 硬件电路的设计

在设计硬件方案时,需要考虑以下几个因素:

(1)该智能鸡蛋盒在低温封闭的环境中工作,所以芯片以及其它元器件必须具备能在低温环境下正常工作的能力;

(2)由于是在冰箱内工作,所以无线网络要有一定的无线穿透能力。

经过一系列调研后,发现RT5350这款自带无线功能的主控芯片能满足本项目的基本要求,而其他元器件如电阻、电容、LED灯也能在低温下正常工作。RT5350是Ralink公司在2010年左右推出的一款单芯片,其内部集成了基带处理器、射频、功率放大器以及一颗高性能的MIPS 24Kc CPU内核(最高主频为360 MHz),一个基于Ralink RT5350的五端口百兆以太网交换机[1],所以仅需很少的元器件就可以实现低成本的2.4 GHz 802.11n无线产品。本文将RT5350作为主控芯片,采用距离传感器检测鸡蛋是否存在,不使用压力传感器的原因在于压力传感器的功能是检测压力大小,无法直接检测鸡蛋的有无,而距离传感器可以比较直接的检测出一定距离内是否有物体存在。

智能鸡蛋盒与手C客户端建立TCP/IP连接,通过距离传感器检测鸡蛋数量,同时将这些数据通过引脚口的高低电平传递给主控芯片,主控芯片经过简单处理后将这些信息通过TCP传输给手机客户端。总设计框图如图1所示。

1.2 Android客户端的设计

智能鸡蛋盒Android客户端整体的框架设计采用状态栏ActionBar、切换页面,使用ViewPager与Fragment进行界面显示,使用ListView和自定义的Adapter展示数据列表,采用popWindow组件显示鸡蛋盒里鸡蛋存放的时间[2],选择在Android3.0之后出现的ActionBar来实现标题显示,为了能够让ActionBar的标题居中显示,我们采用自定义的ActionBar。

在底部栏的选项卡里,文字采用TextView,图片采用自定义的开源框架SVGView,原因在于传统的Bitmap(位图)通过在每个像素点上存储色彩信息来表达图像,而SVG是一个绘图标准。与Bitmap相比,SVG放大后不会失真,且Bitmap需要为不同的分辨率设计多套图标,而矢量图则不需要。

2 智能鸡蛋盒的实现

2.1 硬件电路的实现

本软件设计是在虚拟机上的UBUNTU系统上对OpenWrt系统进行裁剪,并通过编写程序来完成。首先要构建编译环境,然后下载并配置OpenWrt,完成基本的配置后,编译利用UBUNTU系统自带的VI编辑器编写驱动、程序以及MAKEFILE,最后对整个OpenWrt系统进行编译,编译完成后生成一个固件,利用串口调试助手SecureCRT和tftpd32软件将固件烧录到RT5350芯片上[3]。

2.2 硬件程序的编写

硬件程序的编写需先打开设备驱动节点并初始化,等待手机端连接,创建子进程发送心跳包并判断连接是否断开,实时监控接收到的指令并解析,实时监控鸡蛋数量变更并发送鸡蛋数量变更数据给手机端。程序整体框架图如图2所示。

开机后,稳压电路会对电源电压进行转换,把电源电压转换成适合RT5350芯片工作的3.3 V电压,之后RT5350芯片开始工作;OpenWrt系统启动后,立即启动Shell开机启动脚本,对本软件程序进行启动;驱动程序会建立一个设备节点并对硬件电路进行初始化,此时硬件电路各部分开始工作,程序启动时会打开字符设备驱动的节点,从而使程序能够对硬件进行操作,同时再对硬件所映射的寄存器进行初始化,使各硬件电路开始工作;初始化完成后,建立Socket,程序填充TCP/IP网络协议信息[4],并开放特定端口等待手机端的连接;创建子进程发送心跳包并判断连接是否断开,子进程会不断向手机端发送心跳包;程序实时接收手机端发送过来的信息并对信息进行指令解析,再根据相应的指令采取相应的动作;程序通过I/O口对ST188光电传感器发送的信号进行采集,从而对鸡蛋盒上存放的鸡蛋数量进行监控,只要鸡蛋数量发生变化,程序会立即识别并将鸡蛋变更后的数量发送到手机端[5]。

2.3 Android客户端的实现

Android客户端的主要核心模块是和硬件通讯以及把硬件采集的数据显示到客户端。该模块主要技术包括Socket通讯、Service后台、BrodcastReceiver通讯、Thread线程以及Java语言的反射技术。目前暂时定位8个鸡蛋的原因是Socket通讯时,在硬件上的开发语言是C,而C的一个字符为8个字节,因此暂时定位发送一个通讯逻辑。根据需求分析,在与智能鸡蛋盒通讯时,我们需要采用Socket长连接通讯机制,Socket基于TCP/IP协议,为Client、Service(C/S)连接方式。智能鸡蛋盒硬件电路作为Server端,而App作为Client端, Client需要保持长连接,就需要通过发送心跳包来与Server保持长连接,并且Android系统的机制不能堵塞UI线程,无法在主线程操作网络访问,因此使用Service和Thread作为Socket通讯的线程,使用Timer定时器与Server端通讯发送心跳包。设备模块实现图如图3所示。

3 智能鸡蛋盒的测试

3.1 硬件电路的测试

系统测试设备见表1所列,硬件测试分为如下几步进行:

(1)检查该模块电路的焊接是否正确,用万用表针对每条线路与每个可疑的断线点进行逐一排查,看是否有短路和断路的地方。

(2)连接5 V电源,静态检查单片机RT5350芯片的电压是否为5 V,是否正常工作,并检查各元件是否有异常发热现象。检查距离传感器是否正常工作,灵敏性是否达标。

(3)使用数字万用表测量电源模块,将电源电压稳定在3.3 V左右。

(4)将编译好的OpenWrt固件烧录到RT5350核心板上,在确保程序正常后插上电源对鸡蛋盒进行功能检测,检测的内容主要有鸡蛋数量能否被正常检测,鸡蛋数量发生变化时能否及时将信号传递给手机端[6]。测试结果符合要求。

3.2 Android客户端的测试

使用 Android[7]手机进行测试,打开Android客户端,连接硬件,查看App显示的鸡蛋数量和储存时间是否与实际符合。所使用的手机为HM NOTE 2(红米 Note 2),Android系统版本为Android 4.4.4。测试结果符合要求。

4 结 语

智能鸡蛋盒硬件电路的主芯片选择了具有WiFi功能模块的RT5350芯片,在嵌入式Linux系统上进行软件编译,运用TCP/IP通讯技术实现主芯片和手机客户端的连接。智能鸡蛋盒Android客户端主要实现和硬件电路的通信,把硬件电路采集的鸡蛋库存及存放时间等参数传输到客户端,方便用户实时查看。

参考文献

[1]李伦.Linux 对信息时代伦理的挑战和意义[J].武陵学刊,2005,30(5):25-27.

[2]党李成.基于 Google Android 智能手机平台的研究与应用[D].合肥:安徽大W,2010.

[3]朱明璋.基于电子元器件散热方法的研究[J].中国科技投资,2014(A06):191.

[4]王朝华.基于Android的智能家居系统的研究与实现[J].广东工业大学,2012,22(6):225-228.

[5]李涛.基于Android的智能家居APP的设计与实现[D].苏州:苏州大学,2014.

[6]吕红海.基于Android的智能家居无线控制系统的设计与实现[D].成都:电子科技大学,2012.

[7]李刚.疯狂 Android 讲义(第 2 版)[M].北京:电子工业出版社,2013.

[8]林雪,金少开,李泽翰,等.智能帮厨[J].物联网技术,2016,6(9):12-13.

上一篇:BP神经网络在我国饲料总产量预测中的应用 下一篇:基于物联网的食品安全检测系统设计