Spisu treści:

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: 9 kroków

Wideo: Nastrojowy głośnik - potężny głośnik do odtwarzania nastrojowej muzyki w oparciu o temperaturę otoczenia: 9 kroków

Wideo: Nastrojowy głośnik - potężny głośnik do odtwarzania nastrojowej muzyki w oparciu o temperaturę otoczenia: 9 kroków
Wideo: Nie spodziewasz się, co potrafi ten głośnik Bluetooth #shorts 2024, Listopad
Anonim
Nastrojowy głośnik - potężny głośnik do odtwarzania nastrojowej muzyki w oparciu o temperaturę otoczenia
Nastrojowy głośnik - potężny głośnik do odtwarzania nastrojowej muzyki w oparciu o temperaturę otoczenia

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

Schemat i okablowanie
Schemat i okablowanie
Schemat i okablowanie
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

Projekt bazy danych
Projekt 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

Konfiguracja bazy danych do RPi!
Konfiguracja bazy danych do 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

Budowanie mojej sprawy i łączenie wszystkiego w całość
Budowanie mojej sprawy i łączenie wszystkiego w całość
Budowanie mojej sprawy i łączenie wszystkiego w całość
Budowanie mojej sprawy i łączenie wszystkiego w całość
Budowanie mojej sprawy i łączenie wszystkiego w całość
Budowanie mojej sprawy i łączenie wszystkiego w całość
Budowanie mojej sprawy i łączenie wszystkiego w całość
Budowanie mojej sprawy i łączenie wszystkiego w całość

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: