Tartalomjegyzék:

Slimbox - intelligens Bluetooth hangszóró!: 10 lépés (képekkel)
Slimbox - intelligens Bluetooth hangszóró!: 10 lépés (képekkel)

Videó: Slimbox - intelligens Bluetooth hangszóró!: 10 lépés (képekkel)

Videó: Slimbox - intelligens Bluetooth hangszóró!: 10 lépés (képekkel)
Videó: HAKOmini Pro Amlogic S905Y4 Google Certified TV Box 2024, November
Anonim
Slimbox - intelligens Bluetooth hangszóró!
Slimbox - intelligens Bluetooth hangszóró!

Halihó!

Az MCT Howest Kortrijk -i iskolai projektemhez készítettem egy intelligens Bluetooth hangszórót különböző érzékelőkkel, LCD és RGB NeoPixel gyűrűvel. Minden a Raspberry Pi -n fut (Database, Webserver, Backend).

Tehát ebben az oktatható fejezetben lépésről lépésre megmutatom, hogyan készítettem el ezt a projektet 3 hét alatt, így ha valaki közületek szeretné újra létrehozni a projektemet, könnyen megteheti!

Ez is az első tanítható, ha kérdésed van, igyekszem a lehető leggyorsabban válaszolni rájuk!

Saját GitHub:

1. lépés: Kellékek

Kellékek
Kellékek
Kellékek
Kellékek
Kellékek
Kellékek

DS18B20 hőmérséklet érzékelő

A DS18B20 egy egyvezetékes érzékelő, amely méri a hőmérsékletet, a Maxim Integrated gyártmánya. Kétféle DS18B20 érzékelő létezik, csak a komponens (amit használtam) és a vízálló verzió, ami sokkal nagyobb, de nem erre volt szükségem a projektemhez, ezért csak az alkatrészt használtam. Az érzékelő -55 ° C és +125 ° C (-67 ° F és +257 ° F) közötti tartományban képes mérni a hőmérsékletet, és -10 ° C és +85 ° C között 0,5 ° C pontossággal rendelkezik. Ezenkívül programozható felbontással rendelkezik, 9 bitről 12 bitre.

Adatlap:

Potenciométer érzékelő

A potenciométer három kivezetésű ellenállás, amely manuálisan állítható az érzékelő felső részének elforgatásával. A felső rész helyzete határozza meg a potenciométer kimeneti feszültségét.

LSM303 gyorsulásmérő + iránytű kitörés

Az LSM303 kitörőtábla az Adafruit által gyártott hármas tengelyű gyorsulásmérő és magnetométer / iránytű kombinációja. A Raspberry Pi I2C interfészével használják.

Áttekintés:

Adatlap:

MCP3008

A potenciométerem adatainak olvasásához egy MCP3008 -at használtam, amely egy 8 csatornás 10 bites analóg -digitális átalakító SPI interfésszel, és nagyon könnyen programozható.

Adatlap:

Hangszóró - 3”átmérő - 8 Ohm 1 Watt

Ezt a hangszórókúpot választottam a szükséges feszültség és amper kiszámítása után, és ez tökéletesen illeszkedett az Adafruit által gyártott Raspberry Pi projektemhez.

Áttekintés:

MAX98357 I2S D osztályú monóerősítő

Ez az erősítő, amely a hangszóróhoz tartozik, nemcsak erősítő, hanem I2S digitális -analóg átalakító is, így tökéletesen illeszkedik a hangszóróhoz és az audiorendszerhez.

Áttekintés:

Adatlap:

Arduino Uno

Az Arduino Uno egy nyílt forráskódú mikrovezérlő kártya, amely az Arduino.cc által gyártott Microchip ATmega328P mikrokontrollerre épül. Az Uno kártya 14 digitális tűvel, 6 analóg tűvel rendelkezik, és teljesen programozható az Arduino IDE szoftverrel

Áttekintés:

Szintváltó

Ez egy kis tábla, amely gondoskodik az Arduino Uno és a Raspberry Pi közötti kommunikációról, valamint a különböző feszültségekről, Arduino: 5V és Raspberry Pi: 3.3V. Erre azért van szükség, mert a NeoPixel gyűrű az Arduino -hoz van csatlakoztatva, és ott fut tovább, míg az összes többi dolog a Raspberry Pi -n fut.

RGB NeoPixel gyűrű

Ez egy kis gyűrű, amely 12 RGB LED -del van tele (ha akar, nagyobb gyűrűket is vásárolhat több RGB LED -del). Ami esetemben az Arduino Uno -hoz van csatlakoztatva, de sok más eszközhöz is csatlakoztatható, és nagyon egyszerű a használata.

Áttekintés:

LCD kijelző 16x2

Egy alapvető LCD kijelzőt használtam a hőmérséklet, a hangerő és az IP -cím nyomtatására.

Adatlap:

Raspberry Pi 3B+ és 16 GB SD kártya

Az egész projektem a Raspberry Pi 3B+ készüléken fut, konfigurált képpel, amelyet később segítek konfigurálni az utasításomban.

GPIO T-Part, 2 kenyérlap és sok jumperhuzal

Ahhoz, hogy összekapcsoljam mindazt, amire szükségem volt a deszkákhoz és a jumperhuzalokhoz, a GPIO T-alkatrészt használtam, így több helyem van, és egyértelmű, hogy melyik csap.

2. lépés: Vázlat és kábelezés

Vázlat és huzalozás
Vázlat és huzalozás
Vázlat és huzalozás
Vázlat és huzalozás
Vázlat és huzalozás
Vázlat és huzalozás

A vázlatomhoz a Fritzing -t használtam, ez egy olyan program, amelyet telepíthet, és amely lehetővé teszi egy nagyon egyszerű vázlat létrehozását különböző nézetekben.

A Fritzing letöltése:

Tehát győződjön meg róla, hogy mindent a megfelelő módon csatlakoztatott! Esetemben a vezetékek színei nem ugyanazok, mint a sematikus ábrán.

3. lépés: Adatbázis tervezése

Adatbázis tervezés
Adatbázis tervezés

Sok adatot gyűjtünk a 3 csatlakoztatott érzékelőből, ezért adatbázisra van szükségünk az adatok és az érzékelők tárolásához. Később megnézzük, hogyan kell konfigurálni az adatbázist a Raspberry Pi -n, és hogyan adhatunk hozzá adatokat. De először az adatbázis -tervezést vagy az ERD -t (Entity Relationship Diagram) kell elkészíteni, és az enyémet is normalizálták 3NF -el. Ezért osztottuk fel az érzékelőket egy másik táblára, és dolgozzunk azonosítókkal.

Összességében ez egy igazán egyszerű és egyszerű adatbázis -tervezés, amellyel tovább lehet dolgozni.

4. lépés: A Raspberry Pi előkészítése

Tehát most, hogy elkészült a projekt néhány alapja. Kezdjük a Raspberry Pi -vel!

SD kártya konfigurálása

Először is szüksége van egy 16 GB -os SD -kártyára, amelyre felhelyezheti a képét, és egy programra, amellyel feltöltheti az indító képet az SD -kártyára.

Szoftver:

Kezdő kép:

Tehát miután letöltötték ezeket:

  1. Helyezze be az SD -kártyát a számítógépbe.
  2. Nyissa meg az imént letöltött Win32 -t.
  3. Válassza ki a szintén letöltött Raspbian képfájlt.
  4. Kattintson az „írás” gombra az SD -kártya helyére.

Ez hardvertől függően eltarthat egy ideig. Ha ez megtörtént, készen állunk néhány utolsó beállításra, mielőtt a képet az RPi -be helyezzük.

  1. Lépjen az SD -kártya könyvtárába, keresse meg a "cmdline.txt" nevű fájlt, és nyissa meg.
  2. Most adja hozzá az 'ip = 169.254.10.1' szót ugyanahhoz a sorhoz.
  3. Mentse a fájlt.
  4. Hozzon létre egy "ssh" nevű fájlt kiterjesztés vagy tartalom nélkül.

Most BIZTONSAN ki tudja venni az SD -kártyát a számítógépről, és áram nélkül behelyezheti a Raspberry Pi -be. Ha az SD -kártya be van helyezve az RPI -be, csatlakoztasson egy LAN -kábelt a számítógépről az RPi LAN -porthoz, miután csatlakoztatta, csatlakoztathatja az RPi tápellátását.

Most a Raspberry Pi -t szeretnénk irányítani, ez a Putty -n keresztül történik.

Putty szoftver:

A letöltés után nyissa meg a Putty alkalmazást, és illessze be a „169.254.10.1” és a „22” portot, valamint a csatlakozástípust: SSH. Most végre megnyithatjuk a parancssori felületünket, és bejelentkezhetünk a kezdő bejelentkezési adatokkal -> Felhasználó: pi & Jelszó: málna.

Raspi-config

sudo raspi-config

Ami igazán fontos ebben a projektben, az az interfész rész, sok különböző interfészt kell engedélyeznünk, engedélyeznünk kell az alábbi interfészeket:

  • Egyvezetékes
  • SPI
  • I2C
  • Sorozatszám

Most, hogy befejeztük a raspi-config-ot, próbáljunk kapcsolatot létesíteni az internettel.

Wi-Fi kapcsolat

Először rootnak kell lennie a következő parancsokhoz

sudo -i

Miután root, használja a következő parancsot. Az SSID a hálózat neve, és a jelszó nyilvánvalóan a jelszava.

wpa_passphrase "ssid" "jelszó" >> /etc/wpa_supplicant/wpa_supplicant.conf

Ha hibázott, ellenőrizheti, frissítheti vagy törölheti ezt a hálózatot a fájl megadásával:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Tehát miután belépünk a hálózatunkba, lépjünk be a WPA kliens felületre

wpa_cli

Válassza ki a kezelőfelületet

wlan0 interfész

Töltse be újra a fájlt

konfigurálja újra

És végül láthatja, hogy jól kapcsolódik -e:

ip a

Frissítés és frissítés

Most, hogy csatlakoztunk az internethez, a már telepített csomagok frissítése okos lépés lenne, ezért először tegyük ezt meg, mielőtt más csomagokat telepítenénk.

sudo apt-get update

sudo apt-get upgrade

MariaDB adatbázis

Telepítse a MariaDB adatbázis -kiszolgálót:

sudo apt-get install mariadb-server

Apache2 webszerver

Telepítse az Apache2 webszervert:

sudo apt install apache2

Piton

A Python telepítése:

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

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

Python csomag

A háttérrendszer tökéletes működéséhez telepítenie kell ezeket a csomagokat:

  • Lombik
  • Lombik-Cors
  • Lombik-MySql
  • Flask-SocketIO
  • PyMySQL
  • Kérések
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Hangszóró könyvtár

Telepítse a hangszórókönyvtárat az Adafruitból:

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

Ideje újraindítani

sudo újraindítás

5. lépés: Adatbázisunk továbbfejlesztése az RPi -hez

Most, hogy mindent telepítettünk, amire szükségünk volt, tegyük a Raspberry Pi -re az általunk tervezett adatbázist!

Tehát először tovább kell terveznünk adatbázisunkat a MySql munkaasztalon, miközben másoljuk a teljes adatbázis kódot, és töröljük az összes „látható” szót. Tehát miután ezt másolta, nyissa meg újra a gittet, jelentkezzen be és írja be:

sudo mysql

és most a mysql felületen van, másolja be az adatbázis kódját, és nyomja meg az enter billentyűt.

Most már csak felhasználót kell létrehoznunk

FELHASZNÁLÓ LÉTREHOZÁSA 'user' 'user' AZONOSÍTOTT;

ÖSSZESÍTJEN MINDEN JOGOSultságot *. * A 'felhasználónak';

Most indítsa újra.

Tehát mindent most kell beállítani, a Pi és a MySql Workbench készülékkel is kapcsolatot létesíthet, így könnyebb ellenőrizni a táblázatokban található összes adatot.

6. lépés: A Bluetooth konfigurálása az RPi -n

Bluetooth hangszórót hozunk létre, tehát ez azt jelenti, hogy a médiát a forrásunkból a Raspberry Pi -hez küldik, és ezt nagyon egyszerűen meg lehet csinálni, kezdjünk bele!

A Bluetooth kapcsolat forrása:

A már futó bluealsa eltávolítása

sudo rm/var/run/bluealsa/*

A2DP profil Sink szerepkör hozzáadása

sudo bluealsa -p a2dp -mosogató &

Nyissa meg a Bluetooth interfészt, és kapcsolja be a Bluetooth funkciót

bluetoothctl

bekapcsolás

Állítson be egy párosító ügynököt

ügynök be

alapértelmezett ügynök

Tegye felfedezhetővé RPi -jét

felfedezhető

  • Most a Bluetooth -eszközről keresse meg az RPi -t, és csatlakozzon hozzá.
  • Erősítse meg a párosítást mindkét eszközön, írja be az „igen” -t a gittbe.
  • Engedélyezze az A2DP szolgáltatást, írja be ismét az „igen” szót.
  • Ha ez megtörtént, bízhatunk eszközünkben, így nem kell mindezt végigjárnunk minden alkalommal, amikor csatlakozni akarunk

bizalom XX: XX: XX: XX: XX: XX (az Ön bluetooth -os mac -címe a forráseszközünkről)

Ha azt szeretné, hogy az RPi továbbra is felfedezhető legyen, az a saját döntése, de inkább kikapcsolom, hogy az emberek ne próbálhassanak csatlakozni a dobozához

felfedezhető

Ezután kiléphetünk a bluetooth felületről

kijárat

És végül a hangirányításunk: forráseszközünk továbbítja az RPi -hez

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

Most eszközünk teljesen csatlakoztatva van a Raspberry -hez, és képesnek kell lennie a forráseszközön lévő média lejátszására a Pi hangszórón.

7. lépés: A teljes háttérprogram írása

Tehát most a beállítás befejeződött, végre elkezdhetjük írni a háttérprogramunkat!

A teljes háttérprogramomhoz a PyCharm -ot használtam, csak meg kell győződnie arról, hogy a PyCharm projekt csatlakoztatva van a Raspberry Pi -hez, ez azt jelenti, hogy a telepítési útvonal be van állítva a beállításokban, és telepítette az összes szükséges csomagot, amelyeket már meg kell tenni 4.

Saját osztályokat használtam, és ezek is szerepelnek a GitHubomban. A link az intro -ban van, hátha lemaradtál róla;)

A háttérfájlomban szálazási osztályokat használtam, így minden egyszerre futhat, és nem szakítja meg egymást. És alul megtalálta az összes útvonalat, így könnyen beszerezhetjük az adatokat a kezelőfelületünkre.

8. lépés: A kezelőfelület írása (HTML, CSS és JavaScript)

Most, hogy elkészült a háttér, elkezdhetjük a teljes kezelőfelület írását.

A HTML -t és a CSS -t meglehetősen egyszerűen megcsinálták, először a lehető legnagyobb mértékben a mobilkészülékkel próbálkoztak, mivel legtöbbször mobileszközről csatlakozunk a Bluetooth -hoz, így könnyebb lenne irányítani a mobil műszerfalról.

A műszerfalat bármilyen módon megtervezheti, csak itt hagyom a kódomat és a dizájnomat, bármit megtehet, amit csak akar!

És a Javascript nem volt olyan kemény, néhány GET -el dolgozott a hátsó útvonalaimon, rengeteg eseményhallgatóval és néhány socketio struktúrával.

9. lépés: Az ügy felépítése és az összes összerakása

Az ügyem felépítése és az összes összerakása
Az ügyem felépítése és az összes összerakása
Az ügyem felépítése és az összes összerakása
Az ügyem felépítése és az összes összerakása
Az ügyem felépítése és az összes összerakása
Az ügyem felépítése és az összes összerakása

Először néhány vázlattal kezdtem, hogyan szeretném kinézni a tokot, valami fontos az volt, hogy elég nagynak kell lennie ahhoz, hogy minden beleférjen, mivel nagy áramkört kaptunk a tokba.

A tokot fából készítettem, azt hiszem, akkor a legkönnyebb vele dolgozni, ha nincs annyi tapasztalatod a tokok építésében, és sok dolgod is van vele.

A borosüvegek tokjából indultam, és csak elkezdtem fát fűrészelni. Miután megvolt az alap tokom, csak lyukakat kellett fúrni benne (sokat a tok elején, ahogy a képeken is látszik: P) és néhány szöget belerakni, ez tényleg alapvető eset, de nagyon jól néz ki és tökéletesen illeszkedik.

És miután az ügy elkészült, ideje volt mindent összeszedni, amint az az utolsó képen is látszik! Kicsit rendetlenség van a doboz belsejében, de minden működik, és nem volt sokkal több helyem, ezért azt tanácsolom, hogy készítsen egy nagyobb esetet, ha újrateremti a projektemet.

10. lépés: Néhány probléma a Slimbox hangszóró létrehozása során…

Bluetooth és bluealsa hibák

Minden alkalommal, amikor zenét akartam játszani vagy Bluetooth -szal akartam csatlakozni, hibaüzeneteket kaptam a Bluetooth -tól és a bluealsától. Kutakodtam rajta, és ez volt a megoldás a problémámra. Tehát valamilyen oknál fogva a bluetoothom letiltva volt, nem vagyok biztos benne, hogy ez szabványos soft-blokkolt. Láthatja, hogy az, ha beírja a következő parancsot a Putty -ba.

rfkill lista

Tehát ha lágy blokkolású, használja ezt:

rfkill feloldja a bluetooth letiltását

És ezt követően érdemes újraindítani, a forrásom:

Soros csatlakozási problémák

Tehát egy másik nagy problémám az volt, hogy nem tudtam kapcsolatot létesíteni az Arduino -mmal a szintváltón keresztül, némi keresés után rájöttem, hogy a/dev/ttyS0 eltűnt, és ez az RPi frissítése miatt lehet. Erre is találtak megoldást

Újra engedélyeznie kell a soros konzolt a raspi-config segítségével, újra kell indítania, majd manuálisan el kell távolítania a "console = serial0, 115200" bitet a '/boot/cmdline.txt' fájlból. Győződjön meg arról, hogy az "enable_uart = 1" benne van /boot/config.txt”, és indítsa újra. Ezzel vissza kell kapnia a ttyS0 portot, valamint a„/dev/serial0”soft linket.

Forrás:

Ajánlott: