今天小编给大家带来的项目是来自国内的Maker制作的智能宠物猫砂盆,通过记录宠物进入猫砂盆排便的次数来提前预知猫咪的健康状况。
材料清单
硬件列表
- Seeed Studio Seeed XIAO BLE nRF52840 Sense
- Seeed Studio Grove-超声波模块
- Seeed Studio Grove - 4 位数字显示
- Seeed Studio Seeeduino XIAO 扩展板
- Seeed Studio Grove - 通用 4 针带扣 5 厘米电缆(5 件装)
软件列表
- Arduino IDE
项目制作背景
作为新上任的铲屎官,我需要格外关注宠物的健康状况,防止因为自己的疏忽而导致宠物生病。因此我想通过观察猫咪进入猫砂盆的次数来判断给他准备的食物或者喂养方式是否有问题。由于工作的原因我不能和他在一起一整天,所以我想做一个项目来监控他的乱扔垃圾行为,并记录数据供我下班回家时查看。
所以,在这个项目中,我在猫砂盆里放了一个 Grove 超声波距离传感器,每次我的猫进入猫砂盆时,它都会检测到它,并且检测结果可以计数并记录在 Grove-4 位显示器上。
一只正常的 3 个月大的猫每天会有 2-6 次排泄。否则,它可能会出现腹泻或便秘。如果是这样,我需要改变他的饮食或补充一些益生菌。
宠物总是给我们带来无尽的快乐,所以关注它们的身心健康非常重要,让它们能和我们在一起的时间更长。
步骤一,搭建开发环境
根据您的操作系统下载并安装最新版本的Arduino IDE
启动Arduino应用程序
将 Seeed Studio XIAO nRF52840 (Sense) 板包添加到您的 Arduino IDE
导航到“文件>首选项”,然后 使用以下 URL 填写 “ 其他 Boards 管理器 URL ”: https://files.seeedstudio.com...
导航到 工具 > 板 >板管理器...,在搜索框中输入关键字“Seeed NRF52”,选择所需的开发板的最新版本,然后安装它。您可以同时安装两者。
选择您的主板和端口
安装板包后,导航到工具 > 板 并选择所需的板,继续选择“Seeed XIAO nRF52840 Sense”。现在我们已经完成了针对Arduino IDE的Seeed Studio XIAO nRF52840(Sense)的设置。
导航到文件 > 示例 > 01.basics > Blink示例
单击“上传”按钮,将 Blink 示例代码上传到开发板
上传后,您将看到内置的红色 LED 闪烁,每次闪烁之间有 1 秒的延迟。这意味着连接成功,现在您可以使用 Seeed Studio XIAO nRF52840 (Sense) 探索更多项目!
从 Github 下载 UltrasonicRanger 库
https://github.com/Seeed-Stud...
下载 Grove-4 位显示库和 TimerOne 库。
https://github.com/SeeedStudi...
https://code.google.com/p/ard...
步骤二,硬件设置
使用以下引脚原理图连接扩展板上的 XIAO 和其余接口。
代码如下
#include "TM1637.h"
#include <Ultrasonic.h>
Ultrasonic ultrasonic(7); //define pin
const int CLK = 5;//define pin
const int DIO = 4;//define pin
TM1637 tm1637(CLK, DIO);//define pin
boolean catIn = false;
boolean catOut = false;
float counterCatIn = 0;
void setup()
{
Serial.begin(9600);
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);
}
void loop()
{
long RangeInCentimeters;
RangeInCentimeters = ultrasonic.MeasureInInches(); // two measurements should keep an interval
if (RangeInCentimeters < 20) {
catIn = true;
//Serial.println("cat in");
delay(1000);
} else {
catOut = true;
//Serial.println("cat out");
delay(1000);
}
//counter
if (catIn == true && catOut == true) {
counterCatIn = counterCatIn + 0.5;
Serial.println("your cat go in litter box");
Serial.println(counterCatIn);
tm1637.displayNum(counterCatIn);
delay(2000);
delay(500);
catIn = false;
catOut = false;
}
//print
}