Analogový měřič VU s podporou Bluetooth: 6 kroků
Analogový měřič VU s podporou Bluetooth: 6 kroků
Anonim
Analogový měřič VU s podporou Bluetooth
Analogový měřič VU s podporou Bluetooth

To byl můj projekt pro jednu z mých univerzitních tříd s názvem SMP. Když jsme použili vývojovou desku STM32F103RB, založil jsem na tom svůj projekt, počínaje jednoduchým měřičem VU. Poté jsem přidal některé další funkce, jako je podpora Bluetooth, k vysílání hodnot z ADC do aplikace pro Android a vytvořil jednoduchý dB diagram.

Krok 1: Použité komponenty

  • Vývojová deska STM32F103RB
  • Modul Bluetooth HC-05 zs040
  • Panel analogového měřiče VU (odkaz)
  • Elektretový mikrofon
  • Quad op-amp LM324N
  • 2 tranzistory TIP120
  • 3 diody 1N4148
  • Různé kondenzátory a odpory

Ačkoli můžete tento obvod vyhnat z 5V kolejnice desky, použil jsem také externí 5V napájecí zdroj.

Krok 2: Sledovatel obálek

Sledovatel obálek
Sledovatel obálek
Sledovatel obálek
Sledovatel obálek

Hlavní částí tohoto návrhu je sledovač obálky, který odebírá signál z elektretového mikrofonu a vydává napětí úměrné amplitudě signálu mikrofonu.

Surový signál z mikrofonu je nejprve veden zesilovačem se ziskem 150.

Signál je pak veden skrz skutečný sledovač obálky, který by měl vydávat pouze kladné části signálu.

Poslední část je odečtením ofsetového napětí 1,65 V od výstupu sledovače obálky, aby poskytl signál 0 V pro žádný zvuk, 1,65 V pro střední zvuk a 3,3 V pro hlasitý zvuk, který by měl být kompatibilní s vestavěným ADC desky.

Tento sledovatel obálek je implementován z této skvělé odpovědi StackExchange.

Krok 3: PWM pro analogový měřič

Abych rozjel jehlu měřidla, nakonfiguroval jsem časovač TIM4 desky mikrokontroléru s frekvencí kolem 500 Hz.

Postupným zkoušením různých pracovních cyklů jsem se vyrovnal s některými hodnotami, které stačily na to, aby se jehla dostala z 0 na 100.

V následujícím kroku podrobně popíši postup zobrazení přesné hodnoty použitím nějaké matematiky.

Krok 4: Kalibrace mikrofonu

Kalibrace mikrofonu
Kalibrace mikrofonu
Kalibrace mikrofonu
Kalibrace mikrofonu

Po dokončení sledovače obálek jsem poté napsal jednoduchý kód pro použití ADC a ověřil, že se hodnota čtení skutečně mění podle hlasitosti v místnosti.

Abych mohl tuto hodnotu „přeložit“do skutečného odečtu dB, použil jsem online generátor tónů s frekvencí 550 Hz a svůj Android k poskytnutí referenčního odečtu.

Vynesl jsem tyto hodnoty a použil nástroj MatLAB Curve Fit Tool k získání funkce, která mapuje hodnoty ADC na skutečné aproximace úrovní dB (nebo alespoň dostatečně blízko hodnotám mého telefonu).

Vidíme, že to následuje po logaritmické stupnici mikrofonu.

Totéž jsem udělal i pro mapování polohy jehly na hodnoty PWM. Shromáždil jsem tyto hodnoty postupným zvyšováním hodnoty PWM o 10, dokud potřeba nedosáhla hodnoty na stupnici.

Kombinací těchto 2 funkcí jsem získal snadný způsob, jak zobrazit hodnoty z ADC na skutečnou hodnotu na indikátoru měřidla.

Krok 5: Aplikace pro Android

Tato aplikace využívá tuto skvělou knihovnu ke komunikaci prostřednictvím sériového rozhraní Bluetooth k výměně informací o bajtech.

Hlavní výhradou tohoto systému je, že maximální délka slova odesílaná přes Bluetooth je 8 bitů a hodnota ADC je reprezentována jako 12 bitů. Abychom tento problém překonali, rozdělil jsem jednu hodnotu ADC na 2 samostatné 6bitové hodnoty (MSB a LSB) se zbývajícími 2 bity použitými k identifikaci typu zprávy (MSB, LSB, CHK).

Proto pro jednu hodnotu ADC, kterou chceme vysílat, rozdělíme skutečnou hodnotu na 2 zprávy. Abych zkontroloval integritu těchto zpráv, poslal jsem třetí zprávy s XOR prvních 2 zpráv.

Poté, co je zkontrolována integrita hodnoty, můžeme použít stejnou funkci, abychom získali úroveň dB a vykreslili ji do našeho živého grafu.

Krok 6: Shrnutí

Zatímco část mikroprocesoru tohoto projektu funguje docela dobře a zobrazuje hlasitost uvnitř místnosti, při odesílání dat přes Bluetooth došlo ke ztrátě paketů.

Zdrojový kód tohoto projektu naleznete zde:

  • Doprovodná aplikace pro Android - repo
  • Kód mikrokontroléru - repo

Pokud vám to bude jakýmkoli způsobem užitečné, přispějte.