Cuprins:

Contor VU analogic activat Bluetooth: 6 pași
Contor VU analogic activat Bluetooth: 6 pași

Video: Contor VU analogic activat Bluetooth: 6 pași

Video: Contor VU analogic activat Bluetooth: 6 pași
Video: Connecting Bluetooth transmitter to your TV 2024, Noiembrie
Anonim
Contor VU analogic activat Bluetooth
Contor VU analogic activat Bluetooth

Acesta a fost proiectul meu pentru una dintre clasele mele universitare numită SMP. Pe măsură ce foloseam placa de dezvoltare STM32F103RB, mi-am bazat proiectul pe acest lucru, pornind de la un simplu contor VU. Am adăugat apoi câteva funcții suplimentare, cum ar fi suportul Bluetooth, pentru a difuza valori de la ADC într-o aplicație Android pentru a crea o diagramă simplă dB.

Pasul 1: Componente utilizate

  • Placă de dezvoltare STM32F103RB
  • Modul bluetooth HC-05 zs040
  • Panou analogic VU meter (link)
  • Microfon electret
  • LM324N quad op-amp
  • 2 tranzistori TIP120
  • 3 diode 1N4148
  • Diverse condensatoare și rezistențe

Deși puteți conduce acest circuit de pe șina de 5V a plăcii, am folosit și o sursă de alimentare externă de 5V.

Pasul 2: Urmăritor plic

Urmăritor plic
Urmăritor plic
Urmăritor plic
Urmăritor plic

Piesa principală a acestui design este următorul plic care preia semnalul de la microfonul electret și emite o tensiune proporțională cu amplitudinea semnalului microfonului.

Semnalul brut de la microfon este trecut mai întâi printr-un amplificator cu un câștig de 150.

Semnalul este apoi trecut prin următorul efectiv al plicului, care ar trebui să emită doar părțile pozitive ale semnalului.

Ultima parte este scăderea tensiunii de offset de 1.65V din ieșirea urmăritorului plicului pentru a furniza un semnal de 0 V fără sunet, 1.65 V pentru sunet mediu și 3.3 V pentru sunet puternic care ar trebui să fie compatibil cu ADC al consiliului.

Acest adept plic este implementat din acest mare răspuns StackExchange.

Pasul 3: PWM pentru contorul analogic

Pentru a porni acul indicatorului, am configurat temporizatorul TIM4 al plăcii microcontrolerului cu o frecvență de aproximativ 500 Hz.

Încercând succesiv diferite cicluri de funcționare, m-am stabilit cu câteva valori care au fost suficiente pentru ca acul să treacă de la 0 la 100.

Voi detalia procesul de afișare a unei valori exacte în pasul următor prin aplicarea unor matematici.

Pasul 4: Calibrarea microfonului

Calibrarea microfonului
Calibrarea microfonului
Calibrarea microfonului
Calibrarea microfonului

După ce am urmărit plicul, am scris apoi un cod simplu pentru a utiliza ADC și am verificat că valoarea citită se schimbă într-adevăr în funcție de volumul sonor din interiorul camerei.

Pentru a „traduce” această valoare într-o citire dB reală, am folosit un generator de tonuri online cu o frecvență de 550 Hz și Android-ul meu pentru a oferi o citire de referință.

Am trasat aceste valori și am folosit Instrumentul Curbe Fit al MatLAB pentru a obține o funcție care mapează citirile ADC la aproximări reale ale nivelurilor de dB (sau cel puțin suficient de aproape de citirile telefonului meu).

Putem vedea că acest lucru urmează scara logaritmică a microfonului.

De asemenea, am făcut același lucru pentru a mapa poziția acului cu valorile PWM. Am adunat aceste valori prin creșterea valorii PWM cu 10 succesiv, până când necesitatea a lovit citirea pe scara sa.

Combinând cele 2 funcții am obținut o modalitate ușoară de a afișa citirea de la ADC la o valoare reală pe indicatorul indicatorului.

Pasul 5: aplicația Android

Aplicația folosește această bibliotecă interesantă pentru a comunica prin serial Bluetooth pentru a schimba informații despre octeți.

Avertismentul principal al acestui sistem este că lungimea maximă a cuvintelor trimise prin Bluetooth este de 8 biți, iar valoarea ADC este reprezentată ca 12 biți. Pentru a depăși această problemă, am împărțit o valoare ADC în 2 valori separate de 6 biți (MSB și LSB), cu restul de 2 biți folosiți pentru a identifica tipul de mesaj (MSB, LSB, CHK).

Prin urmare, pentru o singură valoare ADC pe care dorim să o difuzăm, împărțim valoarea reală în 2 mesaje. Pentru a verifica integritatea acestor mesaje, am trimis un al treilea mesaj cu XOR-ul primelor 2 mesaje.

După verificarea integrității valorii, putem aplica aceeași funcție pentru a obține nivelul dB și a-l grafica pe graficul nostru live.

Pasul 6: Rezumat

În timp ce eu, partea de microcontroler a acestui proiect, funcționează destul de bine, afișând volumul în interiorul unei camere, am întâmpinat câteva probleme la trimiterea de date prin Bluetooth din cauza pierderii de pachete.

Codul sursă pentru acest proiect poate fi găsit aici:

  • Aplicație însoțitoare Android - repo
  • Cod microcontroler - repo

Simțiți-vă liber să contribuiți dacă vi se pare util acest lucru în vreun fel.

Recomandat: