Spisu treści:
- Krok 1: Materiały eksploatacyjne
- Krok 2: Schemat i okablowanie
- Krok 3: Projektowanie bazy danych
- Krok 4: Skonfiguruj Raspberry Pi
- Step 5: Setting Up the Database to the 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
Wideo: Nastrojowy głośnik - potężny głośnik do odtwarzania nastrojowej muzyki w oparciu o temperaturę otoczenia: 9 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
No hej!
Na potrzeby mojego szkolnego projektu w MCT Howest Kortrijk zrobiłem Mood Speaker to inteligentne urządzenie głośnikowe Bluetooth z różnymi czujnikami, w zestawie LCD i pasek led WS2812b. Głośnik odtwarza muzykę w tle w oparciu o temperaturę, ale może być również używany jako zwykły bluetooth głośnik. Wszystko działa na Raspberry Pi (baza danych, serwer WWW, backend).
Tak więc ta instrukcja jest procesem krok po kroku, w jaki zrealizowałem ten projekt w 3 tygodnie. Więc jeśli chcecie odtworzyć mój projekt, możecie skorzystać z przewodnika
Ta instrukcja jest moją pierwszą, którą napisałem, więc jeśli pojawią się jakieś pytania, postaram się na nie odpowiedzieć tak szybko, jak tylko będę mógł!
Mój GitHub:
Krok 1: Materiały eksploatacyjne
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 wyjaśnię w późniejszym kroku (Krok 4: Konfiguracja Raspberry Pi)
Wyświetlacz LCD 16x2
Użyłem podstawowego wyświetlacza LCD do wydrukowania mojej temperatury, jasności i adresu IP.
Arkusz danych:
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:
MCP3008
Aby odczytać dane z mojego czujnika LDR i PIR, 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:
Czujnik ruchu PIR
Aby wykryć, kiedy ktoś wchodzi i wychodzi z mojego pokoju, użyłem pasywnego czujnika podczerwieni, ponieważ są one łatwe w użyciu i są małe.
Arkusz danych:
LDR
Użyłem fotorezystora lub LDR (Light Decreasing Resistance lub rezystor zależny od światła), aby wykryć poziom jasności w pomieszczeniu, w którym się znajduje. A także włączyć pasek Led, gdy jest ciemno.
Głośnik – średnica 3” – 4 omy 3 waty
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ż pasek led jest podłączony do Arduino i tam działa, podczas gdy wszystkie inne rzeczy działają na Raspberry Pi.
WS2812B - Ledstrip
Jest to taśma led z 60 diodami RGB (możesz kupić dłuższe taśmy z większą liczbą 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.
Arkusz danych:
GPIO T-Part, 1 płytka do krojenia chleba i wiele zworek
Aby podłączyć wszystko, czego potrzebowałem, płytki stykowe i zworki, nie użyłem części T GPIO, ale możesz jej użyć, aby wyraźnie wiedzieć, który bin idzie gdzie.
Krok 2: Schemat i okablowanie
Do wykonania 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. Użyłem płytki prototypowej i widoku schematu.
Pobierz Fritzing:
Upewnij się, że wszystko jest prawidłowo podłączone. Użyłem kolorów, aby nieco lepiej wiedzieć, gdzie podłączyć przewody. W moim przypadku użyłem różnych kolorów przewodów
Krok 3: Projektowanie bazy danych
Zbieramy dużo danych z 3 czujników (temperatura z DS18B20, jasność z LDR i stan z czujnika PIR). Dlatego najlepiej jest przechowywać wszystkie te dane w bazie danych. W dalszej części wyjaśnię, jak skonfigurować bazę danych (Krok 5: Przekieruj naszą bazę danych do RPi!) Ale najpierw należy wykonać projekt lub ERD (diagram relacji encji). Mój został znormalizowany za pomocą 3NF, dlatego podzieliliśmy komponenty i historię komponentów na inną tabelę. Korzystamy z bazy danych Muzyka do śledzenia odsłuchanych utworów.
Ogólnie rzecz biorąc, jest to naprawdę prosty i łatwy projekt bazy danych do dalszej pracy.
Krok 4: Skonfiguruj Raspberry Pi
Więc teraz, gdy mamy gotowe podstawy projektu. Zacznijmy od konfiguracji Raspberry Pi!
Część 1: Konfiguracja karty SD
1) Pobierz wymagane oprogramowanie i pliki
Aby wykonać ten kompletny proces, musisz pobrać 2 oprogramowanie i 1 system operacyjny, np. Raspbian. Pierwsze oprogramowanie: Pierwsze oprogramowanie to Win32 Disk Imager.
sourceforge.net/projects/win32diskimager/
Drugie oprogramowanie: Drugie oprogramowanie to formater kart SD.
www.sdcard.org/downloads/formatter_4/
Raspbian OS: To jest główny system operacyjny Pi.
www.raspberrypi.org/downloads/raspberry-pi-os/
Wypakuj wszystkie pliki na pulpit.
2) Zdobądź kartę SD i czytnik kart
Uzyskaj kartę SD o pojemności co najmniej 8 GB klasy 10 z czytnikiem kart. Włóż tę kartę do czytnika kart i podłącz ją do portu USB.
3) Sformatuj kartę SD
Otwórz program do formatowania kart SD i wybierz napęd.
Kliknij format i nie zmieniaj żadnych innych opcji.
Po zakończeniu formatowania kliknij OK.
4) Napisz system operacyjny na karcie SD
Otwórz win32diskager.
Przeglądaj plik.img systemu Raspbian OS, który został wyodrębniony z pobranego pliku.
Kliknij Otwórz, a następnie kliknij Napisz.
Jeśli pojawi się jakiekolwiek ostrzeżenie, zignoruj je, klikając OK. Poczekaj na zakończenie zapisu i może to potrwać kilka minut. Więc bądź cierpliwy.
n
5) Gdy już to zrobimy, jesteśmy gotowi na ostateczne poprawki 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. (najłatwiej jest utworzyć plik txt i później usunąć plik.txt)
Teraz, gdy wszystko jest zainstalowane na karcie SD, możesz BEZPIECZNIE wysunąć ją z komputera i włożyć do Raspberry Pi BEZ podłączania 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.
Część 2: Konfiguracja RPi
Kit
Teraz chcemy skonfigurować 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. (Zaleca się jak najszybszą zmianę. Oto poradnik jak:
Konfiguracja raspi
Będziemy musieli włączyć różne interfejsy i aby to zrobić, najpierw musimy wpisać następujący kod:
sudo raspi-config
Rzeczy, które musimy włączyć, znajdują się w sekcji interfejsu. Musimy włączyć następujące interfejsy:
- Jednoprzewodowy
- Seryjny
- I2C
- SPI
To było wszystko, co musieliśmy zrobić z raspi-config
Dodawanie sieci WIFI
Po pierwsze, musisz być rootem, aby następujące polecenie zostało rootem
sudo-i
Gdy jesteś rootem, użyj następującego polecenia: (Zastąp SSID nazwą sieci i hasłem hasłem sieciowym)
wpa_passphrase "ssid" "hasło" >> /etc/wpa_supplicant/wpa_supplicant.conf
Jeśli zrobiłeś coś złego, możesz sprawdzić, zaktualizować lub usunąć tę sieć, wpisując po prostu następujące polecenie:
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
Część 3: Aktualizacja oprogramowania RPi + instalacja
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
Po aktualizacji RPi będziemy musieli zainstalować następujące oprogramowanie:
Baza danych MariaDB
sudo apt-get zainstaluj serwer mariadb
Serwer WWW Apache2
sudo apt zainstaluj apache2
Pyton
update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1 update-alternatives --install /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
- Żądania PyMySQL
- Gniazdo Pythona
- RPi. GPIO
- Gevent
- Gevent-websocket
Biblioteka głośników
Aby korzystać z głośnika ze wzmacniaczem, będziemy musieli zainstalować do niego bibliotekę
curl -sS > | bash
Step 4: Reboot
After everything has been installed we will have to reboot the pi to make sure everything works correctly
sudo reboot
Step 5: Setting Up the Database to the RPi
Teraz, gdy zainstalowaliśmy wszystko, czego potrzebowaliśmy, umieść naszą bazę danych, którą zaprojektowaliśmy na naszym Raspberry Pi!
Aby skonfigurować bazę danych będziemy musieli połączyć MySql i RPi. W tym celu otworzymy MySQLWorkbench i nawiążemy nowe połączenie. Patrząc na obraz, musisz zmienić, aby zmienić informacje na swoje.
Jeśli jeszcze nic nie zmieniłeś, możesz użyć dla SSH pi i raspberry, dla MySQL mysql i mysql.
Jeśli coś nie jest jasne, możesz również skorzystać z tego samouczka:
Aby wyeksportować bazę danych, powinno być łatwiej za pomocą PHPmyAdmin, ponieważ możesz uzyskać wiele błędów podczas robienia tego za pomocą MySql
Krok 6: Konfiguracja Bluetooth w naszym RPi
Tworzymy głośnik Mood, którego możemy również używać z naszą własną muzyką, więc jest to łatwiejsze, gdy RPi jest
podłączony do bluetooth skorzystałem z samouczka, który można znaleźć tutaj:
scribles.net/streaming-bluetooth-audio-fr…
Zapisałem wszystko tutaj również dla wszystkich, którzy chcą to odtworzyć
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
Włączone zasilanie bluetooth
Skonfiguruj agenta parowania
agent na domyślnym agencie
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 połączone z naszym Raspberry za pomocą bluetooth i powinieneś być w stanie je przetestować odtwarzając dowolne media, np. Spotify itp.
Krok 7: Napisanie kompletnego zaplecza
Więc teraz konfiguracja jest zakończona, możemy wreszcie zacząć pisać nasz program backendowy!
Użyłem Visual Studio Code dla całego mojego zaplecza, musisz tylko upewnić się, że twój projekt Visual Studio jest podłączony do twojego Raspberry Pi, oznacza to, że twój kabel LAN musi być podłączony do twojego RPi i nawiązać połączenie SSH. (informacje jak utworzyć zdalne połączenie znajdziesz tutaj:
Użyłem własnych klas i wszystkie są zawarte w moim GitHubie.
W moim pliku backendu użyłem różnych klas, więc wszystko może być używane osobno i aby mój główny kod nie był bałaganem ze wszystkimi różnymi wątkami. Użyłem wątków, aby uruchomić wszystkie różne klasy jednocześnie. 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 były dla mnie dość trudne, zrobiłem co w mojej mocy, aby najpierw był mobilny, ponieważ mogę połączyć się z nim przez bluetooth, aby zmienić piosenki za pomocą Spotify. Więc łatwiej byłoby sterować 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ł dla mnie łatwiejszy, działał z kilkoma GET z moich tras zaplecza, mnóstwem detektorów zdarzeń i kilkoma strukturami socketio do pobierania danych z moich czujników.
Krok 9: Budowanie mojej sprawy i składanie wszystkiego razem
Najpierw zacząłem szkicować, 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ż dostaliśmy duży obwód do umieszczenia w obudowie, ale musieliśmy zachować kompaktowość, aby nie zajmuje dużo miejsca
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 starej deski, którą leżałem i po prostu zacząłem piłować drewno. Kiedy już miałem swój podstawowy futerał, musiałem tylko wywiercić w nim dziury (dużo z przodu obudowy, jak widać na zdjęciach i włożyć do niego kilka gwoździ, to naprawdę podstawowe etui, ale wygląda całkiem fajnie i pasuje idealnie. Postanowiłem też pomalować go na biało, aby wyglądał dobrze.
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.
Zalecana:
Kontroler Bluetooth do paska LED RGB V3 + synchronizacja muzyki + sterowanie oświetleniem otoczenia: 6 kroków (ze zdjęciami)
Kontroler taśmy LED RGB Bluetooth V3 + synchronizacja muzyki + sterowanie oświetleniem otoczenia: Ten projekt wykorzystuje arduino do sterowania taśmą LED RGB za pomocą telefonu przez bluetooth. Możesz zmienić kolor, zsynchronizować światła z muzyką lub sprawić, by automatycznie dostosowywały się do oświetlenia otoczenia
Używanie samochodowego zestawu stereo do odtwarzania plików MP3 na starszym domowym zestawie stereo: 7 kroków
Używanie samochodowego zestawu stereo do odtwarzania plików MP3 na starszym domowym zestawie stereo: Odtwarzanie plików MP3 na domowym zestawie stereo W ciągu ostatnich dwóch dekad pobrałem lub zgrałem około 5000 klasycznych utworów rockowych i potrzebowałem prostego sposobu na odtwarzanie cyfrowych plików muzycznych na starszym domowym zestawie stereo. Mam podłączony komputer kina domowego (HTC)
Albumy z tagami NFC do automatycznego odtwarzania muzyki Spotify na Chromecaście: 5 kroków
Albumy z tagami NFC do automatycznego odtwarzania muzyki Spotify na Chromecaście: Ten projekt rozpoczął się od pomysłu stworzenia kolażu albumów moich najczęściej odtwarzanych artystów na Spotify. Po kilku grach z API Spotify w Pythonie pomyślałem, że byłoby miło połączyć te okładki albumów z ich identyfikatorami URI Spotify i zacząć odtwarzać
Przycisk odtwarzania YouTube 100 subskrybentów!: 8 kroków
Przycisk odtwarzania 100 subskrybentów na Youtube!: Jak mówi tytuł, ponieważ mój kanał YouTube przekroczył 100 subskrybentów, nadszedł czas na świętowanie, więc postanowiłem zbudować własny przycisk odtwarzania 100 subskrybentów! Więc bez dalszej zwłoki Zacznijmy
Głośnik Bluetooth z wizualizatorem muzyki: 10 kroków (ze zdjęciami)
Głośnik Bluetooth z wizualizatorem muzyki: W tej instrukcji pokażę, jak buduję ten głośnik Bluetooth, który ma wizualizację muzyki na górze. Wygląda naprawdę fajnie i sprawia, że chwila słuchania piosenki jest bardziej niesamowita. Możesz zdecydować, czy chcesz włączyć wizualizator, czy nie