ESP, IoT Весы с телеграм-ботом

IEA4

★✩✩✩✩✩✩
13 Фев 2023
3
10
Приветствую !
Рад представить вниманию изучающего весы с возможностью передачи показаний телеграм-боту.

Принцип работы:
Посредством модуля на основе тензодатчика и микросхемы HX711 производится измерение веса. Результат выводится на семисегментный четырёхразрядный дисплей 74HC595. Последовательность последних измерений передаётся телеграм-боту. В заданный промежуток времени происходит добавление в файл значения результата измерения и времени, соответствующего моменту измерения. По мере накопления данных производится отправка этого файла. По завершению всех необходимых действий устройство уходит в глубокий сон на заданный в коде период времени. Всем процессом управляет Wemos D1 Mini -- плата на базе ESP8266.
Схема соединений:

Схема соединений.jpeg


Возможности:
  • отображение текущего веса на дисплее при каждом пробуждении по таймеру или нажатию на кнопку "ВЗВЕСИТЬ";
  • клик кнопкой "ТАРИРОВАТЬ" от двух до четырёх раз производит тарирование весов, ровно пять -- тарирование, плюс удаление всей имеющейся информации о весе-времени, в том числе файлов;
  • отправка телеграм-боту при каждом пробуждении: текущего напряжения источника питания, последних измерений в виде последовательности, а при накоплении достаточного количества значений, гистограммы для возможности визуально оценить тренд;
  • подытоживание суточного изменения веса в заданное время дня или ночи;
  • сохранение данных в энергонезависимую память, т.е. результаты измерения не теряются в случае отключения питания;
  • отправка телеграм-боту файла результатов измерения-времени для возможности просмотра истории изменения веса автоматически по периоду и по запросу в чате (ввести и отправить "result");
  • точная длительность сна: достигается добавлением поправки к заданному периоду сна, которая высчитывается при каждом пробуждении;
  • при отсутствии связи по вай-фай или при невозможности получить текущее время из отправленного сообщения -- сон на период сна по умолчанию;
  • ОТA-обновление прошивки: скомпилировать bin-файл и скинуть в чат;
  • показания веса неизменны при постоянной температуре, при переменной желательна термокомпенсация, т.к. возможно отклонение от действительного значения: по наблюдениям в среднем на 10г/*С (в планах добавить учитывание влияния температуры на показание).

Ссылка на исходники (код, список компонентов, схемы): https://github.com/IEA4/Apiary-WiFi_scales
Пример реализации -- пасечные весы: https://dzen.ru/video/watch/676d21f051eaa6586b929cf7

Как пользоваться:
После сборки по схеме соединений первым делом необходимо получить коэффициент перевода сырого веса в граммы, для этого загрузить скетч из папки Get_koef_k_for_HX711. Следующим действием в коде из папки Send_recent_long_result прописать свои настройки вай-фай, телеграм-бота и коэффициент перевода сырого веса в граммы. Когда от бота будет получен файл result.txt, запустив код из Grafic_result.py (оба файла должны находиться в одной папке) в окне браузера можно получить красивую картинку с графиком изменения веса по датам с возможностью масштабирования.
 

Goga1965

✩✩✩✩✩✩✩
2 Фев 2026
2
0
Попытался повторить проект автора, но столкнулся с проблемой. При компиляции скетча вылазит ошибка: conversion from 'Pair' to 'boolean' {aka 'bool'} is ambiguous и подсвечивает 229 строку кода- flag_add = conFile.get("key_flag_add"); Ни переустановка библиотек ни установка версии ардуино и ядра ESP8266 указанных автором не помогло. Огромная просьба, пожалуйста, подскажите куда копать дальше!
 

Bruzzer

★★★★✩✩✩
23 Май 2020
761
234
@Goga1965,
Предупреждение. Я не делал и не буду делать этот проект. Посмотрел из любопытства, как на головоломку с поиском решения "методом тыка", и решение может быть не оптимальным.
Для устранения конкретно этой ошибки flag_add = conFile.get("key_flag_add"); достаточно изменить объявление переменной
boolean flag_add = 0;
на
byte flag_add = 0;

Но учитывая общую небрежность в проекте на github на сегодняшний день, не факт, что этот проект в целом рабочий.
 

Goga1965

✩✩✩✩✩✩✩
2 Фев 2026
2
0
@Bruzzer, Огромное спасибо @Bruzzer за оперативность! Последовал Вашему совету и код скомпелировался! На подходе платки из китая. О практической реализации отпишусь по результатам. Еще раз огромное спасибо!