天下一反省会!

電子工作、プログラミング、読書など

\今月のイチオシ記事/

おススメ記事1
おススメ記事2
おススメ記事3
おススメ記事4

光でモールス信号をやるアレを作りたい【第2回 制作編】

前回の記事から2か月も時間が空いてしまいました...

前回の記事はこちら↓
www.tenkaichi-hanseikai.com

仕事でモノづくりをやっていると、帰宅後に何か作ろうとするモチベーションがなかなか湧いてこないのが最近の悩みです。
(作りたいもののアイデアはどんどん貯まっているのですが...)

その件については追々別の記事で書くとして、今回は光でモールス信号やるアレについて一区切りついたので書こうと思います。

受光器について

受光素子には秋月で売っているフォトダイオードICを採用しました。

akizukidenshi.com

通常のフォトダイオードに加えて中に電流アンプ回路が入っているため、この素子に負荷を接続するだけで簡単に信号を取り出せます。

これを用いて作成した受光器の回路図はこんな感じ。

受光器の回路図

フォトダイオードICに接続した負荷抵抗の電圧値と参照電圧の差分をオペアンプで取り、それを1000倍して出力します。

増幅率が大きいので、フォトダイオードに光が当たれば出力は5Vに張り付き、それ以外の場合は0Vが出力されます。

参照電圧の大きさを調整することで、どれくらいの受光強度で出力がHIGHに切り替わるかの閾値を設定できます。

この回路を基板に実装したものがこちら。

このままだとフォトダイオードが外乱光を拾い続けてしまうため、黒の厚紙で囲いを設けました。

プログラムの作成

受光器のハード部分は完成したので、次は受光器の出力信号から文字に復号するプログラムを作ります。
作ったプログラムがこちら。


gist69d37e44251b80851579c66875769ec8

上記のプログラムでは、以下のような流れで復号を行っています。

ーーーーーーーーーーーーーーー
① 受光器の出力がHIGHになるのを待つ。
② 受光器がHIGHを出力したら、その瞬間から時間カウントを開始する。
③ 受光器の出力がLOWになったら②から経過した時間を計算し、閾値以下なら・(トン)、閾値より大きければー(ツー)とする。
④ ①~③を繰り返す。ただし、③から1秒経っても受光器がHIGHを出力しなければ、そこで一区切りとし、復号を始める。
⑤ ①~③で得られた1文字分のモールス信号に対応するアルファベットを出力し、①に戻る。
ーーーーーーーーーーーーーーー

投光器について

今回はダイソーで売っている懐中電灯の部品を流用して投光器を作りました。
ダイソーの懐中電灯はLED3個にパラボラ形状のミラーがついていて、お値段なんと100円。

かなり良心的な価格ですし、入手性も◎なのでぜひ使ってみてください。

今回はシンプルに、トランジスタを使って光らせることにしました。

作成した投光器がこちら。

筐体は3Dプリンタで印刷しました。
3Dプリンタで印刷する際、嵌めあいを考慮した設計をするのがいまだに苦手なのですが、今回は気合で圧入して何とかなりました。
ものづくり、うまい方法を考えるよりパワーで解決したほうが早い場面が意外と多いですよね。

エンジニアのみんな~!お勉強もほどほどに体を鍛えようね!

動作テストしてみる

すべての要素が完成したので、動作テストしてみます。

取り合えず、定番の"Hello,world"を打ってみることにします。

Hello,Worldを打ってみる

無事に動作しました!