Spisu treści:
- Krok 1: Materiały eksploatacyjne
- Krok 2: Schemat i okablowanie
- Krok 3: Projektowanie bazy danych
- Krok 4: Przygotowanie Raspberry Pi
- Krok 5: Prześlij naszą bazę danych do RPi
- Krok 6: Konfiguracja Bluetooth w naszym RPi
- Krok 7: Napisanie kompletnego zaplecza
- Krok 8: Pisanie frontendu (HTML, CSS i JavaScript)
- Krok 9: Budowanie mojej sprawy i składanie wszystkiego razem
- Krok 10: Niektóre problemy, które miałem na drodze tworzenia głośnika Slimbox…
Wideo: Slimbox - inteligentny głośnik Bluetooth!: 10 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
No hej!
Na potrzeby mojego szkolnego projektu w MCT Howest Kortrijk stworzyłem inteligentne urządzenie głośnikowe Bluetooth z różnymi czujnikami, w zestawie z wyświetlaczem LCD i pierścieniem RGB NeoPixel. Wszystko działa na Raspberry Pi (baza danych, serwer WWW, backend).
Więc w tej instrukcji pokażę ci, jak zrobiłem ten projekt w 3 tygodnie, krok po kroku, więc jeśli ktoś z was chce odtworzyć mój projekt, możesz to łatwo zrobić!
To także moja pierwsza instrukcja, jeśli masz jakieś pytania, postaram się na nie odpowiedzieć tak szybko, jak to możliwe!
Mój GitHub:
Krok 1: Materiały eksploatacyjne
Czujnik temperatury DS18B20
DS18B20 to jednoprzewodowy czujnik mierzący temperaturę, wyprodukowany przez Maxim Integrated. Istnieją dwa rodzaje czujników DS18B20, sam komponent (których użyłem) i wersja wodoodporna, która jest znacznie większa, ale nie tego potrzebowałem do mojego projektu, więc użyłem tylko tego komponentu. Czujnik może mierzyć temperaturę w zakresie od -55°C do +125°C (-67°F do +257°F) i ma dokładność 0,5°C od -10°C do +85°C. Posiada również programowalną rozdzielczość od 9 bitów do 12 bitów.
Arkusz danych:
Czujnik potencjometru
Potencjometr to rezystor z trzema zaciskami, który można regulować ręcznie, obracając górną część czujnika. Pozycja górnej części określa napięcie wyjściowe potencjometru.
Akcelerometr LSM303 + Kompas Breakout
Płytka typu breakout LSM303 to połączenie trójosiowego akcelerometru oraz magnetometru/kompasu, wyprodukowane przez firmę Adafruit. Jest używany z interfejsem I2C Raspberry Pi.
Przegląd:
Arkusz danych:
MCP3008
Aby odczytać dane z mojego potencjometru, użyłem MCP3008, który jest 8-kanałowym 10-bitowym konwerterem analogowo-cyfrowym z interfejsem SPI i jest dość łatwy do zaprogramowania.
Arkusz danych:
Głośnik – średnica 3” – 8 Ohm 1 Wat
To jest stożek głośnika, który wybrałem po obliczeniu potrzebnego napięcia i amperów i idealnie pasował do mojego projektu Raspberry Pi, wyprodukowanego przez Adafruit.
Przegląd:
Wzmacniacz mono MAX98357 I2S klasy D
To jest wzmacniacz, który jest dostarczany z głośnikiem, nie tylko jest to wzmacniacz, ale także konwerter cyfrowo-analogowy I2S, więc idealnie pasuje do mojego głośnika i systemu audio.
Przegląd:
Arkusz danych:
Arduino Uno
Arduino Uno to płytka mikrokontrolera typu open source oparta na mikrokontrolerze Microchip ATmega328P, wyprodukowanym przez firmę Arduino.cc. Płytka Uno ma 14 pinów cyfrowych, 6 pinów analogowych i jest w pełni programowalna za pomocą oprogramowania Arduino IDE
Przegląd:
Zmieniacz poziomu
Jest to niewielka płytka, która dba o komunikację pomiędzy Arduino Uno i Raspberry Pi oraz różnymi napięciami, Arduino: 5V i Raspberry Pi: 3,3V. Jest to potrzebne, ponieważ pierścień NeoPixel jest podłączony do Arduino i tam działa, podczas gdy wszystkie inne rzeczy działają na Raspberry Pi.
Pierścień NeoPixel RGB
Jest to mały pierścień wypełniony 12 diodami RGB (możesz kupić większe pierścienie z większą ilością diod RGB, jeśli chcesz). Który w moim przypadku jest podłączony do Arduino Uno, ale można go również podłączyć do wielu innych urządzeń i jest naprawdę prosty w użyciu.
Przegląd:
Wyświetlacz LCD 16x2
Użyłem podstawowego wyświetlacza LCD do wydrukowania mojej temperatury, głośności i adresu IP.
Arkusz danych:
Karta SD Raspberry Pi 3B+ i 16 GB
Cały mój projekt działa na moim Raspberry Pi 3B+ ze skonfigurowanym obrazem, który pomogę ci skonfigurować później w mojej instrukcji.
GPIO T-Part, 2 płytki prototypowe i wiele zworek
Aby podłączyć wszystko, czego potrzebowałem, płytki stykowe i zworki, użyłem części T GPIO, więc mam więcej miejsca i jest jasne, który pin jest który.
Krok 2: Schemat i okablowanie
Do mojego schematu użyłem Fritzing, jest to program, który można zainstalować, który pozwala na naprawdę łatwe tworzenie schematu w różnych rodzajach widoków.
Pobierz Fritzing:
Upewnij się więc, że wszystko łączysz we właściwy sposób! W moim przypadku kolory przewodów nie są takie same jak na schemacie.
Krok 3: Projektowanie bazy danych
Zbieramy dużo danych z 3 podłączonych czujników, więc potrzebujemy bazy danych do przechowywania danych i czujników. Później zobaczymy, jak skonfigurować bazę danych na Raspberry Pi i jak dodawać do niej dane. Ale najpierw trzeba wykonać projekt bazy danych lub ERD (ang. Entity Relationship Diagram), a mój również został znormalizowany za pomocą 3NF. Dlatego podzieliliśmy czujniki na inny stół i pracujemy z identyfikatorami.
Ogólnie rzecz biorąc, jest to naprawdę prosty i łatwy projekt bazy danych do dalszej pracy.
Krok 4: Przygotowanie Raspberry Pi
Więc teraz, gdy mamy gotowe podstawy projektu. Zacznijmy od Raspberry Pi!
Konfiguracja karty SD
Najpierw potrzebujesz karty SD o pojemności 16 GB, na której możesz umieścić swój obraz oraz programu do wgrania obrazu startowego na kartę SD.
Oprogramowanie:
Obraz początkowy:
Więc po ich pobraniu:
- Włóż kartę SD do komputera.
- Otwórz Win32, który właśnie pobrałeś.
- Wybierz plik obrazu Raspbian, który również właśnie pobrałeś.
- Kliknij „zapisz” w lokalizacji swojej karty SD.
Może to zająć trochę czasu, w zależności od sprzętu. Gdy już to zrobimy, jesteśmy gotowi do wprowadzenia ostatecznych poprawek przed umieszczeniem obrazu w naszym RPi.
- Przejdź do katalogu karty SD, wyszukaj plik o nazwie „cmdline.txt” i otwórz go.
- Teraz dodaj 'ip=169.254.10.1' w tej samej linii.
- Zapisz plik.
- Utwórz plik o nazwie „ssh” bez rozszerzenia i zawartości.
Teraz możesz BEZPIECZNIE wysunąć kartę SD z komputera i włożyć ją do Raspberry Pi BEZ zasilania. Gdy karta SD znajduje się w RPI, podłącz kabel LAN z komputera do portu LAN RPi, po podłączeniu możesz podłączyć zasilanie do RPi.
Teraz chcemy kontrolować nasze Raspberry Pi, odbywa się to za pomocą Putty.
Oprogramowanie Putty:
Po pobraniu otwórz Putty i wprowadź adres IP „169.254.10.1” i port „22” oraz typ połączenia: SSH. Teraz możemy wreszcie otworzyć nasz interfejs wiersza poleceń i zalogować się za pomocą danych logowania startera -> Użytkownik: pi i Hasło: raspberry.
Konfiguracja raspi
sudo raspi-config
To, co jest naprawdę ważne dla tego projektu, to sekcja interfejsów, musimy włączyć wiele różnych interfejsów, włączyć wszystkie następujące interfejsy:
- Jednoprzewodowy
- SPI
- I2C
- Seryjny
Teraz, gdy skończyliśmy z raspi-config, spróbujmy połączyć się z internetem.
Połączenie WiFi
Po pierwsze, musisz być rootem dla następujących poleceń
sudo-i
Gdy jesteś rootem, użyj następującego polecenia. SSID to nazwa Twojej sieci, a hasło to oczywiście hasło.
wpa_passphrase "ssid" "hasło" >> /etc/wpa_supplicant/wpa_supplicant.conf
Jeśli popełniłeś błąd, możesz sprawdzić, zaktualizować lub usunąć tę sieć, po prostu wprowadzając ten plik:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Więc po wejściu do naszej sieci wejdźmy do interfejsu klienta WPA
wpa_cli
Wybierz swój interfejs
interfejs wlan0
Odśwież plik
przekonfigurować
I na koniec możesz sprawdzić, czy masz dobre połączenie:
ip a
Aktualizacja i aktualizacja
Teraz, gdy jesteśmy połączeni z Internetem, aktualizacja już zainstalowanych pakietów byłaby sprytnym posunięciem, więc zróbmy to najpierw przed zainstalowaniem innych pakietów.
aktualizacja sudo apt-get
sudo apt-get upgrade
Baza danych MariaDB
Zainstaluj serwer bazy danych MariaDB:
sudo apt-get zainstaluj serwer mariadb
Serwer WWW Apache2
Zainstaluj serwer WWW Apache2:
sudo apt zainstaluj apache2
Pyton
Zainstaluj Pythona:
update-alternatives – zainstaluj /usr/bin/python python /usr/bin/python2.7 1
update-alternatives -- zainstaluj /usr/bin/python python /usr/bin/python3 2
Pakiet Pythona
Będziesz musiał zainstalować wszystkie te pakiety, aby backend działał idealnie:
- Kolba
- Flask-Cors
- Flask-MySql
- Kolba-Gniazdo IO
- PyMySQL
- Upraszanie
- Gniazdo Pythona
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Biblioteka głośników
Zainstaluj bibliotekę głośników z Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | grzmotnąć
Czas na restart
ponowne uruchomienie sudo
Krok 5: Prześlij naszą bazę danych do RPi
Teraz, gdy zainstalowaliśmy wszystko, czego potrzebowaliśmy, umieść naszą bazę danych, którą zaprojektowaliśmy na naszym Raspberry Pi!
Więc najpierw musimy zaprojektować naszą bazę danych w środowisku MySql, jednocześnie kopiując cały kod bazy danych i usuwając wszystkie "widoczne" słowa. Więc kiedy to zostanie skopiowane, otwórz ponownie putty, zaloguj się i wpisz:
sudo mysql
a teraz jesteś w interfejsie mysql, skopiuj do niego kod bazy danych i naciśnij enter.
Teraz wystarczy tylko utworzyć użytkownika
UTWÓRZ UŻYTKOWNIKA „użytkownika” ZIDENTYFIKOWANEGO PRZEZ „użytkownika”;
PRZYZNAJ WSZYSTKIE UPRAWNIENIA OD *.* 'użytkownikowi';
Teraz uruchom ponownie.
Więc wszystko powinno być teraz skonfigurowane, możesz również nawiązać połączenie ze swoim Pi i MySql Workbench, aby łatwiej było sprawdzić wszystkie dane w twoich tabelach.
Krok 6: Konfiguracja Bluetooth w naszym RPi
Tworzymy głośnik Bluetooth, co oznacza, że media są wysyłane z naszego źródła do Raspberry Pi i można to zrobić całkiem łatwo, przejdźmy od razu!
Moje źródło połączenia Bluetooth:
Usunięcie już działającej bluealsy
sudo rm /var/run/bluealsa/*
Dodaj rolę zlewu profilu A2DP
sudo bluealsa -p a2dp-zlew &
Otwórz interfejs Bluetooth i włącz Bluetooth
bluetoothctl
zasilanie włączone
Skonfiguruj agenta parowania
agent włączony
domyślny agent
Spraw, aby Twoje RPi było wykrywalne
do znalezienia na
- Teraz z urządzenia Bluetooth wyszukaj RPi i połącz się z nim.
- Potwierdź parowanie na obu urządzeniach, wpisz „tak” w swojej szpachli.
- Autoryzuj usługę A2DP, ponownie wpisz „tak”.
- Gdy to zrobimy, możemy zaufać naszemu urządzeniu, więc nie musimy przechodzić przez to wszystko za każdym razem, gdy chcemy się połączyć
zaufaj XX:XX:XX:XX:XX:XX (Twój adres mac bluetooth z naszego urządzenia źródłowego)
Jeśli chcesz, aby twoje RPi było nadal wykrywalne, to twój własny wybór, ale wolę go ponownie wyłączyć, aby ludzie nie mogli próbować połączyć się z twoim pudełkiem
wykrywalny wyłączony
Następnie możemy wyjść z naszego interfejsu bluetooth
Wyjście
I wreszcie nasz routing audio: nasze urządzenie źródłowe przekierowuje do naszego RPi
bluealsa-aplay 00:00:00:00:00:00
Teraz nasze urządzenie jest w pełni połączone z naszym Raspberry i powinieneś być w stanie odtwarzać multimedia z urządzenia źródłowego na głośniku Pi.
Krok 7: Napisanie kompletnego zaplecza
Więc teraz konfiguracja jest zakończona, możemy wreszcie zacząć pisać nasz program backendowy!
Użyłem PyCharm dla całego mojego backendu, musisz tylko upewnić się, że twój projekt PyCharm jest podłączony do twojego Raspberry Pi, oznacza to, że twoja ścieżka wdrożenia jest ustawiona w twoich ustawieniach i zainstalowałeś wszystkie potrzebne pakiety, powinny być już zrobione w kroku 4.
Użyłem własnych klas i wszystkie są zawarte w moim GitHubie. Link jest w intro na wypadek, gdybyś go przegapił;)
W moim pliku backendowym użyłem klas wątków, więc wszystko może działać w tym samym czasie i nie będzie się nawzajem przerywać. A na dole masz wszystkie trasy, dzięki czemu możemy łatwo uzyskać dane w naszym interfejsie.
Krok 8: Pisanie frontendu (HTML, CSS i JavaScript)
Teraz, gdy backend jest gotowy, możemy zacząć pisać pełny frontend.
HTML i CSS zostały wykonane dość łatwo, najpierw wypróbowaliśmy pracę mobilną, jak to tylko możliwe, ponieważ najczęściej łączymy się przez Bluetooth z urządzenia mobilnego, łatwiej byłoby kontrolować z mobilnego pulpitu nawigacyjnego.
Możesz zaprojektować swój pulpit nawigacyjny w dowolny sposób, po prostu zostawię tutaj mój kod i projekt, możesz robić, co chcesz!
A Javascript nie był taki trudny, pracował z kilkoma GET z moich tras zaplecza, mnóstwem detektorów zdarzeń i kilkoma strukturami socketio.
Krok 9: Budowanie mojej sprawy i składanie wszystkiego razem
Zacząłem od kilku szkiców tego, jak chciałem, aby wyglądała obudowa, ważne było to, że musiała być wystarczająco duża, aby wszystko się zmieściło, ponieważ mamy duży obwód do umieszczenia w obudowie.
Zrobiłem obudowę z drewna, myślę, że najłatwiej jest z nią pracować, gdy nie masz dużego doświadczenia w budowaniu skrzynek i masz wiele rzeczy, które możesz z tym zrobić.
Zacząłem od skrzynki na butelki wina i po prostu zacząłem piłować drewno. Kiedy już miałem swoją podstawową walizkę, musiałem tylko wywiercić w niej otwory (dużo z przodu obudowy, jak widać na zdjęciach:P) i włożyć do niej kilka gwoździ, to naprawdę podstawowa obudowa, ale tak wygląda całkiem fajnie i idealnie pasuje.
A gdy sprawa była już skończona, nadszedł czas, aby to wszystko poskładać, jak widać na ostatnim zdjęciu! W środku jest trochę bałaganu, ale wszystko działa, a ja nie miałem dużo więcej miejsca, więc radzę może stworzyć większą skrzynkę, jeśli odtwarzasz mój projekt.
Krok 10: Niektóre problemy, które miałem na drodze tworzenia głośnika Slimbox…
Błędy Bluetooth i bluealsa
Za każdym razem, gdy chciałem odtworzyć muzykę lub połączyć się przez bluetooth otrzymywałem błędy z bluetooth i bluealsa. Zrobiłem kilka badań na ten temat i to było rozwiązanie mojego problemu. Z jakiegoś powodu mój bluetooth został zablokowany programowo, nie jestem pewien, czy jest to standardowa blokada programowa. Możesz sprawdzić, czy tak jest, wpisując następujące polecenie w swoim Putty.
lista rfkill
Więc jeśli jest zablokowany programowo, po prostu użyj tego:
rfkill odblokuj bluetooth
I możesz chcieć zrestartować po tym, moje źródło:
Problemy z połączeniem szeregowym
Innym dużym problemem, jaki miałem, było to, że nie mogłem nawiązać żadnego połączenia z moim Arduino przez levelshifter, po kilku poszukiwaniach dowiedziałem się, że mój „/dev/ttyS0” zniknął i może to być spowodowane aktualizacją twojego RPi. Również znalazłem rozwiązanie na ten temat
Będziesz musiał ponownie włączyć konsolę szeregową za pomocą raspi-config, zrestartować, a następnie ręcznie usunąć bit "console=serial0, 115200" z '/boot/cmdline.txt'. Potwierdź, że "enable_uart=1" jest w ' /boot/config.txt' i uruchom ponownie. To powinno przywrócić twój port ttyS0, jak również miękki link '/dev/serial0' do niego.
Źródło:
Zalecana:
Przenośny głośnik Bluetooth - Zestaw MKBoom DIY: 5 kroków (ze zdjęciami)
Przenośny głośnik Bluetooth | MKBoom DIY Kit: Cześć wszystkim! Dobrze jest wrócić z kolejnym projektem głośnika po długiej przerwie. Ponieważ większość moich konstrukcji wymaga wielu narzędzi, tym razem zdecydowałem się zbudować przenośny głośnik przy użyciu zestawu, który można łatwo kupić. Myślałem, że
Kissing the Frog V2.0 - Głośnik Bluetooth z tylnym rogiem w pełni do druku: 5 kroków (ze zdjęciami)
Kissing the Frog V2.0 - Głośnik Bluetooth z tylnym rogiem w pełni do druku: Wprowadzenie Zacznę od małego tła. Czym więc jest głośnik tubowy obciążony z tyłu? Pomyśl o tym jak o odwróconym megafonie lub gramofonie. Megafon (w zasadzie przedni głośnik tubowy) wykorzystuje tubę akustyczną, aby zwiększyć ogólną wydajność
Nastrojowy głośnik - potężny głośnik do odtwarzania nastrojowej muzyki w oparciu o temperaturę otoczenia: 9 kroków
Nastrojowy głośnik - potężny głośnik do odtwarzania nastrojowej muzyki w oparciu o temperaturę otoczenia: witaj! Na potrzeby mojego szkolnego projektu w MCT Howest Kortrijk stworzyłem nastrojowy głośnik, który jest inteligentnym głośnikiem Bluetooth z różnymi czujnikami, wyświetlaczem LCD i WS2812b w zestawie pasek led.Głośnik odtwarza muzykę w tle w zależności od temperatury, ale może
Jak przekonwertować dowolny głośnik na głośnik BLUETOOTH: 5 kroków
Jak przekonwertować dowolny GŁOŚNIK W GŁOŚNIK BLUETOOTH: Jeśli masz stary system kina domowego, taki jak ja, oznacza to, że brakuje w nim bardzo popularnej opcji łączności, zwanej Bluetooth. Bez tego udogodnienia musisz zmierzyć się z bałaganem przewodowym normalnego połączenia AUX i oczywiście, jeśli
Zmień dowolny głośnik w głośnik Bluetooth: 4 kroki
Zmień dowolny głośnik w głośnik Bluetooth: Kilka lat temu powszechne było, że przenośne głośniki mają gniazdo 3,5 mm i są zasilane bateriami AA. Według dzisiejszych standardów jest to nieco przestarzałe, zwłaszcza bateria, ponieważ każdy gadżet ma obecnie akumulator. Gniazdo audio jest st