前回、懐かしの三洋電機製LC7366NをラズパイPicoのMicroPythonから制御してDMTFトーン(プッシュホンのピポパポ音)を発生してみました。1音、それも波形のみ観察でした。今回はスピーカを取り付けて16音全てを「聞いて」みたいと思います。耳で聞くのは良いけれど、トーンをデコードしてくれる相手がいないです。
※「MicroPython的午睡」投稿順 Indexはこちら
冒頭のアイキャッチ画像に4行4列のマトリックスとそこに割り当てられている0~9、*、#、A~Dのシンボルと、音声周波数の組み合わせの図を掲げました。プッシュホンというか、今のスマホでも、電話のキーパッドは普通12キーだけれども、もう一列A、B、C、Dなんていう信号も含まれていたのね。
前回スクリプトを改造
前回のスクリプトを改造し、4行4列の音の組み合わせを全て出力できるようにしてみました。関数 toneLC7366に “0”から”9″, “*”, “#”, “A”,”B”,”C”,”D”のいずれかの文字を引数として与えるとトーン出力します。出力の停止は制御していないので、必要な期間出力させた後、関数外部で出力を停止させる必要があります。
from machine import Pin, Timer import time led = Pin(25, Pin.OUT) cd = Pin(10, Pin.OUT) dtmfIN = None #C1,C2,C3,C4 R1,R2,R3,R4 patDTMF=[[1, 0, 0 ,0, 1, 0, 0, 0], [0, 1, 0 ,0, 1, 0, 0, 0], [0, 0, 1 ,0, 1, 0, 0, 0], [1, 0, 0 ,0, 0, 1, 0, 0], [0, 1, 0 ,0, 0, 1, 0, 0], [0, 0, 1 ,0, 0, 1, 0, 0], [1, 0, 0 ,0, 0, 0, 1, 0], [0, 1, 0 ,0, 0, 0, 1, 0], [0, 0, 1 ,0, 0, 0, 1, 0], [0, 1, 0 ,0, 0, 0, 0, 1], [1, 0, 0 ,0, 0, 0, 0, 1], [0, 0, 1 ,0, 0, 0, 0, 1], [0, 0, 0 ,1, 1, 0, 0, 0], [0, 0, 0 ,1, 0, 1, 0, 0], [0, 0, 0 ,1, 0, 0, 1, 0], [0, 0, 0 ,1, 0, 0, 0, 1]] idxDTMF="1234567890*#ABCD" tim = Timer() def tick(timer): global led led.toggle() def initLC7366(): global dtmfIN dtmfIN = [] for pinNum in range(2, 10): dtmfIN.append(Pin(pinNum, Pin.OUT)) def setDtmf(arglis): global dtmfIN if (dtmfIN is None) or (len(arglis) !=8): return False for idx, vl in enumerate(arglis): if vl: dtmfIN[idx].value(1) else: dtmfIN[idx].value(0) return True def testLC7366(): cd.value(0) # C1 R1 setDtmf([1, 0, 0, 0, 1, 0, 0 ,0]) def toneLC7366(arg): cd.value(0) idx = idxDTMF.find(arg) if idx >=0: setDtmf(patDTMF[idx]) def main(): global tim, cd cd.value(1) tim.init(freq=2.5, mode=Timer.PERIODIC, callback=tick) initLC7366() #testLC7366() for i in range(len(idxDTMF)): print(idxDTMF[i]) toneLC7366(idxDTMF[i]) time.sleep(0.5) cd.value(1) time.sleep(0.3) cd.value(1) if __name__ == "__main__": main()
耳で聞くためにスピーカを追加
DTMF信号出力に、スピーカアンプをとりつけ例によって100円ショップのスピーカを鳴らしてみました。今一つ音が澄んでない感じがします。回路の様子が以下に。
実機の音
上の実機がスピーカで奏でた(というには音が悪いんだが)全16音を、スマホで録音したものを以下に添付しておきます。元の音が悪い?上に100円スピーカから出た音をスマホマイクで拾っているので、私の作業雑音まで入ってしまっています。お聞きぐるしくてすみません。
なんかこんな音じゃ、ちゃんと通信できないような気がしないでもないです。どうしたものか。