Съдържание:

Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки
Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки

Видео: Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки

Видео: Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки
Видео: "Реликвата" Дъглас Престън Част 1/2 Част 1 от „Пендъргаст“ 2024, Ноември
Anonim
Mood Speaker- Мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура
Mood Speaker- Мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура

Здравей!

За моя училищен проект в MCT Howest Kortrijk, направих Mood Speaker, това е интелигентно Bluetooth устройство с различни сензори, LCD и WS2812b включена лента. Високоговорителят възпроизвежда фонова музика въз основа на температурата, но може да се използва и като обикновен Bluetooth говорител. Всичко работи на Raspberry Pi (база данни, уеб сървър, бекенд).

Така че тази инструкция е процес стъпка по стъпка как аз реализирах този проект за 3 седмици. Така че, ако искате да пресъздадете моя проект, можете да следвате ръководството

Тази инструкция е първата ми, която написах, така че ако има някакви въпроси, ще се опитам да отговоря възможно най -бързо!

Моят GitHub:

Стъпка 1: Консумативи

Raspberry Pi 3B и 16GB SD карта

Целият ми проект работи на моя Raspberry Pi 3B с конфигурирано изображение, което ще обясня в по -късна стъпка (Стъпка 4: Настройка на Raspberry Pi)

LCD дисплей 16x2

Използвах основен LCD дисплей, за да отпечатам температурата, яркостта и IP адреса си.

Информационен лист:

DS18B20 Температурен сензор

DS18B20 е едножичен сензор, който измерва температурата, произведен от Maxim Integrated. Има 2 вида сензори DS18B20, само компонентният (който използвах) и водоустойчивата версия, която е много по -голяма, но това не ми трябваше за моя проект, затова използвах само компонента. Сензорът може да измерва температурата в диапазона от -55 ° C до +125 ° C (-67 ° F до +257 ° F) и има точност от 0,5 ° C от -10 ° C до +85 ° C. Той също така има програмируема резолюция от 9 бита до 12 бита.

Информационен лист:

MCP3008

За да прочета данните от моя LDR и PIR-сензор, използвах MCP3008, който е 8-канален 10-битов аналогово-цифров преобразувател с SPI интерфейс и е доста лесен за програмиране.

Информационен лист:

PIR сензор за движение

За да открия, когато някой влиза и излиза от стаята ми, използвах пасивен инфрачервен сензор, тъй като те са лесни за използване и са малки.

Информационен лист:

LDR

Използвах фоторезистор или LDR (Light Decreasing Resistance, или зависим от светлината резистор), за да открия нивото на яркост на стаята, в която се намира.

Високоговорител - 3”Диаметър - 4 Ohm 3 Watt

Това е конусът на високоговорителя, който избрах, след като изчислих напрежението и амперите, от които се нуждае, и това беше идеално подходящо за моя проект Raspberry Pi, произведен от Adafruit.

Общ преглед:

MAX98357 I2S Class-D моно усилвател

Това е усилвателят, който се доставя с високоговорителя, не само че е усилвател, той е и I2S цифров към аналогов преобразувател, така че той също е идеално подходящ за моя високоговорител и аудио система.

Общ преглед:

Информационен лист:

Arduino Uno

Arduino Uno е микроконтролерна платка с отворен код, базирана на микроконтролера Microchip ATmega328P, произведен от Arduino.cc. Платката Uno има 14 цифрови пина, 6 аналогови пина и е напълно програмируема със софтуера Arduino IDE

Общ преглед:

Превключвател на нива

Това е малка дъска, която се грижи за комуникацията между Arduino Uno и Raspberry Pi и различните напрежения, Arduino: 5V & Raspberry Pi: 3.3V. Това е необходимо, защото лентата е свързана с Arduino и работи там, докато всички останали неща работят на Raspberry Pi.

WS2812B - Ledstrip

Това е лента с 60 RGB светодиода (можете да си купите по -дълги ленти с повече RGB светодиоди, ако желаете). Което в моя случай е свързано с Arduino Uno, но може да бъде свързано и с много други устройства и е наистина лесно за използване.

Информационен лист:

GPIO T-Part, 1 Breadboard и много джъмпери

За да свържа всичко, от което се нуждая, макети и джъмпер кабели, не използвах GPIO T-частта, но можете да я използвате, за да знаете ясно коя кошница отива къде.

Стъпка 2: Схема и окабеляване

Схема и окабеляване
Схема и окабеляване
Схема и окабеляване
Схема и окабеляване

За да направя схемата си, използвах Fritzing, това е програма, която можете да инсталирате, която ви позволява да създавате много лесно схема в различни видове изгледи. Използвах макет и схематичен изглед.

Изтеглете Fritzing:

Уверете се, че всичко е свързано правилно. Използвах цветове, за да стане малко по -ясно да знам къде да свържа проводниците. В моя случай използвах различни цветове за проводниците

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

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

Събираме много данни от 3-те сензора (Температура от DS18B20, Яркост от LDR и Статус от PIR-сензор). Затова е най -добре всички тези данни да се съхраняват в база данни. В по -късна стъпка ще обясня как да конфигурирам базата данни (Стъпка 5: Препратете инженеринга на нашата база данни към RPi!) Но първо трябва да се направи дизайнът или ERD (Диаграма на взаимоотношенията между обекти). Моят беше нормализиран с 3NF, затова разделихме компонентите и историята на компонентите в друга таблица. Използваме Музикалната база данни, за да следим песните, които са били слушани.

Като цяло това е наистина основен и лесен дизайн на база данни, с който да работите по -нататък.

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

Така че сега, когато свършихме някои основи на проекта. Нека започнем с настройката на Raspberry Pi!

Част 1: Конфигуриране на SD картата

1) Изтеглете необходимия софтуер и файлове

Трябва да изтеглите 2 софтуера и 1 операционна система, т.е. Raspbian за този пълен процес. Първият софтуер: Първият софтуер е Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Втори софтуер: Вторият софтуер е SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Това е основната операционна система на Pi.

www.raspberrypi.org/downloads/raspberry-pi-os/

Извлечете всички файлове на работния плот.

2) Вземете SD картата и четеца на карти

Вземете минимум 8 GB SD карта с клас 10 с четец на карти. Поставете тази карта в четеца на карти и я включете към USB порта.

3) Форматирайте SD картата

Отворете SD Card Formatter и изберете устройството.

Кликнете върху формат и не променяйте други опции.

Когато форматирането приключи, щракнете върху OK.

4) Напишете операционната система на SD картата

Отворете win32diskimager.

Прегледайте.img файла на Raspbian OS, който е извлечен от изтегления файл.

Щракнете върху отвори и след това върху Писане.

Ако се появи някакво предупреждение, игнорирайте ги, като щракнете върху OK. Изчакайте записването да приключи и може да отнеме няколко минути. Така че бъдете търпеливи.

н

5) След като това бъде направено, ние сме готови да направим някои окончателни корекции, преди да поставим изображението в нашите RPi.

Отидете в директорията на вашата SD карта, потърсете файла с име „cmdline.txt“и го отворете.

Сега добавете „ip = 169.254.10.1“на същия ред.

Запазете файла.

Създайте файл с име „ssh“без разширение или съдържание. (Най -лесният начин е да създадете txt файл и след това да премахнете.txt)

Сега, когато всичко е инсталирано на SD картата, можете БЕЗОПАСНО да я извадите от компютъра си и да я поставите в Raspberry Pi БЕЗ свързване на захранването. След като SD картата е в RPI, свържете LAN кабел от компютъра към порта RPi LAN, след като е свързан, можете да свържете захранването към RPi.

Част 2: Конфигуриране на RPi

Шпакловка

Сега искаме да конфигурираме нашия Raspberry Pi, това става чрез Putty.

Софтуер за замазка:

След като изтеглите, отворете Putty и поставете IP '169.254.10.1' и Port '22' и тип връзка: SSH.

Сега най -накрая можем да отворим интерфейса на командния ред и да влезем с информацията за вход за стартиране -> Потребител: pi & Парола: малинка. (Препоръчва се да го промените възможно най -бързо. Ето ръководство как:

Raspi-config

Ще трябва да активираме различни интерфейси и за да направим това, първо трябва да въведем следния код:

sudo raspi-config

Нещата, които трябва да активираме, са в раздела за взаимодействие. Трябва да активираме следните интерфейси:

  • Едножичен
  • Сериен
  • I2C
  • SPI

Това беше всичко, което трябваше да направим с raspi-config

Добавяне на вашия WIFI

Първо, трябва да сте root, за да стане следната команда root

sudo -i

След като сте root, използвайте следната команда: (Заменете SSID с името на вашата мрежа и паролата с мрежовата парола)

wpa_passphrase "ssid" "парола" >> /etc/wpa_supplicant/wpa_supplicant.conf

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

nano /etc/wpa_supplicant/wpa_supplicant.conf

Така че, след като влезем в нашата мрежа, нека влезем в клиентския интерфейс на WPA

wpa_cli

Изберете вашия интерфейс

интерфейс wlan0

Презаредете файла

преконфигурирайте

И накрая можете да видите дали сте свързани добре:

ip a

Част 3: Актуализиране на софтуера RPi +

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

sudo apt-get update

sudo apt-get надстройка

След актуализиране на RPi ще трябва да инсталираме следния софтуер:

База данни MariaDB

sudo apt-get install mariadb-server

Apache2 уеб сървър

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

Python

update-alternatives --install/usr/bin/python python /usr/bin/python3.7 1 update-alternative --install/usr/bin/python python/usr/bin/python3 2

Пакет на Python

Ще трябва да инсталирате всички тези пакети, за да работи бекендът перфектно:

  • Колба
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • PyMySQL заявки
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Библиотека на високоговорителите

За да използваме високоговорителя с усилвателя, ще трябва да инсталираме библиотека за него

curl -sS > | bash

Step 4: Reboot

After everything has been installed we will have to reboot the pi to make sure everything works correctly

sudo reboot

Step 5: Setting Up the Database to the RPi

Настройване на базата данни към RPi!
Настройване на базата данни към RPi!

Сега, когато сме инсталирали всичко необходимо, нека поставим нашата база данни, която проектирахме, на нашия Raspberry Pi!

За да настроим базата данни, ще трябва да свържем MySql и RPi. За това ще отворим MySQLWorkbench и ще направим нова връзка. Когато гледате изображението, ще трябва да промените, за да промените информацията на вашата.

Ако все още не сте променили нищо, можете да използвате за SSH pi и малинка, за MySQL mysql и mysql.

Когато нещо не е ясно, можете също да следвате този урок:

За да експортирате вашата база данни, би трябвало да е по -лесно да използвате PHPmyAdmin, защото можете да получите много грешки, когато го правите с MySql

Стъпка 6: Конфигуриране на Bluetooth на нашите RPi

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

свързан с bluetooth, последвах урок за него, който можете да намерите тук:

scribles.net/streaming-bluetooth-audio-fr…

Написах всичко тук също за всички, които искат да го пресъздадат

Премахване на вече работещата bluealsa

sudo rm/var/run/bluealsa/*

Добавете роля на мивка на A2DP профил

sudo bluealsa -p a2dp -мивка &

Отворете Bluetooth интерфейса и включете вашия Bluetooth

включване на bluetoothctl

Настройте агент за сдвояване

агент по подразбиране-агент

Направете своя RPi откриваем

откриваеми на

  • Сега от вашето Bluetooth устройство потърсете RPi и се свържете с него.
  • Потвърдете сдвояването и на двете устройства, въведете „да“във вашата замазка.
  • Оторизирайте услугата A2DP, въведете отново „да“.
  • След като това бъде направено, можем да се доверим на нашето устройство, така че не е нужно да преминаваме през това всеки път, когато искаме да се свържем

доверие XX: XX: XX: XX: XX: XX (Вашият bluetooth mac адрес от нашето устройство източник)

Ако искате вашият RPi да продължава да бъде откриваем, това е ваш собствен избор, но предпочитам да го изключвам отново, така че хората да не могат да се опитат да се свържат с вашата кутия

откриваемо изключено

След това можем да излезем от нашия Bluetooth интерфейс

изход

И накрая нашето аудио маршрутизиране: нашето устройство източник, препращащо към нашия RPi

bluealsa-aplay 00: 00: 00: 00: 00: 00

Сега нашето устройство е свързано с нашата Raspberry с bluetooth и трябва да можете да го тествате, като възпроизвеждате всякакви медии, например Spotify и т.н.

Стъпка 7: Писане на пълния бекенд

Така че сега настройката е завършена, най -накрая можем да започнем да пишем нашата бекенд програма!

Използвах Visual Studio Code за целия си бекенд, просто трябва да се уверите, че вашият проект на Visual Studio е свързан с вашия Raspberry Pi, това означава, че вашият LAN кабел трябва да бъде свързан към вашия RPi и да направи SSH връзка. (информация за това как да създадете отдалечена връзка можете да намерите тук:

Използвах свои собствени класове и всички те също са включени в моя GitHub.

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

Стъпка 8: Писане на Frontend (HTML, CSS и JavaScript)

Сега, когато бекендът е готов, можем да започнем да пишем пълния интерфейс.

HTML и CSS бяха доста трудни за мен, направих всичко възможно да го направя мобилен първо, защото мога да се свържа с него чрез bluetooth, за да променя песните с Spotify. Така че би било по -лесно да се контролира от мобилно табло

Можете да проектирате таблото си за управление по всякакъв начин, просто ще оставя кода и дизайна си тук, можете да правите каквото ви харесва!

И Javascript не беше по -лесен за мен, работех с няколко GET от моите бекенд маршрути, тонове слушатели на събития и някои структури на socketio, за да получавам данните от моите сензори.

Стъпка 9: Изграждане на моя случай и всичко заедно

Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно

Първо започнах да скицирам как искам да изглежда калъфът, нещо важно беше, че трябваше да е достатъчно голямо, за да се побере всичко, тъй като имахме голяма верига, която да поставим в кутията, но трябваше да останем компактни, така че да не се получи не заема много място

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

Започнах от стара дъска, която сложих наоколо и току -що започнах да режа дървата. След като имах основния си калъф, просто трябваше да пробия дупки в него (много в предната част на кутията, както можете да видите на снимките и да сложите няколко пирони в него, това е наистина основен калъф, но изглежда доста готин и пасва перфектно. Реших също да го боядисам в бяло, за да изглежда добре.

И след като делото приключи, беше време да съберем всичко, както можете да видите на последната снимка! Това е някаква бъркотия в кутията, но всичко работи и нямах толкова повече място, затова ви съветвам да създадете по -голям случай, ако пресъздавате моя проект.

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