【IoT毕设】STM32+机智云AIoT+远程智能型宠物喂养系统开发-Arduino中文社区 - Powered by Discuz! Archiver

机智小子 发表于 2022-8-19 16:42

【IoT毕设】STM32+机智云AIoT+远程智能型宠物喂养系统开发

摘要:为了解决人们居家喂养宠物的困扰和关注宠物健康,文中针对传统机械式宠物喂养系统的不足之处,开发一种基于物联网的宠物喂养系统。首先构建以机智云物联网平台为通信枢纽的宠物喂养系统总体框架。然后重点设计系统的硬件和软件,控制电路以STM32F103C8T6微控制器为核心,根据收到的指令数据,控制电机驱动模块驱动直流电机投放和收集饲料,启用音乐播放模块和LED与宠物进行互动;

软件设计通过AndroidStudio开发手机应用作为上位机,用于设定并显示喂养参数,进行实时远程控制,用C语言开发与控制电路相匹配的下位机程序。最后通过样机对系统进行测试。结果表明:系统的定时喂养时间误差不超过1min,饲料实际投放量最大误差约为10g,具有一定的可靠性。通过应用电子技术,解决了传统机械式宠物喂养系统无法实时远程控制,动态调整饲料投放量的缺点,同时残料收集功能保证宠物每顿能吃上新鲜的饲料,能够胜任居家宠物喂养工作。

0引言

随着物联网技术的发展,物联网在社会生产生活的各个方面得到了广泛的应用,万物互联的趋势不断加强。例如应用于工业制造生产车间中监测量化能源消耗,实现能源的高效管理。而随着智能农业时代的到来,物联网更广泛地应用于农业中,如:在农业温室大棚中,物联网系统采集分析相关参数,控制大棚设备工作,降低劳动强度,提升蔬菜品质;应用于农业节水灌溉中,管理和配置水资源,节约水电资源;应用于梅花鹿精准养殖,监测和控制鹿场信息,提高自动化程度;应用于水产养殖,实时监测养殖塘水质参数的变化并进行调节。

随着我国社会经济的发展,人民生活水平不断提高,人们以饲养宠物来舒缓情感,猫狗是其中主要的宠物类型。相关数据显示,2019年我国现有宠物猫狗总数近1亿只,同比增长8.4%,宠物行业迅速发展。但由于工作或旅行等原因,准时喂养宠物是不小的困扰,如果长期一次性投喂过多的饲料,宠物会养成暴饮暴食的习惯,不利于宠物的健康成长。同时,作为哺乳动物,猫犬也有情绪,长时间独处容易患有分离焦虑症。

为了解决人们居家饲养宠物的困扰,本文将物联网在农业畜牧养殖中的应用扩展到居家宠物的喂养,开发了一套基于物联网的宠物喂养系统。该系统具有远程实时控制饲料投放、定时自动喂养和音乐娱乐功能。
1系统总体架构设计


系统总体框架包括上位机、机智云(Gizwits)和下位机三部分,依托机智云实现上位机和下位机之间的远距离通信。系统整体运行流程如下:手机APP通过MQTT协议与机智云服务器相连;再通过WiFi和esp8266模块与STM32F103C8T6微控制器进行双向通信,控制其他模块的执行。系统架构如图1所示。
https://club.gizwits.com/data/attachment/forum/202208/19/155321xkucbzs8un09bky3.jpg.thumb.jpg
图1远程宠物喂养机总体架构

1)上位机:是以机智云自助开发平台提供的源代码为基础,使用AndroidStudio进行二次开发的移动手机APP。通过与机智云服务器相连接,在手机APP操作界面实现喂养系统参数的设定和显示,并将相应的指令数据下发给下位机。
2)机智云:为上位机、下位机提供稳定灵活的数据接入服务,保证数据的安全可靠。小批量非商用产品可以免费使用,适合对小批量特定功能的产品进行快速开发。同时还具有数据挖掘和分析等服务,能够为后续产品成熟进行大规模商用提供决策意见。
3)下位机:以STM32F103C8T6微控制器为核心,接收处理来自上位机的指令数据,控制其他模块进行相应事务的处理。主要执行的动作包括残余饲料的清扫收集、添加新的饲料和播放音乐呼唤宠物进食。

2系统硬件设计

系统的硬件设计主要是以STM32F103C8T6微控制器为核心的下位机控制电路设计,其中STM32F103C8T6为意法半导体公司出品的中低端32位ARM微控制器,内核是Cortex-M3,工作频率为72MHz,集成多种外设功能,本次开发主要使用到Timer、UART和GPIO功能。控制电路主要由串口通信设备、直流电机驱动和直流降压模块构成,图2为系统控制电路连接示意图。

https://club.gizwits.com/data/attachment/forum/202208/19/155339m39gr3sj92bfnpsp.jpg.thumb.jpg
图2控制电路连接示意图

2.1串口通信设备
WiFi通信模块和音乐播放模块是系统使用到的串口通信设备,均通过串口与微控制器相连通信。其中,WiFi通信模块为乐鑫公司所生产的ESP8266,内部集成了32位的MCU。使用方案有MCU方案和SOC方案,分别支持WiFi协议栈和实时操作系统功能。本次开发采用独立MCU方案,ESP8266只负责传递指令数据,不做处理。

而DFPlayer是DFRobot出品的音乐播放模块,本身集成了MP3、WAV、WMA的硬解码,可以对TF卡进行驱动,支持FAT16、FAT32文件系统,多种控制模式可选。通过简单的串口指令,DFPlayer能够完成播放指定的音乐、调节音量以及如何播放音乐等功能。本次开发用到无校检和的串口指令,格式为7EFF06xx00xxxxEF,由起始、版本号、字节数、命令类型、反馈、命令高字节、命令低字节、结束等8个字节组成。

2.2直流电机驱动
宠物喂养系统添加和清扫饲料的功能由直流电机实现,为了尽量减少清料和加料所需的时间,经过预先试验,最终选取转速为1800r/min,功率为15W的24V直流电机。直流电机的运转和停止受继电器控制,驱动继电器闭合需要较大的电流。由于STM32芯片I/O口出来的电流较小,所以采用具有续流作用的ULN2003A芯片对控制电流进行放大。直流电机的工作电压大于单片机的工作电压,为了防止单片机发生过压烧毁,在控制电路和工作电路中采用光耦隔离元件进行电路隔离,同时也可以降低工作电路对控制电路的干扰。

2.3直流降压模块
直流降压模块负责将24V的外接电源降压输出为可供系统其他模块使用的电压。由于STM32核心板工作电压为5V且可以输出3.3V的电压,直流电机的工作电压直接由外接电源提供,所以直流降压模块需要对外输出5V的直流电压。直流降压模块由LM7812和LM7805系列三端稳压器构成,外围元件较少。对24V直流电压进行逐级稳压,能够保障电路安全,同时提供了多种规格的电压,为后续添加不同工作电压的器件提供了方便。

3系统软件设计

机智云用数据点描述设备的功能和参数,具有不同的读写类型和数据类型。在进行系统软件设计开发前,在机智云自助开发平台创建产品项目,并根据产品功能设置相关的数据点,机智云平台会生成相应的APP源码和通信协议,沟通整个系统的通信。在上述的基础上进行系统软件开发更方便快捷,包括上位机的APP开发和下位机的单片机程序编写。

3.1上位机软件设计
机智云智能自助开发平台提供的APP源码具有注册登录、设备绑定与设备控制等APP控制的常用功能,也可以根据产品的需要进行二次开发,实现第三方注册登录、消息推送和界面设计等。官方提供的原始界面每个操作设置独自占据一行,空间利用率低,无法在手机屏幕上完全显示所有的操作设置内容,需要上拉。针对原始操作界面的不足,对APP源码中的activity_gos_device_control.xml文件进行重写,新的操作界面根据不同的功能分成三部分,界面显得紧凑简洁。

机智云Aiot开发平台提供的虚拟设备在线调试功能,可通过数据界面模拟显示真实设备上报数据的过程。当操作手机APP改变设置参数或操作指令时,数据界面对应的数据点状态会发生相应的改变,可以快速验证设备数据点的数据收发情况和APP功能是否有误。经过测试,修改后编译的手机APP功能实现正常,图3为测试手机APP的结果。

3.2下位机软件设计

机智云提供SoftAp和AirLink两种入网模式,传入gizwitsSetMode()函数的参数不同,可实现配置入网模式或恢复出厂设置等功能。宠物喂养系统需要进行远程控制,故采用AirLink入网模式。上位机下发指令或数据给下位机通过gizwitsEventProcess()函数实现,该函数将上位机指令或数据的改变处理为不同的事件,然后在事件中进行具体的处理。本设计通过在事件发生处理流程中改变事件标志位或数据,影响主函数流程的执行,具体处理在主函数中。gizwitsHandle()函数实现下位机上传数据给上位机的功能,根据机智云数据类型格式,在该函数中完成设备数据点的封装处理和上报。

https://club.gizwits.com/data/attachment/forum/202208/19/155400pwrwpjzvcw0gpg4g.jpg.thumb.jpg
图3测试手机APP结果

下位机上电后,控制系统会进行相应的初始化,如开启系统时钟和中断,配置串口通信等;然后连接网络,通过机智云服务器与上位机进行实时通信,接收指令数据。事件标志位会根据指令数据发生改变,主程序的主循环会不断判断当前事件标志位状态,执行相应操作。例如开启定时自动喂养模式后,会置位自动喂养事件标志位,当到达设定的喂养时间点时,会触发单片机执行自动喂养程序,按照用户预先设定的参数对宠物进行喂养。主程序流程如图4所示。
https://club.gizwits.com/data/attachment/forum/202208/19/155412tg37s3sm6zm4mg6w.jpg.thumb.jpg
图4主程序流程

4系统测试

根据上述的设计,完成宠物喂养系统电路板的制作和程序的烧写,电路板实物图如图5所示。为了验证宠物喂养系统能否胜任宠物喂养工作,对宠物喂养系统进行出料量和定时喂养时间的测试。
https://club.gizwits.com/data/attachment/forum/202208/19/155425sdlaqahplni1jyii.jpg.thumb.jpg
图5宠物喂养系统电路板实物图

4.1系统出料量测试
经过前期的预试验,最终确定加料电机运行8s,从储料桶中掉落饲料20g作为一份标准的饲料,在单片机程序中进行设置。根据查阅的资料,成年犬类一顿需要大约135g饲料。为了留有余量,设置宠物喂养系统最大投放8份饲料,即160g饲料。对每一份饲料的投放进行了5次测量,将测量的数据从小到大排列,如表1所示。

表1出料量测试数据
https://club.gizwits.com/data/attachment/forum/202208/19/155439vuvv7z9sj3ond9kw.jpg.thumb.jpg


从表1的数据中可以看出,宠物喂养系统实际的出料量与理论的出料量趋势一样且相近,但整体上实际出料量比理论出料量偏少,主要原因在于控制电机的运行时间以秒为单位,精确度有限。虽然无法精确控制每次饲料的投放量,但通过控制电机运行时间控制饲料投放量是一种简单直接的方法,可以在设置饲料投放份数时,多设置一份饲料,增加饲料投放量,满足宠物的进食需求。宠物喂养系统有残料收集功能,可以收集宠物进食后残余的饲料。

4.2系统定时喂养时间测试
为了较准确地得知系统执行定时自动喂养的时间,通过PC端的串口助手输出调试信息,显示下位机接收并处理上位机下发的定时喂养指令和数据,如图6所示。
https://club.gizwits.com/data/attachment/forum/202208/19/155516pqks53efff855e7z.jpg.thumb.jpg
图6定时调试信息

图6的调试信息显示,在进行自动喂养模式时间设置时,当前网络时间为9时15分22秒,取9时15分作为系统时间基准。由于通信协议的原因,微控制器通过机智云获取网络时间后输出,需要微控制器处于空闲状态。所以9时17分32秒是执行自动喂养的时间,而设置的3个喂养时间点中的一个是9时17分,这表明系统的定时喂养时间误差不超过1min。因为在系统软件设计时,为了手机操作界面简洁和操作方便,只能设置喂养时间的小时和分钟。

在单片机定时喂养时间设置程序中,通过机智云获取当前网络时间,舍弃了秒钟后作为系统时间基准。设置的喂养时间的秒钟位默认为零,只精确到了分钟,所以定时喂养的时间误差出现在秒钟上。实际测试结果与系统程序设计的结果相符合,表明系统定时喂养具有可靠性。

5结论

通过Android技术、物联网技术和单片机技术,在硬件和软件上实现了宠物喂养系统的实时远程控制、饲料投喂和互动娱乐功能。在实际测试中,宠物喂养系统工作稳定,能有效完成喂养宠物的任务。整个宠物喂养系统具有较强的实用性,适用于居家宠物喂养,也可以扩展到畜牧养殖或水产养殖中的饲料投放管理上。


页: [1]
查看完整版本: 【IoT毕设】STM32+机智云AIoT+远程智能型宠物喂养系统开发