機器の状態を見たりするときに重宝する「シリアル通信」を、マイコンの開発ボードを利用してパソコンから行う方法をご紹介します。
はじめに
動作している機器の状態を把握するのにシリアル通信を行ってログを確認するのはとても有用な手法です。従来であればRS232CといったCOMポートを積んだマザーボードなどもありましたが、最近ではめっきり見なくなったような気がします。
最近では、USB接続で使用できるシリアル通信用のモジュールがデファクトとなっていますが、プラグアンドプレイなので抜き差しでリセットできたり、確かに合理的だなという感じです。が、一方でわざわざ買わないと手に入らないものとなってしまったこともまた事実かなと思います。
今回はそんな、急にシリアル通信をしたくなったときにも使用できる、マイコンの開発ボードを代替として利用する方法をご紹介します。
代替①: Arduino UNO
おそらくもっとも初心者向けで、持っている人も多いのではないかと思われる「Arduino UNO」です。
メインであるチップ ATMEGA328P-PU
と通信をするために使われるシリアル通信ポートをそのまま使ってしまおうというものです。
このように、RESET
と GND
を短絡することでATMEGA328P-PUを動作させなくして使うことができます。(ATMEGA328P-PUを抜いてもいいということですが、それはおっかないので短絡するのがいいんじゃないかと思います)
代替②: ESP32_Core_board_V2
ちょっとこれは持っている人限られてしまいますが、ESP32 Core boardというものがあります(たまたま手元にあったのはV2と銘打たれているものでした)。ピンが2.54mmのピッチで配置されていて、ブレッドボードに刺して使うことができるマイコン ESP-WROOM-32
の開発ボードです。
こちらのボードもArduino UNOと同様、メインのチップ ESP-WROOM-32 とシリアル通信を行うための CP2102
というチップが積まれていて、それを利用することができるので代用してみます。Arduino UNO同様、EN
と GND
を短絡することで、メインのチップを無効化しつつシリアル通信を行うことができます。
メリット
今まではArduino UNOを使用していましたが、ESP32_Core_board_V2を使用してみて、便利だなと思った点はブレッドボードと組み合わせて使うと周辺の拡張もそこに入れることができてコンパクトにまとまるという点です。
今回は、Hが3.3Vであるチップとの通信(単方向)を行いたかったため、別途3.3V→5Vの変換を行うレベルシフト回路をブレッドボードに付け加えています(NPNトランジスタ2SC1815Lを使用したエミッタ接地を使っています)が、このコンパクトさ。そしてUSB TypeBからmicroUSBに変更となってケーブルの面でも比較的使いやすくなったかなと思っています。
おまけ: シリアル通信の動作確認
今回、正しくシリアル通信できるかを確認するために、以下の方法で確認を行っています。
- RXとTXを短絡する
- cuコマンドでターミナルからシリアル通信を開始する(例:
cu -s 115200 -l /dev/ttyUSB0
) - 適当にタイプする(タイプしたものが画面に表示される)
終わりに
今回は、USB-to-TTL 変換を行うシリアル通信モジュールの代替品としてマイコンの開発ボードを使うというネタで書かせていただきました。ちゃんと解析するのであれば、ロジックアナライザを購入すべきかなとは思うのですが、Amazonでポチってからのタイムラグを考えると手元にあるもので何とか試したいと思ってしまい、ついつい代用品で賄ってしまいます・・・(そしていつまでも買わない)。
今調べてみると買っても大した値段ではないですね(1000円しない)。
まぁでも死蔵しているよりはマシかなと思うので、みなさんもぜひ死蔵している開発ボードがありましたらシリアル通信に使用してみるといいのかなと思います。