Съдържание:
- Стъпка 1: Консумативи
- Стъпка 2: Схема и окабеляване
- Стъпка 3: Дизайн на база данни
- Стъпка 4: Настройка на Raspberry Pi
- Step 5: Setting Up the Database to the RPi
- Стъпка 6: Конфигуриране на Bluetooth на нашите RPi
- Стъпка 7: Писане на пълния бекенд
- Стъпка 8: Писане на Frontend (HTML, CSS и JavaScript)
- Стъпка 9: Изграждане на моя случай и всичко заедно
Видео: Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Здравей!
За моя училищен проект в 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
Сега, когато сме инсталирали всичко необходимо, нека поставим нашата база данни, която проектирахме, на нашия 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: Изграждане на моя случай и всичко заедно
Първо започнах да скицирам как искам да изглежда калъфът, нещо важно беше, че трябваше да е достатъчно голямо, за да се побере всичко, тъй като имахме голяма верига, която да поставим в кутията, но трябваше да останем компактни, така че да не се получи не заема много място
Направих кутията от дърво, мисля, че е най -лесно да работите, когато нямате толкова много опит в изграждането на калъфи и имате също много неща, които можете да правите с нея.
Започнах от стара дъска, която сложих наоколо и току -що започнах да режа дървата. След като имах основния си калъф, просто трябваше да пробия дупки в него (много в предната част на кутията, както можете да видите на снимките и да сложите няколко пирони в него, това е наистина основен калъф, но изглежда доста готин и пасва перфектно. Реших също да го боядисам в бяло, за да изглежда добре.
И след като делото приключи, беше време да съберем всичко, както можете да видите на последната снимка! Това е някаква бъркотия в кутията, но всичко работи и нямах толкова повече място, затова ви съветвам да създадете по -голям случай, ако пресъздавате моя проект.
Препоръчано:
Висотомер (измервател на височина) Въз основа на атмосферно налягане: 7 стъпки (със снимки)
Висотомер (измервател на височина) Въз основа на атмосферно налягане: [Редактиране]; Вижте версия 2 в стъпка 6 с ръчно въвеждане на базовата височина. Това е описанието на сградата на висотомер (измервател на височина), базиран на Arduino Nano и сензор за атмосферно налягане Bosch BMP180. Дизайнът е прост, но измерванията
DIY Chewie Monsta Looper (Въз основа на Ed Sheeran's): 7 стъпки
DIY Chewie Monsta Looper (Въз основа на Ed Sheeran's): Така че бях чувал за Ed Sheeran от няколко години и никога не му обръщах особено внимание. Харесах някои от тези песни по радиото, но мислех, че той е просто друг поп изпълнител, докато не му кажа, че изпълнява „Shape of You“на наградите Грами през 2017 г. Аз ще
MQTT Въз основа на MicroPython ESP32: 5 стъпки
MQTT Въз основа на MicroPython ESP32: Обичам да отглеждам домашни котки. След ден на интензивна работа, котката може да ме отпусне, когато се прибера. След усилено обучение тази котка има добър навик да се храни редовно в " ресторанта " всеки ден. Но наскоро трябва да пътувам за няколко дни и
Rc автомобил въз основа на 434mhz Rf модул .: 5 стъпки
Rc Car Въз основа на 434mhz Rf модул .: 1) перф платка (фиктивна печатна платка) 2) проводници3) енкодер ht12e и декодер ht12d ic и драйвер на мотор l293d или можете да използвате L298N, ако използвате lipo или други високотокови батерии. 4) RF модули 5) съпротивления 1M и 51K 6) LED 7) ic7805 напрежение re
Автоматично превключване на Shelly EM въз основа на производство на слънчеви панели: 6 стъпки
Shelly EM Auto Toggle Въз основа на производство на слънчеви панели: P1: домашна консумация (напр. "P1 = 1kW" ⇒ консумираме 1kW) P2: производство на слънчеви панели (напр. "P2 = - 4kW" ⇒ ние произвеждаме 4kW) нагревателят консумира 2kW, когато е включен. Искаме да го включим, ако слънчевият панел произвежда