Innholdsfortegnelse:

Bluetooth -aktivert analog VU -måler: 6 trinn
Bluetooth -aktivert analog VU -måler: 6 trinn

Video: Bluetooth -aktivert analog VU -måler: 6 trinn

Video: Bluetooth -aktivert analog VU -måler: 6 trinn
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, November
Anonim
Bluetooth -aktivert analog VU -måler
Bluetooth -aktivert analog VU -måler

Dette var mitt prosjekt for en av mine universitetsklasser kalt SMP. Da vi brukte utviklingsbordet STM32F103RB, baserte jeg prosjektet mitt på dette, med utgangspunkt i en enkel VU -måler. Jeg la deretter til noen ekstra funksjoner som Bluetooth -støtte for å kringkaste verdier fra ADC til en Android -app for å lage et enkelt dB -diagram.

Trinn 1: Komponenter som brukes

  • STM32F103RB utviklingstavle
  • HC-05 zs040 Bluetooth-modul
  • Analog VU -målerpanel (lenke)
  • Electret mikrofon
  • LM324N quad op-amp
  • 2 TIP120 -transistorer
  • 3 1N4148 dioder
  • Ulike kondensatorer og motstander

Selv om du kan kjøre denne kretsen av brettets 5V -skinne, brukte jeg også en ekstern 5V strømforsyning.

Trinn 2: Konvoluttfølger

Konvoluttfølger
Konvoluttfølger
Konvoluttfølger
Konvoluttfølger

Hoveddelen i dette designet er konvoluttfølgeren som tar signalet fra elektretmikrofonen og sender ut en spenning som er proporsjonal med mikrofonens signalamplitude.

Råsignalet fra mikrofonen sendes først gjennom en forsterker med en forsterkning på 150.

Signalet sendes deretter gjennom den faktiske konvoluttfølgeren som bare skal sende ut de positive signaldelene.

Den siste delen er å trekke forskyvningsspenningen på 1,65V fra konvoluttfølgerens utgang for å gi et signal på 0 V for ingen lyd, 1,65 V for middels lyd og 3,3 V for høy lyd som skal være kompatibel med den innebygde ADC i styret.

Denne konvoluttfølgeren er implementert fra dette flotte StackExchange -svaret.

Trinn 3: PWM for den analoge måleren

For å få nålen til måleren i gang, har jeg konfigurert TIM4 -timeren til mikrokontrollerkortet med en frekvens på rundt 500 Hz.

Ved å prøve ut forskjellige driftssykluser suksessivt har jeg gjort opp med noen verdier som var nok til å få nålen til å gå fra 0 til 100.

Jeg vil beskrive prosessen med å vise en eksakt verdi i neste trinn ved å bruke litt matematikk.

Trinn 4: Mikrofonkalibrering

Mikrofonkalibrering
Mikrofonkalibrering
Mikrofonkalibrering
Mikrofonkalibrering

Etter at konvoluttfølgeren var ferdig, skrev jeg deretter en enkel kode for å bruke ADC og bekreftet at leseverdien faktisk endres i henhold til lydstyrken inne i rommet.

For å "oversette" denne verdien til en faktisk dB -avlesning, har jeg brukt en online tonegenerator med en frekvens på 550 Hz og min Android for å gi en referanselesning.

Jeg har plottet disse verdiene og brukt MatLABs Curve Fit Tool for å få en funksjon som kartlegger ADC -avlesninger til faktiske tilnærminger til dB -nivåene (eller i det minste nær nok til telefonens avlesninger).

Vi kan se at dette følger mikrofonens logaritmiske skala.

Jeg gjorde også det samme for å kartlegge nålposisjon til PWM -verdier. Jeg samlet disse verdiene ved å øke PWM -verdien med 10 suksessivt til behovet traff lesingen på skalaen.

Ved å kombinere disse to funksjonene fikk jeg en enkel måte å vise avlesningen fra ADC til en faktisk verdi på måleindikatoren.

Trinn 5: Android -app

Appen bruker dette kule biblioteket til å kommunisere via Bluetooth -seriell for å utveksle byteinformasjon.

Hovedbehovet for dette systemet er at den maksimale ordlengden som sendes via Bluetooth er 8 bits og ADC -verdien er representert som 12 bits. For å løse dette problemet delte jeg en ADC -verdi i 2 separate 6 -bits verdier (MSB og LSB) med de resterende 2 bitene som ble brukt til å identifisere meldingstypen (MSB, LSB, CHK).

Derfor, for en enkelt ADC -verdi som vi ønsker å kringkaste, deler vi den faktiske verdien i 2 meldinger. For å kontrollere integriteten til disse meldingene, sendte jeg en tredje melding med XOR av de to første meldingene.

Etter at verdiintegriteten er kontrollert, kan vi bruke den samme funksjonen for å få dB -nivået og plotte det inn på vårt live diagram.

Trinn 6: Oppsummering

Selv om jeg som mikrokontroller-delen av dette prosjektet fungerer ganske bra, viser lydstyrken inne i et rom, støtte jeg på noen problemer når jeg sendte data over Bluetooth på grunn av tap av pakker.

Kildekoden for dette prosjektet finner du her:

  • Android -ledsager -app - repo
  • Mikrokontroller kode - repo

Bidra gjerne hvis du synes dette er nyttig på noen måte.

Anbefalt: