HX711称重传感器用于宠物喂食量语音记录
HX711称重传感器用于宠物喂食量语音记录
你有没有遇到过这种情况:早上出门前给猫主子放好了粮,晚上回来却发现碗还满着——它到底吃没吃?还是只吃了几口就嫌弃地走开了?🐶🐱
在多宠家庭里更头疼:谁吃了多少、是不是抢食、有没有偷吃……光靠定时出粮的喂食器根本搞不定。而市面上大多数“智能”喂食器,其实只是个
会联网的漏斗
,根本不知道粮食去哪儿了。
直到我开始用 HX711 + 称重传感器 做实时监控,再配上一句清脆的语音提示:“本次喂食 85 克”,瞬间感觉科技终于懂生活了!💡
今天就想和大家分享这个超实用的小项目——如何让喂食器真正“知道”发生了什么,并且主动告诉你。
从一粒狗粮说起:为什么需要精准称重?
宠物健康管理,第一步就是饮食记录。但手动记?太难坚持。APP打卡?容易忘。
而如果我们能让设备自己“看见”重量变化呢?
这就轮到
HX711
登场了。别看它是个几块钱的小模块(某宝均价 ¥3~5),但它可是专为称重而生的“精密大脑”。🧠
它能读取称重传感器上微弱到只有几毫伏的电压信号,然后以
24位高精度
转换成数字值,分辨率达到
0.1克级别
——这意味着哪怕是一小撮猫粮被叼走,系统都能感知!
比如我家用的是 5kg 量程、灵敏度 1mV/V 的半桥应变片式传感器,配合 HX711 后,空载时输出稳定在 ±2g 内波动,完全满足日常需求。
HX711 是怎么“听懂”重量的?
说白了,HX711 并不直接测量“重量”,而是读取一个叫 惠斯通电桥(Wheatstone Bridge) 的电路输出差分电压。
当食物放在托盘上,传感器里的金属梁发生形变 → 应变片电阻改变 → 电桥失衡 → 输出一个与重量成正比的微小电压(通常是 μV 级)。
这个信号太弱了,普通 ADC 根本扛不住噪声干扰。但 HX711 不一样:
- ✅ 内置可编程增益放大器(PGA),A通道支持 64x 或 128x 放大;
- ✅ Σ-Δ 型 ADC 架构,抗干扰强,适合低频静态测量;
- ✅ 只需两个 GPIO 引脚通信(DOUT 和 PD_SCK),协议简单到飞起;
- ✅ 工作电流仅 1.5mA,休眠模式低于 1.5μA,电池供电也 OK!
它的数据读取方式像 SPI,但又不是标准协议。好在 Arduino/ESP32 社区有成熟的库,比如
HX711.h
,几行代码就能跑起来:
#include <HX711.h>
const int DOUT_PIN = 3;
const int SCK_PIN = 2;
HX711 scale;
void setup() {
Serial.begin(9600);
scale.begin(DOUT_PIN, SCK_PIN);
scale.set_scale(22800.f); // 比例因子,现场标定获得
scale.tare(); // 去皮重,清零
}
void loop() {
if (scale.is_ready()) {
float weight = scale.get_units(); // 返回单位重量(kg)
Serial.println(weight * 1000); // 转为克打印
}
delay(100);
}
📌 小贴士:
set_scale()
的数值必须通过实际校准得到!
方法很简单:先
tare()
清零,再放一个已知重量(如 1kg 砝码),读取原始读数 N,则比例因子 = N / 1000(单位 g)。
重量变了,那就“说”出来!
光有数据显示还不够——真正的智能是让人 无需操作也能获取信息 。
想象一下:老人弯腰看屏幕费劲,孩子看不懂数字,盲人更是完全无法获知状态……但如果系统能自动说一句:“今日第三次喂食,共 112 克”,是不是立刻变得贴心多了?🎙️
这就是我们加入 语音反馈模块 的原因。不需要联网、不依赖手机,本地播报,响应快、隐私安全。
我试过几种方案,最终选择了 DFPlayer Mini MP3 模块 ,因为它便宜(¥15左右)、易用、支持 FAT32 SD 卡存储音频文件,还能通过 UART 控制播放。
思路很直接:把“零、一、二…十、百、千、克”这些字分别录成
.mp3
文件编号存进 SD 卡,MCU 根据喂食克数拆解数字,按顺序播放,拼出完整语句。
例如喂了 128 克:
播放 1(“一”)→ 20(“百”)→ 12(“二”)→ 21(“十”)→ 18(“八”)→ 23(“克”)
听起来就像真人说话:“一百二十八克”!
下面是核心代码片段:
#include <SoftwareSerial.h>
#include <DFRobot_DFPlayer_Mini.h>
SoftwareSerial mySerial(10, 11); // RX, TX
DFRobot_DFPlayer_Mini dfplayer;
void playVoiceFeedback(float grams) {
int g = (int)grams;
int hundreds = g / 100;
int tens = (g % 100) / 10;
int ones = g % 10;
dfplayer.play(1); delay(800); // “本次喂食”
if (hundreds) {
dfplayer.play(10 + hundreds); delay(500);
dfplayer.play(20); delay(300); // “百”
}
if (tens) {
dfplayer.play(10 + tens); delay(500);
dfplayer.play(21); delay(300); // “十”
} else if (hundreds && ones) {
dfplayer.play(22); delay(300); // “零”
}
if (ones) {
dfplayer.play(10 + ones); delay(500);
}
dfplayer.play(23); // “克”
}
🎧 提示音也可以个性化!比如:
- 剩余粮量 < 100g → 播放“主人,我快饿啦!”
- 连续三天超量 → “注意哦,最近吃得有点多~”
甚至可以加个按钮,让用户自己录音:“这是你的小鱼干奖励!” 😄
整体架构长什么样?
整个系统其实并不复杂,硬件链路清晰明了:
[称重平台]
↓
[Load Cell] → [HX711] → [MCU: ESP32/Arduino]
↓
[DFPlayer] → [喇叭]
↓
[RTC] ← 时间戳记录
↓
[Wi-Fi/BLE] → 手机端日志同步(可选)
工作流程也很自然:
1. 上电自检 + 自动去皮(tare)
2. 每 100ms 采样一次重量
3. 检测到重量突降 >10g 且持续稳定 → 判定为一次取食
4. 计算 Δm(消耗量)
5. 触发语音播报 + 本地日志记录(EEPROM/SD卡)
6. (可选)上传至 Home Assistant 或微信小程序查看趋势图📊
实际使用中要注意哪些坑?
别以为接上线就万事大吉,实战中有很多细节要处理:
🔧
防抖与误触发
地板震动、猫跳上喂食台都可能引起短暂重量波动。解决办法:
- 设置最小变化阈值(如 10g)
- 加入延时确认机制:连续 3 次读数稳定下降才算有效事件
🌡️
温度漂移怎么办?
应变片对温度敏感,夏天和冬天零点可能偏移几十克。建议:
- 每天凌晨执行一次自动清零(无人进食时段)
- 或使用带温补的传感器型号
💧
防潮防腐蚀
宠物粮吸潮后粘底、油脂污染传感器……长期可靠性很重要!
- 选用不锈钢封装 load cell
- 在传感器与料仓之间加橡胶垫密封
- 定期提醒用户清洁托盘
🌙
夜间静音模式不能少
总不能半夜三点突然来一句“喂食 96 克”吓醒全家吧?😅
可以通过光敏电阻或设定时间段关闭语音,只保留日志记录。
🔋
功耗优化空间大
如果想做便携款或太阳能供电版本:
- HX711 支持休眠模式,PD_SCK 高电平维持 60μs 即可唤醒
- MCU 使用低功耗睡眠 + 定时中断采样
- 语音模块平时断电,触发时再通电
这套方案还能用在哪?
你以为这只是个“宠物喂食提醒器”?格局打开!
🐾
实验动物管理
:科研实验室中小鼠每日摄食量自动记录,减少人工误差;
🏥
康复营养追踪
:术后患者每餐摄入量语音提醒+云端报表,助力医生评估恢复进度;
🍳
智能厨房调料盒
:炒菜时说出“放盐 5 克”,系统自动称量并播报确认;
🌾
微型农业投料机
:养鸡场、鱼塘实现按体重配比精准投喂。
更进一步,结合 AI 语音识别(如离线版 LVCSR 芯片),未来完全可以做到:
“嘿,小喂,给我家花花来 70 克冻干。”
→ 设备自动出粮,并回应:“已为花花投放 70 克冻干,请查收~”
这才是真正的 无感交互 啊!
最后一点思考
技术的本质,是服务于人的生活体验。
我们折腾 HX711、写代码、调语音,不是为了炫技,而是希望那只不会说话的毛孩子,能被更好地理解和照顾。
当你出差在外,听到录音回放里那句轻柔的“今天一共吃了三次,总量 240 克”,心里会不会踏实一点?
当爸妈年纪大了,不用低头看屏幕,也能听清“狗狗刚吃完饭啦”,是不是觉得科技也有温度?
这或许就是 IoT 的意义: 让沉默的物体开口说话,让看不见的数据变得可感可知。
而这一切,从一颗价值三块钱的 HX711 模块开始。✨
更多推荐
所有评论(0)