Оглавление:

Wake Me Up - умный будильник: 6 шагов
Wake Me Up - умный будильник: 6 шагов

Видео: Wake Me Up - умный будильник: 6 шагов

Видео: Wake Me Up - умный будильник: 6 шагов
Видео: Проснись легко! Световой будильник Zemismart Tuya Wake Up 2024, Июль
Anonim
Wake Me Up - умный будильник
Wake Me Up - умный будильник

Разбуди меня - это умный будильник, который также можно использовать как умный свет.

Встроенная светодиодная лента имитирует естественный свет, проникающий в вашу комнату. Это позволяет спокойно и естественно начать свой день.

Будильник также оснащен 4 * 7-сегментным дисплеем для чтения времени, динамиками для пробуждения под любимую музыку, сенсорной кнопкой, индикатором для регулировки яркости светодиодной ленты и датчиком температуры, который вы можете использовать для просмотра температура вашей комнаты.

Запасы

Список точных цен, которые я заплатил, можно найти здесь:

Микроконтроллеры и компьютеры:

Raspberry Pi 4 Я использовал raspberry pi 4 4 ГБ, однако любая модель raspberry pi 3+ подойдет

Ардуино Уно

Arduino используется для управления отображением часов 4 * 7 сегментов.

Датчики:

  • TMP36: датчик температуры
  • LDR: резистор, зависимый от света

Приводы:

  • WS2801: Светодиодная лента с индивидуальным адресом
  • ЖК-дисплей: ЖК-дисплей 16 * 2.
  • 4 * 7-сегментный дисплей часов

ИС:

  • 74HC595: Регистр сдвига для ЖК-дисплея.
  • MCP3008: 8-битный аналого-цифровой преобразователь
  • Конвертер логического уровня: используется для связи между raspi и arduino

Другие вещи:

  • Усилитель adafruit MAX9744 для питания динамиков
  • Любая колонка, я использовал широкополосную колонку Visaton 4Ohm 8Watt (арт. № 2240).
  • Блок питания на 9 вольт для питания усилителя.
  • Источник питания 5 В для питания светодиодной ленты и других компонентов. Помните, что каждый светодиод в светодиодной полосе может потреблять 60 мА, поэтому убедитесь, что вашего источника питания достаточно.
  • Несколько резисторов 220 Ом
  • Небольшой макет для вашего чемодана.

Инструменты:

  • Паяльник.
  • Что-нибудь для изготовления корпуса (я использовал 3D-принтер с PLA и PETG и несколько виниловых наклеек, чтобы получить эффект дерева).

Шаг 1. Настройка Raspberry Pi

Raspberry Pi - наш основной микроконтроллер.

Raspberry Pi запускает наш локальный веб-сервер, базу данных, управляет светодиодной лентой, динамиками и т. Д.

Часть 1: Установка Raspbian

Используйте это руководство для установки raspbian:

Убедитесь, что SSH включен

Часть 2: Подключение

Чтобы подключиться к Интернету, вам необходимо получить доступ к терминалу Raspberry Pi. Рекомендую использовать шпатлевку. В терминале типа:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

YourNetwork - это имя вашей сети Wi-Fi, а YourSSID - пароль сети.

После того, как вы добавили сеть, попробуйте перезагрузить Raspberry Pi.

Введите команду ping 8.8.8.8, это отправит пакет на серверы Google, если вы получите ответ, что ваша сеть настроена и работает!

Часть 3: Установите необходимые программы

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

Прежде чем мы начнем, запустите эти 2 команды, чтобы убедиться, что все обновлено.

sudo apt update

sudo apt upgrade

Это может занять некоторое время.

Apache

sudo apt install apache2 -y

sudo apt установить php libapache2-mod-php -y

MariaDB

sudo apt установить mariadb-server mariadb-client -y

sudo apt установить php-mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Пип Python

Нам нужно установить pip, чтобы включить некоторые библиотеки Python

pip3 установить mysql-connector-python

pip3 установить flask-socketio

pip3 установить flask-cors

pip3 установить gevent

pip3 установить gevent-websocket

Шаг 2: Подключение электроники

Подключение электроники
Подключение электроники
Подключение электроники
Подключение электроники

Я добавил 2 схемы, 1 - это макетная схема для тестирования. Я рекомендую построить первую схему и попытаться заставить код работать.

Я добавил файлы фритзинга ниже.

Шаг 3: Дизайн базы данных

Дизайн базы данных
Дизайн базы данных

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

Таблица 1: tblMuziek

Это довольно простая таблица. Он сохраняет имя исполнителя, название песни и имя файла песни.

Таблица 2: tblLedstrip

Эта таблица отслеживает текущее состояние светодиодной ленты, она сохраняет состояние светодиодной ленты. Нам это нужно для функции умной подсветки.

Таблица 3: tblSensoren

Эта таблица отслеживает датчики в нашей тревоге. Мы сохраняем название сенсора и канал MCP3008.

Таблица 4: tblMeting

В этой таблице хранятся значения наших датчиков вместе с их временем.

Таблица 5: tblWekker

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

Таблица 6: tblAlarm

Это, наверное, самая важная таблица. Он отслеживает установленные вами будильники и то, что должны делать часы (какую песню проигрывать, какую последовательность светодиодов, в какие дни он должен срабатывать,…). Очень важно отслеживать 2 свидания. 1 дата используется для запоминания, в какой час должен сработать будильник. Другой отслеживает, когда в последний раз срабатывал будильник. Чтобы узнать, в какой день недели он должен сработать, я использовал varchar, содержащий 7 цифр. Первая цифра - понедельник, вторая - вторник… Если это 1, то она должна сработать, если 0, то не должна. Пример: 1111100 это означает, что этот будильник должен срабатывать в понедельник, вторник, среду, четверг и пятницу.

Шаг 4: Настройка Arduino

Этот шаг очень простой. На следующем шаге будет ссылка на мой github, где вы сможете скачать файл arduino.

Что делает программа?

Программа ожидает поступления последовательных данных от пи.

Как только данные получены, он анализирует строку и отправляет подтверждение на пи.

Строка будет примерно такой: «1201», это означает, что сейчас 12:01. Я использовал обычный анодный 7-сегментный дисплей, это означает, что цифры должны быть высокими, а A, B, C, D, E, F, G и DP должны быть низкими, чтобы их включить. Если вы используете обычный катод, просто измените HIGH на LOW и LOW на HIGH.

Вот ссылка с дополнительной информацией о том, как работают 7-сегментные дисплеи. (с использованием библиотеки):

www.instructables.com/id/Using-a-4-digit-7…

Вот ссылка на 7 сегментов, отображаемых без использования библиотеки:

create.arduino.cc/projecthub/SAnwandter1/p…

Шаг 5: бэкэнд Raspberry Pi

Серверная часть Raspberry Pi
Серверная часть Raspberry Pi

Вы можете скачать мой код с помощью Github. (https://github.com/VanHevelNico/WakeMeUp)

Как установить программу:

Бэкэнд написан на python с использованием flask. Вы можете создать службу, которая запускает эту программу (app.py) автоматически.

Вы должны поместить код внешнего интерфейса в html-файл сервера Apache, который мы скачали ранее. (/ var / html)

Как работает программа?

Когда будильник включен, перейдите по IP-адресу ваших часов (он будет отображаться на ЖК-дисплее)

Как только вы перейдете на этот IP-адрес в своем браузере, ваш компьютер отправит запрос socket.io на бэкэнд, сообщив, что клиент подключился. Когда бэкэнд получит это, запустится несколько потоков, которые я объясню ниже.

Настраивать

Это инициализирует все необходимые объекты.

GetTemp

Это считывает канал 0 mcp3008 и преобразует двоичные данные в фактическую температуру и помещает их в базу данных с текущей датой и часом.

GetTempGrafiek

Он получает последние 20 значений датчика температуры и передает их во внешний интерфейс.

tijd_sturen

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

check

Это самый важный метод. Он получает все включенные аварийные сигналы и проверяет, должны ли какие-либо из этих аварийных сигналов исчезнуть с настоящего момента до 5 минут назад (это буфер, чтобы убедиться, что каждый аварийный сигнал срабатывает, когда это необходимо). Если будильник должен сработать, мы включим музыку, светодиодную полосу,… Мы постоянно считываем показания чувствительного к силе резистора, и когда значение упадет ниже 1000 (считайте, что нажата кнопка fsr), мы выключаем будильник и обновляем сигнал тревоги в база данных. Мы устанавливаем дату последнего срабатывания будильника на текущую дату.

statusLight

Этот метод выдает значение светодиодной полосы и включает ее при необходимости.

LichtAanpassen

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

Шаг 6: Дело

Случай
Случай
Случай
Случай
Случай
Случай

Ссылку на мои файлы можно найти здесь:

Я распечатал корпус на 3D-принтере. Он напечатан в 4 разных частях:

  1. Лицевая панель с отверстиями для динамика и некоторые стенки для 7-сегментного дисплея
  2. Наружное кольцо для светодиодной ленты из прозрачного ПЭТГ.
  3. Средняя часть
  4. Задняя панель с отверстием для жк-дисплея и отверстием для кабелей.

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

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

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