Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ito ang aking proyekto para sa isa sa aking mga klase sa unibersidad na tinatawag na SMP. Habang ginamit namin ang board ng pag-unlad ng STM32F103RB, ibinase ko ang aking proyekto dito, na nagsisimula mula sa isang simpleng VU meter. Pagkatapos ay nagdagdag ako ng ilang mga karagdagang tampok tulad ng suporta sa Bluetooth upang mag-broadcast ng mga halaga mula sa ADC sa isang Android app upang lumikha ng isang simpleng tsart ng dB.
Hakbang 1: Ginamit na Mga Bahagi
- STM32F103RB development board
- HC-05 zs040 Bluetooth module
- Analog VU meter panel (link)
- Mikropono ng electret
- LM324N quad op-amp
- 2 TIP120 transistors
- 3 1N4148 diode
- Iba't ibang mga capacitor at resistors
Bagaman maaari mong itaboy ang circuit na ito mula sa 5V rail ng board, gumamit din ako ng panlabas na 5V power supply.
Hakbang 2: Sumusunod sa Envelope
Ang pangunahing piraso ng disenyo na ito ay ang tagasunod ng sobre na kumukuha ng signal mula sa electret microphone at naglalabas ng isang boltahe na proporsyonal sa amplitude ng signal ng mikropono.
Ang hilaw na signal mula sa mikropono ay unang naipasa sa isang amplifier na may pakinabang na 150.
Pagkatapos ang signal ay naipasa sa pamamagitan ng tunay na tagasunod ng sobre na dapat na output lamang ang mga positibong bahagi ng signal.
Ang huling bahagi ay binabawas ang offset boltahe ng 1.65V mula sa output ng tagasunod ng sobre upang magbigay ng isang senyas na 0 V para walang tunog, 1.65 V para sa medium-sound at 3.3 V para sa malakas na tunog na dapat na katugma sa built in ADC ng board.
Ang tagasunod ng sobre na ito ay ipinatupad mula sa mahusay na sagot na StackExchange.
Hakbang 3: PWM para sa Analog Meter
Upang makuha ang karayom ng pagpunta sa gauge, na-configure ko ang TIM4 timer ng microcontroller board na may dalas na humigit-kumulang 500 Hz.
Sa pamamagitan ng sunud-sunod na pagsubok sa iba't ibang mga siklo ng tungkulin naayos ko na ang ilang mga halagang sapat na upang makuha ang karayom mula 0 hanggang 100.
Detalye ko ang proseso ng pagpapakita ng isang eksaktong halaga sa susunod na hakbang sa pamamagitan ng paglalapat ng ilang matematika.
Hakbang 4: Pagkakalibrate ng Mikropono
Ang pagkakaroon ng tagasunod ng sobre ay tapos na, nagsulat ako ng ilang simpleng code upang magamit ang ADC at napatunayan na ang binasang halaga ay nagbabago nang naaayon sa malakas sa loob ng silid.
Upang "isalin" ang halagang ito sa isang aktwal na pagbabasa ng dB, gumamit ako ng isang online tone generator na may dalas na 550 Hz at aking Android upang magbigay ng isang pagbabasa ng sanggunian.
Nagplano ako ng mga halagang iyon at ginamit ang Curve Fit Tool ng MatLAB upang makakuha ng isang pagpapaandar na nagpapapa sa mga pagbabasa ng ADC sa aktwal na mga pagtatantya ng mga antas ng dB (o hindi bababa sa sapat na malapit sa mga pagbabasa ng aking telepono).
Makikita natin na sumusunod ito sa sukat ng logarithmic ng mikropono.
Ginawa ko rin ang parehong bagay upang mapa ang posisyon ng karayom sa mga halagang PWM. Tinipon ko ang mga halagang iyon sa pamamagitan ng pagdaragdag ng halaga ng PWM ng 10 sunud-sunod hanggang sa kailangan ng pagbasa sa sukat nito.
Ang pagsasama-sama ng 2 pagpapaandar na iyon ay nakakuha ako ng isang madaling paraan upang maipakita ang pagbabasa mula sa ADC sa isang aktwal na halaga sa tagapagpahiwatig ng gauge.
Hakbang 5: Android App
Ginagamit ng app ang cool na library na ito upang makipag-ugnay sa pamamagitan ng serial ng Bluetooth upang makipagpalitan ng byte na impormasyon.
Ang pangunahing pag-iingat ng sistemang ito ay ang maximum na haba ng salita na ipinadala sa Bluetooth ay 8 bits at ang halaga ng ADC ay kinakatawan bilang 12 bits. Upang mapagtagumpayan ang isyung ito, hinati ko ang isang halaga ng ADC sa 2 magkakahiwalay na 6 bit na halaga (MSB at LSB) sa natitirang 2 piraso na ginamit upang makilala ang uri ng mensahe (MSB, LSB, CHK).
Samakatuwid, para sa isang solong halaga ng ADC na nais naming i-broadcast, hinati namin ang aktwal na halaga sa 2 mensahe. Upang suriin ang integridad ng mga mensahe, nagpadala ako ng isang pangatlong mensahe kasama ang XOR ng unang 2 mensahe.
Matapos masuri ang integridad ng halaga, maaari naming mailapat ang parehong pag-andar upang makuha ang antas ng dB at i-plot ito sa aming live na tsart.
Hakbang 6: Buod
Habang ako ang bahagi ng micro-controller ng proyektong ito ay gumagana ng mahusay na pagpapakita ng lakas sa loob ng isang silid, nakatagpo ako ng ilang mga isyu kapag nagpapadala ng data sa pamamagitan ng Bluetooth dahil sa pagkawala ng packet.
Ang source code para sa proyektong ito ay matatagpuan dito:
- Kasamang app ng Android - repo
- Code ng Microcontroller - repo
Huwag mag-atubiling mag-ambag kung nakita mo na kapaki-pakinabang ito sa anumang paraan.