Мазмуну:
- 1 -кадам: Берилиштер
- 2 -кадам: Схема жана зымдар
- 3 -кадам: Маалыматтар базасынын дизайны
- 4 -кадам: Raspberry Pi даярдоо
- 5 -кадам: Биздин маалымат базабызды RPiге илгерилетүү
- 6 -кадам: Биздин RPiде Bluetoothду конфигурациялоо
- 7 -кадам: Толук Backend жазуу
- 8 -кадам: Frontend жазуу (HTML, CSS жана JavaScript)
- 9 -кадам: Менин ишимди куруп, баарын бириктирүү
- 10 -кадам: Slimbox спикерин түзүү жолунда болгон кээ бир көйгөйлөр …
Video: Slimbox - Smart Bluetooth спикери!: 10 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Эй!
MCT Howest Kortrijk мектебиндеги менин долбоорум үчүн, мен ар кандай сенсорлор менен акылдуу Bluetooth спикери, LCD жана RGB NeoPixel шакекчесин жасадым. Бардыгы Raspberry Piде иштейт (маалымат базасы, вебсервер, Backend).
Ошентип, бул көрсөтмөдө мен бул долбоорду кантип 3 жуманын ичинде этап -этабы менен көрсөткөнүмдү көрсөтөм, андыктан ар бириңиздер менин долбоорумду кайра жараткыңыз келсе, оңой эле жасай аласыз!
Бул менин биринчи көрсөтмөм, эгер сизде кандайдыр бир суроолор болсо, мен аларга мүмкүн болушунча тезирээк жооп берүүгө аракет кылам!
Менин GitHub:
1 -кадам: Берилиштер
DS18B20 температура сенсору
DS18B20-бул температураны өлчөгөн бир зымдуу сенсор, Maxim Integrated тарабынан чыгарылган. DS18B20 сенсорлорунун 2 түрү бар, бир гана компоненти (мен колдонгон) жана суу өткөрбөй турган версиясы, андан чоңураак, бирок бул менин проектиме керектүү нерсе эмес, ошондуктан мен компонентти гана колдондум. Сенсор температураны -55 ° Cдан +125 ° C (-67 ° F - +257 ° F) диапазонунда өлчөй алат жана ал 0,5 ° C -10 ° Cден +85 ° C чейин тактыкка ээ. Ошондой эле 9 биттен 12 битке чейин программалоочу токтому бар.
Маалымат жадыбалы:
Потенциометр сенсору
Потенциометр - бул үч терминалы бар резистор, ал сенсордун үстүңкү бөлүгүн айлантуу менен кол менен жөнгө салынат. Жогорку бөлүктүн позициясы потенциометрдин чыгуу чыңалуусун аныктайт.
LSM303 акселерометр + компастын үзүлүшү
LSM303 сынык тактасы Adafruit тарабынан чыгарылган үч огу акселерометр менен магнитометр / компастын айкалышы. Бул Raspberry Piнин I2C интерфейси менен колдонулат.
Сереп:
Маалымат жадыбалы:
MCP3008
Менин потенциометримден маалыматтарды окуу үчүн мен MCP3008 колдондум, ал 8 каналдуу SPI интерфейси бар санариптик конверторго 10 биттик аналог болуп саналат жана программалоо абдан оңой.
Маалымат жадыбалы:
Динамик - 3”Диаметри - 8 Ом 1 Ватт
Бул керектүү болгон чыңалууну жана амперди эсептеп чыккандан кийин тандап алган спикердин конусу жана бул менин Adafruit тарабынан чыгарылган Raspberry Pi долбоорума эң ылайыктуу болгон.
Обзор:
MAX98357 I2S Class-D моно күчөткүч
Бул динамик менен келген күчөткүч, ал күчөткүч гана эмес, I2S санариптен аналогдук которгуч, ошондуктан менин динамигиме жана аудио тутумума эң сонун шайкеш келет.
Сереп:
Маалымат жадыбалы:
Arduino Uno
Arduino Uno-бул Arduino.cc тарабынан чыгарылган Microchip ATmega328P микроконтроллерине негизделген ачык булак микроконтроллер тактасы. Uno тактасында 14 санарип казык, 6 аналогдук төөнөгүч бар жана Arduino IDE программасы менен толук программаланат.
Обзор:
Levelshifter
Бул Arduino Uno менен Raspberry Pi ортосундагы байланышка жана ар кандай чыңалууга кам көргөн кичинекей такта, Arduino: 5V & Raspberry Pi: 3.3V. Бул керек, анткени NeoPixel шакеги Arduino менен туташкан жана ал жерде иштейт, калган нерселердин баары Raspberry Piде иштейт.
RGB NeoPixel шакеги
Бул 12 RGB лед менен толтурулган кичинекей шакек (эгер кааласаңыз, RGB леддери чоңураак шакектерди сатып алсаңыз болот). Бул менин учурда Arduino Uno менен байланышкан, бирок башка көптөгөн түзмөктөргө туташтырылышы мүмкүн жана колдонууга абдан жөнөкөй.
Обзор:
ЖК дисплей 16х2
Мен температурамды, көлөмүмдү жана IP дарегимди басып чыгаруу үчүн негизги ЖК дисплейди колдондум.
Маалымат жадыбалы:
Raspberry Pi 3B+ жана 16 ГБ SD карта
Менин бүт долбоорум конфигурацияланган сүрөтү бар Raspberry Pi 3B+ менен иштейт, мен аны кийинчерээк менин көрсөтмөмдө конфигурациялоого жардам берем.
GPIO T-Part, 2 Breadboards жана jumperwires көп
Мага керектүү нерселердин бардыгын туташтыруу үчүн, мен GPIO T-бөлүгүн колдондум, ошондуктан көбүрөөк орун бар жана кайсы пин кайсы экени түшүнүктүү.
2 -кадам: Схема жана зымдар
Менин Fritzing колдонгон схемам үчүн, бул сиз орното ала турган программа, ал ар кандай көрүнүштөрдө чынында эле оңой схеманы түзүүгө мүмкүндүк берет.
Fritzingди жүктөп алыңыз:
Андыктан баарын туура жол менен туташтырганыңызды текшериңиз! Менин учурда, зымдардын түстөрү схемага окшош эмес.
3 -кадам: Маалыматтар базасынын дизайны
Биз туташкан 3 сенсордон көп маалыматтарды чогултуп жатабыз, андыктан бизге маалыматтарды жана сенсорлорду сактоо үчүн маалымат базасы керек. Кийинчерээк Raspberry Piдеги маалымат базасын кантип конфигурациялоону жана ага маалыматтарды кантип кошууну көрөбүз. Бирок адегенде маалымат базасынын дизайны же ERD (Entity Relationship Diagram) жасалышы керек жана меники да 3NF менен нормалдаштырылган. Ошондуктан сенсорлорду башка столго бөлүп, IDлер менен иштейбиз.
Жалпысынан, бул чындыгында базалык жана оңой иштөө үчүн базанын дизайны.
4 -кадам: Raspberry Pi даярдоо
Ошентип, азыр биз долбоордун кээ бир негиздерин аткардык. Келгиле, Raspberry Pi менен баштайлы!
SD картасынын конфигурациясы
Биринчиден, сизге 16 ГБ SD карт керек, анда сиз сүрөтүңүздү коюп, SD картага баштапкы сүрөттү жүктөө программасы керек.
Программалык камсыздоо:
Сүрөттү баштоо:
Ошентип, булар жүктөлгөндөн кийин:
- SD картаңызды компьютериңизге салыңыз.
- Жаңы эле жүктөп алган Win32ди ачыңыз.
- Сиз жаңы эле жүктөп алган Raspbian сүрөт файлын тандаңыз.
- SD картаңыздын жайгашкан жерине "жазууну" чыкылдатыңыз.
Бул жабдыкка жараша бир аз убакыт талап кылынышы мүмкүн. Бул аяктагандан кийин, биз сүрөттү RPiге киргизүүдөн мурун, акыркы өзгөртүүлөрдү киргизүүгө даярбыз.
- SD картаңыздын директориясына өтүңүз, "cmdline.txt" деп аталган файлды издеп ачыңыз.
- Эми ошол эле сапка 'ip = 169.254.10.1' кошуңуз.
- Файлды сактаңыз.
- Кеңейтүүсүз жана мазмунсуз 'ssh' аттуу файл түзүңүз.
Эми сиз SD картаны компьютериңизден КАУПСУЗ чыгарып, кубаты жок Raspberry Pi салып койсоңуз болот. SD карта RPIге киргенден кийин, компьютериңизден LAN кабелин RPi LAN портуна туташтырыңыз, бул туташкандан кийин сиз RPiге туташтыра аласыз.
Эми биз Raspberry Piбизди көзөмөлдөгүбүз келет, бул Putty аркылуу жасалат.
Putty программалык камсыздоо:
Жүктөлгөндөн кийин, Putty программасын ачыңыз жана IP '169.254.10.1' жана Порт '22' жана туташуу түрүн киргизиңиз: SSH. Эми биз акыры командалык сап интерфейсибизди ача алабыз жана башталгыч логин маалыматы менен кире алабыз -> Колдонуучу: pi & Сырсөз: малина.
Raspi-config
sudo raspi-config
Бул долбоор үчүн чынында маанилүү нерсе - бул интерфейс бөлүмү, биз көптөгөн интерфейстерди иштетишибиз керек, төмөнкү интерфейстердин бардыгын иштетүүбүз керек:
- Бир зым
- SPI
- I2C
- Сериялык
Эми raspi-config менен бүткөндөн кийин, интернет менен байланышууга аракет кылалы.
Wi-Fi байланышы
Биринчиден, сиз төмөнкү буйруктар үчүн тамыр болушуңуз керек
sudo -i
Сиз тамыр болгондон кийин, төмөнкү буйрукту колдонуңуз. SSID - бул сиздин тармактын аты жана сырсөз, албетте, бул сырсөз.
wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf
Эгер сиз ката кетирген болсоңуз, анда бул файлды киргизүү менен бул тармакты текшерип, жаңыртып же жок кыла аласыз:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Ошентип, биздин тармакка киргенден кийин, WPA кардар интерфейсине кирели
wpa_cli
Интерфейсти тандаңыз
wlan0 интерфейси
Файлды кайра жүктөңүз
кайра конфигурациялоо
Акыры сиз жакшы туташып турганыңызды көрө аласыз:
ip a
Жаңыртуу жана жаңыртуу
Эми биз интернетке туташкандан кийин, буга чейин орнотулган пакеттерди жаңыртуу акылдуу кадам болмок, андыктан башка пакеттерди орнотуудан мурун муну жасайбыз.
sudo apt-get update
sudo apt-get жогорулатуу
MariaDB маалымат базасы
MariaDB маалымат базасынын серверин орнотуңуз:
sudo apt-get mariadb-серверин орнотуңуз
Apache2 Webserver
Apache2 веб -серверин орнотуңуз:
sudo apt install apache2
Python
Python орнотуу:
update-alternatives-install/usr/bin/python python /usr/bin/python2.7 1
update-alternatives-install/usr/bin/python python/usr/bin/python3 2
Python пакети
Арткы жактагы кемчиликсиз иштөө үчүн бул пакеттердин бардыгын орнотушуңуз керек болот:
- Колба
- Flask-Cors
- Flask-MySql
- Flask-SocketIO
- PyMySQL
- Сурамдар
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Баяндамачынын китепканасы
Adafruitтен спикер китепканасын орнотуңуз:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
Кайра жүктөө убактысы
sudo өчүрүп күйгүзүү
5 -кадам: Биздин маалымат базабызды RPiге илгерилетүү
Эми биз керектүү нерселердин бардыгын орноткон соң, келгиле, өзүбүздүн маалымат базабызды Raspberry Piге орнотолу!
Ошентип, адегенде биз MySql жумушчу тактасындагы маалымат базабызды алдыга жылдырышыбыз керек, ошону менен бирге маалымат базаңыздын толук кодун көчүрүп, андагы бардык "көрүнөө" сөздөрдү жок кылыңыз. Ошентип, ал көчүрүлгөндөн кийин, дагы бир жолу шпаклевканы ачып, кирип, териңиз:
sudo mysql
жана азыр сиз mysql интерфейсиндесиз, анда маалымат базаңыздын кодун көчүрүп, enter басыңыз.
Эми биз жөн гана колдонуучу түзүшүбүз керек
CREATE USER 'user' IDENTIFIED by 'user';
БАРДЫК АРТЫКТЫКТАРДЫ БЕРГИЛЕ *. * TO 'user';
Эми кайра жүктөө.
Ошентип, бардыгы азыр орнотулушу керек, сиз Pi жана MySql Workbench менен байланыш түзө аласыз, андыктан таблицаңыздагы бардык маалыматтарды текшерүү оңой.
6 -кадам: Биздин RPiде Bluetoothду конфигурациялоо
Биз Bluetooth спикерин түзүп жатабыз, демек, бул биздин булактан Raspberry Piге маалымат каражаттары жөнөтүлүп жатат жана муну оңой эле жасаса болот, келгиле анда!
Bluetooth байланыш үчүн булагым:
Буга чейин иштеп жаткан блюсаланы алып салуу
sudo rm/var/run/bluealsa/*
A2DP профилин Чөгүү ролун кошуңуз
sudo bluealsa -p a2dp -sink &
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: 00
Эми биздин түзмөк биздин Raspberryге толугу менен туташкан жана сиз пи спикердеги баштапкы түзмөгүңүздөн медианы ойной алышыңыз керек.
7 -кадам: Толук Backend жазуу
Ошентип, азыр орнотуу аяктады, биз акыры биздин арткы программаны жаза баштайбыз!
Мен PyCharm -ды бүт колдо колдондум, сиз жөн гана PyCharm долбооруңуз Raspberry Pi менен туташкандыгын текшеришиңиз керек, бул сиздин Орнотуу жолуңуз жөндөөлөрүңүздө орнотулгандыгын жана сизге керектүү бардык пакеттерди орнотконуңузду этап -этабы менен жасоо керектигин билдирет. 4.
Мен өзүмдүн класстарымды колдондум, мунун баары менин GitHubга киргизилген. Шилтеме кириште, эгер сиз аны өткөрүп жиберген болсоңуз;)
Менин арткы файлымда мен жип ийрүү сабактарын колдондум, ошондуктан бардыгы бир убакта иштей алат жана ал бири -бирине тоскоол болбойт. Ал эми түбүндө сиз бардык маршруттарды алдыңыз, андыктан биз фронттон маалыматтарды оңой ала алабыз.
8 -кадам: Frontend жазуу (HTML, CSS жана JavaScript)
Эми арткы аяктагандан кийин, биз толук фронталдык жазууну баштай алабыз.
HTML & CSS абдан оңой жасалды, мүмкүн болушунча мобилдик менен иштөөгө аракет кылдык, анткени биз көбүнчө Bluetooth менен мобилдик түзмөктөн туташып тургандыктан, мобилдик тактадан башкаруу оңой болмок.
Сиз өзүңүздүн каалооңуз боюнча панелиңизди жасай аласыз, мен жөн эле кодумду жана дизайнымды ушул жерге калтырам, сиз каалаганыңызды жасай аласыз!
Жана Javascript анча кыйын болгон жок, менин маршруттарымдагы бир нече GET менен иштеди, көптөгөн иш -чараларды угуучулар жана кээ бир сокетио структуралары.
9 -кадам: Менин ишимди куруп, баарын бириктирүү
Мен алгач корпустун кандай болушун каалаганымдын эскиздеринен баштадым, маанилүү нерсе - бул нерсеге туура келиши үчүн чоң болушу керек болчу, анткени бизде чоң схема бар.
Мен корпусту жыгачтан жасадым, менимче, эгерде сизде корпустарды куруу боюнча көп тажрыйбаңыз жок болсо жана аны менен кыла турган нерселериңиз көп болсо, иштөө эң оңой.
Мен шарап бөтөлкөлөрүнүн корпусунан баштап, жыгачты араалай баштадым. Негизги корпусумду алгандан кийин, анын тешиктерин тешишим керек болчу (корпустун маңдайында көп, сүрөттөрдө көрүп тургандай: P) жана ага мыктарды салыш керек, бул чындыгында негизги корпус, бирок ал абдан сонун көрүнөт жана идеалдуу келет.
Жана бул иш бүткөндөн кийин, акыркы сүрөттө көрүнүп тургандай, баарын чогултуу убактысы келди! Бул кутучанын ичинде кандайдыр бир баш аламандык, бирок баары иштейт жана менде анчалык бош орун жок болчу, ошондуктан мен сизге долбоорумду кайра жаратып жатсаңыз, чоңураак корпус түзүүнү сунуштайм.
10 -кадам: Slimbox спикерин түзүү жолунда болгон кээ бир көйгөйлөр …
Bluetooth & bluealsa каталары
Мен музыка ойногум же bluetooth менен туташкым келген сайын, мага bluetooth жана bluealsaдан каталар келди. Мен бул боюнча бир аз изилдөө жүргүздүм жана бул менин көйгөйүмдүн чечими болду. Ошентип, кандайдыр бир себептерден улам, менин блютузум softblocked, бул стандарттуу жумшак блокировкаланганын билбейм. Сиз муну Puttyге төмөнкү буйрукту терүү менен көрө аласыз.
rfkill тизмеси
Демек, эгерде ал softblocked болсо, жөн гана муну колдонуңуз:
rfkill bluetooth'ду бөгөттөн чыгаруу
Андан кийин кайра жүктөөнү каалашыңыз мүмкүн, менин булагым:
Сериялык туташуу көйгөйлөрү
Дагы бир чоң көйгөй, мен Arduino менен деңгээл которгуч аркылуу эч кандай байланыш жасай албадым, кээ бир издөөлөрдөн кийин менин/dev/ttyS0'умдун жок болуп кеткенин билдим жана бул сиздин RPi жаңыртылгандыктан болушу мүмкүн. Бул боюнча да чечим табылган
Сиз raspi-config менен сериялык консолун кайра иштетип, кайра жүктөп, анан "/boot/cmdline.txt'ден" console = serial0, 115200 "битин кол менен алып салышыңыз керек болот." Enable_uart = 1 "ичинде 'экенин ырастаңыз /boot/config.txt ', жана кайра өчүрүңүз. Бул сиздин ttyS0 портуңузду, ошондой эле ага'/dev/serial0 'жумшак шилтемесин кайтарышы керек.
Булак:
Сунушталууда:
Frog V2.0 менен өбүшүү - Арткы мүйүз Bluetooth спикери Толук басып чыгаруу: 5 кадам (Сүрөттөр менен)
Frog V2.0 менен өбүшүү - Арткы мүйүз Bluetooth спикери Толугу менен басып чыгаруу: Киришүү Мени кичине фондон баштайын. Ошентип, артка жүктөлгөн мүйүз спикери деген эмне? Муну тескери мегафон же граммофон деп ойлоп көрүңүз. Мегафон (негизинен алдыңкы мүйүз үн күчөткүчү) акустикалык мүйүздү колдонот, анын натыйжалуулугун жогорулатат
Fire Pit үн реактивдүү жалын, Bluetooth спикери жана анимацияланган LED менен: 7 кадам (сүрөттөр менен)
От чукугу үн реактивдүү жалын, Bluetooth спикери жана анимацияланган светодиоддор менен: жай мезгилинде эч нерсе от менен эс алганды айтпайт. Бирок оттон артык эмне бар экенин билесизби? От жана музыка! Бирок биз бир кадам, жок, эки кадам ары кете алабыз … Өрт, Музыка, LED чырактары, Үн реактивдүү жалын! Бул дымактуу көрүнүшү мүмкүн, бирок бул Ins
Батарея менен иштеген Bluetooth спикери // Кантип куруу керек - Жыгач иштетүү: 14 кадам (Сүрөттөр менен)
DIY батарейка менен иштеген Bluetooth спикери // Кантип куруу керек-Жыгач иштетүү: Мен бул кайра заряддалуучу, батарейка менен иштөөчү, портативдүү Bluetooth бумбокс спикерин Parts Express C-Note спикери комплектин жана алардын KAB амп тактасын (төмөндөгү бардык бөлүктөргө шилтемелерди) колдонуп курдум. Бул менин биринчи спикерим болчу жана чындыгында таң калам
Модулдук, USB менен иштеген, Bluetooth спикери системасы: 7 кадам (Сүрөттөр менен)
Модулдук, USB менен иштеген, Bluetooth спикери тутуму: Биз модулдук корпусту колдонгон, жөнөкөй, бирок абдан пайдалуу USB кубаттуу, Bluetooth динамик системасын курууну үйрөнөбүз. Сиз муну чоңойтуп, үн тилкесин түзүү үчүн бир нече динамикти кошо аласыз. Т -ды түзүү үчүн системага батарея кошууга дагы орун бар
LIGHT BOX - Vu Метр менен Портативдүү Bluetooth Спикери: 10 кадам (Сүрөттөр менен)
LIGHT BOX - Vu Метр менен Портативдүү Bluetooth Спикери: Мен жасаган нерсе - бул VU метр менен байланышкан портативдүү стерео динамик бирдиги (б.а. көлөм бирдиги метр). Ошондой эле ал Bluetooth байланышын, AUX портун, USB портун, SD карта портун жана амп; FM радио, үндү көзөмөлдөө