ラズパイとのシリアル通信

前回の記事ではCP2102ブレークボードのドライバのインストールまで行った。今回はいよいよラズパイにシリアル接続を試みる。


kent-tech.hatenadiary.com

 

環境

Raspberry Pi
 Raspberry Pi3 Model B
 OS: Raspbian STRETCH WITH DESKTOP 2017-09-07
Windows PC側
 Windows10
 USB to UART 変換チップ: Silicon Lab. CP2102

 

やってみよう

まずは物理的な接続だ。ラズパイの電源をOFFにして、CP2102のUART TXをラズパイのUART RXに、CP2102のUART RXをラズパイのUART TXに接続し、CP2102のGNDとラズパイのGND間も接続する。ラズパイのどの端子がUARTなのかは、ラズパイのピン配置を参考にする。もしくはネット上に解説記事がこれでもかというくらいあるので、迷うことはないと思う。


続いてラズパイの電源を投入する。立ち上げに10秒くらいかかるので待つ。その後、Windows PCでTeratermを立ち上げて、シリアルポートに接続する。ボーレートはRaspberry Piの仕様?により、115,200に設定する。すると、ログインを促される……はずが接続できない! Enter Keyを何度叩いても反応がありません。

 

f:id:kent_s:20171124094215p:plain

デバッグ

なんでだろうと思って調べてみると、Raspberry Pi3から、Bluetoothが搭載された関係で、OSのdefaultではシリアル接続ができない仕様になったとかいう記事を見つけた。つまり、一度ラズパイにディスプレイ・キーボード・マウスを接続し、ラズパイのコンフィグを修正しないと、外部からは制御できないのだ!


何という不便! そもそもヘッドレス(ディスプレイ・キーボード・マウスなし)でラズパイを設定しようと思ってシリアル接続をやろうと思ったのに、できないっていうことじゃないか!


と愚痴っても仕方ないので、渋々ディスプレイとマウスとキーボードをラズパイに接続して、ラズパイを再起動します。その上で、シリアルポートの設定を行います。変更の仕方はごくごく簡単で、Raspberry PiのHomeボタンからPreference→ Raspberry Pi Configuration→ InterfaceでシリアルポートをEnableにするだけでした。


そしてteratermを再度接続してみると、無事ログイン画面に行けることがわかりました。

f:id:kent_s:20171124101632p:plain

ヘッドレスの夢

かくしてシリアルポートを使った、ヘッドレスでのラズパイの制御という夢はもろくも崩れ去った。調べていく中でMacだとOSのイメージディスクを直接編集することができるらしく、起動時にsshを起動するようにしたり、WiFiの設定をすることも可能の模様。


Windows PCでも同様のソフトがないのか調べてみたが、存在せず。ただ、Raspberry Piエミュレータがあるということは聞いたことがある。であれば、エミュレータ上でOSを起動→所望の設定にしたのちにイメージを吸い出し→Raspberry Piへ移植という手順を踏めば何とかなるんじゃないかと思う。


WindowsのノートPCしか無い状況は容易に存在しますし、そういった場合ヘッドレスでのラズパイの起動は需要があると思います。何とかできないか引き続き考えてみたい。