Проект · Вес · LPG
Точно знать, сколько газа осталось
Газовый баллон не предупреждает — просто заканчивается посреди ужина. Но у газа есть вес, а вес легко измерить: тензодатчик под баллоном плюс HX711 дают ESP32 показать чистый вес газа в кг и % остатка, а потом зажечь красный LED и запищать до того, как всё кончится. Без манометра и гаданий — весы, которые считают «в ужинах».
Идея — общий вес минус пустой баллон
Тензодатчик читает общий вес, стоящий на нём. Баллон «3 кг» весит около
5 кг пустым (тара) и 8 кг полным — значит газ это
общий − тара, а процент — это к полной зарядке 3 кг. Три строки математики превращают
сырое показание в единственное нужное число: сколько ещё готовить.
// LPG "3 kg" bottle: ~5 kg empty (tare), 3 kg of gas full -> 8 kg total full.
const float TARE = 5.0, NET_FULL = 3.0;
total = scale.get_units(); // kg on the load cell (real: HX711)
net = total - TARE; // the gas alone
if (net < 0) net = 0;
pct = net / NET_FULL * 100.0f; // % of a full charge
int s = pct < 8 ? 2 : (pct < 20 ? 1 : 0); // empty <8 %, low <20 %
if (s && state == 0 && evlog) evlog->print("Gas low - order a refill");
state = s;
ledOk = s == 0; ledLow = s >= 1; buzz = s == 2; Подключение — у HX711 всего два дата-пина
HX711 — 24-битный АЦП для тензодатчиков: четыре провода датчика идут на его площадки E+/E−/A+/A−, а с ESP он общается парой DT (данные) и SCK (тактовый). Питание 3.3 или 5 В, общая земля:
Один раз откалибруйте тару
Точность держится на двух константах: калибровочный фактор (поставьте известный вес, поделите сырой отсчёт на кг) и тара (именно ваш пустой баллон). Сделайте раз и сохраните:
// One-time tare calibration — do it with the EMPTY bottle on the scale:
#include "HX711.h"
HX711 scale;
scale.begin(DT_PIN, SCK_PIN);
scale.set_scale(CAL_FACTOR); // from a known weight: raw / kg
scale.tare(); // zero it — now get_units() reads kg above empty
// TARE above is then the printed empty-bottle weight; adjust NET_FULL to your bottle. Дашборд и алерты
Большая bar-шкала процента, чистый и общий вес статами, бейдж Good/Low/EMPTY и классические зелёный/красный LED + зуммер — ниже 20 % предупреждение, ниже 8 % пусто. Пример из библиотеки (examples/04_Templates/GasCylinder) сливает фейковый баллон, так что падение шкалы и срабатывание алерта видно без единых весов; замените одну строку на реальный HX711. Публикация в MQTT — и Home Assistant закажет дозаправку по автоматизации. Это узкий родственник общего шаблона WeightScale.
Список компонентов
| Деталь | Роль | ~Цена |
|---|---|---|
| ESP32 (или ESP8266) | мозг + Wi-Fi + дашборд | $3–5 |
| Тензодатчик (5–20 кг) + HX711 | взвешивание | $3–5 |
| Зелёный + красный LED, зуммер | локальный статус | $1 |
| Плоская площадка/плита | на неё ставится баллон | — |
Берите тензодатчик выше веса полного баллона (на 20 кг для большого). Смонтируйте в простую платформу, чтобы весь баллон стоял на датчике.
Посмотрите, как сливается баллон и срабатывает алерт на фейковых весах — до покупки датчика.