Mundarija:

Slimbox - aqlli Bluetooth dinamik: 10 qadam (rasmlar bilan)
Slimbox - aqlli Bluetooth dinamik: 10 qadam (rasmlar bilan)

Video: Slimbox - aqlli Bluetooth dinamik: 10 qadam (rasmlar bilan)

Video: Slimbox - aqlli Bluetooth dinamik: 10 qadam (rasmlar bilan)
Video: Универсальная прошивка для ТВ Боксов на AMLOGIC процессорах SLIMBOX. На примере TANIX TX9S 2024, Iyul
Anonim
Slimbox - aqlli Bluetooth dinamik
Slimbox - aqlli Bluetooth dinamik

Salom!

MCT Howest Kortrijkdagi maktab loyihasi uchun men har xil sensorli, LCD va RGB NeoPixel uzukli, aqlli Bluetooth dinamik qurilmasini yasadim. Hammasi Raspberry Pi -da ishlaydi (ma'lumotlar bazasi, veb -server, Backend).

Shunday qilib, men sizga bu loyihani bosqichma -bosqich 3 hafta ichida qanday amalga oshirganimni ko'rsataman, shuning uchun agar sizlardan kimdir mening loyihamni qayta tiklamoqchi bo'lsa, buni osongina qilishingiz mumkin!

Bu mening birinchi ko'rsatmam, agar sizda biron bir savol bo'lsa, men ularga imkon qadar tezroq javob berishga harakat qilaman!

Mening GitHub:

1 -qadam: materiallar

Ta'minotlar
Ta'minotlar
Ta'minotlar
Ta'minotlar
Ta'minotlar
Ta'minotlar

DS18B20 harorat sensori

DS18B20-haroratni o'lchaydigan bitta simli sensor, Maxim Integrated tomonidan ishlab chiqarilgan. DS18B20 datchiklarining 2 turi mavjud, faqat komponenti (men ishlatganman) va suv o'tkazmaydigan versiya, bu ancha katta, lekin bu mening loyiham uchun kerak bo'lgan narsa emas, shuning uchun men faqat komponentdan foydalandim. Sensor haroratni -55 ° C dan +125 ° C gacha (-67 ° F dan +257 ° F gacha) o'lchashi mumkin va aniqligi -10 ° C dan +85 ° C gacha 0,5 ° S gacha. Bundan tashqari, 9 bitdan 12 bitgacha programlanadigan piksellar soniga ega.

Ma'lumotlar jadvali:

Potentsiometr sensori

Potansiyometr - bu uchta terminalli rezistor, uni sensorning yuqori qismini aylantirish orqali qo'lda sozlash mumkin. Yuqori qismning pozitsiyasi potentsiometrning chiqish kuchlanishini aniqlaydi.

LSM303 akselerometr + kompas uzilishi

LSM303 sindiruvchi taxtasi uch o'qli akselerometr va Adafruit tomonidan ishlab chiqarilgan magnitometr / kompas kombinatsiyasidan iborat. U Raspberry Pi ning I2C interfeysi bilan ishlatiladi.

Umumiy ma'lumot:

Ma'lumotlar jadvali:

MCP3008

Potentsiometrdagi ma'lumotlarni o'qish uchun men MCP3008 dan foydalandim, u 8 kanalli 10 bitli analogli SPI interfeysli raqamli konvertor va dasturlash juda oson.

Ma'lumotlar jadvali:

Karnay - 3 "diametri - 8 Ohm 1 Vatt

Bu men kerak bo'ladigan kuchlanish va amperlarni hisoblagandan so'ng tanlagan karnay konusidir va bu mening Adafruit tomonidan ishlab chiqarilgan Raspberry Pi loyihamga juda mos keladi.

Umumiy ma'lumot:

MAX98357 I2S Class-D mono kuchaytirgich

Bu karnay bilan birga keladigan kuchaytirgich, bu nafaqat kuchaytirgich, balki I2S raqamli -analogli konvertor, shuning uchun u karnay va audio tizimim uchun juda mos keladi.

Umumiy ma'lumot:

Ma'lumotlar jadvali:

Arduino Uno

Arduino Uno-bu Arduino.cc tomonidan ishlab chiqarilgan Microchip ATmega328P mikrokontrolleriga asoslangan ochiq manbali mikrokontroller taxtasi. Uno taxtasida 14 ta raqamli pin, 6 ta analog pin bor va Arduino IDE dasturi bilan to'liq dasturlashtirilgan.

Umumiy ma'lumot:

Darajani o'zgartirish

Bu Arduino Uno va Raspberry Pi o'rtasidagi aloqa va Arduino: 5V va Raspberry Pi: 3.3V turli xil kuchlanishlari bilan shug'ullanadigan kichik taxta. Bu kerak, chunki NeoPixel halqasi Arduino -ga ulangan va u erda ishlaydi, qolganlari esa Raspberry Pi -da ishlaydi.

RGB NeoPixel uzuk

Bu 12 ta RGB svetodiodli kichik halqa (agar xohlasangiz, ko'proq RGB LEDli katta halqalarni sotib olishingiz mumkin). Bu mening holatimda Arduino Uno -ga ulangan, lekin uni boshqa ko'plab qurilmalarga ulash mumkin va ulardan foydalanish juda oddiy.

Umumiy ma'lumot:

LCD displey 16x2

Men haroratni, tovushni va IP manzilimni chop etish uchun asosiy LCD displeydan foydalanardim.

Ma'lumotlar jadvali:

Raspberry Pi 3B+ va 16 Gb SD -karta

Mening butun loyiham Raspberry Pi 3B+ da sozlangan tasvir bilan ishlaydi, bu men sizga keyinchalik ko'rsatma berishda sozlashga yordam beraman.

GPIO T-qismi, 2 ta taxtali va ko'plab o'tish simlari

Menga kerak bo'lgan hamma narsani ulash uchun men taxtali va o'tish simlarini ishlatardim, men GPIO T-qismini ishlatardim, shuning uchun menda ko'proq joy bor va qaysi pin aniqligi aniq.

2 -qadam: sxemalar va simlar

Sxemalar va simlar
Sxemalar va simlar
Sxemalar va simlar
Sxemalar va simlar
Sxemalar va simlar
Sxemalar va simlar

Men Fritzing -dan foydalangan sxemam uchun bu siz o'rnatishingiz mumkin bo'lgan dastur bo'lib, u sizga har xil ko'rinishda juda oson sxemani yaratishga imkon beradi.

Fritzing -ni yuklab oling:

Shunday qilib, hamma narsani to'g'ri tarzda bog'laganingizga ishonch hosil qiling! Mening holatimda simlarning ranglari sxemadagi kabi emas.

3 -qadam: ma'lumotlar bazasini loyihalash

Ma'lumotlar bazasi dizayni
Ma'lumotlar bazasi dizayni

Biz ulangan 3 ta datchikdan juda ko'p ma'lumotlarni yig'yapmiz, shuning uchun bizga ma'lumotlar va sensorlarni saqlash uchun ma'lumotlar bazasi kerak bo'ladi. Keyinroq biz Raspberry Pi -dagi ma'lumotlar bazasini qanday sozlash va unga ma'lumotlarni qanday qo'shish kerakligini ko'rib chiqamiz. Lekin birinchi navbatda ma'lumotlar bazasi dizayni yoki ERD (Entity Relationship Diagram) tuzilishi kerak va meniki ham 3NF bilan normal holatga keltirildi. Shuning uchun biz sensorlarni boshqa jadvalga ajratamiz va identifikatorlar bilan ishlaymiz.

Umuman olganda, bu ma'lumotlar bazasi dizayni bilan ishlash uchun juda oddiy.

4 -qadam: Raspberry Pi tayyorlash

Shunday qilib, endi biz loyihaning ba'zi asoslarini tayyorladik. Raspberry Pi bilan boshlaylik!

SD -karta konfiguratsiyasi

Birinchidan, sizga 16 Gb hajmli SD -karta kerak bo'ladi, unda siz rasmingizni qo'yishingiz mumkin va SD -kartaga boshlang'ich rasmni yuklash dasturi.

Dasturiy ta'minot:

Rasmni boshlash:

Shunday qilib, ular yuklab olingandan so'ng:

  1. SD -kartangizni kompyuteringizga joylashtiring.
  2. Yangi yuklab olingan Win32 -ni oching.
  3. Siz hozirgina yuklab olgan Raspbian rasm faylini tanlang.
  4. SD -kartangiz joylashgan joyga "yozish" tugmasini bosing.

Bu sizning qurilmangizga qarab biroz vaqt talab qilishi mumkin. Bu bajarilgandan so'ng, biz tasvirni RPi -ga joylashtirishdan oldin ba'zi yakuniy o'zgartirishlar kiritishga tayyormiz.

  1. SD -kartangiz katalogiga o'ting, "cmdline.txt" nomli faylni toping va oching.
  2. Endi bitta qatorga 'ip = 169.254.10.1' qo'shing.
  3. Faylni saqlang.
  4. Kengaytma va tarkibsiz "ssh" nomli fayl yarating.

Endi siz SD -kartani kompyuteringizdan xavfsiz chiqarib olishingiz va Raspberry Pi -ga quvvatsiz qo'yishingiz mumkin. SD -karta RPI -ga kirgandan so'ng, kompyuterdan LAN kabelini RPi -LAN portiga ulang, ulangandan so'ng siz quvvatni RPi -ga ulashingiz mumkin.

Endi biz Raspberry Pi -ni boshqarishni xohlaymiz, bu Putty orqali amalga oshiriladi.

Putty dasturi:

Yuklab olingandan so'ng, Putty -ni oching va "169.254.10.1" IP va "22" portini va ulanish turini kiriting: SSH. Endi biz nihoyat buyruq satri interfeysini ochib, boshlang'ich login ma'lumotlari -> Foydalanuvchi: pi va Parol: malina bilan kirishimiz mumkin.

Raspi-config

sudo raspi-config

Bu loyiha uchun haqiqatan ham muhim bo'lgan interfeys bo'limi, biz juda ko'p turli xil interfeyslarni yoqishimiz, quyidagi interfeyslarni yoqishimiz kerak:

  • Bir simli
  • SPI
  • I2C
  • Seriyali

Endi raspi-config-ni tugatdik, keling, Internetga ulanishga harakat qilaylik.

Wi-Fi ulanishi

Birinchidan, siz quyidagi buyruqlar uchun ildiz bo'lishingiz kerak

sudo -i

Root bo'lgandan so'ng, quyidagi buyruqni ishlating. SSID sizning tarmoq nomingiz va parolingiz aniq.

wpa_passphrase "ssid" "parol" >> /etc/wpa_supplicant/wpa_supplicant.conf

Agar siz xato qilgan bo'lsangiz, ushbu faylni kiritish orqali tarmoqni tekshirishingiz, yangilashingiz yoki o'chirishingiz mumkin:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Shunday qilib, biz tarmoqqa kirganimizdan so'ng, keling, WPA mijoz interfeysiga kiraylik

wpa_cli

O'zingizning interfeysingizni tanlang

wlan0 interfeysi

Faylni qayta yuklang

qayta sozlamoq

Va nihoyat, siz yaxshi aloqada ekanligingizni ko'rishingiz mumkin:

ip a

Yangilash va yangilash

Endi biz Internetga ulangan bo'lsak, allaqachon o'rnatilgan paketlarni yangilash aqlli harakat bo'ladi, shuning uchun boshqa paketlarni o'rnatishdan oldin buni qilaylik.

sudo apt-get yangilanishi

sudo apt-get upgrade

MariaDB ma'lumotlar bazasi

MariaDB ma'lumotlar bazasi serverini o'rnating:

sudo apt-get o'rnatish mariadb-server

Apache2 veb -server

Apache2 veb -serverini o'rnating:

sudo apt install apache2

Python

Python -ni o'rnating:

update-alternatives-install/usr/bin/python python /usr/bin/python2.7 1

update-alternatives-install/usr/bin/python python/usr/bin/python3 2

Python to'plami

Orqa fonni mukammal ishlashi uchun siz ushbu paketlarning barchasini o'rnatishingiz kerak bo'ladi:

  • Shisha
  • Flask-Cors
  • Flask-MySql
  • Shisha-rozetka
  • PyMySQL
  • Talablar
  • Python-soket
  • RPi. GPIO
  • Gevent
  • Gevent-veb-rozetkasi
  • Ujson
  • Wsaccel

Karnay kutubxonasi

Adafruit -dan dinamiklar kutubxonasini o'rnating:

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

Qayta ishga tushirish vaqti keldi

sudo qayta yuklash

5 -qadam: Ma'lumotlar bazamizni RPi -ga yo'naltiring

Endi biz kerakli hamma narsani o'rnatganimizdan so'ng, Raspberry Pi -ga o'z ma'lumotlar bazamizni joylashtiraylik!

Shunday qilib, birinchi navbatda, MySql dastgohidagi ma'lumotlar bazasini ishlab chiqishimiz kerak, bunda ma'lumotlar bazasi kodini to'liq nusxalash va undagi "ko'rinadigan" so'zlarni o'chirish kerak. Shunday qilib, nusxa ko'chirilgandan so'ng, yana macunni oching, kiring va yozing:

sudo mysql

va endi siz mysql interfeysida, ma'lumotlar bazasi kodini nusxa ko'chiring va enter tugmasini bosing.

Endi biz faqat foydalanuvchi yaratishimiz kerak

"Foydalanuvchi" identifikatori bilan "foydalanuvchi" ni yarating;

QO'ShIMChALARNI BERISH *. * "Foydalanuvchi" ga;

Endi qayta yoqing.

Shunday qilib, hamma narsani hozir sozlash kerak, siz Pi va MySql Workbench -ga ulanishingiz mumkin, shuning uchun jadvallaringizdagi barcha ma'lumotlarni tekshirish osonroq.

6 -qadam: Bluetooth -ni RPi -da sozlash

Biz Bluetooth karnayini yaratmoqdamiz, demak, bu bizning manbamizdan Raspberry Pi -ga ommaviy axborot vositalari yuborilmoqda va buni juda oson bajarish mumkin, keling, unga kiraylik!

Bluetooth aloqasi uchun manba:

Allaqachon ishlayotgan bluealsani olib tashlash

sudo rm/var/run/bluealsa/*

A2DP profilini cho'ktirish rolini qo'shing

sudo bluealsa -p a2dp -sink va

Bluetooth interfeysini oching va bluetooth -ni yoqing

bluetoothctl

yoqish

Birlashtiruvchi agentni o'rnating

agent yoqilgan

standart agent

RPi -ni kashf qilinadigan qilib qo'ying

aniqlanishi mumkin

  • Endi bluetooth qurilmangizdan RPi -ni qidiring va unga ulaning.
  • Ikkala qurilmada ham ulanishni tasdiqlang, macuningizga "ha" yozing.
  • A2DP xizmatiga ruxsat bering, yana "ha" yozing.
  • Bu amalga oshgandan so'ng, biz o'z qurilmamizga ishonishimiz mumkin, shuning uchun har safar ulanishni xohlaganimizda hammasini o'tkazib yubormasligimiz kerak

ishonch XX: XX: XX: XX: XX: XX (Sizning bluetooth mac manzilingiz manba qurilmamizdan)

Agar siz RPI -ni kashf etishni davom ettirishni xohlasangiz, bu sizning shaxsiy tanlovingiz, lekin men uni o'chirib qo'yishni afzal ko'raman, shunda odamlar sizning qutingizga ulanishga harakat qila olmaydi

aniqlanishi mumkin

Keyin biz bluetooth interfeysidan chiqishimiz mumkin

Chiqish

Va nihoyat, bizning audio marshrutizatsiyamiz: manba qurilmamiz RPi -ga yo'naltiriladi

bluealsa-aplay 00: 00: 00: 00: 00: 00

Endi bizning qurilmamiz Raspberry -ga to'liq ulangan va siz o'zingizning qurilmangizdan ommaviy axborot vositalarini Pi karnayida o'ynata olasiz.

7 -qadam: To'liq orqa qismini yozish

Shunday qilib, endi sozlash tugadi, biz nihoyat orqa dasturimizni yozishni boshlashimiz mumkin!

Men PyCharm -ni butun orqa panelim uchun ishlatardim, faqat sizning PyCharm loyihangiz Raspberry Pi -ga ulanganligiga ishonch hosil qilishingiz kerak, bu sizning joylashtirish yo'lingiz sozlamalarda o'rnatilganligini va siz bizga kerak bo'lgan barcha paketlarni o'rnatganligingizni bildiradi. 4.

Men o'z darslarimdan foydalandim va ularning hammasi GitHub -ga kiritilgan. Agar siz uni o'tkazib yuborgan bo'lsangiz, havola kirish qismida;)

Mening orqa faylimda men birlashtiruvchi darslardan foydalanardim, shuning uchun hammasi bir vaqtning o'zida ishlashi mumkin va u bir -birining ishini to'xtatmaydi. Va pastki qismida siz barcha yo'nalishlarga egasiz, shuning uchun biz ma'lumotni old tomondan osongina olishimiz mumkin.

8 -qadam: Frontendni yozish (HTML, CSS va JavaScript)

Endi orqa qism tugagach, biz to'liq oldingi qismini yozishni boshlashimiz mumkin.

HTML va CSS juda oson bajarilgan, iloji boricha mobil telefonda ishlashga harakat qilgan, chunki biz ko'pincha Bluetooth bilan mobil qurilmadan ulanamiz, mobil boshqaruv paneli orqali boshqarish osonroq bo'ladi.

Siz xohlagan usulda asboblar panelini loyihalashtirishingiz mumkin, men o'z kodimni va dizaynimni shu erda qoldiraman, siz xohlagan narsani qilishingiz mumkin!

Va Javascript unchalik qiyin emas edi, mening marshrutlarimdagi bir nechta GETlar, voqealar tinglovchilari va ba'zi soket tuzilmalari bilan ishlagan.

9 -qadam: Mening ishimni tuzish va barchasini birlashtirish

Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish

Men birinchi navbatda ishning qanday ko'rinishini xohlaganimning eskizlaridan boshladim, muhim narsa shundaki, u hamma narsaga mos bo'lishi uchun etarlicha katta bo'lishi kerak edi, chunki bizda sumkani qo'yish uchun katta zanjir bor edi.

Men korpusni yog'ochdan yasadim, menimcha, agar sizda korpus qurishda unchalik tajribangiz bo'lmasa va sizda ko'p narsalar bo'lsa, u bilan ishlash eng oson.

Men vino idishlari uchun qutidan boshladim va o'tinni arralay boshladim. Menda asosiy korpus bor edi, men shunchaki teshiklarni burishim kerak edi (korpusning old tomonida, rasmlarda ko'rib turganingizdek: P) va unga mixlar qo'yishim kerak edi, lekin bu haqiqatan ham oddiy korpus, lekin u juda zo'r ko'rinadi va juda mos keladi.

Va ish tugagach, oxirgi rasmda ko'rib turganingizdek, hammasini yig'ish vaqti keldi! Bu qutida qandaydir tartibsizlik, lekin hamma narsa ishlaydi va menda unchalik bo'sh joy yo'q edi, shuning uchun sizga maslahat beraman, agar siz mening loyihamni qayta yaratayotgan bo'lsangiz, kattaroq sumka yarating.

10 -qadam: Slimbox dinamikini yaratish yo'limdagi ba'zi muammolar …

Bluetooth va bluealsa xatolar

Har safar men musiqa ijro etishni yoki bluetooth -ga ulanishni xohlaganimda, bluetooth va bluealsa -dan xatolar kelib turardi. Men bu borada bir qancha tadqiqotlar o'tkazdim va bu mening muammomga yechim bo'ldi. Ba'zi sabablarga ko'ra, mening bluetooth-ni yumshoq blokirovka qilishdi, bu standart yumshoq bloklanganligiga ishonchim komil emas. Siz buni Putty -ga quyidagi buyruqni kiritish orqali ko'rishingiz mumkin.

rfkill ro'yxati

Shunday qilib, agar u yumshoq bloklangan bo'lsa, shunchaki foydalaning:

rfkill bluetooth -ni blokdan chiqaring

Va bundan keyin siz qayta ishga tushirishni xohlashingiz mumkin, manba:

Seriyali ulanish bilan bog'liq muammolar

Yana bir katta muammo shundaki, men Arduino bilan daraja almashtirgich orqali hech qanday aloqa o'rnatolmadim, ba'zi qidiruvlardan so'ng men "/dev/ttyS0" yo'qolganini va bu sizning RPi yangilanishi tufayli bo'lishi mumkinligini aniqladim. Bu borada ham yechim topildi

Siz raspi-config bilan ketma-ket konsolni qayta yoqishingiz, qayta ishga tushirishingiz va "/boot/cmdline.txt" dan "console = serial0, 115200" bitini qo'lda olib tashlashingiz kerak bo'ladi. "Enable_uart = 1" ning "ichida" ekanligini tasdiqlang. /boot/config.txt 'va qayta ishga tushiring, bu sizning ttyS0 portingizni va unga'/dev/serial0 'yumshoq havolasini qaytarishi kerak.

Manba:

Tavsiya: