今回は、USB to TTL シリアル変換ケーブルを使って、PCとRaspberry Piの間でUART通信をする。
RaspberryPiでRS232C機器を制御した - Qiita
Raspberry Pi でシリアル通信 – 或る阿呆の記
Macからraspberry piにシリアル通信 - devの忘備録
RaspberryPi3でシリアル通信を行う - Qiita
DSD TECHのシリアル変換SH-U09C
中身はこうなってるので、
説明書見てないけど、TXが白、RXが黒、GNDがグレー、として、繋ぐ。
(どうも色配置が納得いかないが。)
USB側をPCに挿す。
ただデバイスマネージャは警告。
ドライバがインストールされてない。
FTDIのUSBシリアル変換器のドライバのインストール法(1) - しなぷすのハード製作記
ドライバを入れる。
ここの、
x64の2.12.28を選ぶ。
「コンピュータを参照して~」を選択。
ダウンロードしたドライバのzipを解凍したフォルダを選択
これで次へ。
これでドライバが更新された。
下は治ったけど、今度は上がおかしい。
上も同じドライバを選択して更新すると、
上も治ってCOM5が現れる。
Tera TermでもCOM5が選択できる。
RasPi側は、
/boot/config.txtを開いて、
こんな風にdtoverlay~の行を追加。
今度は、/boot/cmdline.txtを開いて、
変更前は、console=serial0~と書かれている部分を、
変更後は、削除。
(console=tty1~は残しておく。)
デバイスを確認。
あまりにもいっぱいあるけど・・・。
ttyAMA0を使う。
(これがUART1?なのかな。)
dialoutグループだがrootオーナー。
serial1がttyAMA0にシンボリックリンク。
(serial1=ttyAMA0(=ttyS1?ってttyS1はないけど・・・。))
設定し終わったんでいったんreboot。
黒を8番ピン、白を10番ピンに。
(黒がRXなので、RasPiのTXは8番ピン、白がTXだから、RasPiのRXは10番ピン。)
繋ぐとドバァーって出てくる。
ちょっと不安だが、やりとりしたいので、とりあえず、
Raspberry pi で SSH ログアウト後もプロセスを残したい - 子育てしながらエンジニアしたい
screenコマンドをインストール。
screenコマンドのインストール。
インストール終わったので、
/dev/ttyAMA0に対して、
$ screen /dev/ttyAMA0 115200
してみる。
RasPi側はこうなるが、
PC側では相変わらず変な文字列が流れ続ける。
ここでハマりどころがいくつかあって、
Raspberrypi 3 でUART通信(コンソール&汎用) - Qiita
にある、
enable_uart=1も効果なし。
(よく見ると、"enable_uart1"になってるダメだwww。)
raspi-configで、
Raspberry Pi UART Communication using Python and C | Raspberry Pi
シリアルを有効にしたけど、これも関係なさそう。
いろいろ見てて気づいたのが、
グレーのGNDを繋いでなかったので、RasPiのGNDである6番ピンに。
そうすると、Tera Term側の変な文字列の流れが止まった。
RasPi側からは文字列を送れるが、Tera Term側はできず。
RasPi側を再起動したら、Tera Term側にLinuxのログイン画面というかフォームが表示された。
piユーザでsshログインするみたいなやつか。
でもただのチャットをやりたいので、
Raspberry PIのGPIO上シリアルとArduinoの通信 - Qiita
serial-getty@ttyAMA0.serviceというサービスの停止をしてみる。
サービス停止と無効化。
あ、そうだ。
ボーレートを合わせないと。
最初、9600になってるので、115200に変更。
これでRasPi再起動して、Tera Termで"abc"と入力すると、
RasPi側に"abc"。
RasPi側で"xyz"を入力すると、
Tera Term側で"xyz"が出る。
とにかく、ハマったポイントとしては、
- GNDにちゃんとつなぐ。
- サービスは止めとけ。
ってところかな。