Spisu treści:

Analogowy miernik VU z obsługą Bluetooth: 6 kroków
Analogowy miernik VU z obsługą Bluetooth: 6 kroków

Wideo: Analogowy miernik VU z obsługą Bluetooth: 6 kroków

Wideo: Analogowy miernik VU z obsługą Bluetooth: 6 kroków
Wideo: Czterokanałowy czujnik światła z komparatorem LM339 do Arduino, robotów i projektów 2024, Lipiec
Anonim
Analogowy miernik VU z obsługą Bluetooth
Analogowy miernik VU z obsługą Bluetooth

To był mój projekt na jedną z moich klas uniwersyteckich o nazwie SMP. Ponieważ używaliśmy płytki rozwojowej STM32F103RB, oparłem na niej mój projekt, zaczynając od prostego miernika VU. Następnie dodałem kilka dodatkowych funkcji, takich jak obsługa Bluetooth, aby przesyłać wartości z ADC do aplikacji na Androida, aby utworzyć prosty wykres dB.

Krok 1: Użyte komponenty

  • Płytka rozwojowa STM32F103RB
  • Moduł bluetooth HC-05 zs040
  • Panel miernika analogowego VU (link)
  • Mikrofon elektretowy
  • Poczwórny wzmacniacz operacyjny LM324N
  • 2 tranzystory TIP120
  • 3 diody 1N4148
  • Różne kondensatory i rezystory

Chociaż można wysterować ten obwód z szyny 5V płyty, użyłem również zewnętrznego zasilacza 5V.

Krok 2: Obserwator kopert

Obserwator kopert
Obserwator kopert
Obserwator kopert
Obserwator kopert

Głównym elementem tej konstrukcji jest wtórnik obwiedni, który pobiera sygnał z mikrofonu elektretowego i generuje napięcie proporcjonalne do amplitudy sygnału mikrofonu.

Surowy sygnał z mikrofonu przechodzi najpierw przez wzmacniacz o wzmocnieniu 150.

Sygnał jest następnie przekazywany przez właściwy obwiednia obwiedni, który powinien wyprowadzać tylko dodatnie części sygnału.

Ostatnia część to odjęcie napięcia niezrównoważenia 1,65 V z wyjścia wtórnika obwiedni, aby uzyskać sygnał 0 V dla braku dźwięku, 1,65 V dla dźwięku średniego i 3,3 V dla dźwięku głośnego, który powinien być kompatybilny z wbudowanym ADC zarządu.

Ten obserwujący kopertę jest zaimplementowany z tej wspaniałej odpowiedzi StackExchange.

Krok 3: PWM dla miernika analogowego

Aby uruchomić wskazówkę wskaźnika, skonfigurowałem timer TIM4 na płytce mikrokontrolera o częstotliwości około 500 Hz.

Próbując sukcesywnie różnych cykli pracy, ustaliłem pewne wartości, które wystarczyły, aby wskazówka przeszła od 0 do 100.

Szczegółowo opiszę proces wyświetlania dokładnej wartości w następnym kroku, stosując trochę matematyki.

Krok 4: Kalibracja mikrofonu

Kalibracja mikrofonu
Kalibracja mikrofonu
Kalibracja mikrofonu
Kalibracja mikrofonu

Po wykonaniu popychacza obwiedni napisałem prosty kod, aby użyć ADC i sprawdziłem, czy wartość odczytu rzeczywiście zmienia się odpowiednio do głośności w pomieszczeniu.

Aby „przetłumaczyć” tę wartość na rzeczywisty odczyt dB, użyłem generatora tonów online o częstotliwości 550 Hz i mojego Androida, aby zapewnić odczyt referencyjny.

Wykreśliłem te wartości i użyłem narzędzia do dopasowania krzywej MatLAB, aby uzyskać funkcję, która mapuje odczyty ADC do rzeczywistych przybliżeń poziomów dB (lub przynajmniej wystarczająco blisko odczytów mojego telefonu).

Widzimy, że jest to zgodne ze skalą logarytmiczną mikrofonu.

Zrobiłem również to samo, aby zmapować pozycję igły do wartości PWM. Zebrałem te wartości, zwiększając wartość PWM o 10 sukcesywnie, aż potrzeba trafi na odczyt na jego skali.

Łącząc te 2 funkcje, uzyskałem łatwy sposób wyświetlania odczytu z ADC na rzeczywistą wartość na wskaźniku.

Krok 5: Aplikacja na Androida

Aplikacja wykorzystuje tę fajną bibliotekę do komunikacji przez port szeregowy Bluetooth w celu wymiany informacji o bajtach.

Głównym zastrzeżeniem tego systemu jest to, że maksymalna długość słowa wysyłanego przez Bluetooth wynosi 8 bitów, a wartość ADC jest reprezentowana jako 12 bitów. Aby rozwiązać ten problem, podzieliłem jedną wartość ADC na 2 oddzielne 6-bitowe wartości (MSB i LSB), a pozostałe 2 bity służą do identyfikacji typu wiadomości (MSB, LSB, CHK).

Dlatego dla pojedynczej wartości ADC, którą chcemy rozgłaszać, dzielimy rzeczywistą wartość na 2 komunikaty. Aby sprawdzić integralność tych wiadomości, wysłałem trzecią wiadomość z XOR pierwszych 2 wiadomości.

Po sprawdzeniu integralności wartości możemy zastosować tę samą funkcję, aby uzyskać poziom dB i wykreślić go na naszym wykresie na żywo.

Krok 6: Podsumowanie

Chociaż część tego projektu dotycząca mikrokontrolera działa całkiem dobrze, wyświetlając głośność w pomieszczeniu, napotkałem pewne problemy podczas wysyłania danych przez Bluetooth z powodu utraty pakietów.

Kod źródłowy tego projektu można znaleźć tutaj:

  • Aplikacja towarzysząca na Androida - repozytorium
  • Kod mikrokontrolera - repozytorium

Jeśli uznasz to za przydatne w jakikolwiek sposób, możesz wnieść swój wkład.

Zalecana: