Spisu treści:
- Krok 1: Użyte komponenty
- Krok 2: Obserwator kopert
- Krok 3: PWM dla miernika analogowego
- Krok 4: Kalibracja mikrofonu
- Krok 5: Aplikacja na Androida
- Krok 6: Podsumowanie
Wideo: Analogowy miernik VU z obsługą Bluetooth: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
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
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
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:
Obsługa dźwięku GBA Bluetooth: 6 kroków
Obsługa GBA Bluetooth Audio: Ten przewodnik pokaże Ci, w jaki sposób udało mi się uruchomić Bluetooth Audio na AGB-001 na wypadek, gdybyś chciał, aby Twoje słuchawki Bluetooth działały z Twoim ulubionym palmtopem. Chociaż możesz uciec z minimalną ilością części, Proponuję spróbować tego
Gigant analogowy miernik CO2: 6 kroków (ze zdjęciami)
Gigantyczny analogowy miernik CO2: Obecna atmosfera nad górami na Hawajach zawiera około 400 ppm dwutlenku węgla. Ta liczba jest niezwykle ważna dla wszystkich, którzy żyją na powierzchni planet. Otaczają nas teraz albo zaprzeczający temu zmartwieniu, albo ci, którzy wykręcają
PCF8591 (analogowy ekspander we/wy i2c) Szybka i łatwa obsługa: 9 kroków
PCF8591 (i2c Analog I/O Expander) Szybka i łatwa obsługa: Biblioteka do użycia i2c pcf8591 IC z arduino i esp8266. Ten układ scalony może sterować (aż do 4) wejściem analogowym i/lub 1 wyjściem analogowym, takim jak pomiar napięcia, odczyt wartości termistora lub zanikanie diody LED. Może odczytywać wartość analogową i zapisywać wartość analogową za pomocą tylko 2 przewodów (ide
Analogowy miernik temperatury: 4 kroki
Analogowy miernik temperatury: Ten analogowy miernik temperatury został stworzony przeze mnie, aby pielęgnować te czasy, kiedy widzieliśmy tylko analogowe gadżety w czasach, gdy żyli nasi dziadkowie. Dzisiaj widzimy tylko cyfry …. dlatego stworzyłem tę analogową temperaturę, która jest bardzo dobra dla początkujących i
Zbuduj analogowy miernik zużycia energii elektrycznej: 8 kroków (ze zdjęciami)
Zbuduj analogowy miernik zużycia energii elektrycznej: użyłem funkcji Kill A Watt (http://www.p3international.com/products/special/P4400/P4400-CE.html) licznik energii elektrycznej na chwilę i postanowiłem zbudować analogowy. Ten projekt przestał być prosty, z amperomierzem z jednym panelem i