Від pet-проєкту до розумної пасіки: ESP32, SMS та Android без сервера
Мій проєкт для бджільництва, у якому контрольний вулик на пасіці та Android-застосунок працюють разом без власного сервера. Пристрій збирає виміри й передає їх через SMS, а телефон зберігає дані та дає змогу переглядати їх у застосунку.
Я починав його як заняття у вільний час, щоб залишатися пов’язаним із бджільництвом. У цій статті розповім про початкові вимоги та рішення, з яких склалася система: як поєднати автономний пристрій із корисним відображенням даних на телефоні, коли на пасіці слабкий мобільний зв’язок і немає інтернету.
Все почалося значно простіше
Розробка почалася наприкінці 2023 року. На той час я вже мав значний практичний досвід у бджільництві, підкріплений хорошою теоретичною базою. Це було улюблене хобі, у якому я добре розбирався. Початок повномасштабної війни перервав можливість ним займатися.
Зосереджуватися лише на роботі довго не виходило: я постійно повертався думками до бджіл. Хотілося знайти заняття, яке дозволило б у вільний час зберігати зв’язок із цією справою. Так виникла ідея власного технічного проєкту для пасіки.
Планів виходити на ринок у мене не було. Це був pet-проєкт із можливістю спробувати щось нове й розвиватися. Почав я з вивчення того, що вже зробили інші: які пристрої існують і як побудовані системи навколо них.
Для власного пристрою хотілося використати ESP32. Мене приваблювали підтримка цього сімейства з боку програмних інструментів і великий вибір доступних на ринку модулів та плат. Далі потрібно було визначити, як пристрій отримуватиме живлення, передаватиме виміри й де ці дані зберігатимуться.

Здається, так виглядає більшість PoC-плат: головне, щоб ідея запрацювала. ))))
Пристрій і Android без власного сервера
Однією з головних вимог була автономність: я хотів, щоб пристрій працював щонайменше три місяці від невеликого акумулятора. Це була початкова мета, від якої я відштовхувався, обираючи спосіб передавання даних.
Інша вимога стосувалася зв’язку. Я орієнтувався на кочові пасіки, де доводиться зважати на слабке мобільне покриття та відсутність інтернету. Хотілося мінімізувати кількість і тривалість виходів пристрою в ефір, щоб зменшити витрати енергії на передавання.
Водночас у телефоні я хотів бачити графіки, середні значення та зміни показників за вибраний період. Для цього потрібен був застосунок із базою даних. Власний сервер означав би ще одну частину системи, яку довелося б розробляти й підтримувати, тому дані вирішив зберігати на Android.
Для зв’язку між пристроєм і застосунком обрав SMS. Така схема не вимагала інтернету для передавання вимірів; залежність від доступності мобільної мережі залишалася.
Вимірювати щогодини, передавати пакетами
Наступне питання — як скоротити кількість надсилань. Я розділив частоту вимірювання та частоту передавання: пристрій щогодини збирає показники налаштованого набору датчиків і зберігає їх до наступного запланованого надсилання. Дані за кілька годин пакуються в одне SMS.
Наприклад, за інтервалу передавання вісім годин повідомлення містить вісім погодинних наборів показників. За добу виходить три SMS із даними за кожну з 24 годин — за умови, що вимірювання й доставлення відбулися штатно. Час надсилання можна обирати, тож вісім годин тут — приклад налаштування. Для задуманого сценарію достатньо й двох повідомлень на добу: за рівномірного розкладу кожне має вміщувати дані за 12 годин.
Завдяки цьому в застосунку зберігається погодинна деталізація, хоча нові дані надходять лише кілька разів на добу. Це й був компроміс: рідше передавати дані, погодившись на затримку їх появи на телефоні.
Різні датчики та одне SMS
Набір датчиків можна було конфігурувати. Основу становили датчик ваги та два датчики температури: один для навколишнього середовища, другий — для вимірювання всередині вулика. Внутрішній датчик я передбачав розміщувати над клубом бджіл — їхнім щільним скупченням. Із мого досвіду бджільництва, зіставлення внутрішньої та зовнішньої температури було особливо інформативним для спостереження за станом і розвитком сім’ї в різні періоди року.
Опційно можна було додавати датчики вологості, тиску й руху, а також невеликий екран для перегляду показників безпосередньо біля пристрою.
Тому один погодинний запис містив кілька значень. Обсяг даних залежав і від набору датчиків, і від кількості годин між надсиланнями: що більше показників та довший інтервал, то більше потрібно передати за один раз. Окрім самих значень, у повідомленні мав бути щонайменше час першого вимірювання в пакеті.
Для всього цього я заклав обмеження: вмістити пакет в одне SMS із бюджетом у 160 символів. Потрібен був компактний спосіб записати змінний набір показників за кілька годин разом із часовою прив’язкою. З цієї вимоги й почалася розробка формату стислих повідомлень із даними.
Нижче — огляд стану за три тижні, з 30 серпня до 20 вересня, у сучасній версії застосунку: загальні показники та їхня історія на графіках.

Огляд стану за три тижні: значення показників і їхні зміни за вибраний період. Нижче також видно записи про сім’ю — частину щоденника, який розгляну в наступній статті.

Огляд вимірів за три тижні. На графіку ваги видно процес загодівлі — ступінчасте зростання після додавання корму. Підказки дозволяють переглянути дату, час і значення окремих вимірів.
Зв’язок на пасіці та енергоспоживання
Після розділення вимірювання й передавання робочий цикл виглядав досить просто. Раз на годину пристрою вистачало кількох секунд активності, щоб зібрати показники датчиків і зберегти їх. Окремо, у вибрані години, потрібно було ввімкнути GSM-модуль та надіслати накопичені дані. Саме цей етап вимагав більше часу й енергії.
У моїх спостереженнях для надсилання одного SMS вистачало приблизно
Ці інтервали описують досвід із моїм пристроєм, а не гарантований час роботи GSM у будь-якій мережі. Для оцінки автономності важливо було перевірити, як поводиться вся система протягом тривалого використання.
Частота надсилання — частина налаштувань
Технічно можна було передавати дані щогодини: у налаштуваннях обиралися конкретні години надсилання. Для мого сценарію таке часте оновлення було зайвим. Погодинна історія вже накопичувалася на пристрої, а отримувати її на телефоні було достатньо кілька разів на добу.
Повідомлення можна було надсилати й на кілька номерів. Це давало змогу отримувати дані кільком користувачам без власного сервера, але кількість надсилань зростала. Розклад і кількість одержувачів потрібно було обирати з огляду на витрати живлення.
У цих умовах SMS став для мене простим і практичним каналом: короткий пакет надходив у застосунок без потреби встановлювати інтернет-з’єднання. За слабкого покриття я робив ставку саме на такий обмін. Затримки й невдалі спроби залишалися можливими, тому доступність мобільної мережі все одно була умовою роботи.
Передавання через Wi-Fi-мережу пасіки з доступом до інтернету з’явилося в подальших версіях. Його роль розгляну окремо; початковий віддалений обмін спирався на GSM і SMS.
Що довелося переробити в платі
За моїм досвідом, навіть для нескладного пристрою нерідко доводиться тричі переробляти плату, перш ніж отримати більш-менш нормально працюючий екземпляр. Цього разу вийшло так само. Зокрема, я неправильно узгодив рівні сигналів між SIM800 та ESP32, через що періодично втрачалося керування GSM-модулем.
Окремою проблемою було завелике споживання під час сну. Скоротити сеанси зв’язку виявилося недостатньо: потрібно було підібрати джерело живлення з дуже малим власним споживанням у стані очікування. Це був довгий, поступовий підбір. В описах готових модулів від постачальників я часто не знаходив саме цього показника.
Був і температурний сюрприз: за температур нижче приблизно —10 °C використаний стабілізатор живлення з малим падінням напруги (LDO) переставав запускатися. Зовні це виглядало дивно: пристрій передавав дані, потім завмирав, а з потеплінням приблизно до —10 °C знову виходив на зв’язок. Такі випадки показували, що перевіряти потрібно не лише витрати заряду, а й запуск та роботу пристрою в реальних умовах пасіки.
Що показала робота на пасіці
За моїми спостереженнями з використовуваних пристроїв, за відповідних налаштувань показник заряду знижувався приблизно на

Показник заряду батареї в польових умовах із 22 червня до 20 вересня: зниження з 82% до 55%. На графіку застосунку наведено середній темп 0,30% на добу.
За ці приблизно три місяці показник знизився на 27 відсоткових пунктів. За 90 днів це в середньому 0,30 відсоткового пункту на добу, що узгоджується з підписом графіка. Йдеться саме про зміну показника заряду, який відображає застосунок.
Це один із кількох польових прикладів. Таке спрощене випробування дає мені підстави сподіватися, що й в інших умовах витрати живлення залишаться в межах, потрібних для бажаних трьох місяців автономної роботи. Водночас літній графік не гарантує такого самого результату за іншої температури чи гіршого мобільного покриття — ці умови також впливають на автономність.
Пристрій, застосунок і власник даних
Спочатку я задумував систему як пристрій та умовний «показометр» до нього на Android. Застосунок мав передусім зручно відображати отримані показники. За вимірювання й збереження повної історії відповідав сам пристрій.
Історія зберігається на вагах
Усі виміри записуються на microSD у файли CSV — звичайний табличний формат, який можна відкрити в електронній таблиці або обробити власним скриптом. Архів накопичується протягом усього строку користування пристроєм, зокрема роками. Його глибина обмежена місткістю картки, а дані залишаються доступними для роботи поза застосунком.
Це було важливо для пасіки з нестабільним зв’язком. Навіть якщо телефон довго не отримує повідомлень, ваги продовжують вимірювати й записувати результати. Пропуск у даних на телефоні можна заповнити з архіву пристрою.
Давніші дані залишаються на microSD, звідки їх можна прочитати безпосередньо. Докладніше про канали й доступну глибину історії — у документації BeeApiary.
Такий підхід допомагає й під час переходу на новий телефон: власник може знову завантажити історію з ваг. Архів вимірів залишається в його розпорядженні незалежно від заміни телефона, а CSV дозволяє надалі працювати з ним зручними для себе інструментами.
Кілька ваг і кілька користувачів
Кожен пристрій знає номери, на які має надсилати SMS. Тому система не прив’язана до пари «одні ваги — один телефон»: одному власникові можуть надходити дані від багатьох пристроїв. Додавання ще одних ваг не потребує розширення власної серверної інфраструктури.
Так само одні ваги можуть надсилати дані кільком користувачам. Кожен отримує повідомлення у свій застосунок, а джерелом вимірів і повного архіву залишається пристрій на пасіці. Кількість одержувачів потрібно враховувати в розкладі й витратах живлення, про які йшлося в попередньому розділі.
Перша робоча плата
Десь на початку 2024 року з’явилася перша робоча плата. До цього моменту вже склалася невелика система: пристрій збирав і зберігав виміри, передавав їх на телефон, а застосунок показував дані у зручному вигляді.

Перша робоча плата BeeApiary, початок 2024 року.
Тоді я вирішив викласти інформацію про проєкт і показати його іншим. Уже було чим поділитися: невеликою системою з власним пристроєм, історією вимірів і застосунком до нього.
Про небайдужих
Коли я показав проєкт іншим, це вже був робочий пристрій, хоча програмне забезпечення ще залишалося сирим. Згодом з’ясувалося, що доробок потребували й плати. Частину проблем допомагали знаходити користувачі на початкових етапах роботи пристроїв на пасіках — фактично це було спільне тестування в реальних польових умовах.
Іноді плати доводилося відкликати для доробки. У таких випадках я замінював плату користувача на нову, уже доопрацьовану й перевірену, а його плата залишалася в мене на доробку. Для цього довелося тримати запас плат із виправленими проблемами, які вже пройшли повторну перевірку. Підтримка пристроїв виявилася окремою частиною роботи над проєктом.
До проєкту почали долучатися люди, яким було цікаво те, що я роблю. Комусь подобалося, як працюють ваги, але хотілося додаткових можливостей. Хтось просто ділився порадами. Із цих побажань поступово виростали конкретні доробки: нові функції з’являлися і в Android-застосунку, і в програмному забезпеченні пристрою.
Я дуже вдячний усім, хто долучився. Люди витрачали свій час із власного інтересу, бо їм подобалося щось створювати й допомагати проєкту ставати кращим.
Спільний вигляд вебінтерфейсу та застосунку
Окремою несподіванкою стало знайомство з учасником, який запропонував переробити зовнішній вигляд вебінтерфейсу ваг та Android-застосунку. Він допоміг втілити ці зміни й привести інтерфейси до привабливого вигляду.
Після цієї роботи вебінтерфейс ваг набув такого вигляду:
Вебінтерфейс ваг після оновлення дизайну: налаштування та поточні показники.
Налаштування розкладу надсилання даних. На цьому прикладі вибрано шість надсилань на добу.
Перегляд показників і станів функцій пристрою в тому самому оформленні.
Зовнішній вигляд Android-застосунку також суттєво переробили. Узгодили кольорові схеми, кнопки та інші елементи керування, щоб вебінтерфейс і застосунок мали спільний, упізнаваний вигляд. При цьому зберігали наявні можливості й додавали нові.
Так проєкт, який почався як моє заняття у вільний час, розвивався вже за участі інших людей. Їхні поради, побажання й допомога впливали і на те, що система вміла, і на те, як із нею працював користувач.
До чого дійшли на цьому етапі
На практиці простий підхід із SMS добре підійшов для наших умов: слабкого зв’язку, обмеженого живлення та потреби заощаджувати кошти. Невеликі пакети вимірів можна було отримувати на телефон без мобільного інтернету, а всю історію зберігати на пристрої й працювати з нею без власного сервера.
Локальне зберігання та прямий доступ до даних виявилися корисними й тоді, коли кочова пасіка поверталася додому. Спостереження можна продовжувати, зокрема під час зимівлі: ваги накопичують виміри, а власник отримує їх безпосередньо. Якщо на пасіці є локальна мережа, пристрій може обмінюватися даними через неї. У такому сценарії немає потреби окремо оплачувати мобільний зв’язок для ваг.
Для мене це був шлях від задуму до реального проєкту, який поступово доводив до робочої моделі. У ньому поєдналися Android-застосунок без серверної частини та пристрій із локальними накопичувачами, конфігуратором, вебінтерфейсом і мережевим обміном файлами через FTP. Заодно вдалося випробувати інші технології зв’язку й побачити, як вони поводяться в практичному використанні.
Простий і недорогий спосіб обміну даними виявився придатним і за межами України. Пристрої вже працюють у Франції, Німеччині, Польщі, Норвегії та країнах Балтії. Кількість поки невелика, але для мене як автора pet-проєкту це вже вагома перевірка концепції: система виявилася корисною іншим людям і працює в різних умовах.
Документація та програмне забезпечення підтримують кілька мов, і перелік локалізацій поступово розширюється. Опис системи, способів отримання даних та інструкції з налаштування зібрані в документації BeeApiary
Згодом додалися інші сценарії обміну, зокрема фонове отримання даних через Bluetooth, а сам застосунок почав перетворюватися з «показометра» на щоденник бджоляра.
Якщо ця тема буде цікава спільноті DOU, продовжу розповідь у наступній статті — про розвиток застосунку, роботу через локальну мережу та Bluetooth, NFC ідентифікацю вуликів, створення подій та опис станів вуликів та плани на рух вперед.
30 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментаріва взяв би RP2040 Pico W і не прийшлось підбирати DCDC перетворювача із низьким струмом холостого ходу
Тут одне із двох, або використовувати так званий industrial grade (але це вже не «бюджетний пристрій») або не використовувати те що для SOHO у кліматичних умовах «вулиця». А як зLi-Ion при мінус десять?Li-Ion акумулятор, то мав би бути повишаючий (Step Up) перетворювач. При чім тут LDO? Де він, на платі ESP32, чи це ще один окремий модуль живлення (по суті третій). Чи може проблема, що в імпульсі йшло 2А при передачі GSM і напруга просідала до рівня що пристрій «вішався» (може електроліт на 2000мкФ порішав би)? А що з сторожевим таймером (watchdog)?
Думаю, проблема не в саму LDO, а в тому, що акумулятор втрачав ємність на морозі, а LDO не «витягував». Хоче не зрозуміло, на фото тримач під
І як полікував проблему?
Показують, що перевіряти потрібно на кліматику (в кліматичній камері)
Дякую
Чудово, гарний виробник вірішує тут не було проблем.
При тому що він так працює
Тут можна повернутися до Сусліка. Треба придивитися і можна побачити що на наведеному фото готового виробу нема плати ESP32 а лише модуль. А йому, як відомо треба 3.3в, на акб трохі інший розбіг буває, тому знову Суслік. )))))
Так, вирішують як і Delay в софті))))
тобто плата, це не модуль, а модуль це не плата, а LDO не на платі, а на модулі (а що ж таке тоді PCB)? Можна дивитись і вгадувати про яке LDO мова, але якщо ти не розказав яке, а читач не вгадав, то тільки суслик допоможе
Якщо ти хочеш відгук, а відгук тобі не подобається, то трохи може пригальмувати сусликів?
Удачі з бджолами
Дивитися тут s.dou.ua/...es/editimage0_3thY41w.png
Дякую
Ваше право, а мені більш подобався ESP32 з його 4МБ флеш та 2× Xtensa, до 240 MHz
До речі ця штука RP2040 Pico W геть не економна по живленню RP2040: ~180 µA
я писав про те що (будь уважним)
те саме і з nRF
я ж не придираюсь, я шукаю сусликів (намагаюсь зрозуміти обмеження, щоб уявити можливе ТЗ і виходячи з цього перебираю варіанти і оцінію по декількох критеріях що би було оптимальне)
але тобі потрібен WiFi, і тоді ESP-IDF і глибокий сон на 5мкА і два..три адаптера/LDO.Li-Ion до 5В на ESP плату (не модуль), другий LDO з 5В до 3.3В на модуль ESP (не плату), і третій ще TP4056 для контролю заряда Li-Ion, тількки з nRF 3В1 (три в одному), а з RP2040 2В1 (TP4056 окремо і шоткі діод), а з ESP не все так однозначно і щоб заряжався акумулятор, і віддавав і на ХХ було мале споживання струму адаптером DCDC, і LDO не заморожувався на морозі.
Перший піднімати з 3..4,2В з
Але з WiFi та BT (або без), або колгоспити через MOSFET живлення на зовнішній WiFi із RP2040 (і переводити його в slow clock)
Все складно.
Щиро дякую за ваш уважний погляд на прилад, який спочатку робився виключно як хобі-проєкт, без прицілу на серійне виробництво.10–12 мкА — сам процесор. Але навіть із цим на звичайному 18650 пристрій працював майже сезон. На тому етапі це цілком влаштовувало й дозволяло не зупиняти розробку, а поступово покращувати конструкцію, зберігаючи загальну концепцію та сумісність із уже написаним ПЗ.
Дійсно, процесор обирався з певним запасом на розвиток і нарощування функціоналу. На початку були фактично лише AT-команди та GSM — для локального керування і глобальної передачі даних відповідно.
Потім поступово з’явилося бажання підключати додаткові датчики: окрім температури — вагу, рух та інші. Також був запит на невеликий екран. Усе це неодноразово змінювалося разом із самим підходом до пристрою та його функціоналом.
З живленням теж було багато експериментів і кілька переробок, одна з яких триває навіть зараз. Поточна мета — максимально зменшити споживання у неробочому стані; орієнтир зараз близько 0,05 мА, але поки це саме мета, а не досягнутий результат.
На першому етапі споживання у сні було зависоким: близько 30 мкА давав перетворювач на холостому ходу, ще приблизно
Думаю, про всі ці пошуки, компроміси й переробки я ще окремо розповім у більш технічній статті.
Ця ж стаття була радше спробою зрозуміти, чи цікаві взагалі подібні розробки. Через війну можливості займатися улюбленими хобі(пасіка) змінилося, тому матеріал більше загальним, ніж суто технічним. І, звісно, однією статтею неможливо описати всі технічні рішення та причини, чому вони з’явилися саме такими.
хіба2-3 відвідувачам dou, можеш залишити для історії, але цей культурний шар скоро зникне, ліпше напиши на бересті або глиняний табличці, ще краще вибий на скрижалях з каменю
Тут помилка 0.05мкА = 50нА. В тестуванні ніби близько до цього
моїх 5 коп.:Li-Ion в туж ціну і набаго менший бюджет по споживанню струму, має MOSFET на платі для вимикання переферії на 3.3В, BLE, трохи з гіршими параметрами відносно nRF52840 має RP2040 pico можна взяти RP2040 PIco W якщо потрібно WiFi/BLE) .
1 EPS32 і енергоефективінсть це слова антоніми (nRF52840 promicro з контролером заряду
2. чому всеж GSM/SMS (хоча написано погане покриття) а не LoRa (є модулі з AT командами, подібно до GSM модему, або скористатись meshtastic і зробити на його основі безпровідну мережу для телеметрії)?
3. можна було для підзаряду використати невелику сонячну панель 1..3Wt думаю, було би достатньо
Щиро дякую за відгук і технічні поради.
1. Тут не зовсім погоджуся. nRF52840 — чудовий контролер з погляду енергоефективності, але в цьому проєкті стояло дещо інше завдання. ESP32 одразу дає Wi-Fi та BLE, має значно більше простору для прошивки й дуже велику екосистему готових бібліотек — багато речей працюють буквально «з коробки», без додаткового портування.
При цьому реальні тести пристрою показують6–8 місяців роботи від одного заряду, тобто фактично більше одного сезону експлуатації. Тому подальше зменшення споживання вже не давало настільки суттєвої практичної переваги.
Є ще й питання ціни. Готові модулі на nRF52840 з нормально реалізованою антеною, щоб не займатися окремо RF-частиною на PCB, у моєму випадку виходили приблизно втричі дорожчими. У результаті перевага в енергоспоживанні вже не перекривала різницю в ціні та складності розробки.
2. LoRa також розглядалася, але вона вирішує трохи інше завдання. Мені потрібно було, щоб пристрій міг передавати дані не лише на кілька кілометрів, а фактично з одного міста в інше або навіть з іншої країни.
Для LoRa в такому випадку все одно потрібна додаткова інфраструктура: шлюз LoRa → Internet/GSM або LoRaWAN. А це ще один пристрій, який потрібно купити, налаштувати, десь встановити й забезпечити живленням. У полі це суттєво ускладнює систему і підвищує її вартість. Та без сервера не вирішує питання передачі данних на телефон.
Для звичайного бджоляра така інфраструктура, на мою думку, вже була б надмірно скалдною та безмежно дорогою.
3. Сонячна панель також передбачена як опція. У частини користувачів вона вже використовується, і в такій конфігурації пристрій практично не потребує обслуговування з погляду живлення.
У результаті в системі свідомо був обраний компроміс між енергоспоживанням, ціною, складністю та автономністю.
Архітектура вийшла максимально простою:
Пристрій → телефон. І більше нікого посередині.
Поруч пристрій може працювати через BLE/Wi-Fi, а на великій відстані — через GSM. Тобто одна й та сама система працює і за кілька метрів, і між містами чи країнами без додаткових шлюзів, концентраторів та іншої проміжної інфраструктури.
Саме простота, надійність і доступна ціна тут були важливіші за отримання мінімально можливого споживання струму за будь-яку ціну.
Трохи не зрозуміло, ведеш боротьбу за ціну HW, але забувається що експлуатаційні витрати хоча би на ті SMS (і хоча би раз в рік, а то і раз в місяць,і то не для кожного «опсоса» поповнювати мінімальним платежем). Ладно, не буду починати дискусію, так як контекст використання, задум, та use cases сильно змінюють рішення. Самий харкорний варіант: обдзвін згідно розкладу з DTFMінгом.
Трохи не зрозуміло що ти вважаєш «сервером» (тобто посердника Man in the Middle, в твоєму випадку це опсос, від якого ти залежиш), навість той же Mqtt то не сервер, а дата брокер. Як писав вище, мені не зрозумілі твої «обмеження», а нема ТЗ, нема предмету відносно якого провести аудит.
опсос же посередині
Тобто ти або будуєш свій меш, або користуєшся публічним, або залежиш від опсоса чи якого іншого провайдера, або гібридне рішення.
RP2040 pico W теж дає.
Знову ж, тобі не «потрібен сервер», але потрібен WiFi. Протиріччя нема? Чи мова іде про зовсім різні рішення?
Точка точка P2P? Дійсно? Через GSM/SMS? Чи через WiFi? І посередині нікого. Суслика не бачиш? А він є.
А от BLE якраз дозволяє «Пристрій → телефон. І більше нікого посередині», але до 30м± прямої видимості.
Це як SMA роз«єм до антени на мачті? Не думаю, що PCB антена краще в EPS32 чим nRF. От є відео, де якраз така як в nRF має ESP32C3, і як її покращити. Ладно, сперечатись не буду, що модуль nRF із PCB антеною буде в 3 рази дорожче чим ESP32. Мені не зрозуміло що власне PCB антена дає кардинально, особливо в nRF (в EPS32С3, знаю, що є ньюанси).
дивно чути, що в Ардуіно потрібно щось портувати
Так, формально мобільний оператор, звісно, теж є посередником. Я мав на увазі дещо інше: у цій схемі немає жодних додаткових моїх пристроїв, шлюзів, брокерів чи серверів, які потрібно окремо розгортати, адмініструвати й підтримувати.
Пристрій працює всюди, де є можливість відправити SMS. Для користувача це фактично вже готова інфраструктура, яка не потребує від мене окремого сервера, MQTT-брокера, LoRaWAN-шлюза чи власного mesh.
Будь-який інший варіант так чи інакше додає ще один шар:
реєстрацію в сторонньому сервісі, обмеження по трафіку, залежність від конкретного провайдера або необхідність піднімати й обслуговувати власний сервер.
Тобто тут вибір був не між «є посередник / немає посередника», а між:
готовою глобальною SMS-інфраструктурою і власною або сторонньою додатковою інфраструктурою.
Для цього use case другий варіант просто не давав достатньої переваги, щоб виправдати додаткову складність, особливо якщо система повинна залишатися зрозумілою і доступною для звичайного користувача, а не перетворюватися на окремий телеком-проєкт.
тоді WiFi не потрібний (бритва Оками)
ладно, не буду порушувати ідилію (добавлення нової хотілки/фічи ламає всю систему) , як кажуть «працює — не чіпай»
Ні, Wi-Fi тут якраз не зайвий. Він використовується і в режимі AP, і в режимі STA.
AP — як безкоштовний локальний спосіб підключення до пристрою для налаштування, діагностики та отримання накопичених даних. STA — для роботи через наявну локальну Wi-Fi мережу без використання GSM/SMS.
Крім того, пристрій може тривалий час накопичувати дані локально, а потім передати їх при появі доступного каналу зв’язку. Тобто навіть без GSM, Інтернету чи взагалі будь-якого зовнішнього зв’язку користувач не втрачає історію: залишаються графіки, вимірювання та інша інформація за весь період, та можливість її мати в телефоні загально без будь якого зв’язку.
Можливо, якраз наступні статті й будуть про те, як початкова проста схема «SMS → Android» поступово обросла великою кількістю функцій. І, що цікаво, це систему не зламало, а навпаки — суттєво розширило: від простого «показометра» вона перетворилася на повноцінний журнал і помічника для роботи на пасіці.
просто тобі можна сказати повезло, взяв HW із запасом, для SMS -> Android вистачило би STM32F103 за умовно $1 (дешевше чим ESP32C3 super mini або RP2040 pico), може ти з самого початку закладав що буде WiFi/BT. Цього з публікації не зрозуміти.
Тут якраз немає протиріччя(Суслика). Під «Пристрій → телефон» мається на увазі логіка взаємодії системи без додаткових власних шлюзів, концентраторів чи серверів між пристроєм і користувачем.
Способів зв’язку кілька, і вони використовуються залежно від ситуації: BLE, Wi-Fi або GSM/SMS. BLE дійсно дає пряме з’єднання на невеликій відстані(нікого посередині), Wi-Fi — через локальну мережу, GSM/SMS — коли потрібен зв’язок на великій відстані.
Тобто «сусликів» тут немає — просто різні канали зв’язку для різних сценаріїв.
Детально всі варіанти підключення описані тут:
ivan-bdgilko.github.io/...Docs/system/connectivity
Хто сказав Ардуіно? Тут його поруч нема
А хто сказав що інший? Ти розумієш, що якщо щось не вказано, то робиться власне припущення (ось таке є правило не тільки в ІТ).
ESP-IDF? Чи як ти керуєш глибоким сном ESP?
Очень круто!
С удовольствием почитал бы про ещё проекты на основе ESP32
Спасибо за статью
Дякую! Ймовірно, варто продовжити розповідь про цей проєкт, адже в статті описана лише невелика частина початкового етапу: загальна концепція, перші проблеми та їх покрокове вирішення. Далі проєкт уже розвивався на базі повноцінно працюючої системи, де з’явилося чимало нових задач, рішень і розширень на ESP32.
Присилайте — залюбки поставимо)
Вітаю
Дуже цікава стаття. Дякую вам, що вирішили поділитись
На мою думку, більшість ІТ спеціалістів втомлені містом починають задумуватись про реалізацію схожого проєкту :)
Буду чекати продовження
Дякую за ваш позитивний коментар!
Скоріше, це втома не від міста, а від війни та неможливості спокійно розвиватися, щось будувати й мати впевненість у тому, що твою «пасіку» завтра не розбомблять.
Тому зараз увесь мій проєкт можна, образно кажучи, помістити в кишені та на GitHub — усе віртуальне, нічого фізичного.
На жаль, така реальність.
Вітаю
Дякую, за цікаву і змістовну статтю
Хотів би поцікавитися, якщо знову створювали би цей продукт, то цим самим шляхом пішли чи якось по-іншому щось реалізовували, щоб не допустити помилок, які малі раніше?
Дякую за гарний відгук.
Так, якби довелося створювати цей продукт знову, шлях, напевно, був би значно коротшим, адже вже є розуміння багатьох технічних і організаційних моментів.
Водночас одним із великих плюсів обраного підходу був відносно простий і швидкий старт. Це дозволило досить рано отримати робочий продукт, а далі вже поступово нарощувати функціонал безпосередньо на готовій платформі.
У нашому випадку від початкової ідеї до першого релізу пройшло приблизно пів року. Зараз деякі рішення я б реалізовував трохи інакше, щоб уникнути помилок і зайвих переробок, але загальний підхід, думаю, залишився б схожим.
реально круто, люблю такі DIY-ки
Дякую! Довго вагався, чи варто взагалі писати про цей проєкт, але, схоже, не дарма 🙂 Тепер навіть є бажання продовжувати й ділитися наступними етапами та новими напрацюваннями.