Мазмұны:

Slimbox - ақылды Bluetooth динамигі!: 10 қадам (суреттермен)
Slimbox - ақылды Bluetooth динамигі!: 10 қадам (суреттермен)

Бейне: Slimbox - ақылды Bluetooth динамигі!: 10 қадам (суреттермен)

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

Сәлем!

MCT Howest Kortrijk мектебіндегі менің жобам үшін мен түрлі сенсорлары бар ақылды Bluetooth динамигін, СКД мен RGB NeoPixel сақинасын жасадым. Барлығы Raspberry Pi -де жұмыс істейді (мәліметтер базасы, веб -сервер, Backend).

Бұл нұсқаулықта мен сізге бұл жобаны 3 аптаның ішінде кезең -кезеңмен қалай жасағанымды көрсетемін, сондықтан егер сіздердің біреуіңіз менің жобамды қайта жасағыңыз келсе, оны оңай жасай аласыз!

Бұл менің бірінші нұсқаулығым, егер сізде сұрақтар туындаса, мен оларға тезірек жауап беруге тырысамын!

Менің GitHub:

1 -қадам: Жабдықтар

Жабдықтар
Жабдықтар
Жабдықтар
Жабдықтар
Жабдықтар
Жабдықтар

DS18B20 температура сенсоры

DS18B20-бұл температураны өлшейтін бір сымды сенсор, Maxim Integrated шығарады. DS18B20 сенсорларының 2 түрі бар, тек компоненті (мен қолдандым) және су өткізбейтін нұсқасы, ол әлдеқайда үлкен, бірақ бұл менің жобам үшін қажет емес, сондықтан мен тек компонентті қолдандым. Сенсор температураны -55 ° C - +125 ° C (-67 ° F - +257 ° F) диапазонында өлшей алады және -10 ° C - +85 ° C аралығында 0,5 ° C дәлдікке ие. Ол сондай -ақ 9 биттен 12 битке дейін бағдарламаланатын ажыратымдылыққа ие.

Мәліметтер парағы:

Потенциометр сенсоры

Потенциометр - бұл сенсордың жоғарғы жағын айналдыру арқылы қолмен реттелетін үш терминалы бар резистор. Жоғарғы бөліктің позициясы потенциометрдің шығыс кернеуін анықтайды.

LSM303 акселерометр + компастың үзілуі

LSM303 сыну тақтасы-үш осьті акселерометр мен магнитометр / компастың тіркесімі, Adafruit шығарады. Ол Raspberry Pi I2C интерфейсінде қолданылады.

Шолу:

Мәліметтер парағы:

MCP3008

Менің потенциометрдегі деректерді оқу үшін мен SPI интерфейсі бар цифрлық түрлендіргішке 8 каналды 10 каналды MCP3008 қолдандым және бағдарламалау өте оңай.

Мәліметтер парағы:

Динамик - 3 »Диаметрі - 8 Ом 1 Ватт

Бұл кернеу мен амперді есептегеннен кейін таңдаған динамик конусы және бұл менің Adafruit компаниясы шығарған Raspberry Pi жобасына өте жақсы сәйкес келді.

Шолу:

MAX98357 I2S Class-D моно күшейткіші

Бұл динамикпен бірге келетін күшейткіш, ол тек күшейткіш қана емес, сонымен қатар I2S цифрлық аналогты түрлендіргіші, сондықтан ол менің динамик пен аудио жүйеге өте жақсы сәйкес келеді.

Шолу:

Мәліметтер парағы:

Ардуино Уно

Arduino Uno-бұл Arduino.cc шығарған Microchip ATmega328P микроконтроллеріне негізделген ашық бастапқы микроконтроллер тақтасы. Uno тақтасында 14 сандық түйреуіш, 6 аналогтық түйреуіш бар және Arduino IDE бағдарламалық жасақтамасымен толық бағдарламаланған.

Шолу:

Деңгей ауыстырғыш

Бұл 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-бөлімі, 2 блок-тақта және көптеген өтетін сымдар

Маған кернеу тақталары мен қосқыш сымдарды қосу үшін мен GPIO T бөлігін қолдандым, сондықтан менде көбірек орын бар және қай түйреуіш екені түсінікті.

2 -қадам: схемалық және сымдық

Схема және сымдар
Схема және сымдар
Схема және сымдар
Схема және сымдар
Схема және сымдар
Схема және сымдар

Менің Fritzing қолданған схемам үшін бұл орнатуға болатын бағдарлама, ол әр түрлі көріністе өте қарапайым схеманы құруға мүмкіндік береді.

Fritzing жүктеу:

Сондықтан бәрін дұрыс байланыстырғаныңызға көз жеткізіңіз! Менің жағдайда сымдардың түстері схемадағыдай емес.

3 -қадам: мәліметтер қорының дизайны

Мәліметтер қорының дизайны
Мәліметтер қорының дизайны

Біз қосылған 3 сенсордан көптеген мәліметтер жинап жатырмыз, сондықтан бізге деректер мен сенсорларды сақтауға арналған мәліметтер базасы қажет. Кейінірек біз Raspberry Pi -де дерекқорды қалай конфигурациялау керектігін және оған деректерді қалай қосу керектігін көреміз. Бірақ алдымен мәліметтер қорының дизайны немесе ERD (Entity Relationship Diagram) жасалуы керек, менікі де 3NF көмегімен қалыпқа келтірілді. Сондықтан сенсорларды басқа кестеге бөліп, идентификаторлармен жұмыс жасаймыз.

Тұтастай алғанда, бұл әрі қарай жұмыс істеу үшін дерекқордың қарапайым және қарапайым дизайны.

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 бағдарламасын ашып, '169.254.10.1' IP пен '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 а

Жаңарту және жаңарту

Енді біз Интернетке қосылдық, қазірдің өзінде орнатылған пакеттерді жаңарту ақылды қадам болар еді, сондықтан басқа пакеттерді орнатпас бұрын мұны жасайық.

sudo apt-get жаңартуы

sudo apt-get жаңарту

MariaDB мәліметтер базасы

MariaDB дерекқор серверін орнатыңыз:

sudo apt-get install mariadb-server

Apache2 веб -сервері

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-сокет
  • RPi. GPIO
  • Gevent
  • Gevent-веб-ұясы
  • Уйсон
  • Wsaccel

Динамиктер кітапханасы

Adafruit -тен динамиктер кітапханасын орнатыңыз:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash

Қайта жүктеу уақыты келді

sudo қайта жүктеу

5 -қадам: Біздің дерекқорды RPi -ге жіберіңіз

Біз қажет нәрсенің бәрін орнатқаннан кейін, біз Raspberry Pi -ге өзіміздің Деректер базамызды орналастырайық!

Алдымен біз MySql жұмыс үстеліндегі дерекқорды жетілдіруіміз керек, осылайша дерекқордың толық кодын көшіріп, ондағы барлық «көрінетін» сөздерді жою қажет. Сонымен, ол көшірілгеннен кейін, шпательді қайтадан ашуға, жүйеге кіруге және теруге рұқсат етіңіз:

sudo mysql

Енді сіз mysql интерфейсіндесіз, оған дерекқор кодын көшіріп, enter пернесін басыңыз.

Енді бізге тек қолданушы құру керек

«Пайдаланушы» анықтаған пайдаланушының «пайдаланушысын» жасаңыз;

БАРЛЫҚ БАСЫМДІЛІКТЕРДІ БЕРУ *. * 'Пайдаланушыға';

Енді қайта жүктеңіз.

Сондықтан бәрін қазір орнату керек, сонымен қатар 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 -ге толық қосылған және сіз өзіңіздің бастапқы құрылғыңыздан медиа ойнатқышты Pi динамигінде ойната алуыңыз керек.

7 -қадам: Толық фонды жазу

Енді орнату аяқталды, біз ақырында өзіміздің бағдарламамызды жаза бастаймыз!

Мен 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 тізімі

Егер ол жұмсақ блокталған болса, оны пайдаланыңыз:

rfkill bluetooth блоктан шығарады

Осыдан кейін сіз қайта жүктегіңіз келуі мүмкін, менің көзім:

Сериялық қосылудағы ақаулар

Менде тағы бір үлкен проблема - Arduino -мен деңгей көтергіш арқылы байланыс орната алмадым, біраз іздеуден кейін менің '/dev/ttyS0' жоғалғанын білдім және бұл сіздің RPi жаңартылуына байланысты болуы мүмкін. Бұл туралы шешім де табылды

Сіз raspi-config көмегімен сериялық консольді қайта қосуыңыз керек, қайта жүктеңіз, содан кейін «/boot/cmdline.txt» ішінен «console = serial0, 115200» битін қолмен алып тастауыңыз керек. «Enable_uart = 1» қосулы тұрғанын растаңыз. /boot/config.txt ', және қайта жүктеңіз. Бұл сіздің ttyS0 портыңызды, сондай -ақ оған'/dev/serial0 'жұмсақ сілтемесін қайтаруы керек.

Дереккөз:

Ұсынылған: