Умные пчелиные весы с ESP32 — автономный мониторинг улья
🌍 Язык: 🇷🇺 Русский · 🇬🇧 English
Вес · Температура · Wi-Fi · Telegram · Графики · 26+ дней автономии
📖 Руководство пользователя · 🔌 Подключение · 📱 Telegram · 📋 CHANGELOG
BeehiveScale — открытый проект пчеловодческих весов для контроля состояния улья без необходимости поднимать его руками. Устройство непрерывно измеряет вес, температуру, отдаёт данные через встроенный сайт и шлёт отчёты в Telegram по расписанию. Работает автономно на 18650/21700 банке несколько недель.
Для кого: пчеловоды любого уровня, от любителей с одним ульем до пасек на 100+ ульев. Простой DIY-проект, повторяется на макетной плате за вечер. Полная инструкция, схемы подключения, готовая прошивка.
Историческая справка: проект начинался в 2024 году на ESP8266 NodeMCU (v1.x–v4.x). В мае 2026 портирован на ESP32-WROOM-32 (v5.0.0+) — из-за невозможности реализовать стабильный deep sleep на ESP8266 в нашей схеме. ESP32 даёт точное расписание, мощный Wi-Fi, Bluetooth (для будущих фич) и в 3 раза больше Flash под код.
- ⚖ Точное измерение веса — HX711 с EMA-сглаживанием, спайк-фильтром, авто-фиксацией стабильных показаний. Точность ±10 г при калибровке.
- 🌡 Температура — DS18B20 (улей) + DS3231 RTC (воздух в корпусе). Влагозащищённый зонд в улей.
- 🕐 Точное время — DS3231 RTC с CR2032 на годы. Не сбивается при выключении.
- 🌐 Веб-панель — встроенный сайт с тёмной темой, графиками, мобильной вёрсткой. Wi-Fi AP или подключение к домашнему роутеру (STA).
- 📅 Архив с пресетами — история по дням за период (день/неделя/месяц/всё/с прошлого визита), маркеры аномалий, скачивание CSV.
- 📲 PWA — установка сайта как приложения на главный экран Android/iOS, offline-кеш.
- 📱 Telegram-отчёты — по расписанию (например 09:00 + 21:00). Работает у любого провайдера благодаря Cloudflare Worker-релаю (обход блокировки
api.telegram.org). - 💤 Deep Sleep + расписание — ESP32 просыпается в заданное время, делает замер, шлёт отчёт, снова в сон. 20-44 дня автономии на 21700.
- 🔋 Мониторинг батареи — делитель напряжения R1+R2 100к на GPIO34 ADC. Процент заряда и алерт при <10%.
- 📟 8 экранов LCD — вес, дельта Δ, батарея, температура, дата/время, статус системы, меню CF, диагностика.
- 🔘 Управление кнопками — MAIN (тара/калибровка), MENU (навигация). Защита от случайного нажатия в улье.
- 🩺 Самопроверка — диагностический экран тестирует HX711, DS18B20, RTC, батарею.
Главная страница сайта
Главная: текущий вес, дельты (от точки + с прошлого замера), температура, батарея, статус системы, мини-график веса, блок «Информация об улье» (сезон, мин/макс веса/темп. за день, точек сегодня, дней наблюдений).
Вкладка Архив
Архив: пресеты периода (сегодня / 3 дня / неделя / месяц / всё / «С прошлого визита» ⭐), лента дней с маркерами аномалий (🔴 при падении больше alert_delta), сводка за период, скачивание CSV.
Telegram-отчёт
📊 Отчёт: улей
🕐 Время: 08.05.2026 21:00:10
⚖️ Вес: 4.42 кг
🎯 Эталон: 4.08 кг (зафикс. 05.05, 3 дн назад)
🎯 От зафикс. точки: +0.34 кг
📈 С прошлого замера: +0.02 кг
🌡 Температура: 27.5 °C
🔋 Батарея: 3.85 В (78 %)
| Что | Модель | Количество | Цена ориентировочно |
|---|---|---|---|
| Микроконтроллер | ESP32-WROOM-32 DevKit V1 (DOIT, USB-C) | 1 | ~500 ₽ |
| АЦП тензодатчика | HX711 | 1 | ~50 ₽ |
| Тензодатчик | Балочный TAL220 (50 кг) | 1–4 | ~200 ₽ |
| Дисплей | LCD 1602 + I²C backpack (PCF8574, 0x27) | 1 | ~200 ₽ |
| Термометр | DS18B20 (водозащ. зонд 1м) | 1 | ~150 ₽ |
| RTC | DS3231 + CR2032 | 1 | ~150 ₽ |
| Кнопки | Тактовые 6×6 мм | 2 | ~20 ₽ |
| Питание | TP4056 + MT3608 + 18650/21700 | 1 комплект | ~200 ₽ |
| Резисторы | 100 кΩ ×2 (делитель), 4.7 кΩ (DS18B20 pullup), 10 кΩ (HX711 SCK pullup) | 4 | копейки |
| Корпус | IP65 пластик ~85×65×30 мм | 1 | ~300 ₽ |
Итого ~2000 ₽ на одни весы.
ESP32-WROOM-32 DevKit V1
├─ D16 ─ HX711 DT ┐
├─ D17 ─ HX711 SCK │ + 10kΩ pullup → 3V3 ⚡ обязательно для sleep
├─ D21 ─ I²C SDA ┐
├─ D22 ─ I²C SCL ┘ LCD 0x27 + DS3231 0x68
├─ D33 ─ DS3231 SQW ↳ опц. задел на P3 (alarm wake)
├─ D4 ─ DS18B20 DATA + 4.7kΩ pullup → 3V3
├─ D27 ─ Кнопка MAIN RTC GPIO (wake-from-sleep)
├─ D26 ─ Кнопка MENU
├─ D34 ─ Делитель батареи ADC1_CH6 (input only)
├─ VIN ─ 5В от MT3608/AS21
└─ 3V3 ─ HX711, DS3231, DS18B20
Полная таблица: hardware/pinout.md. SVG-схема подключения: pages/02_connection.html.
Tools → Board → ESP32 Arduino → DOIT ESP32 DEVKIT V1
Tools → Partition Scheme → Huge APP (3MB No OTA / 1MB SPIFFS) ⚠ обязательно!
Tools → Upload Speed → 921600
Библиотеки (через Менеджер):
arduino-esp322.0.x / 3.0.xLiquidCrystal_I2C1.1.2+HX711by bogde 0.7.5+OneWire2.3+,DallasTemperature3.9+RTClibby Adafruit 2.1+ArduinoJson6.x (не 7.x!)
Открыть → BeehiveScale/BeehiveScale.ino → Загрузить.
pio run -e esp32dev -t uploadplatformio.ini уже настроен (huge_app partition, esp32dev environment).
- Подключи питание через TP4056 (заряд) + MT3608 (Boost 5В) → VIN ESP32.
- На LCD появится splash «Vesy Pchelovod v5.0.21».
- На телефоне найди Wi-Fi сеть
BeehiveScale, пароль12345678. - Открой в браузере
http://192.168.4.1. Логинadmin/beehive. - Откалибруй через сайт → Калибровка → поставь гирю → введи вес → Сохранить.
- Настрой расписание в Настройках (например 09:00 и 21:00).
- Включи Telegram — настрой Token (от @BotFather) и Chat ID (от @userinfobot).
- Установи на главный экран — сайт это PWA, иконка пчелы появится среди приложений.
- Поставь в улей — на одной зарядке 21700 живёт 20-26 дней (с MT3608) или 40+ дней (с HT7333 LDO).
Подробно: 📖 руководство пользователя.
| Конфигурация | Sleep | Автономия 21700 (4500 мА·ч) |
|---|---|---|
| Базовая (AMS1117 + AS21) | ~10 мА | ~13 дней |
| + HT7333 LDO + LED'ы выпаяны | ~7 мА | ~19 дней |
| + Pull-up 10к на SCK HX711 | ~5 мА | ~26 дней |
| + MT3608 вместо AS21 | ~4 мА | ~33 дня |
| + P-MOSFET для LCD off в sleep | ~2 мА | ~65 дней 🎯 |
Замеры подтверждены на железе. Pull-up на SCK HX711 даёт +12 дней автономии за один резистор за копейки.
Hardware:
- ESP32-WROOM-32 (Tensilica Xtensa LX6 dual-core 240 МГц, Wi-Fi 802.11 b/g/n, Bluetooth 4.2 BLE, 4 МБ Flash, 520 КБ SRAM)
- HX711 (24-bit ADC for load cells, gain 128)
- LCD HD44780 16×2 через PCF8574 I²C-extender
- DS3231 (TCXO RTC, ±2 мин/год)
- DS18B20 (1-Wire digital temperature, 12-bit)
Firmware:
- Arduino Framework on ESP32 core 2.0/3.0
- ArduinoJson 6.x
- bogde/HX711, DallasTemperature, RTClib, LiquidCrystal_I2C
Cloud:
- Cloudflare Workers (Telegram-релай) —
beehive-relay.darkvolg.workers.dev - Bypass for blocked
api.telegram.orgin some Russian ISPs
Storage:
- LittleFS (внутренний flash ESP32) для CSV-лога замеров
- EEPROM-эмуляция для калибровки, паролей, расписания, эталонного веса
| Документ | Описание |
|---|---|
| 📖 manual.html | Полное руководство пользователя — 11 вкладок (компоненты, распиновка, прошивка, веб, расписание, Telegram, FAQ) |
| 🔧 pages/01_components.html | Подробный список компонентов |
| 🔌 pages/02_connection.html | Схема подключения, SVG-диаграммы |
| ⚙ pages/03_settings.html | Настройки прошивки, EEPROM-карта |
| 🖥 pages/04_operation.html | Управление кнопками, 8 экранов LCD |
| 🌐 pages/05_web.html | Веб-интерфейс, API-эндпоинты, PWA |
| 📱 pages/06_telegram.html | Настройка Telegram через CF Worker |
| 🩺 pages/07_troubleshooting.html | Диагностика и FAQ |
| 📋 hardware/pinout.md | Полная распиновка с цветами проводов |
| 📋 CHANGELOG.md | История изменений по версиям |
| 🎨 hardware/pcb_layout_v1.excalidraw | PCB-схема (Excalidraw) |
- Порт с ESP8266 на ESP32 (v5.0.0)
- Cloudflare Worker для Telegram (v5.0.0)
- Графики на сайте с тач-курсором (v5.0.13)
- Вкладка Архив + PWA (v5.0.16)
- Пресет «С прошлого визита» (v5.0.21)
- Фаза P3: DS3231 alarm wake вместо timer wakeup (точность ±2 мин/год)
- Фаза P4: PCB v2, IP65 корпус, P-MOSFET для LCD off
- Солнечная панель 5W 6V + MPPT (CN3791)
- HTTPS на сайте (mTLS)
- GSM-модуль для пасек без Wi-Fi
- Графики в архиве (сейчас только сводка)
MIT — делайте что хотите, главное оставьте ссылку на оригинал. См. LICENSE.
- Геннадий Якубовский (@darkvolg) — автор проекта, hardware, тесты на реальной пасеке
- Claude (Anthropic) — co-author, прошивка ESP32 порт, веб-панель, документация
Помог проект? Поставь ⭐ на GitHub. Нашёл баг или хочешь добавить фичу — issues и PR welcome.