Mundarija:
- 1 -qadam: materiallar
- 2 -qadam: sxemalar va simlar
- 3 -qadam: ma'lumotlar bazasini loyihalash
- 4 -qadam: Raspberry Pi tayyorlash
- 5 -qadam: Ma'lumotlar bazamizni RPi -ga yo'naltiring
- 6 -qadam: Bluetooth -ni RPi -da sozlash
- 7 -qadam: To'liq orqa qismini yozish
- 8 -qadam: Frontendni yozish (HTML, CSS va JavaScript)
- 9 -qadam: Mening ishimni tuzish va barchasini birlashtirish
- 10 -qadam: Slimbox dinamikini yaratish yo'limdagi ba'zi muammolar …
Video: Slimbox - aqlli Bluetooth dinamik: 10 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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
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
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
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:
- SD -kartangizni kompyuteringizga joylashtiring.
- Yangi yuklab olingan Win32 -ni oching.
- Siz hozirgina yuklab olgan Raspbian rasm faylini tanlang.
- 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.
- SD -kartangiz katalogiga o'ting, "cmdline.txt" nomli faylni toping va oching.
- Endi bitta qatorga 'ip = 169.254.10.1' qo'shing.
- Faylni saqlang.
- 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
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:
Janob dinamik - 3D bosma DSP portativ dinamik: 9 qadam (rasmlar bilan)
Janob ma'ruzachi - 3D bosma DSP portativ dinamik: Mening ismim Saymon Eshton va men yillar davomida ko'plab yog'ochlardan yasalgan karnaylarni qurdim. Men o'tgan yili 3D -printerga ega bo'ldim, shuning uchun men 3D bosib chiqarish imkonini beradigan noyob dizayn erkinligini ko'rsatadigan narsa yaratmoqchi edim. Men o'ynay boshladim
Ovozli vizualizatsiya, sensorli tugmalar va NFC bilan ish stoli Bluetooth dinamik: 24 qadam (rasmlar bilan)
Ovozli vizualizatsiya, sensorli tugmalar va NFC bilan ish stoli Bluetooth dinamik: Salom! Bu yo'riqnomada men sensorli tugmalar va NFC bilan ajoyib ovozli vizualizatsiyaga ega bo'lgan bu Bluetooth ish stoli dinamikini qanday yaratganimni ko'rsataman. NFC yoqilgan qurilmalar bilan osongina tegish mumkin. Hech qanday jismoniy tugma yo'q
"Hydra" - HAYVON Bluetooth Bluetooth dinamik: 21 qadam (rasmlar bilan)
"Hydra" monster Bluetooth karnay !: Voy - bu dahshatli ovozli va ajoyib ko'rinadigan karnay, hatto o'zim ham aytgan bo'lsam ham, bu asosan 3D plastmassadan yasalgan 2.1 stereo + subwoofer tizimi. To'liq diapazon va subwoofer dinamiklari yopiq (muhrlangan) ga asoslangan
DIY Google Home Raspberry Pi Zero docking uyasida Bluetooth dinamik bilan: 7 qadam (rasmlar bilan)
DIY Google Home Raspberry Pi Zero docking uyasida Bluetooth karnay bilan: Bizda Amazon Amazon Echo Alexa - Raspberry Pi Zero Docking Hub -da Alexa ovozli yordamchisi ko'rsatmasi bor. Bu safar biz sizga DIY Google Home -ni qanday qurishni ko'rsatmoqchimiz. Ushbu qo'llanmada biz sizga Google Assistant -ni qanday o'rnatish va sozlashni ko'rsatamiz
Powerbank bilan DIY portativ Bluetooth dinamik: 12 qadam (rasmlar bilan)
Powerbank bilan DIY portativ Bluetooth karnay: 3 Vt quvvatga ega ixcham, ammo kuchli bitta kanalli dinamik. Bluetooth karnay Scratch dan tuzilgan !! Texnik xususiyatlari & Xususiyatlari: Bluetooth 4.0.3W to'liq diapazonli dinamik.18650 bitta batareya 2600 mah. Mikro USB zaryadlash. USB uchun