2024/12/25 15:19
巣箱の中の音(羽音)を調査することで、
蜜蜂の健康状態、巣分かれのタイミング、女王不在
などが分かる可能性が高いと考え、春から小型マイクを追加する予定です。
MAX9814というマイクを購入し、rasberrypi picow に装着し、実験してみました。
波形は一旦#で表示されるようにしました。
プログラムは簡易的にに以下のようにしてみました。
######################################################
import machine
import utime
import array
import math
from machine import ADC, Pin
# ADC ピンの初期化
adc = ADC(Pin(26))
# サンプリング設定
SAMPLE_RATE = 10000 # サンプリングレート (Hz)
SAMPLES = 256 # サンプル数
def record_audio():
"""MAX9814 から音データを取得"""
buffer = array.array('H', [0] * SAMPLES)
interval = 1 / SAMPLE_RATE
for i in range(SAMPLES):
buffer[i] = adc.read_u16() # ADC 値を取得 (0-65535)
utime.sleep(interval)
return buffer
def normalize(buffer):
"""音データを正規化して波形を 0-1 にスケール"""
min_val = min(buffer)
max_val = max(buffer)
return [(x - min_val) / (max_val - min_val) for x in buffer]
def print_waveform(waveform):
"""波形をターミナルに簡易的に表示"""
for value in waveform:
bar = "#" * int(value * 50) # スケールしてバーを描画
print(f"{bar}")
while True:
print("\nRecording audio...")
raw_audio = record_audio()
normalized_waveform = normalize(raw_audio)
print("\nWaveform:")
print_waveform(normalized_waveform)
utime.sleep(1)
######################################################
実行結果は以下のようになります。
#が連なっているのは、音波の波形を#で表示しているからです。
ここから得られる数値を定期的に取得し、どうやって表示させたり、評価するかをゆっくり考えていきます。