EmoPot: Умный горшок для растений, визуализирующий их состояние
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino Nano R3 | 1 | |
| Датчик влажности почвы (аналоговый, Gravity DFRobot) | 1 | |
| OLED-дисплей 0.96" I2C (SSD1306) | 1 | 128x64 |
Инструменты
- Паяльник
- 3D-принтер (для корпуса горшка)
Программное обеспечение
- Arduino IDE
- Библиотеки: Adafruit_GFX, Adafruit_SSD1306
О проекте
EmoPot — забавный умный горшок, который отображает «эмоции» растения в зависимости от влажности почвы. Используется аналоговый датчик влажности, Arduino считывает значение АЦП и выводит на OLED анимированные выражения лица: счастье, грусть, плач, удивление и т.д. Проект отлично подходит для обучения работе с датчиками, OLED и анимацией.
Механическая часть
Корпус горшка спроектирован в Fusion 360 с отсеком для электроники. STL-файлы можно напечатать на 3D-принтере. Если нет принтера, можно использовать любой горшок и отдельную коробку для электроники.
Подключение электроники
- Arduino A5 → OLED SCL
- Arduino A4 → OLED SDA
- Arduino A0 → Датчик влажности (AO)
Программирование
Код использует библиотеки Adafruit_GFX и Adafruit_SSD1306. В начале определены массивы кадров анимации для каждого эмоционального состояния (смайлики 48x48 пикселей). В setup() инициализируется дисплей. В loop() считывается значение датчика (analogRead(A0)) и в зависимости от порогов проигрывается соответствующая анимация.
Пороговые значения влажности (примерные)
- ≥80 и <250 — счастливый (улыбается, мигает глазами)
- ≥250 и <350 — довольный (блаженствует)
- ≥350 и <550 — нейтральный (спокоен)
- ≥550 и <700 — грустный (слезы)
- ≥700 и <800 — плачет (интенсивные слезы)
- Иначе — запутанный (знак вопроса)
Пример фрагмента кода (анимация «Счастье»)
// Кадры анимации хранятся в PROGMEM как массивы байт
const unsigned char PROGMEM frame02[] = { ... }; // 48x48 bitmap
const unsigned char PROGMEM frame012[] = { ... };
// ... всего 13 кадров для каждой эмоции
void loop() {
sensorValue = analogRead(A0);
if (sensorValue >= 80 && sensorValue < 250) { // Счастье
display.clearDisplay();
display.drawBitmap(xx, 0, frame02, 48, 48, 1); display.display(); delay(30);
display.clearDisplay();
display.drawBitmap(xx, 0, frame012, 48, 48, 1); display.display(); delay(30);
// ... последовательный вывод кадров
}
// аналогично для других эмоций
}
Полный код объемен из-за массивов кадров (около 13 кадров × 6 эмоций). Он доступен в разделе кода проекта.
Демонстрация
Видео показывает смену эмоций при изменении влажности (полив, сушка).
Код (EmoPot.ino)
Полный скетч с всеми кадрами анимации прикреплен к проекту. Основные моменты:
- Используется
PROGMEMдля хранения кадров во флеш-памяти. - Анимация реализована последовательным выводом кадров с задержкой.
- Шрифт FreeSans9pt7b для текста (не используется в анимации).
3D-модели корпуса
STL-файлы для печати горшка с отсеком под электронику доступны в разделе «Custom parts and enclosures».
Схема подключения
Простая схема: датчик влажности к A0, OLED к I2C (A4/A5), питание от Arduino (5V/GND).
Производственный процесс
- Ядерная электростанция Susquehanna завершает плановое обслуживание, восстанавливает работу блока 2
- Предотвращение аварий с погрузчиками: ключевые советы безопасности для нулевых опрокидываний
- Технология атомных часов снижает воровство посылок при онлайн-доставке
- AI-детекция запахов: технология Aryballe революционизирует бизнес и цепочки поставок
- Критические факторы, влияющие на стоимость ЧПУ-производства — Часть II
- 7 ключевых признаков: пора обновлять генератор
- Почему кастомные механические детали выигрывают у заводских в 4 ключевых аспектах
- 10 инновационных DIY проектов с открытым кодом, использующих 3D-печать
- Экскаваторы: виды, применение и как выбрать под задачу
- Отрасли, процветающие с 5-осевой ЧПУ-обработкой: повышение эффективности и точности