Мазмуну:

Slimbox - Smart Bluetooth спикери!: 10 кадам (сүрөттөр менен)
Slimbox - Smart Bluetooth спикери!: 10 кадам (сүрөттөр менен)

Video: Slimbox - Smart Bluetooth спикери!: 10 кадам (сүрөттөр менен)

Video: Slimbox - Smart Bluetooth спикери!: 10 кадам (сүрөттөр менен)
Video: Универсальная прошивка для ТВ Боксов на AMLOGIC процессорах SLIMBOX. На примере TANIX TX9S 2024, Ноябрь
Anonim
Slimbox - акылдуу Bluetooth спикери!
Slimbox - акылдуу Bluetooth спикери!

Эй!

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 картага баштапкы сүрөттү жүктөө программасы керек.

Программалык камсыздоо:

Сүрөттү баштоо:

Ошентип, булар жүктөлгөндөн кийин:

  1. SD картаңызды компьютериңизге салыңыз.
  2. Жаңы эле жүктөп алган Win32ди ачыңыз.
  3. Сиз жаңы эле жүктөп алган Raspbian сүрөт файлын тандаңыз.
  4. SD картаңыздын жайгашкан жерине "жазууну" чыкылдатыңыз.

Бул жабдыкка жараша бир аз убакыт талап кылынышы мүмкүн. Бул аяктагандан кийин, биз сүрөттү RPiге киргизүүдөн мурун, акыркы өзгөртүүлөрдү киргизүүгө даярбыз.

  1. SD картаңыздын директориясына өтүңүз, "cmdline.txt" деп аталган файлды издеп ачыңыз.
  2. Эми ошол эле сапка 'ip = 169.254.10.1' кошуңуз.
  3. Файлды сактаңыз.
  4. Кеңейтүүсүз жана мазмунсуз '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 'жумшак шилтемесин кайтарышы керек.

Булак:

Сунушталууда: