本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Android的宠物喂食器

发布时间:2021-05-22
分享到:

基于Android的宠物喂食器

发布时间:2021-05-22
分享到:

本文主要介绍如何制造一个小型宠物喂食器,且该喂食器满足:

  • 两个碗:一个用于放垃圾、一个用于放水
  • 两个箱子:一个用于放垃圾、一个用于放水
  • 可通过Android应用程序控制
  • 在LoRa中进行交流
  • 系统收集的数据保存在数据库中

硬件部件:

制造步骤:

步骤一: 

如何放置捕获器,以及如何将食物和水从箱中传送到碗中。想到的第一个视觉效果如图:

但是这种设计的功能不是很好,对此进行了改进。即选择通过软管直接将水放到碗里,对于食物,选择让它直接从上方的管中直接掉入碗中。

在此过程中,对设计方案进行了完善,即:

  • 需要两个称放到碗底
  • 需要超声波传感器,对箱中食物的多少进行监测
  • 将泵放在箱底部,并通过继电器激活
  • 需要一个试验板

步骤二:零件打印

通过3D打印的零件有:

  • 甲蜗杆,这将被本步进电机,以推动所述粗粒朝向碗状供电。
  • 带有孔的箱子,用于装食物。
  • 用一根管子将食物从箱中输送到碗上方,将在此管道中插入蜗杆螺丝。
  • 三种不同类型的支架来支撑结构。

(蜗杆螺丝,该蜗杆由步进电机提供动力,其目的是将食物推向碗)

(箱子,借助电动机和蜗杆螺丝,该箱可用于在将食物输送到碗之前存储存食物)

(厚支架,使用这些支架连接垂直的侧面,以便可以将一侧滑动打开。)

(常规支架,用于连接两个垂直侧面)

步骤三:电路

步骤四:通讯

通过使用LoRaWAN协议来确保宠物喂食器与Android应用程序之间的通信。使用该协议有一下几个原因:

  • LoRa允许低带宽通信,这使其具有能源效率,并且是智能对象的理想选择。
  • 该协议还允许进行上行链路和下行链路通信,这是该项目的先决条件,因为该设计需要从传感器中检索数据并将指令发送到电动机和泵。
  • 使用LoRa协议,该宠物喂食器仅需使用5V供电。它允许用户将其放置在没有wifi的站点上,例如花园或狗窝的末端。

通信架构:

SodaQ板从传感器中检索数据,然后以有效载荷的形式将它们发送到TTN网关。TTN网关将有效负载重定向到Docker中托管的Node-Red容器。使用Node-RED将处理后的数据发布到Cloud Firestore数据库,该数据库与Android应用程序互连。通信都发生在上行链路和下行链路中。

 

步骤五:Arduino程序

1、getKibblesWeight()-用于测量食物碗当前重量的函数

2、kibbles_tank()-该函数返回一个布尔值以告知十五箱是否是空的(超声传感器检测)

3、loop()-该函数可确保碗内东西不会溢出

步骤六:TTN

物联网是用于物联网(IoT)的基于社区的开源LoRaWAN网络。

ESIEE Amiens拥有一个网关,这使得可以在项目中使用TTN。因为TTN,可以在LoRa中进行通信并监视通过网关进行的通信。

在The Things Network上注册了该设备,并根据需要定制了Encoder和Decoder功能。

(TTN的编码器和解码器功能)

(编码器功能)

步骤七:节点红色

ode-RED是基于流程的可视化开发工具,最初由IBM开发,用于将硬件设备,API和在线服务连接在一起,作为物联网的一部分。

Node-RED提供了许多可使用的库,包括MQTT库,用来检索和发送有效载荷。Node-RED还具有用于发送和接收HTTP请求的内置节点。

在Docker上创建了Node-RED容器,以便我们可以更轻松地访问它。

流程:

(NODE-RED流概述)

最重要的分支是接收TTN有效负载的分支,以及接收Android应用程序发送的POST查询的两个分支。

(上行分支)

(下行分支)

“ uplink”分支以MQTT-in节点开始,然后有效负载通过函数对其进行解码。该分支以http-request节点结尾,该节点将POST查询发送到我们的Cloud Firestore数据库。该分支的目标是在数据库中为从TTN接收到的每个有效负载创建一个新条目。

这两个“下行”分支以http-request节点开始,该节点接收来自Android应用程序的POST查询。我们采用了两种不同的路径,一种是针对每个可以接收的命令的路径(/ refill用于在用户单击应用程序上的“ refill”按钮时使用,/ mode用于在用户希望以自动模式进行传递时使用)。根据从POST检索到的值,有效载荷将通过函数进行处理,然后发送到电路储罐到MQTT输出节点。

步骤八:云消防站

Cloud Firestore是一个灵活,可扩展的数据库,由Firebase和Google Cloud支持,用于移动,Web和服务器开发。

我们需要存储数据。经过对Postman的反复试验以找到适合该项目HTTP请求的良好路径之后,我们能够非常轻松地获取和发布数据库中的数据。然后,只需要将Postman查询迁移到Node-RED即可自动执行该过程。对于下行链路通信(从应用程序到电路),使用了Android Studio提供的内置Firestore教程和连接。

(CLOUD FIRESTORE集合)

有一个“ gamelles”集合,其中包含几个文档,这些文档本身由四个字段组成。

步骤九:Android Studio

为达到远程操控,制作了一个简单的Android应用程序,其中包含以下功能:

  • 顶部有两个按钮(浅蓝色),可在手动和自动模式之间进行切换,以重新填充碗。还有一个按钮可以显示箱子的状态,还有一个按钮可以重新填充每个碗。
  • 显示箱子的状况。

通过这个简单的界面,可以检查碗的当前重量,重新填充食物或水碗,然后单击按钮以查看水箱。

为了从Cloud Firestore数据库检索数据,使用了com.google.firebase.firestore库。

项目演示:

 

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论