不同于传统旋转式猫咪铲屎机,我们大胆采用了直线式铲屎。传统猫咪铲屎机,为旋转式铲屎,利用滚筒和网筛选出猫砂,再让猫屎自由落体进入容器中。这种结构可以说相当精妙,但这也使得清洁和处理猫砂成为一个问题。使得这种自动成为另一种负担。
而直线式可以有效解决这一问题。正如远距离传电由交流转为直流一般,大道至简。直线式,可将底部容器分为两个部分,一个装排泄物,一个装废弃的猫砂。并且可以方便的套上垃圾袋,方便铲屎官。
直线式并非完美无缺,这对于电机扭矩有极大的要求。因此我们特意选择了步进电机作为驱动装置,并且配合限位开关来限制步进电机的移动距离。然而这带来了另一个问题,即速度慢。经过我们深入研究Hi3861的硬件,我们选择Hi3861的硬件定时器,基于寄存器与内核代码重构硬件定时器代码,实现了us级脉冲,以此来驱动步进电机的高速运转。并且将其完善,使得其可以同STM32般简单易用,大大方便后续开发者,我们将其命名为“EasyTimer”。
当然,对于猫咪铲屎机,防夹猫也是一项必不可少的功能。每个铲屎官都害怕铲屎机会对可爱的猫主子造成伤害。因此,我们使用超声波测距来检测猫主子,当超声波的检测距离小于事先设定的阈值时,说明猫咪在铲屎机中;反之,则猫咪不在。
同时,超声波检测的距离变化也是我们铲屎的信号之一,其与压力模块的检测数据相结合来构成我们的铲屎信号。 我们通过测定重量的变化值来确定设备的工作状态以及排泄物重量。
对于一个设备没有UI是万万不可的,因此我使用OLED显示一些相关信息,供铲屎官了解。
此外,为了方便铲屎官对猫咪自动铲屎机的使用,我们开发了一个APP来实时监测猫咪自动铲屎机的工作状态和相关信息,让铲屎官在手机上就可以操控铲屎机。
在物联网方面,我们使用了华为云的IoT物联网中的设备接入IoTDA。通过MQTT协议与华为云IoT连接,并实时上传剩余猫砂重量,铲掉的排泄物重量等信息。
此外,我们开发了一个APP通过华为云IoT的API读取上传的数据,来实时监控铲屎机的工作状况和信息,并且可以通过发送指令,来控制铲屎机。该APP连接华为云,设备则通过MQTT连接华为云,实时发送数据和接受指令,并执行指令。
同时我们设计wifi配网功能,在启动时会自动读取nv工厂区的wifi配置,如果没有发现wifi,则进入AP配网模式。手机连接设备的热点后,发送wifi的ssid和密码即可配网。配网后会自动将相关配置写入nv工厂区,在下次启动时便会自动调用。
在外壳设计方面,我们始终贯彻方便铲屎官的理念。我们将铲屎机分为上下两个部分,上下都可拆卸,方便清洗。下面为分离的容器,上面则为猫砂盆,负责铲屎。
由于各种因素的影响,铲屎机的外壳对我们来说并不容易制造,因此我们仅在视频中展示了不成熟的结构演示。
与视频不同的是,我们将重力测量模块移到铲屎机的中部,位于猫砂盆底座的总部,并通过滑槽与滑块实现了猫砂盆底座与猫砂盆的分离与结合。为防止其意外脱落,我们还通过多种方式固定猫砂盆,但拆卸下来仅需四五步,十分方便。
更多的外壳细节,请自行查看3D模型。为方便查看,我们已经将其半剖视图制成PDF文件,并把各个部件导出为STL文件。
众所周知HI3861是搭载有liteos的,因此为了压榨Hi3861的性能以及充分利用系统资源,我们抛弃了裸机定时器处理不同任务的方式,详细设计了任务调度。优先级从高到低分别为:电机驱动、传感器、按键检测、数据发送。其中电机为硬件定时器驱动的,因此在此不过多讨论。
裸机最大的问题就是单线程处理任务,因此在一些中大型项目甚至一些小型项目中会出现任务阻塞。导致整个设备运行阻塞,甚至瘫痪。我们便针对这种情况,不断进行设计和调试,便形成了如上图的任务调度。
传感器是防夹猫的关键,为保证猫主子的安全,我们将其置于优先级第一位。按键检测,对于时序要求也是相当高的,因此我们置于第二位,数据接受则置于最后。
在OLED上,我们总共显示了三个参数,分别是:剩余猫砂重量、铲屎重量、铲屎次数。通过这三个参数,铲屎官可以了解猫咪的排泄状况以及添加猫砂的时间。
为了方便操作,我们同时还设计了按键系统,通过按键的单击、双击、三击、长按,即可操控设备的运转。
长按是进入配网模式,如果已经连接wifi则不会进入。
双击是重新初始化重力感应模块,这需要在没有猫砂的时候进行,这样可以消除误差。
三击,打开舵机,使猫砂流入下方容器,方便更换猫砂。
可以远程监控设备数据,包括:铲屎重量,以及剩余猫砂重量。
同时配备铲屎的指令,一键即可开始工作。