Arduino Sunflower: электронный подсолнух, следящий за солнцем
Компоненты и материалы
| Arduino UNO | 1 |
| Датчик света RobotGeek (или 4 фоторезистора) | 4 |
| Потенциометр (линейный) | 2 |
| Base Shield V2 (Seeed / Grove-совместимый) | 1 |
| Pan-Tilt платформа с 2 сервоприводами 9G (180°) | 1 |
| Картон (2 листа), пенопласт (1 лист), палочка (стержень) | — |
| Провода Grove (3-pin) ×6 | — |
Программное обеспечение
- Arduino IDE
О проекте
Мейкер всегда замечает интересные вещи. Видео с подсолнухом, поворачивающимся за солнцем, вдохновило: почему бы не повторить этот биомеханизм на электронике?
Собрал прототип на Crowtail (аналог Grove), протестировал от фонарика телефона — заработало идеально. Видео в соцсетях набрало много лайков и просьб сделать туториал. Переделал проект чисто, вот подробная инструкция.
Шаг 1: Подготовка материалов
Картон ×2, пенопласт ×1, палка, 6 Grove-кабелей, 4 датчика света, 2 потенциометра, Pan-Tilt, Arduino (Crowduino), Base Shield.
Шаг 2: Голова устройства
Вырежьте 2 одинаковых куска картона, соберите в крест. Приклейте палку к центру креста — это «голова», которая будет смотреть на солнце. Дает жесткость и эстетику.
Шаг 3: Установка 4 датчиков света
В пенопласте сделайте 4 отверстия под датчики и центральное — под палку. Пронумеруйте датчики (1–4) для ориентации в коде.
Шаг 4: Подключение датчиков
Клеевым пистолетом зафиксируйте палку в пенопласте. Вставьте Grove-кабели в датчики.
Шаг 5: Крепление палки к Pan-Tilt
Закрепите палку на Pan-Tilt. Важно: датчики 1 и 2 — внизу, 3 и 4 — сверху (как на фото). Pan-Tilt — готовый узел с двумя 9G сервами (горизонт + вертикал, по 180°). Солнечные панели на фото — декор, питания не дают.
Шаг 6: Загрузка кода
Стейкните Crowduino + Base Shield. Подключите USB, откройте Arduino IDE, загрузите скетч.
Шаг 7: Подключение 4 датчиков к Shield
По схеме (1-к-1):
- Кабель «1» → A0
- Кабель «2» → A1
- Кабель «4» → A2
- Кабель «3» → A3
Шаг 8: Подключение потенциометров
Два потенциометра → A4 и A5. Они идентичны, но: A4 — задержка реакции (dtime), A5 — скорость серв (tol).
Шаг 9: Подключение Pan-Tilt
Нижний серво (горизонт) → D9, верхний (вертикал) → D10.
Шаг 10: Питание
Arduino (Crowduino) питается от пауэрбанка (мобильный) или БП (стационарный).
Шаг 11: Тест!
Закройте корпус. В темной комнате включите фонарик телефона — подсолнух плавно поворачивает голову за лучом. Выглядит мило!
Проект проще, чем кажется. Собирайте, улучшайте дизайн, делайте круче!
Код (Arduino)
#include <Servo.h>
Servo horizontal; int servoh = 90;
Servo vertical; int servov = 90;
// LDR пины (аналоговые)
int ldrrd = 0; // right down
int ldrld = 1; // left down
int ldrlt = 2; // left top
int ldrrt = 3; // right top
void setup() {
Serial.begin(9600);
horizontal.attach(9);
vertical.attach(10);
}
void loop() {
int lt = analogRead(ldrlt);
int rt = analogRead(ldrrt);
int ld = analogRead(ldrld);
int rd = analogRead(ldrrd);
int dtime = analogRead(4) / 20; // задержка (пот A4)
int tol = analogRead(5) / 4; // порог чувствительности (пот A5)
int avt = (lt + rt) / 2; // среднее сверху
int avd = (ld + rd) / 2; // среднее снизу
int avl = (lt + ld) / 2; // среднее слева
int avr = (rt + rd) / 2; // среднее справа
int dvert = avt - avd; // разница верх/низ
int dhoriz = avl - avr; // разница лево/право
// Вертикаль
if (-tol > dvert || dvert > tol) {
if (avt > avd) { servov++; if (servov > 180) servov = 180; }
else if (avt < avd) { servov--; if (servov < 0) servov = 0; }
vertical.write(servov);
}
// Горизонталь
if (-tol > dhoriz || dhoriz > tol) {
if (avl > avr) { servoh--; if (servoh < 0) servoh = 0; }
else if (avl < avr) { servoh++; if (servoh > 180) servoh = 180; }
horizontal.write(servoh);
}
delay(dtime);
}
3D-модель и схема
Фото собранного устройства и схема подключения в разделах CAD и Schematics.
Производственный процесс
- Создание потрясающей системы Ambilight для монитора на Arduino
- Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
- Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
- Собираем свой Tamagotchi на Arduino: цифровой питомец своими руками
- Электронный хамелеон: проект Arduino Nano с RGB-светодиодами и датчиком цвета
- Умный беспроводной выключатель света: Arduino-контроллер для удаленного управления
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Умный водяной пистолет с датчиком движения на Arduino Nano
- Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
- Умная электронная система регистрации посещений для хакерспейсов