JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

スポンサーリンク

micro:bit で morse を鳴らす ~その1~

マイコンボードの収集をしているわけじゃないけど。。。

1年以上も積みボードにしていた micro:bit。

この連休中に文字列表示以外のこと、morse を鳴らして遊んでみました。 

圧電ブザーで morse 

まずは、お手軽な圧電ブザーから。 

micro:bit の A0 端子と GND 端子に圧電ブザーを取りつけます。 

f:id:JH1LHV:20180508121439j:plain

ケースは 3D Printer で作成。

それと、マイクロビット用コネクターブレイクアウトボードキットを使ってます。 

プログラムは MicroPython です。

Micro:bit のウェブにある Python editor でもプログラムは書けますが、 

Code With Mu が超お勧めです。

A0 をデジタル出力に設定してブザーをオン/オフするだけです。

私のコールサイン「JH1LHV」をモールスで3回繰り返してみました。 

# by JH1LHV
from microbit import *

dot_speed = 60 

msg = "JH1LHV JH1LHV JH1LHV" 

morsetab = {
    'A': '.-', 
    'B': '-...', 
    'C': '-.-.', 
    'D': '-..', 
    'E': '.', 
    'F': '..-.', 
    'G': '--.', 
    'H': '....', 
    'I': '..', 
    'J': '.---', 
    'K': '-.-', 
    'L': '.-..', 
    'M': '--', 
    'N': '-.', 
    'O': '---', 
    'P': '.--.', 
    'Q': '--.-', 
    'R': '.-.', 
    'S': '...', 
    'T': '-', 
    'U': '..-', 
    'V': '...-', 
    'W': '.--', 
    'X': '-..-', 
    'Y': '-.--', 
    'Z': '--..', 
    '0': '-----', 
    '1': '.----', 
    '2': '..---', 
    '3': '...--', 
    '4': '....-', 
    '5': '.....', 
    '6': '-....', 
    '7': '--...', 
    '8': '---..', 
    '9': '----.', 
    ' ': '       ', 
    '?': '..--..', 
    ';': '-.-.-.', 
    ':': '---...', 
    '-': '-....-', 
    '/': '-..-.', 
    '(': '-.--.-', 
    ')': '-.--.-', 
    '_': '..--.-',
} 

def dot(): 
    pin0.write_digital(1)
    sleep(dot_speed) 
    pin0.write_digital(0)

def dash(): 
    pin0.write_digital(1)
    sleep(dot_speed * 3) 
    pin0.write_digital(0)

for m in msg.upper(): 
    for c in morsetab[m]: 
        if c == '.': 
            dot() 
        elif c == '-': 
            dash() 

        sleep(dot_speed)

    sleep(dot_speed * 3) 

 

ブザーの個体差もあろうかと思いますが、実測してみると 約4,000Hz と甲高く、音も大きすぎ。
モールスを鳴らすには、不向きかと。。。
(ブザー音が大きすぎて、録音がサチっちゃいました。。。)

 

圧電スピーカで morse

次に、圧電スピーカを使って鳴らしてみます。

micro:bit の A0 端子と GND 端子に圧電スピーカを接続して、PWM で出力します。

# by JH1LHV
from microbit import *

dot_speed = 60 

pin0.set_analog_period(1)

msg = "JH1LHV JH1LHV JH1LHV" 

morsetab = {
    'A': '.-', 
    'B': '-...', 
    'C': '-.-.', 
    'D': '-..', 
    'E': '.', 
    'F': '..-.', 
    'G': '--.', 
    'H': '....', 
    'I': '..', 
    'J': '.---', 
    'K': '-.-', 
    'L': '.-..', 
    'M': '--', 
    'N': '-.', 
    'O': '---', 
    'P': '.--.', 
    'Q': '--.-', 
    'R': '.-.', 
    'S': '...', 
    'T': '-', 
    'U': '..-', 
    'V': '...-', 
    'W': '.--', 
    'X': '-..-', 
    'Y': '-.--', 
    'Z': '--..', 
    '0': '-----', 
    '1': '.----', 
    '2': '..---', 
    '3': '...--', 
    '4': '....-', 
    '5': '.....', 
    '6': '-....', 
    '7': '--...', 
    '8': '---..', 
    '9': '----.', 
    ' ': '       ', 
    '?': '..--..', 
    ';': '-.-.-.', 
    ':': '---...', 
    '-': '-....-', 
    '/': '-..-.', 
    '(': '-.--.-', 
    ')': '-.--.-', 
    '_': '..--.-',
} 

def dot(): 
    pin0.write_analog(511)
    sleep(dot_speed) 
    pin0.write_analog(0)

def dash(): 
    pin0.write_analog(511)
    sleep(dot_speed * 3) 
    pin0.write_analog(0)

for m in msg.upper(): 
    for c in morsetab[m]: 
        if c == '.': 
            dot() 
        elif c == '-': 
            dash() 

        sleep(dot_speed)

    sleep(dot_speed * 3) 

 

圧電ブザーよりはマシな音にはなってますが、周波数を実測すると 約3,000Hz とチョット高め。
500Hz から1500Hz で鳴らすには、外部回路を使う必要がありそうです。

pin0.set_analog_period(1)  <---- 1000Hz に設定

f = 500Hz とするなら、カッコ内の引数は、
周期 T (ms) = 1000 / f  = 1000 / 500Hz  = 2  <----  ms で設定する必要がある
 
pin0.set_analog_period(2)  <---- 500Hz に設定
このように設定したところ、周波数は約1,500Hz(500Hzじゃない)にはなりましたが、
元が矩形波なので濁った音で聞こえてしまいます。

で、もう少し細かいステップで周波数を可変するためには、マイクロ秒で指定可能な 

set_analog_period_microseconds(period)
出力される PWM 信号の周期を period にマイクロ秒単位で設定します。有効な最小値は 256μs です。

という、こんなメソッドもあるので、
set_analog_period_microseconds(1428)  <---- 700Hz
とかやってみましたが、思うどおりの周波数で鳴ってくれません・・・ここはもう少し調査してみる必要がありそうです。
(ちなみに、1000 以下の数値を指定するとエラーになってしまいます。)

 

micro:bit

イギリスの小学生(高学年)に無償で配っているという micro:bit。
国内では秋月電子が取り扱いを始めたこともあって・・・多少は普及するかな。

 

Micro:bit の公式ウェブサイト:
Micro:bit財団は、技術による発明を誰にとっても楽しいものにする、グローバルな非営利団体です。

f:id:JH1LHV:20180508132146j:plain

機能 | micro:bit


●主な仕様
・CPU:ARM Cortex-M0(16MHz)
・メモリ:16KB RAM
・LED×25個(5行5列)
・プッシュスイッチ×2個
・3軸加速度センサー×1個
・地磁気センサー×1個
・Bluetooth LE(Bluetooth Low Energy)
・リング×5(I/O×3、3V端子、GND)
・20ピンエッジコネクタ
・MicroUSBコネクタ×1個
・バッテリーコネクタ×1個(PHコネクタ:2ピン)
・外形サイズ:43×52×11㎜
・重量:9g 


4cm×5cm の小さな基板にこれだけの機能が詰まって、秋月電子で @2,160円と、超お買い得です。

 

とまぁ、今回は micro:bit の触りだけということで。。。 

次は、「CW コールサイン・トレーナ」でも作ってみようかと思います。