Експансія на балкон
2021-05-20 00:50
Я готуюся до розширення свого рослинного світу, плануючи розширення на балкон кухні.
Перерахую, що в мене вже є:
- «Шваброскоп 1.0»: веб-камера на 0.3 мегапікселя (VGA), закріплена на старій зламаній ручці від швабри, яка закріплена на пластиковій пляшці з водою;
- Raspberry Pi моделі 2, у якої на SD-карті (4 Gb) встановлена та трохи налаштована свіжа версія Raspberry Pi OS;
- кабелі локальної мережі (Ethernet) та живлення (micro-USB), що йдуть на балкон до Raspberry Pi (так, я вирішив зробити підключення до мережі дротами, а не через Wi-Fi);
- на Samba-шарі
//RICO/WHATEVER
(guest r/w) є каталогwebcam01
; - до речі,
//RICO/WHATEVER
також доступна як http://whatever.rico.home; - на Raspberry Pi є скрипт для збереження знімків з веб-камери на ту Samba-шару, і він вже включений у crontab і виконується кожні 5 хвилин;
- поруч з Raspberry Pi лежить підключена до неї макетна плата з Arduino Nano, на якому супер-простий скетч для збору даних з сенсорів, і до цього Arduino підключений один датчик вологості ґрунту (без ґрунту);
- потік оновлень з Arduino, у формати SQL-запросів
INSERT INTO ...
, успішно завантажується через консольний кліент MySQL (точніше, MariaDB) безпосередньо до бази даних.
Що треба зробити найближчим часом:
- скетч трохи поправити (зробити оновлення раз у 30 секунд);
- зробити кабелі для підключення датчиків (конектори Dupont та 4-проводний дріт);
- спробувати зклеїти три підставки для горщиків, бо менші підставки підходять краще під розмір підвіконня.
Що я, можливо, зроблю колись:
- варто повністю переписати скетч
- зберігати у EEPROM:
- ідентифікатор (board_id)
- частоту оновлення
- набір датчиків (бітова маска: A0, A1, …)
- можливість змінювати конфігурацію командами з USB Serial
- зробити мінімальний текстовий інтерфейс:
- встановлення параметрів
- перегляд поточних параметрів
- всі повідомлення у вигляді коментарів SQL
- зберігати у EEPROM:
Якось так:
--
-- Arduino ADC-to-SQL connector, version 0.0.1
--
-- Current EEPROM configuration:
-- board_id = 1
-- delay = 30 sec
-- sensors = [A0, A1, A2]
--
help
--
-- Supported commands:
-- ID <int> to set board_id
-- DELAY <int> to set loop delay
-- ADC <int> [<int>] [...]
--