Ale samozrejme oficialne pre esphome zatial nie je kód.
Má niekdo skúsenosti s týmto senzorom.
Ako konvertujem výstupný signal ADC volty na dB respektivne akusticku hladinu zvuku?
čo som do teraz skúšal a vyhútal na nete, že modul funguje na princípe špičiek medzi, ktorými vie vypočitať výstupné dB.
https://forums.adafruit.com/viewtopic.p ... 2&p=503661.
ASi mi nezostáva nič iné len zase skúsiť arduino kód do espčka a pozrieť výstup na sieralovom monitore.
EDIT1:
Podarilo sami napísať kód na zachytávanie min. max. hodnoty zo senzora a pomocou vzorca pre prepočet Voltov na Decibely dostávam hodnotu hluku v okoli. či to naozaj funguje ako má a zobrazuje to správne hodnoty to neviem nie som audiofil a ani sa nevyznam až tak v kódovaní ak má niekto lepši kód alebo pripomienky na úpravu tak s em s tým
YAML:
Kód: Vybrat vše
##SOUND DETECT
- platform: adc
id: adcsound
pin: GPIO34
attenuation: 11dB
name: "Sound detect"
update_interval: 50ms
accuracy_decimals: 4
internal: true
- platform: template
id: "signalmin"
name: "Signal min"
filters:
- min:
window_size: 5
send_every: 5
send_first_at: 5
lambda: |-
return (id(adcsound).state);
update_interval: 250ms
accuracy_decimals: 4
unit_of_measurement: 'V'
# internal: true
- platform: template
name: "Signal max"
id: "signalmax"
filters:
- max:
window_size: 5
send_every: 5
send_first_at: 5
lambda: |-
return (id(adcsound).state);
update_interval: 250ms
accuracy_decimals: 4
unit_of_measurement: 'V'
# internal: true
- platform: template
name: "Noise Level"
lambda: |-
return ((log10(((((id(signalmax).state) - (id(signalmin).state)) * 3.3) * 0.707)/0.00631) *20) + 25);
unit_of_measurement: 'dB'
update_interval: 1s
#peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
# double volts = ((peakToPeak * 3.3) / 1024) * 0.707; // convert to RMS voltage
# double first = log10(volts/0.00631)*20;
#double second = first + 94 - 44 - 25;