RisalDash RisalDash

Проект · Вес · LPG

Точно знать, сколько газа осталось

Газовый баллон не предупреждает — просто заканчивается посреди ужина. Но у газа есть вес, а вес легко измерить: тензодатчик под баллоном плюс HX711 дают ESP32 показать чистый вес газа в кг и % остатка, а потом зажечь красный LED и запищать до того, как всё кончится. Без манометра и гаданий — весы, которые считают «в ужинах».

ПроектHX711ТензодатчикLPGESP32
Умный монитор газового баллона на ESP32: HX711 взвешивает LPG, чистый вес газа и % остатка

Идея — общий вес минус пустой баллон

Тензодатчик читает общий вес, стоящий на нём. Баллон «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 В, общая земля:

Усилитель тензодатчика HX711 подключён к ESP32: VCC, GND, DT и SCK
Два дата-пина (DT/SCK) плюс питание. Собрано в BoardLab.

Один раз откалибруйте тару

Точность держится на двух константах: калибровочный фактор (поставьте известный вес, поделите сырой отсчёт на кг) и тара (именно ваш пустой баллон). Сделайте раз и сохраните:

// 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 кг для большого). Смонтируйте в простую платформу, чтобы весь баллон стоял на датчике.

Посмотрите, как сливается баллон и срабатывает алерт на фейковых весах — до покупки датчика.