Innholdsfortegnelse:
- Trinn 1: Komponenter som brukes
- Trinn 2: Konvoluttfølger
- Trinn 3: PWM for den analoge måleren
- Trinn 4: Mikrofonkalibrering
- Trinn 5: Android -app
- Trinn 6: Oppsummering
Video: Bluetooth -aktivert analog VU -måler: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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
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
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:
LEDura - Analog LED -klokke: 12 trinn (med bilder)
LEDura - Analog LED -klokke: Etter lang tid med bare å lage forskjellige prosjekter bestemte jeg meg for å lage en instruerbar selv. For den første vil jeg guide deg gjennom prosessen med å lage din egen analoge klokke laget med fantastisk adresserbar LED -ring. Den indre ringen viser timene, eller
Arduino LED -kontroll med analog joystick: 6 trinn
Arduino LED -kontroll med analog joystick: I denne opplæringen lærer vi hvordan du bruker analog joystick til å kontrollere LED -en. Se en demonstrasjonsvideo
Hvordan lage analog klokke og digital klokke med LED -stripe ved hjelp av Arduino: 3 trinn
Hvordan lage analog klokke og digital klokke med LED -stripe ved hjelp av Arduino: I dag skal vi lage en analog klokke & Digital klokke med Led Strip og MAX7219 Dot -modul med Arduino. Den vil korrigere tiden med den lokale tidssonen. Den analoge klokken kan bruke en lengre LED -stripe, så den kan henges på veggen for å bli en kunstner
Analog frontend for oscilloskop: 6 trinn (med bilder)
Analog frontend for oscilloskop: Hjemme har jeg noen billige USB -lydkort, som kan kjøpes i Banggood, Aliexpress, Ebay eller andre globale nettbutikker for noen dollar. Jeg lurte på hva interessant jeg kan bruke dem til og bestemte meg for å prøve å lage et lavfrekvent PC -omfang med
Raspberry Pi GPIO -kretser: Bruke en LDR analog sensor uten ADC (analog til digital omformer): 4 trinn
Raspberry Pi GPIO -kretser: Bruke en LDR -analog sensor uten ADC (analog til digital omformer): I våre tidligere instrukser har vi vist deg hvordan du kan koble din Raspberry Pi's GPIO -pinner til lysdioder og brytere og hvordan GPIO -pinnene kan være høye eller Lav. Men hva om du vil bruke din Raspberry Pi med en analog sensor? Hvis vi vil bruke en