Съдържание:
- Стъпка 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 стъпки Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки](https://i.howwhatproduce.com/images/002/image-3343-3-j.webp)
Видео: Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки
![Видео: Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки Видео: Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки](https://i.ytimg.com/vi/HKC4u9Zh-SQ/hqdefault.jpg)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
![Mood Speaker- Мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура Mood Speaker- Мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура](https://i.howwhatproduce.com/images/002/image-3343-4-j.webp)
Здравей!
За моя училищен проект в 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: Схема и окабеляване
![Схема и окабеляване Схема и окабеляване](https://i.howwhatproduce.com/images/002/image-3343-5-j.webp)
![Схема и окабеляване Схема и окабеляване](https://i.howwhatproduce.com/images/002/image-3343-6-j.webp)
За да направя схемата си, използвах Fritzing, това е програма, която можете да инсталирате, която ви позволява да създавате много лесно схема в различни видове изгледи. Използвах макет и схематичен изглед.
Изтеглете Fritzing:
Уверете се, че всичко е свързано правилно. Използвах цветове, за да стане малко по -ясно да знам къде да свържа проводниците. В моя случай използвах различни цветове за проводниците
Стъпка 3: Дизайн на база данни
![Проектиране на база данни Проектиране на база данни](https://i.howwhatproduce.com/images/002/image-3343-7-j.webp)
Събираме много данни от 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!](https://i.howwhatproduce.com/images/002/image-3343-8-j.webp)
Сега, когато сме инсталирали всичко необходимо, нека поставим нашата база данни, която проектирахме, на нашия 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: Изграждане на моя случай и всичко заедно
![Изграждане на моя случай и всичко заедно Изграждане на моя случай и всичко заедно](https://i.howwhatproduce.com/images/002/image-3343-9-j.webp)
![Изграждане на моя случай и всичко заедно Изграждане на моя случай и всичко заедно](https://i.howwhatproduce.com/images/002/image-3343-10-j.webp)
![Изграждане на моя случай и всичко заедно Изграждане на моя случай и всичко заедно](https://i.howwhatproduce.com/images/002/image-3343-11-j.webp)
![Изграждане на моя случай и всичко заедно Изграждане на моя случай и всичко заедно](https://i.howwhatproduce.com/images/002/image-3343-12-j.webp)
Първо започнах да скицирам как искам да изглежда калъфът, нещо важно беше, че трябваше да е достатъчно голямо, за да се побере всичко, тъй като имахме голяма верига, която да поставим в кутията, но трябваше да останем компактни, така че да не се получи не заема много място
Направих кутията от дърво, мисля, че е най -лесно да работите, когато нямате толкова много опит в изграждането на калъфи и имате също много неща, които можете да правите с нея.
Започнах от стара дъска, която сложих наоколо и току -що започнах да режа дървата. След като имах основния си калъф, просто трябваше да пробия дупки в него (много в предната част на кутията, както можете да видите на снимките и да сложите няколко пирони в него, това е наистина основен калъф, но изглежда доста готин и пасва перфектно. Реших също да го боядисам в бяло, за да изглежда добре.
И след като делото приключи, беше време да съберем всичко, както можете да видите на последната снимка! Това е някаква бъркотия в кутията, но всичко работи и нямах толкова повече място, затова ви съветвам да създадете по -голям случай, ако пресъздавате моя проект.
Препоръчано:
Висотомер (измервател на височина) Въз основа на атмосферно налягане: 7 стъпки (със снимки)
![Висотомер (измервател на височина) Въз основа на атмосферно налягане: 7 стъпки (със снимки) Висотомер (измервател на височина) Въз основа на атмосферно налягане: 7 стъпки (със снимки)](https://i.howwhatproduce.com/images/001/image-1586-45-j.webp)
Висотомер (измервател на височина) Въз основа на атмосферно налягане: [Редактиране]; Вижте версия 2 в стъпка 6 с ръчно въвеждане на базовата височина. Това е описанието на сградата на висотомер (измервател на височина), базиран на Arduino Nano и сензор за атмосферно налягане Bosch BMP180. Дизайнът е прост, но измерванията
DIY Chewie Monsta Looper (Въз основа на Ed Sheeran's): 7 стъпки
![DIY Chewie Monsta Looper (Въз основа на Ed Sheeran's): 7 стъпки DIY Chewie Monsta Looper (Въз основа на Ed Sheeran's): 7 стъпки](https://i.howwhatproduce.com/images/002/image-4171-13-j.webp)
DIY Chewie Monsta Looper (Въз основа на Ed Sheeran's): Така че бях чувал за Ed Sheeran от няколко години и никога не му обръщах особено внимание. Харесах някои от тези песни по радиото, но мислех, че той е просто друг поп изпълнител, докато не му кажа, че изпълнява „Shape of You“на наградите Грами през 2017 г. Аз ще
MQTT Въз основа на MicroPython ESP32: 5 стъпки
![MQTT Въз основа на MicroPython ESP32: 5 стъпки MQTT Въз основа на MicroPython ESP32: 5 стъпки](https://i.howwhatproduce.com/images/003/image-6893-j.webp)
MQTT Въз основа на MicroPython ESP32: Обичам да отглеждам домашни котки. След ден на интензивна работа, котката може да ме отпусне, когато се прибера. След усилено обучение тази котка има добър навик да се храни редовно в " ресторанта " всеки ден. Но наскоро трябва да пътувам за няколко дни и
Rc автомобил въз основа на 434mhz Rf модул .: 5 стъпки
![Rc автомобил въз основа на 434mhz Rf модул .: 5 стъпки Rc автомобил въз основа на 434mhz Rf модул .: 5 стъпки](https://i.howwhatproduce.com/images/004/image-9540-j.webp)
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 въз основа на производство на слънчеви панели: 6 стъпки Автоматично превключване на Shelly EM въз основа на производство на слънчеви панели: 6 стъпки](https://i.howwhatproduce.com/images/006/image-17440-j.webp)
Shelly EM Auto Toggle Въз основа на производство на слънчеви панели: P1: домашна консумация (напр. "P1 = 1kW" ⇒ консумираме 1kW) P2: производство на слънчеви панели (напр. "P2 = - 4kW" ⇒ ние произвеждаме 4kW) нагревателят консумира 2kW, когато е включен. Искаме да го включим, ако слънчевият панел произвежда