ラズパイ
シリアル通信
FT232H

RaspbianをインストールしてPCとシリアル通信をする

概要

Raspberry PiにRaspbianをインストールしてPCとUARTで通信できるようにします。PCからUART信号の出力には、この記事ではadafruite社のFT232H Breakoutボード使用します。このボードにはFTDI社のFT232HQというICが搭載されていて、USB<-->UART変換をしてくれます。その他にUSB<-->I2C、USB<-->SPIの変換もできるのでそのうち使ってみたいと思います。

環境

  • Lubuntu 18.04
  • Raspberry Pi 3 Model B
  • adafruite FT232H Breakout

Raspbianイメージのダウンロード

公式サイトは海外サーバなので日本にあるミラーサイトからGUI版のRaspbianをダウンロードしてくる。zipで圧縮されているので伸長するとimgファイルができます。

$ wget http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2018-06-29/2018-06-27-raspbian-stretch.zip

$ unzip ./2018-06-27-raspbian-stretch.zip

$ ls -lh 2018-06-27-raspbian-stretch.img 
-rw-r--r-- 1 yoshi yoshi 4.5G  6月 27 10:22 2018-06-27-raspbian-stretch.img

RaspbianイメージをSDカードに書き込む

SDカードをPCに挿して/dev/sdbと認識されたことを確認してddコマンドでSDカードにイメージを書き込みます。デバイス名は、環境によっては/dev/sdaと認識されたりするので、このQiita記事を参考にして確認してください(SDカードにUbuntuのルートファイルシステムを作成する)

$ sudo dd if=2018-06-27-raspbian-stretch.img of=/dev/sdb bs=4M
$ sync

しばらく時間がかかります。私の環境では10分弱かかりました。終わるとsyncコマンドを実行して同期します。

SSH接続できるようにする

イメージの書き込みが終わったら一旦SDカードを抜き差しします。bootディレクトリにsshという名前の空のファイルを作成します。このファイルを作成するとラズパイの起動時にsshデーモンを起動してくれるようです。どういう仕組みかは未確認。

$ sudo lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   1 14.4G  0 disk 
├─sdb1   8:17   1 43.2M  0 part /media/yoshi/boot
└─sdb2   8:18   1  4.5G  0 part /media/yoshi/rootfs

$ touch /media/yoshi/boot/ssh

Raspberry Pi起動

SDカードをRaspberry Piに挿して、HDMIケーブルとLANケーブルを接続して、USBケーブルを繋いで電源を入れるとRaspbianが立ち上がります。最近のRaspbianは起動時の設定でpiユーザのパスワードを変更したり、無線LANの設定をしたりするようになってます。知りませんでした。さらにアップデートが始まり20分か30分位かかって再起動してやっと使えるようになりました。

IPアドレスを確認したらSSH接続でログインします。

Serial Portを有効にする

Raspberry Pi 3 model BではUARTのポートはBluetoothと兼用になっていてデフォルトではBluetoothを使うように設定されています。これをUARTを使用するように変更します。

raspi-configコマンドでラズパイの設定を変更します。

$ sudo raspi-config
  • 5 Intercacing Optionsを選択
    5_Interfacing_Options.png

  • P6 Serialを選択
    P6_serial.png

  • シリアル接続でログインできるようにするか聞かれるのでNo
    login_shell.png

  • UARTを有効にする
    serial_port.png

最後に設定の確認をして再起動します。

PCとRaspberry Piの通信

PCとFT232HをUSBで接続、ラズパイとFT232HをGNDと、ラズパイのTX、FT232HのRXで接続して時の写真
connection.JPG

PC側で115200pbsでシリアル接続し待機しておきます。

$ sudo screen /dev/ttyUSB0 115200

ラズパイ側からシリアル接続はビットレート115200bpsの設定をして、"Hello"を送信します。

$ stty -F /dev/serial0 115200
$ echo "Hello" > /dev/serial0

すると待ち受けていたPC側でHelloが出力されます。
received.png