
Оглавление:
- Шаг 1. Список деталей и инструменты
- Шаг 2. Подготовьте OLED-дисплей и часы реального времени
- Шаг 3: Подготовьте поворотный энкодер
- Шаг 4: Корпус
- Шаг 5. Отключите светодиодный индикатор питания Arduino (необязательно)
- Шаг 6: источник питания + твердотельное реле
- Шаг 7: Arduino Nano + блок питания + твердотельное реле
- Шаг 8: Arduino Nano + часы реального времени
- Шаг 9: Подключите OLED-дисплей
- Шаг 10: поворотный энкодер
- Шаг 11: Установка в корпус
- Шаг 12: Подключение к сети / свету, который нужно переключить
- Шаг 13: Завершение корпуса
- Шаг 14: Программирование Arduino
- Шаг 15: Установка времени и времени переключения
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Резюме:
Этот таймер на базе Arduino может включать один источник света 220 В в сумерках, на рассвете или в указанное время.
Вступление:
Некоторые светильники в моем доме автоматически включаются в сумерках либо до заранее установленного времени, либо до рассвета (всю ночь).
Расположение фонарей не позволяет использовать датчик освещенности. Стандартные доступные таймеры включаются в определенное время. Поэтому для включения в сумерках требуется регулярная регулировка настройки программы таймера.
В качестве приятного испытания я решил вместо этого создать собственный автономный таймер на базе Arduino. Он использует часы реального времени и библиотеку Dusk2Dawn для определения времени, в которое свет должен быть включен или выключен. Корпус этого таймера напечатан на 3D-принтере и его можно найти на Thingiverse. Код Arduino для этого проекта можно найти на GitHub.
При создании этого таймера я черпал вдохновение из множества разработок и схем в Интернете. Моя благодарность всем участникам, которые явно не упомянуты.
Для удобства чтения частичные диаграммы показаны на этапах, где это необходимо, вместо полной принципиальной схемы.
Альтернативные решения:
Вместо автономного таймера существует множество решений, в которых система автоматизации умного дома управляет освещением. Моей целью было найти независимое решение, не зависящее от подключения к WIFI (или другому).
Ограничения:
Код, поставляемый с этим проектом, включал реализацию перехода на летнее время на основе европейской системы перехода на летнее время.
Шаг 1. Список деталей и инструменты

Части:
Общая стоимость запчастей (без 3D-печати) составляет примерно 30 евро.
- Arduino Nano V3 (совместимый) без заголовков
- Блок питания 5V 0.6A (34 x 20 x 15 мм)
- Полупроводниковое реле 5V - Активный низкий - 2A 230VAC
- Часы реального времени DS3231 (маленькие)
- 0,96-дюймовый OLED-дисплей SPI 128 * 64 пикселей
- Энкодер - EC11 - 20 мм
- Ручка 6мм вала 15мм * 17мм
- Макетная печатная плата,
- 4 * винта M3x25 мм
- Корпус с 3d печатью
- Термоусадочная трубка
- Провода
- Клеммная колодка с винтовыми зажимами (для подключения нейтральных проводов)
Необходимые инструменты:
- Паяльник
- Припой провод
- Насос для распайки
- Инструмент для зачистки проводов
- Фрезы
- 3D-принтер (для распечатки корпуса)
- Различные мелкие инструменты
ПРЕДУПРЕЖДЕНИЕ
Эта схема работает от сети переменного тока 230 В, и если вы не привыкли работать с сетевым напряжением или не имеете достаточного опыта работы с сетевым напряжением 230 В переменного тока, пожалуйста, держитесь подальше от этого проекта
Я не несу ответственности за любые убытки или ущерб, возникшие непосредственно в результате выполнения этого проекта или в результате его выполнения
Всегда рекомендуется соблюдать надлежащую осторожность и меры предосторожности при работе с сетью переменного тока
Шаг 2. Подготовьте OLED-дисплей и часы реального времени

Корпус, напечатанный на 3D-принтере, имеет минимальные размеры. В результате необходимо удалить заголовки OLED-дисплея и часов реального времени.
Готовясь к следующему шагу, удалите остатки припоя из отверстий с помощью демонтажного насоса.
Шаг 3: Подготовьте поворотный энкодер

У поворотного энкодера хлипкие разъемы. Чтобы предотвратить повреждение, установите на кодировщик кусок печатной платы.
На картинке заземление (вверху справа и посередине внизу) также уже подготовлено.
Примечание. Убедитесь, что датчик угла поворота с печатной платой помещается в корпус, не касаясь Arduino. Может потребоваться отшлифовать печатную плату, чтобы она плотно прилегала.
Шаг 4: Корпус


Распечатайте три части корпуса на 3D-принтере. См. Инструкции на Thingiverse.
Шаг 5. Отключите светодиодный индикатор питания Arduino (необязательно)

Чтобы таймер не светился зеленым, можно отключить светодиод питания Arduino.
Обратите внимание, что это изменение не является обязательным.
Модификация Arduino Nano заключается в удалении резистора рядом со светодиодом питания (см. Красный кружок на картинке).
Шаг 6: источник питания + твердотельное реле

На этом этапе источник питания и твердотельное реле объединяются и устанавливаются в нижней части корпуса.
Соединения между источником питания и реле выполняются в нижней части этих компонентов. Винтовая клеммная колодка реле будет использоваться для подключения к Arduino.
Примечание. При подключении убедитесь, что монтажные отверстия твердотельного реле оставлены свободными.
- Припаяйте соединительный провод между твердотельным реле A1 к одному из разъемов переменного тока источника питания.
- Припаяйте провод к другому разъему переменного тока источника питания (он будет подключен к клеммной колодке нейтрали на шаге 7).
- Припаять провод между источником питания -Vo и реле DC-
- Припаиваем провод для подключения блока питания + Vo к реле DC +
Примечание. Может потребоваться укоротить провода на блоке питания и реле, чтобы их можно было разместить в корпусе.
Шаг 7: Arduino Nano + блок питания + твердотельное реле

На этом этапе Arduino Nano подключается к источнику питания и твердотельному реле.
- Отрежьте два провода длиной примерно 70 мм. Снимите изоляцию на 30 мм с одной стороны и на 4 мм с другой стороны.
- Припаяйте сторону с 30-миллиметровой зачищенной изоляцией к Arduino + 5V и GND, так чтобы провод проходил сквозь
- Отрежьте две термоусадочные трубки длиной 20 мм и установите их на отрезанную часть длиной 25 мм. Это изолирует провода до соединения с монтажной клеммной колодкой DC + и DC- твердотельного реле.
- Обратите внимание, что провода GND и + 5V должны быть перекрещены для правильного подключения к клеммной колодке реле с винтовыми зажимами.
- Отрежьте провод длиной примерно 40 мм и снимите 4 мм изоляции с обоих концов. Припаяйте одну сторону к разъему A2 на ЗАДНЕЙ СТОРОНЕ Arduino, а другую сторону - к разъему CH1 твердотельной винтовой клеммной колодки.
ПРЕДУПРЕЖДЕНИЕ
Arduino питается напрямую от стабильного источника питания +5 В вместо использования внутреннего регулятора мощности Arduino. Поэтому подключать USB, когда Arduino получает питание от источника питания, небезопасно.
Перед использованием USB-соединения Arduino всегда отключайте сеть 230 В переменного тока.
Шаг 8: Arduino Nano + часы реального времени

На этом этапе часы реального времени подключаются к Arduino частично с помощью кабелей, подготовленных на предыдущем этапе.
- Припаяйте провод, идущий от Arduino GND (также подключенный к DC- реле), к «-» часов реального времени.
- Припаяйте провод, идущий от Arduino + 5V (также подключенный к DC + реле), к «+» часов реального времени.
- Отрежьте два провода длиной примерно 40 мм и снимите 4 мм изоляции с обоих концов.
- Припаяйте провод между Arduino A4 и часами реального времени D (SDA).
- Припаяйте провод между Arduino A5 и часами реального времени C (SCL).
- Сформируйте провода часов реального времени, чтобы они не мешали поворотному энкодеру. Для этого провода должны быть внизу корпуса.
Шаг 9: Подключите OLED-дисплей

На этом этапе к Arduino добавляется OLED-дисплей SPI.
- Отрежьте 2 провода длиной 65 мм и снимите 4 мм изоляции с обоих концов.
- Припаяйте провод к GND-разъему OLED-дисплея. Припаяйте этот провод к изолированному проводу термоусадочной трубки, идущему от заземления Arduino (см. Шаг 4), и подключите оба провода к клеммной колодке постоянного тока твердотельного реле.
- Припаяйте провод к разъему VCC OLED-дисплея. Припаяйте этот провод к изолированному проводу термоусадочной трубки, идущему от Arduino + 5V (см. Шаг 4), и подключите оба провода к клеммной колодке DC + твердотельного реле.
- Отрежьте 5 проводов длиной 65 мм и снимите 4 мм изоляции с обоих концов.
- Припаяйте провод для подключения D0 (CLK) к Arduino D10.
- Припаяйте провод для подключения D1 (MOSI / DATA) к Arduino D9
- Припаиваем провод для подключения RES (RT) к Arduino D8
- Припаяйте провод для подключения постоянного тока к Arduino D11
- Припаяйте провод для подключения CS к Arduino D12
Примечание: порядок проводов дисплея не логичен. Это результат первого использования примера Adafruit, а затем изменения соединений, потому что использование D13 приводит к постоянному горению красного светодиода на Arduino.
Альтернатива
Для соединений SPI можно использовать «нормальный» порядок. Для этого необходимо соответствующим образом скорректировать определение цифрового выхода программы Arduino в oledcontrol.cpp:
// Использование программного обеспечения SPI
// определения контактов
#define CS_PIN 12
#define RST_PIN 8
#define DC_PIN 11
#define MOSI_PIN 9
#define CLK_PIN 10
Шаг 10: поворотный энкодер

На схеме показаны подключения Arduino к энкодеру (энкодер виден сверху).
- Отрежьте 4 провода по 45 мм и снимите 4 мм изоляции с обоих концов.
- Подключите Arduino GND к верхнему правому и нижнему среднему разъемам энкодера.
- Подключите Arduino D2 к нижнему левому краю энкодера.
- Подключите Arduino D3 к нижнему правому краю энкодера.
- Подключите Arduino D4 к верхнему левому углу энкодера.
Шаг 11: Установка в корпус

Установите всю электронику в нижнюю часть корпуса:
- Вставьте Arduino в вертикальный слот.
- Вставьте часы реального времени в нижнее отделение
- Вставьте блок питания и реле в верхний отсек и убедитесь, что реле находится на своих креплениях.
Шаг 12: Подключение к сети / свету, который нужно переключить


ПРЕДУПРЕЖДЕНИЕ
Обеспечьте надлежащую осторожность и меры предосторожности при работе с сетью переменного тока, убедитесь, что сеть переменного тока отключена
Я не несу ответственности за любые убытки или ущерб, возникшие непосредственно в результате выполнения этого проекта или в результате его выполнения
- Подключите фазу сети переменного тока к клеммной колодке A1 (слева) реле.
- Подключите фазу лампы, которую нужно переключить, к клеммной колодке B1 (правая) реле.
- Используйте отдельную клеммную колодку с винтовыми зажимами для подключения нейтрального провода сети переменного тока, нейтрального провода света и нейтрального провода источника питания.
- Для снятия натяжения закрепите каждый силовой кабель стяжкой.
Шаг 13: Завершение корпуса

На этом монтаж в корпусе завершен.
- Пропустите OLED-дисплей через монтажное отверстие дисплея в средней части корпуса.
- Проденьте поворотный энкодер через отверстие в средней части, убедившись, что блокиратор вращения выровнен. Установите поворотный энкодер с помощью прилагаемой шайбы и гайки.
- Установите верхнюю часть корпуса и закройте корпус, закрепив снизу четыре винта M3x25 мм.
Шаг 14: Программирование Arduino
ПРЕДУПРЕЖДЕНИЕ
Arduino питается напрямую от стабильного источника питания +5 В вместо использования внутреннего регулятора мощности Arduino. Поэтому подключать USB, когда Arduino получает питание от источника питания, небезопасно.
Перед использованием USB-соединения Arduino всегда отключайте сеть 230 В переменного тока.
Загрузите программу таймера Arduino с GitHub.
Эта программа использует IDE Arduino, которую можно получить здесь.
Программа использует следующие дополнительные библиотеки:
SSD1303Ascii
Библиотека Arduino Wire
Обратите внимание, что библиотека dusk2dawn также используется, но включена как код из-за изменения в ее интерфейсе.
Чтобы обеспечить правильный расчет сумерек / рассвета, необходимо установить долготу, широту и часовой пояс.
Как описано в примере dusk2dawn, простой способ найти долготу и широту для любого местоположения - это найти точку на Google Maps, щелкнуть правой кнопкой мыши место на карте и выбрать «Что здесь?». Внизу вы увидите карточку с координатами.
Долгота и широта жестко запрограммированы в программе в строках 19 и 20 Dusk2Dawn.cpp:
/ * Здесь необходимо указать широту и долготу вашего местоположения.
* * ПОДСКАЗКА: Самый простой способ определить долготу и широту для любого местоположения - это * найти место на Google Maps, щелкнуть правой кнопкой мыши место на карте и * выбрать «Что здесь?». Внизу вы увидите карточку с координатами *. * / #define LATITUDE 52.097105; // Утрехт #define LONGTITUDE 5.068294; // Утрехт
Часовой пояс также жестко задан в строке 24 Dusk2Dawn.cpp. По умолчанию он установлен на Нидерланды (GMT + 1):
/ * Введите здесь свой часовой пояс (смещение от GMT).
* / #define TIMEZONE 1
При первом программировании Arduino память EEPROM должна быть инициализирована. Для этого измените строку 11 timer.cpp, чтобы выполнить инициализацию EEPROM:
// меняем на true при первом программировании
#define INITIALIZE_EEPROM_MEMORY false
Загрузите программу в Arduino и загрузите Arduino.
Отключите инициализацию EEPROM и снова загрузите программу в Arduino. Теперь таймер запомнит настройки времени переключения при перезагрузке.
Шаг 15: Установка времени и времени переключения
Концепции взаимодействия с пользователем:
- Короткое нажатие используется для подтверждения выбора. Кроме того, на главном экране таймера короткое нажатие включает или выключает свет.
- Длительное нажатие используется для входа в меню из главного экрана таймера. Длительное нажатие в любом месте меню вернет к основному экрану таймера.
- ‘>’ Курсор выбора. Этот курсор указывает на выбранную опцию в меню.
Главный экран таймера
На главном экране таймера отображается:
День недели Вс
Текущее время 16:00
Текущее состояние таймера и время следующего переключения Таймер ВЫКЛЮЧЕН до 17:12
Время рассвета и заката Рассвет 08:05 Сумерки 17:10
Установка правильного времени
Нажмите и удерживайте, чтобы войти в меню. Показаны следующие варианты:
НазадУстановить времяНедельная программаПрограмма выходного дняОпции
Выберите «Установить время», чтобы установить дату и время на часах реального времени. Введите правильные значения для:
ГодМесяцДеньВремя
Таймер автоматически определяет день недели. Переход на летнее время также происходит автоматически. Переход на летнее время реализован только для европейского часового пояса.
Установка программы таймера
Таймер имеет 2 программы, одна для будних дней, другая для выходных. Обратите внимание, что пятница считается частью выходных, свет может оставаться включенным немного дольше.
Каждый таймер имеет момент включения и выключения. Момент может быть:
- Время: точное указанное время
- Рассвет: переключение в зависимости от расчетного времени рассвета
- Сумерки: переключение в зависимости от расчетного времени сумерек
Для сумерек и рассвета можно ввести значение коррекции 59 минут до или после.
Примеры:
Чтобы включить свет на всю ночь, выберите включить (сумерки + 10 мин), выключить (рассвет - 10 мин).
Чтобы включить свет вечером, выберите «Включить в сумерках, выключить в 22:30».
Параметры
На экране опций можно установить тайм-аут для переключения экрана.
Когда экран выключен, нажатие на ручку поворотного энкодера вернет к основному экрану таймера.
Рекомендуемые:
Время отображения Arduino на светодиодном дисплее TM1637 с использованием часов реального времени DS1307: 8 шагов

Отображение времени Arduino на светодиодном дисплее TM1637 с использованием RTC DS1307: в этом руководстве мы узнаем, как отображать время с помощью модуля RTC DS1307 и светодиодного дисплея TM1637 и Visuino
Создание кольцевых часов OLED на Arduino: 5 шагов

Создание кольцевых часов OLED для Arduino: я купил крошечный OLED-дисплей, его чистота и ясность привлекают мое внимание. Но что я могу с этим сделать? Вообще-то, дело в том, как я могу этим похвастаться … Лол. Что ж, когда я посмотрел на плакат моего любимого сериала «Властелин колец»
Уникальная модель часов на базе сервомоторов Arduino: 5 шагов

Уникальная модель часов на базе серводвигателей Arduino: с помощью этого руководства я покажу вам, как создать часы с использованием Arduino Nano и серводвигателей. Для этого вам понадобятся следующие предметы:
Настройка часов реального времени DS3231 RTC (часов реального времени) точно, быстро и автоматически с помощью Java (+ -1 с): 3 шага

Установка часов реального времени DS3231 RTC (часов реального времени) точно, быстро и автоматически с использованием Java (+ -1 с): это руководство покажет вам, как установить время на часах реального времени DS3231 с помощью Arduino и небольшого приложения Java, которое использует последовательное соединение Arduino. Основная логика этой программы: 1. Arduino отправляет последовательный запрос
Создание часов из часов: 11 шагов (с изображениями)

Создание часов из часов: в этой инструкции я беру существующие часы и создаю, как мне кажется, лучшие часы. Мы перейдем от картинки слева к картинке справа. Прежде чем начинать работу на своих часах, знайте, что повторная сборка может быть сложной задачей, поскольку