Оглавление:

Умный светильник для будильника: 8 шагов (с изображениями)
Умный светильник для будильника: 8 шагов (с изображениями)

Видео: Умный светильник для будильника: 8 шагов (с изображениями)

Видео: Умный светильник для будильника: 8 шагов (с изображениями)
Видео: УМНЫЙ WIFI СВЕТИЛЬНИК НОЧНИК С АЛИЭКСПРЕСС 2024, Июль
Anonim
Умный светильник с будильником из переработанных материалов
Умный светильник с будильником из переработанных материалов
Умный светильник с будильником из переработанных материалов
Умный светильник с будильником из переработанных материалов
Умный светильник с будильником из переработанных материалов
Умный светильник с будильником из переработанных материалов

В этом проекте я использую полностью сломанный заводной будильник. Циферблат часов заменен на 12 светодиодов, подсвеченных светодиодной лентой по ободку часов. 12 светодиодов показывают время, а светодиодная лента запрограммирована на работу в качестве сигнала тревоги, включая полную яркость в заданное время. Все управляется Raspberry Pi Zero, что обеспечивает бесчисленные возможности интеграции и расширения, такие как автоматическая синхронизация световой сигнализации с будильником телефона или мигание светодиодов при получении электронного письма.

В проекте используются относительно дешевые или повторно используемые компоненты - единственное, что я в итоге купил, - это стабилизатор напряжения. Все остальное у меня случайно завалялось, например, обрезок светодиодной ленты. Это руководство расскажет, как я дал новую жизнь своим сломанным часам, и, надеюсь, может вдохновить вас на переработку чего-то своего.

Шаг 1: Детали

Запчасти
Запчасти
Запчасти
Запчасти
Запчасти
Запчасти

Чтобы контролировать все, мы собираемся использовать Raspberry Pi Zero, поскольку он небольшой, стоит очень мало и может быть подключен к Wi-Fi, что означает, что нам не нужны часы реального времени, и поэтому мы можем легко обновлять код удаленно с ноутбука. Если у вас нет Pi Zero W, мы подключимся к сети Wi-Fi с помощью USB-адаптера WiFi.

Вот список частей, которые я использовал, но большинство из них можно заменить на подходящие альтернативы. Например, вместо Raspberry Pi вы можете использовать Arduino с часами реального времени для управления проектом.

Используемые детали

  • Старый будильник
  • 30см теплой белой светодиодной ленты
  • 1x Raspberry Pi Zero + карта micro SD
  • 1x USB-адаптер Wi-Fi + преобразователь micro USB в USB
  • 12 светодиодов
  • 12 резисторов 330 Ом (используйте более высокие, если вам нужны светодиоды с большей яркостью)
  • 1x TIP31a (или другой силовой транзистор npn или MOSFET)
  • 1x резистор 1 кОм
  • 1x регулируемый понижающий преобразователь DC-DC LM2596 (понижает 12 В до 5 В для Raspberry Pi)
  • 1x блок питания 12В (+ способ влезть в ваш проект)
  • 10 см x 10 см дерева для циферблата (должно быть достаточно тонким, чтобы в него можно было установить светодиоды)
  • Различные куски разноцветной проволоки

Полезные вещи иметь

  • Паяльник + припой
  • Горячий клей
  • Мультиметр
  • Макетная плата
  • Штифты с внутренней резьбой
  • Кардридер или конвертер Micro SD
  • Компьютер
  • Адаптер Mini HDMI + экран HDMI, если вы хотите использовать среду рабочего стола Pi

Шаг 2: настройка Raspberry Pi

Настройка Raspberry Pi
Настройка Raspberry Pi
Настройка Raspberry Pi
Настройка Raspberry Pi

Операционная система

Поскольку Raspberry Pi не будет подключен к экрану, я решил использовать Raspbian Buster Lite, которого нет в среде рабочего стола. Если вы новичок в Raspberry Pi, вы можете придерживаться стандартного Raspbian Buster, который поставляется с рабочим столом. Если вы не знаете, как установить операционную систему, это отличный ресурс. Обе операционные системы можно загрузить с веб-сайта Raspberry Pi.

На данный момент включите Pi через вход питания Micro USB. Также подключите USB-адаптер WiFi.

Разговор с Raspberry Pi

После того, как все упаковано, довольно сложно получить доступ к Pi, если вы хотите изменить код и т. Д. Использование SSH позволяет подключиться к Pi и управлять им с другого компьютера. По умолчанию это не включено, но мы можем сделать это, просто создав папку с именем ssh в загрузочном разделе вашей SD-карты. Если вы уже вошли в свой Pi, вы также можете сделать это, набрав sudo raspi-config в Терминале и перейдя в Параметры взаимодействия> SSH и выбрав Да, чтобы включить его.

Теперь вы можете подключиться к своему Pi на другом компьютере. На Mac или Linux вы можете использовать свое терминальное приложение, но в большинстве версий Windows вам придется установить SSH-клиент, например PuTTY. Подключитесь к Pi, набрав ssh pi @, где имя хоста заменяется именем хоста IP-адреса вашего Pi. Имя хоста по умолчанию - raspberrypi.local. Он попросит вас ввести пароль, который, если вы еще не меняли его, является малиновым.

Установка необходимых вещей

Сначала убедитесь, что все обновлено, запустив sudo apt update, а затем sudo apt full-upgrade.

Чтобы убедиться, что нам нужно управлять контактами GPIO на Pi, введите sudo apt-get install python-rpi.gpio и sudo apt-get install python3-rpi.gpio. Они уже должны быть установлены в полной версии Raspbian.

Код

Вот код для загрузки, чтобы все заработало. Если вы используете среду рабочего стола, вставьте их в папку «Документы».

Если вы используете командную строку SSH, перейдите в свою домашнюю папку, набрав cd ~ / Documents и нажав Enter. Создайте новый файл с именем test1.py с помощью nano test1.py. Это откроет текстовый редактор nano, в который вы можете вставить код загруженного файла test1.py. CTRL-O и нажмите Enter, чтобы сохранить файл, и CTRL-X, чтобы выйти из редактора. Повторите процесс для остальных файлов.

Шаг 3: Установка светодиодной ленты

Установка светодиодной ленты
Установка светодиодной ленты
Установка светодиодной ленты
Установка светодиодной ленты

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

Поскольку светодиодная лента, которую я использовал, использовалась до того, как она потеряла самоклеющуюся основу, мне пришлось использовать горячий клей, чтобы закрепить полосу по краю обода часов. Если у вас есть лишняя длина, закройте место крепления проводов. Возможно, вы захотите установить полоску позже, но мне показалось, что проще спрятать ее в часах.

Шаг 4: Управление светодиодной лентой

Управление светодиодной лентой
Управление светодиодной лентой

Подключение светодиодной ленты

Светодиодная лента работает от 12 В, поэтому не может питаться напрямую от Pi. Чтобы управлять ими, мы будем использовать силовой транзистор (например, TIP31a), подключенный к Pi, как показано выше. Я бы рекомендовал сначала проверить, все ли работает на макетной плате.

  • Подключите GPIO 19 к базе через резистор 1 кОм
  • Излучатель должен быть подключен к GND.
  • Подключите коллектор к минусовой клемме светодиодной ленты.
  • Подключите положительный вывод светодиодной ленты к + 12В.

Тестирование

В командной строке перейдите в папку с документами (cd ~ / Documents), введите python test1.py и введите. Вы должны увидеть увеличение и уменьшение яркости светодиодной ленты. Для выхода из программы нажмите CTRL-C. Вы можете отредактировать файл (nano test1.py), чтобы изменить скорость и яркость в программе.

import RPi. GPIO as GPIOimport time GPIO.setmode (GPIO. BCM) # Использовать распиновку BCM GPIO.setwarnings (False) # Игнорировать предупреждения о контактах, используемых для других вещей ledStripPin = 19 # Светодиодная лента запускается с этого контакта GPIO.setup (ledStripPin, GPIO. OUT) # Установить ledStripPin как выход pwm = GPIO. PWM (ledStripPin, 100) # ШИМ на ledStripPin с частотой 100 Гц dutyCycle = 0 # Начальная яркость в процентах pwm.start (dutyCycle) try: while True: for dutyCycle в диапазоне (0, 101, 1): # Затухание pwm. ChangeDutyCycle (dutyCycle) time.sleep (0,05) для dc в диапазоне (95, -1, -1): # Затухание pwm. ChangeDutyCycle (dc) time.sleep (0.05), кроме KeyboardInterrupt: # Нажмите CTRL-C для выхода, а затем: pwm.stop () # Остановите pwm GPIO.cleanup () # Очистите контакты GPIO

Шаг 5: создание циферблата

Изготовление циферблата
Изготовление циферблата
Изготовление циферблата
Изготовление циферблата
Изготовление циферблата
Изготовление циферблата

Отрежьте кусок дерева для часов до размера, чтобы он подходил к вашим часам. Я сделал свой упор примерно в 3 см от передней части. Просверлите 12 отверстий диаметром для светодиодов (обычно 3 или 5 мм) на расстоянии 30 градусов друг от друга. Отшлифуйте лицевую сторону лицевой стороной вниз и нанесите финишное покрытие по вашему выбору. С задней стороны разместите светодиоды так, чтобы они указывали на переднюю часть. Я использовал горячий клей, чтобы удерживать светодиоды на месте так, чтобы положительный вывод (более длинный провод) был направлен внутрь. Размер моего циферблата означал, что я мог спаять все отрицательные клеммы вместе (см. Выше), поэтому для подключения всех 12 светодиодов к GND потребовался только один провод. Далее припаяйте провод к каждому светодиоду.

Если вы хотите сначала протестировать это на макетной плате, не забудьте использовать резистор (330 Ом довольно стандартно) последовательно с каждым светодиодом, прежде чем подключать его к одному из контактов Pi GPIO. Поиграйте с номиналом резистора, который вы используете, чтобы получить желаемый уровень яркости. T-cobbler действительно полезен для выламывания контактов Pi на макетной плате, хотя для этого вам нужно припаять контакты заголовка. Используйте test2.py (запустите с использованием python test2.py), но убедитесь, что вы сначала отредактируете программу и введете контакты GPIO Pi, которые вы использовали для каждого светодиода.

импортировать RPi. GPIO как GPIO

время импорта GPIO.setmode (GPIO. BCM) # Использовать распиновку BCM GPIO.setwarnings (False) # Игнорировать предупреждения об использовании контактов для других вещей # Замените один, два,… соответствующим номером контакта hourPin = [один, два, три, четыре, пять, шесть, семь, восемь, девять, десять, одиннадцать, двенадцать] # Контакты, к которым подключены светодиоды, от 1 до 12 для i в диапазоне (0, 12): GPIO.setup (hourPin , GPIO. OUT) # Установить все часы в качестве выходов GPIO.output (hourPin , 0) # Убедитесь, что все светодиоды выключены try: while True: for i in range (0, 12) GPIO.output (hourPin , 1): time.sleep (0,05) для i в диапазоне (0, 12) GPIO.output (hourPin , 0): time.sleep (0,05) за исключением KeyboardInterrupt: # Нажмите CTRL-C, чтобы выйти, и затем: GPIO.cleanup () # Очистить контакты GPIO

Шаг 6: включение Pi

Питание Pi
Питание Pi

Нам нужен простой способ подать 5 В на Pi Zero, чтобы мы могли избавиться от кабеля micro USB, который мы использовали для его питания до сих пор. Существует ряд решений, понижающих напряжение с 12 В до 5 В, например, линейный стабилизатор напряжения LM7805, но они не очень эффективны, поэтому вместо этого я решил использовать более эффективный регулируемый понижающий преобразователь с использованием микросхемы LM2596. Обратите внимание: при этом вам придется поворачивать потенциометр, пока выходное напряжение не уменьшится до 5 В по мере необходимости, поэтому вам понадобится какой-то способ измерения напряжения.

Использовать LM2596 просто: подключите +12 В к IN +, заземление к IN-. Pi может быть подключен напрямую к 5V, подключив OUT + к одному из контактов 5V Pi, но убедитесь, что вы изменили выходное напряжение на 5V, прежде чем сделать это, иначе вы поджарите свой Pi!

Шаг 7: Завершите схему и упаковку

Завершите схему и упаковку
Завершите схему и упаковку
Завершите схему и упаковку
Завершите схему и упаковку
Завершите схему и упаковку
Завершите схему и упаковку
Завершите схему и упаковку
Завершите схему и упаковку

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

Я соединил все на макетной печатной плате и использовал штыревые разъемы, чтобы Pi можно было установить непосредственно на печатную плату. Светодиоды на циферблате подключены через резисторы на одной стороне платы, а на другой стороне платы я оставил место для силового транзистора и освободил место для любых других схем, которые я мог бы добавить позже.

Прикрепите циферблат к часам и убедитесь, что вся электроника подходит. Мне все было довольно плотно, так что вам, возможно, придется немного переставить. Подключите источник питания и запустите test1.py и test2.py из SSH, чтобы убедиться, что все работает, прежде чем подключать заднюю панель.

Шаг 8: загрузите код + готово

Загрузить код + Готово
Загрузить код + Готово
Загрузить код + Готово
Загрузить код + Готово
Загрузить код + Готово
Загрузить код + Готово

Код

Наконец, если вы еще этого не сделали, загрузите код и адаптируйте его по своему усмотрению (используя nano filename.py). Преимущество подключения к Pi через SSH заключается в том, что вы можете обновлять код, не открывая часы.

Эти программы python из шага 2 делают следующее:

  • light_clock_simple.py просто отображает час на светодиодах и в определенное время гаснет вверх и вниз по светодиодной полосе.
  • light_clock_pwm.py - то же самое, что и выше, но также позволяет уменьшить яркость светодиодов и отображает минуты с яркостью, отличной от часов. Вам нужно будет поиграть с уровнями яркости обоих, чтобы контраст между ними был заметен.

Это должно обеспечить прочную основу для добавления в код, например, вы можете захотеть добавить кнопку, чтобы отложить световой сигнал.

Чтобы запустить программу при загрузке Pi, нам нужно добавить '@reboot nohup python light_clock_pwm.py &' в конец файла crontab, который можно открыть с терминала с помощью crontab -e. Перезагрузите Raspberry Pi, чтобы убедиться, что он теперь работает с sudo shutdown -r.

Возможные дополнения

Вот несколько идей о дополнительных функциях, которые можно было бы добавить

  • Добавление кнопки повтора
  • Добавление режима лампы
  • Подключение к IFTTT (например, свет может включаться, когда у вас срабатывает будильник / мигать при получении электронной почты)
  • Увеличение емкости сенсорного экрана, т.е. превращение часов в сенсорную лампу

При использовании ШИМ вы можете заметить, что иногда, особенно при более низкой яркости, светодиод немного мерцает. Это связано с тем, что Pi использует программный ШИМ, поэтому процессы ЦП могут влиять на рабочий цикл. С этим помогает меньшее количество запущенных процессов, поэтому я использовал урезанную операционную систему Raspbian Lite. Аппаратный ШИМ также доступен на нескольких контактах, поэтому, если мерцание вызывает проблему, это может быть чем-то, что нужно изучить.

Я надеюсь, что вы нашли это Руководство информативным и либо захотели обновить старый будильник, либо использовать элементы кода для своего собственного проекта.

Вызов скорости светодиодной ленты
Вызов скорости светодиодной ленты
Вызов скорости светодиодной ленты
Вызов скорости светодиодной ленты

Второй приз в конкурсе на скорость светодиодной ленты

Рекомендуемые: