Tartalomjegyzék:
- 1. lépés: Kellékek
- 2. lépés: Vázlat és kábelezés
- 3. lépés: Adatbázis tervezése
- 4. lépés: A Raspberry Pi előkészítése
- 5. lépés: Adatbázisunk továbbfejlesztése az RPi -hez
- 6. lépés: A Bluetooth konfigurálása az RPi -n
- 7. lépés: A teljes háttérprogram írása
- 8. lépés: A kezelőfelület írása (HTML, CSS és JavaScript)
- 9. lépés: Az ügy felépítése és az összes összerakása
- 10. lépés: Néhány probléma a Slimbox hangszóró létrehozása során…
Videó: Slimbox - intelligens Bluetooth hangszóró!: 10 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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
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
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
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:
- Helyezze be az SD -kártyát a számítógépbe.
- Nyissa meg az imént letöltött Win32 -t.
- Válassza ki a szintén letöltött Raspbian képfájlt.
- 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.
- Lépjen az SD -kártya könyvtárába, keresse meg a "cmdline.txt" nevű fájlt, és nyissa meg.
- Most adja hozzá az 'ip = 169.254.10.1' szót ugyanahhoz a sorhoz.
- Mentse a fájlt.
- 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
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:
Hordozható Bluetooth hangszóró - MKBoom DIY készlet: 5 lépés (képekkel)
Hordozható Bluetooth hangszóró | MKBoom DIY Kit: Sziasztok mindenkinek! Annyira jó, hogy hosszú szünet után visszatérhetek egy újabb hangszóróprojekthez. Mivel a legtöbb építéshez elég sok eszközre van szükség, ezúttal úgy döntöttem, hogy egy hordozható hangszórót építek egy könnyen megvásárolható készlet segítségével. Gondoltam
Régi hangszóró átalakítása Bluetooth Boomboxra: 8 lépés (képekkel)
Régi hangszóró átalakítás Bluetooth Boombox -ra: HI mindenkinek! Nagyon köszönöm, hogy velem hangoltál ezen a konstrukción! Mielőtt belevágnánk a részletekbe, kérjük, szavazzon erre az Instructable -re a verseny alján. A támogatást nagyra értékelik! Néhány év telt el azóta, hogy elkezdtem
Kissing the Frog V2.0 - Horn hátsó Bluetooth hangszóró Teljesen nyomtatható: 5 lépés (képekkel)
Kissing the Frog V2.0 - Horn hátsó Bluetooth hangszóró Teljesen nyomtatható: Bevezetés Hadd kezdjem egy kis háttérrel. Tehát mi az a hátsó kürt hangszóró? Tekintsük ezt fordított megafonnak vagy gramofonnak. A megafon (alapvetően az első kürt hangszórója) akusztikus kürtöt használ a
Vezeték nélküli kerékpárra szerelt Bluetooth hangszóró: 11 lépés (képekkel)
Vezeték nélküli kerékpárra szerelt Bluetooth hangszóró: Üdv! Ebben az utasításban megmutatom, hogyan építettem fel a vezeték nélküli kerékpárra szerelt Bluetooth hangszórómat. Azt kell mondanom, hogy ez lehet az egyik kedvenc projektem eddig. Remekül néz ki, nagyszerű hangzása és futurisztikus megjelenése van! Mint al
Hangulatos hangszóró- Erőteljes hangszóró a hangulati zene lejátszásához a környezeti hőmérséklet alapján: 9 lépés
Hangulatos hangszóró- Erőteljes hangszóró a hangulati zene lejátszásához a környezeti hőmérséklet alapján: Üdv! Az MCT Howest Kortrijk-i iskolai projektemhez készítettem egy hangulati hangszórót, ez egy intelligens Bluetooth hangszóró, különböző érzékelőkkel, LCD-vel és WS2812b-vel LED szalag mellékelve. A hangszóró háttérzenét játszik a hőmérséklet alapján, de