Mündəricat:

Slimbox - Ağıllı Bluetooth Dinamik !: 10 Addım (Şəkillərlə birlikdə)
Slimbox - Ağıllı Bluetooth Dinamik !: 10 Addım (Şəkillərlə birlikdə)

Video: Slimbox - Ağıllı Bluetooth Dinamik !: 10 Addım (Şəkillərlə birlikdə)

Video: Slimbox - Ağıllı Bluetooth Dinamik !: 10 Addım (Şəkillərlə birlikdə)
Video: waIGlobal HK - Slim Drawer 📦 2024, Iyul
Anonim
Slimbox - Ağıllı Bluetooth Dinamik!
Slimbox - Ağıllı Bluetooth Dinamik!

Salam!

MCT Howest Kortrijk -dəki məktəb layihəm üçün fərqli sensorlar, bir LCD və RGB NeoPixel üzüyü olan ağıllı bir Bluetooth dinamik cihazı hazırladım. Hər şey Raspberry Pi üzərində işləyir (Database, Webserver, Backend).

Beləliklə, bu təlimatda sizə 3 həftə ərzində bu layihəni addım -addım necə etdiyimi göstərəcəyəm, buna görə də sizdən kimsə mənim layihəmi yenidən yaratmaq istəyirsə, asanlıqla edə bilərsiniz!

Bu da mənim ilk təlimatımdır, hər hansı bir sualınız olarsa, mümkün qədər tez cavab verməyə çalışacağam!

GitHub'ım:

Addım 1: Təchizat

Təchizat
Təchizat
Təchizat
Təchizat
Təchizat
Təchizat

DS18B20 Temperatur Sensoru

DS18B20, Maxim Integrated tərəfindən istehsal olunan temperaturu ölçən bir telli sensordur. 2 növ DS18B20 sensoru var, yalnız komponenti (istifadə etdiyim) və suya davamlı versiyası, daha böyükdür, amma bu, layihəm üçün ehtiyacım olmadığı üçün yalnız komponentdən istifadə etdim. Sensor temperaturu -55 ° C ilə +125 ° C (-67 ° F - +257 ° F) aralığında ölçə bilir və -10 ° C ilə +85 ° C arasında 0,5 ° C dəqiqliyə malikdir. 9 bitdən 12 bitə qədər proqramlaşdırıla bilən bir qətnaməyə malikdir.

Məlumat cədvəli:

Potensiometr sensoru

Potensiometr, sensorun yuxarı hissəsini fırlatmaqla əl ilə tənzimlənən üç terminallı rezistordur. Üst hissənin mövqeyi potensiometrin çıxış gərginliyini təyin edir.

LSM303 Accelerometer + Compass Breakout

LSM303 qırılma lövhəsi, Adafruit tərəfindən istehsal olunan üç oxlu akselerometr və maqnitometr / pusulanın birləşməsidir. Raspberry Pi -nin I2C interfeysi ilə istifadə olunur.

Baxış:

Məlumat cədvəli:

MCP3008

Potensiometrimdəki məlumatları oxumaq üçün SPI interfeysi olan rəqəmsal çeviriciyə 8 kanallı 10 bitlik bir MCP3008 istifadə etdim və proqramlaşdırmaq olduqca asandır.

Məlumat cədvəli:

Dinamik - 3 "Çap - 8 Ohm 1 Vatt

Lazım olan Gərginlik və Amperləri hesabladıqdan sonra seçdiyim dinamik konusudur və bu, Adafruit tərəfindən istehsal olunan Raspberry Pi layihəmə mükəmməl uyğun gəlir.

Baxış:

MAX98357 I2S Class-D Mono Gücləndirici

Bu dinamiklə birlikdə gələn gücləndiricidir, təkcə gücləndirici deyil, həm də I2S -dən analoqa çeviricidir, buna görə dinamik və səs sistemimə mükəmməl uyğun gəlir.

Baxış:

Məlumat cədvəli:

Arduino Uno

Arduino Uno, Arduino.cc tərəfindən istehsal olunan Microchip ATmega328P mikro nəzarətçisinə əsaslanan açıq mənbəli mikrokontroller lövhəsidir. Uno lövhəsində 14 rəqəmsal pin, 6 analog pin var və Arduino IDE proqramı ilə tam proqramlaşdırıla bilər.

Baxış:

Səviyyə dəyişdirici

Bu, Arduino Uno ilə Raspberry Pi arasındakı əlaqəni və fərqli gərginliklər olan Arduino: 5V və Raspberry Pi: 3.3V -ə diqqət yetirən kiçik bir lövhədir. Bu lazımdır, çünki NeoPixel üzüyü Arduino -ya bağlıdır və orada işləyir, digər şeylər isə Raspberry Pi üzərində işləyir.

RGB NeoPixel Üzük

Bu, 12 RGB led ilə doldurulmuş kiçik bir üzükdür (isterseniz daha çox RGB ledli daha böyük üzüklər ala bilərsiniz). Mənim vəziyyətimdə Arduino Uno ilə əlaqəlidir, eyni zamanda bir çox digər cihaza da qoşula bilər və istifadəsi çox sadədir.

Baxış:

LCD ekran 16x2

İstilik, həcm və IP ünvanımı çap etmək üçün əsas bir LCD Ekrandan istifadə etdim.

Məlumat cədvəli:

Raspberry Pi 3B+ və 16GB SD Kart

Bütün layihəm, Raspberry Pi 3B+ üzərində qurulmuş bir şəkil ilə işləyir, bu da sonradan mənim göstərişlərimdə konfiqurasiya etməyinizə kömək edəcək.

GPIO T-Part, 2 çörək taxtası və çoxlu keçid telləri

Çörək taxtalarına və tullanan tellərə ehtiyacım olan hər şeyi birləşdirmək üçün GPIO T hissəsini istifadə etdim, buna görə daha çox yerim var və hansı pinin olduğu aydındır.

Addım 2: Şematik və Kablolama

Sxem və naqillər
Sxem və naqillər
Sxem və naqillər
Sxem və naqillər
Sxem və naqillər
Sxem və naqillər

Fritzing -dən istifadə etdiyim sxem üçün, yükləyə biləcəyiniz bir proqramdır ki, bu da müxtəlif görünüşlərdə həqiqətən asan bir sxem yaratmağa imkan verir.

Fritzing'i yükləyin:

Beləliklə, hər şeyi düzgün bir şəkildə bağladığınızdan əmin olun! Mənim vəziyyətimdə tellərin rəngləri sxematikdəki kimi deyil.

Addım 3: Verilənlər Bazası Dizaynı

Verilənlər bazası dizaynı
Verilənlər bazası dizaynı

Bağlanan 3 sensordan çoxlu məlumat toplayırıq, buna görə də məlumatları və sensorları saxlamaq üçün bir verilənlər bazasına ehtiyacımız var. Daha sonra Raspberry Pi -də verilənlər bazasını necə konfiqurasiya edəcəyimizi və ona necə məlumat əlavə edəcəyimizi görəcəyik. Ancaq əvvəlcə verilənlər bazası dizaynı və ya ERD (Varlıq İlişkiləri Şeması) hazırlanmalı və mənimki də 3NF ilə normallaşdırılmışdır. Buna görə də sensorları başqa bir cədvələ ayırıb şəxsiyyət vəsiqələri ilə işləyirik.

Ümumiyyətlə, bu, gələcəkdə işləmək üçün həqiqətən əsas və asan bir verilənlər bazası dizaynıdır.

Addım 4: Raspberry Pi hazırlayın

İndi layihənin bəzi əsaslarını hazırladıq. Raspberry Pi ilə başlayaq!

SD Kart konfiqurasiyası

Birincisi, şəklinizi yerləşdirə biləcəyiniz 16 GB SD Karta və başlanğıc şəklini SD karta yükləmək üçün bir proqrama ehtiyacınız var.

Proqram təminatı:

Şəkilə başlayın:

Beləliklə, bunlar yükləndikdən sonra:

  1. SD kartınızı kompüterinizə qoyun.
  2. Yeni yüklədiyiniz Win32 -ni açın.
  3. Yeni yüklədiyiniz Raspbian görüntü faylını seçin.
  4. SD kartınızın yerləşdiyi yerə 'yaz' düyməsini basın.

Avadanlığınızdan asılı olaraq bu bir müddət çəkə bilər. Bunu etdikdən sonra, görüntüyü RPi -yə qoymadan əvvəl bəzi son düzəlişlər etməyə hazırıq.

  1. SD kartınızın qovluğuna gedin, 'cmdline.txt' adlı faylı axtarın və açın.
  2. İndi eyni xəttə 'ip = 169.254.10.1' əlavə edin.
  3. Faylı qeyd edin.
  4. Uzantısı və məzmunu olmayan 'ssh' adlı bir fayl yaradın.

İndi SD kartı kompüterinizdən GÜVENLİKLE çıxara və güc olmadan Raspberry Pi -yə qoya bilərsiniz. SD kart RPI -ə daxil olduqdan sonra, kompüterinizdən bir LAN kabelini RPi LAN portuna bağlayın, bu bağlandıqdan sonra gücü RPi -yə qoşa bilərsiniz.

İndi Raspberry Pi -ni idarə etmək istəyirik, bu Putty vasitəsilə edilir.

Putty proqramı:

Yüklədikdən sonra Putty proqramını açın və '169.254.10.1' IP və '22' Portunu və əlaqə növünü daxil edin: SSH. İndi nəhayət əmr satırı interfeysimizi aça bilərik və başlanğıc giriş məlumatları -> İstifadəçi: pi və Şifrə: moruq.

Raspi-konfiqurasiya

sudo raspi-config

Bu layihə üçün həqiqətən vacib olan interfeys bölməsidir, bir çox fərqli interfeysi aktivləşdirməliyik, aşağıdakı bütün interfeysləri aktiv etməliyik:

  • Bir telli
  • SPI
  • I2C
  • Serial

İndi raspi-konfiqurasiyanı bitirdikdən sonra internetlə əlaqə qurmağa çalışaq.

Wi-Fi bağlantısı

Əvvəlcə aşağıdakı əmrlər üçün kök olmalısınız

sudo -i

Kök olduqdan sonra aşağıdakı əmri istifadə edin. SSID şəbəkə adınızdır və şifrəniz açıqdır.

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

Səhv etmisinizsə, sadəcə həmin faylı daxil edərək bu şəbəkəni yoxlaya, yeniləyə və ya silə bilərsiniz:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Beləliklə, şəbəkəmizə daxil olduqdan sonra WPA müştəri interfeysinə daxil olaq

wpa_cli

İnterfeysinizi seçin

wlan0 interfeysi

Faylı yenidən yükləyin

yenidən qurmaq

Və nəhayət, yaxşı əlaqə qurduğunuzu görə bilərsiniz:

ip a

Yeniləyin və təkmilləşdirin

İndi İnternetə qoşulduğumuz üçün, artıq quraşdırılmış paketləri yeniləmək ağıllı bir hərəkət olardı, buna görə digər paketləri quraşdırmadan əvvəl bunu edək.

sudo apt-get yeniləməsi

sudo apt-get yeniləmə

MariaDB verilənlər bazası

MariaDB verilənlər bazası serverini quraşdırın:

sudo apt-get mariadb-server quraşdırın

Apache2 veb server

Apache2 veb serverini quraşdırın:

sudo apt install apache2

Python

Python quraşdırın:

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

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

Python paketi

Arxa planın mükəmməl işləməsi üçün bütün bu paketləri quraşdırmalısınız:

  • Şüşə
  • Flask-Cors
  • Flask-MySql
  • Şüşə-SocketIO
  • PyMySQL
  • İstək
  • Python yuvası
  • RPi. GPIO
  • Gevent
  • Gevent-veb yuvası
  • Ujson
  • Wsaccel

Dinamik kitabxanası

Adafruit -dən dinamik kitabxanasını quraşdırın:

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

Yenidən başlamağın vaxtı gəldi

sudo yenidən başladın

Addım 5: Verilənlər Bazamızı RPi -yə yönəldin

Lazım olan hər şeyi qurduqdan sonra, hazırladığımız Veritabanını Raspberry Pi -yə yerləşdirək!

Beləliklə, əvvəlcə verilənlər bazamızı MySql tezgahında inkişaf etdirməliyik, bunu edərkən tam verilənlər bazası kodunuzu kopyalayın və içindəki bütün 'görünən' sözləri silin. Beləliklə, kopyalanandan sonra, macunu yenidən açmağa, daxil olmağa və yazmağa icazə verin:

sudo mysql

və indi mysql interfeysindəsiniz, verilənlər bazası kodunuzu ora kopyalayın və enter düyməsini basın.

İndi yalnız bir istifadəçi yaratmalıyıq

'İstifadəçi' tərəfindən 'istifadəçi' tərəfindən müəyyən edilən İstifadəçi 'istifadəçisi' yaradın;

BÜTÜN İSTİFADƏLƏRİ VERİN *. * 'İstifadəçiyə';

İndi yenidən başladın.

Beləliklə, hər şey indi qurulmalıdır, Pi və MySql Workbench ilə də əlaqə qura bilərsiniz, buna görə cədvəllərinizdəki bütün məlumatları yoxlamaq daha asandır.

Addım 6: RPi -də Bluetooth -u konfiqurasiya edin

Bir Bluetooth dinamikini yaradırıq, bu deməkdir ki, media mənbəyimizdən Raspberry Pi -yə göndərilir və bu olduqca asan edilə bilər, gəlin dərhal daxil olaq!

Bluetooth bağlantısı üçün mənbəyim:

Artıq işləyən bluealsa çıxarılır

sudo rm/var/run/bluealsa/*

A2DP profili Sink rolunu əlavə edin

sudo bluealsa -p a2dp -sink &

Bluetooth interfeysini açın və bluetooth -u yandırın

bluetoothctl

işə salın

Bir eşleme agenti qurun

agent aktivdir

defolt-agent

RPi -nizi aşkar olun

aşkar edilə bilər

  • İndi Bluetooth cihazınızdan RPi axtarın və onunla əlaqə qurun.
  • Hər iki cihazda cütləşməni təsdiqləyin, macununuza 'yes' yazın.
  • A2DP xidmətinə icazə verin, yenidən 'yes' yazın.
  • Bunu etdikdən sonra cihazımıza etibar edə bilərik, buna görə də hər dəfə qoşulmaq istədiyimiz zaman bütün bunları keçmək məcburiyyətində deyilik

güvən XX: XX: XX: XX: XX: XX (Mənbə cihazımızdan bluetooth mac ünvanınız)

RPi -nin kəşf olunmağa davam etməsini istəyirsinizsə, bu sizin öz seçiminizdir, amma insanların qutunuzla əlaqə qurmağa çalışmaması üçün yenidən söndürməyi üstün tuturam

aşkar edilə bilər

Sonra bluetooth interfeysimizdən çıxa bilərik

çıxmaq

Və nəhayət, audio marşrutlaşdırma: mənbəy cihazımız RPi -yə yönləndirilir

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

İndi cihazımız Raspberry -ə tam bağlıdır və mənbə cihazınızdan media dinləyicisini Pi dinamikində çalmalısınız.

Addım 7: Tam arxa plan yazmaq

Beləliklə, indi quraşdırma tamamlandı, nəhayət arxa plan proqramımızı yazmağa başlaya bilərik!

PyCharm -ı bütün arxa planım üçün istifadə etdim, sadəcə PyCharm layihənizin Raspberry Pi ilə əlaqəli olduğundan əmin olmalısınız, bu, yerləşdirmə yolunuzun parametrlərinizdə qurulduğu və ehtiyac duyduğumuz bütün paketləri quraşdırdığınız deməkdir, artıq addım -addım edilməlidir. 4.

Öz dərslərimi istifadə etdim və bunların hamısı GitHub -a daxil edildi. Qaçırdığınız halda link girişdədir;)

Arxa sənədimdə iş parçacığı dərslərindən istifadə etdim, buna görə də hər şey eyni vaxtda işləyə bilər və bir -birini kəsməyəcək. Və alt hissədə bütün marşrutlar var, beləliklə cəbhəmizdəki məlumatları asanlıqla əldə edə bilərik.

Addım 8: Frontend yazmaq (HTML, CSS və JavaScript)

İndi arxa plan bitdikdən sonra tam ön hissəni yazmağa başlaya bilərik.

HTML və CSS olduqca asan edildi, mümkün olduğu qədər ilk növbədə mobil işləməyə çalışdı, çünki əksər hallarda Bluetooth ilə mobil cihazdan əlaqə qurduğumuz üçün, idarəetmə panelindən idarə etmək daha asan olardı.

Tablosunuzu istədiyiniz tərzdə dizayn edə bilərsiniz, sadəcə kodumu və dizaynımı burada qoyacağam, istədiyinizi edə bilərsiniz!

Və Javascript o qədər də çətin deyildi, arxa marşrutlarımdan bir neçə GET ilə, çox sayda hadisə dinləyicisi və bəzi socketio strukturları ilə işləyirdi.

Addım 9: Davamı qurun və hamısını bir araya gətirin

Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək

Əvvəlcə davanın necə görünməsini istədiyimin bəzi eskizləri ilə başladım, vacib bir şey, hər şeyi yerləşdirmək üçün kifayət qədər böyük olması idi, çünki qutuya qoymaq üçün böyük bir dövrəmiz var.

Çantanı taxtadan düzəltdim, düşünürəm ki, tikinti işlərində o qədər də təcrübəniz yoxdur və bununla da edə biləcəyiniz çox şeyiniz varsa, işləmək ən asandır.

Şərab şüşələri üçün bir qutudan başladım və odun kəsməyə başladım. Əsas çantamı əldə etdikdən sonra, sadəcə delik açmalı idim (işin ön tərəfində çox şey var, şəkillərdə gördüyünüz kimi: P) və içərisinə bir az dırnaq taxdım, bu, həqiqətən əsas bir haldır, amma olduqca sərin görünür və mükəmməl uyğun gəlir.

Dava tamamlandıqdan sonra, son şəkildən də gördüyünüz kimi, hər şeyi bir yerə yığmağın vaxtı gəldi! Qutunun içərisində bir növ qarışıqlıq var, amma hər şey işləyir və daha çox yerim yox idi, buna görə də layihəmi yenidən yaratdığınız təqdirdə daha böyük bir hal yaratmağınızı məsləhət görürəm.

Addım 10: Slimbox Dinamik Yaratmaq Yolunda Yaşadığım Bəzi Problemlər …

Bluetooth və bluealsa səhvləri

Hər dəfə musiqi çalmaq və ya bluetooth ilə əlaqə qurmaq istədikdə, bluetooth və bluealsa -dan səhvlər aldım. Bu barədə bir az araşdırma apardım və problemimin həlli bu oldu. Buna görə nədənsə bluetoothum yumşaq bloklandı, bunun standart yumşaq bloklandığından əmin deyiləm. Bunun olub olmadığını Putty -a aşağıdakı əmri yazaraq görə bilərsiniz.

rfkill siyahısı

Beləliklə, yumşaq bloklanmışdırsa, sadəcə istifadə edin:

rfkill bluetooth -u blokdan çıxarın

Bundan sonra yenidən yükləmək istəyə bilərsiniz, mənbəyim:

Serial əlaqə problemləri

Başqa bir böyük problemim, Arduino ilə səviyyə dəyişdiricisi vasitəsi ilə heç bir əlaqə qura bilməməyim idi, bəzi axtarışlardan sonra '/dev/ttyS0' un getdiyini öyrəndim və bunun səbəbi RPi -nizi yeniləməyiniz ola bilər. Bununla əlaqədar bir həll tapdı

Serial konsolunu raspi-config ilə yenidən aktivləşdirməli, yenidən başlamalı və sonra "/boot/cmdline.txt'dən" console = serial0, 115200 "bitini əl ilə silməlisiniz." Enable_uart = 1 "in olduğunu təsdiqləyin /boot/config.txt 'və yenidən başladın. Bu, ttyS0 portunuzu və'/dev/serial0 'yumşaq bağlantısını geri qaytarmalıdır.

Mənbə:

Tövsiyə: