Съдържание:

Събуди ме - интелигентен будилник: 6 стъпки
Събуди ме - интелигентен будилник: 6 стъпки

Видео: Събуди ме - интелигентен будилник: 6 стъпки

Видео: Събуди ме - интелигентен будилник: 6 стъпки
Видео: БЪРЗИ И ЯРОСТНИ - Как се кара с 250 км/ч на 17 - Никола Цолов и Калоян Върбицалиев |TNGS Podcast #22 2024, Ноември
Anonim
Wake Me Up - интелигентен будилник
Wake Me Up - интелигентен будилник

Събуди ме е интелигентен будилник, който може да се използва и като интелигентна лампа.

Вградената LED лента симулира естествената светлина, идваща в стаята ви. Това дава възможност за спокоен, естествен начин да започнете деня си.

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

Консумативи

Списък на точните цени, които платих, можете да намерите тук:

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

Raspberry Pi 4I използва малиновото pi 4 4GB, но всеки малинов pi модел 3+ трябва да е наред

Arduino Uno

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

Сензори:

  • TMP36: температурен сензор
  • LDR: Резистор, зависим от светлината

Задвижващи механизми:

  • WS2801: Лентови ленти с индивидуален адрес
  • LCD дисплей: 16*2 LCD дисплей.
  • 4*7 сегментен часовник

ИС:

  • 74HC595: Регистър Shift за LCD дисплея
  • MCP3008: 8-битов аналогово-цифров преобразувател
  • Конвертор на логическо ниво: Използва се за комуникация между raspi и arduino

Други неща:

  • Адапрутен усилвател MAX9744 за захранване на високоговорителите
  • Всеки високоговорител, използвах високоговорител Visaton 4Ohm 8Watt с пълен обхват (Арт. № 2240)
  • 9 -волтово захранване за захранване на усилвателя
  • 5 -волтово захранване за захранване на светодиодната лента и други компоненти. Имайте предвид, че всеки светодиод в лентата може да удави 60 mA, така че се уверете, че захранването ви е достатъчно.
  • Няколко 220Ohm резистора
  • Малка дъска за поставяне във вашия калъф.

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

  • Поялник.
  • Нещо, което да направи кутията (използвах 3D принтер с PLA и PETG и някои винилови стикери, за да постигна дървения ефект.)

Стъпка 1: Настройка на Raspberry Pi

Малина pi е нашият основен микроконтролер.

Raspberry pi управлява нашия локален уеб сървър, база данни, контролира лентата, високоговорителите, …

Част 1: Инсталиране на Raspbian

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

Уверете се, че SSH е активиран

Част 2: Свързване

За да се свържете с интернет, трябва да получите достъп до терминала на вашето малиново пи. Препоръчвам да използвате шпакловка. В типа терминал:

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

„YourNetwork“е името на вашата wifi мрежа, а „YourSSID“е паролата на мрежата.

След като добавите мрежата, опитайте да рестартирате Raspberry Pi.

Въведете командата "ping 8.8.8.8", която ще изпрати пакет до сървърите на Google, ако получите отговор, че мрежата ви е настроена и работи!

Част 3: Инсталирайте необходимите програми

Ще имаме нужда от инсталиране на някои допълнителни програми, за да стартираме този проект.

Преди да започнем, изпълнете тези 2 команди, за да се уверите, че всичко е надстроено.

sudo apt актуализация

sudo apt ъпгрейд

Това може да отнеме известно време.

Apache

sudo apt инсталирате apache2 -y

sudo apt инсталирате php libapache2-mod-php -y

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt инсталирате php -mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Python pip

Трябва да инсталираме pip, за да активираме някои библиотеки на python

pip3 инсталирайте mysql-конектор-python

pip3 инсталирайте flask-socketio

pip3 инсталирайте колба-кор

pip3 инсталирайте gevent

pip3 инсталирайте gevent-websocket

Стъпка 2: Свързване на електрониката

Свързване на електрониката
Свързване на електрониката
Свързване на електрониката
Свързване на електрониката

Добавих 2 схеми, 1 е макет за целите на тестването. Препоръчвам да изградите първата схема и да се опитате да накарате кода да работи.

Добавих фризиращите файлове по -долу.

Стъпка 3: Дизайн на база данни

Проектиране на база данни
Проектиране на база данни

Това е схемата на базата данни, която направих. Думите са на холандски, но ще обясня всяка таблица подробно.

Таблица 1: tblMuziek

Това е доста основна маса. Той запазва името на изпълнителя, името на песента и името на файла на песен.

Таблица 2: tblLedstrip

Тази таблица следи текущото състояние на лентата, запазва състоянието на лентата. Нуждаем се от това за функцията smartlight.

Таблица 3: tblSensoren

Тази таблица следи сензорите в нашата аларма. Съхраняваме името на сензора и канала на MCP3008

Таблица 4: tblMeting

Тази таблица съхранява стойностите на нашите сензори заедно с времето им.

Таблица 5: tblWekker

Тази таблица съхранява паролата и името на вашия будилник (напр. Спалня) Тази таблица не е задължителна, но я добавих, защото предполагам, че ще имате повече от 1 будилник в къщата си.

Таблица 6: tblAlarm

Това е може би най -важната таблица. Той следи алармата, която сте настроили, и какво трябва да прави часовникът (коя песен да се пусне, коя водеща последователност, в кои дни трябва да изгасне …). Много е важно да следите 2 дати. 1 дата се използва за съхраняване в колко часа трябва да се включи алармата. Другият следи последния път, когато алармата се е включила. За да знам кой делничен ден трябва да излезе, използвах varchar, който съдържа номер от 7 цифри. Първата цифра е понеделник, вторият вторник, … Ако е 1, трябва да изгасне, ако е 0, не трябва. Пример: 1111100 това означава, че тази аларма трябва да се включи в понеделник, вторник, сряда, четвъртък и петък.

Стъпка 4: Настройка на Arduino

Тази стъпка е много лесна. На следващата стъпка ще има връзка към моя github, където можете да изтеглите файла arduino.

Какво прави програмата?

Програмата изчаква серийните данни да дойдат от pi.

Веднага щом данните бъдат получени, той анализира низа и изпраща обратно потвърждение на pi.

Низът ще бъде нещо подобно: '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 Backend

Raspberry Pi Backend
Raspberry Pi Backend

Можете да изтеглите моя код с помощта на Github. (https://github.com/VanHevelNico/WakeMeUp)

Как да инсталирате програмата:

Бекендът е написан на python с помощта на flask. Можете да направите услуга, която автоматично стартира тази програма (app.py).

Трябва да поставите интерфейсния код в html файла на сървъра apache, който сме изтеглили по -рано. (/var/html)

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

Когато будилникът е включен, отидете на ip адреса на вашия часовник (той ще се покаже на lcd)

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

Настройвам

Това инициализира всички необходими обекти.

GetTemp

Това отчита канала mcp3008 0 и преобразува двоичните данни в действителната температура и ги поставя в базата данни с текущата дата и час.

GetTempGrafiek

Това получава последните 20 стойности на температурния сензор и го излъчва към фронтенда.

tijd_sturen

Този метод получава текущото време и проверява дали минутата се е променила. Ако се е променило, програмата изпраща новото време на arduino, използвайки серийна комуникация

checkAlarmen

Това е най -важният метод. Той получава всички аларми, които са включени, и проверява дали някоя от тези аларми трябва да премине между сега и преди 5 минути (това е буфер, за да се увери, че всяка аларма се включва, когато трябва). Ако алармата трябва да се включи, ще стартираме музиката, светодиодната лента, … Четем непрекъснато чувствителния към силата резистор и когато стойността падне под 1000 (прочетете fsr е натиснат) Включваме алармата и актуализираме алармата в база данни. Зададохме датата, на която алармата е задействана за последен път, към текущата дата.

statusLight

Този метод излъчва стойността на лентата и включва, ако е необходимо.

lichtAanpassen

Това е допълнителен метод, за да сте сигурни, че светодиодната лента и алармената светлина не противоречат.

Стъпка 6: Дело

Дело
Дело
Дело
Дело
Дело
Дело

Връзката към моите файлове може да се намери тук:

Използвах 3D принтер за отпечатване на корпуса. Той е отпечатан в 4 различни части:

  1. Предната плоча с отвори за високоговорителя и някои стени за 7 -сегментния дисплей
  2. Външният пръстен за светодиодната лента в прозрачен PETG.
  3. Средната част
  4. Задната плоча с отвор за LCD и отвор за кабелите.

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

Както можете да видите, след като поставих всички компоненти, използвах винилови стикери с дървен вид, за да изглежда крайният резултат по -добър. Дисплеят на часовника блести през стикера, което създава много приятен ефект.

Препоръчано: