Edited at

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