月別アーカイブ: 2018年10月

ラズパイとLinuxパソコンをシリアル接続する方法

ラズパイゼロを使って思ったのですが、、、

ラズパイゼロを使った装置(作品)を完成させて、いざ初回起動開始!のときに、「あれれ?うごかないぞ。。。」ってなった時や、「いままで動いてたのに急に動かなくなったぞ!?」って時に、無線LAN接続が使えればいいのですが、往々にして動かない時は、繋がらないもの。

なので、USBハブ+マウス+キーボード+HDMIモニタを接続して状況を確認・対処するということになるのですが、

それが自宅外とすると、そんなに機材を持ち歩くことは、しんどい!というか無理。

そこで、以前につい衝動買いで秋月で購入したUSB->RS232シリアル変換ケーブル「FTDI TTL-232R-3V3」(USB to TTL Serial Cable(3.3V)-1.8m)を使って、ラズパイとLinux(Debian)端末をシリアル接続する方法を以下に示す。

まずは、変換ケーブルの接続端子のピンアサインは、以下の通り。

黒=GND
 黄=RXD
 橙=TXD
 赤=Vcc(+5V)
 茶=CTS#
 緑=RTS#

この内、接続に必要なものは、黒と黄と橙の3つ。

一方、ラズパイのシリアル接続用のGPIOのピン番号は、
8番(TXD)、10番(RXD)、14番または6番(GND)

私のラズパイは、6番ピンをクーラーファンに使用しているため、14番としました。

6番ピンを使えれば、縦3つで横並びとなるので、3端子のコネクタがあれば、
変換ケーブルに既存の6端子コネクタから、うまい具合に端子を抜き取って※移植すれば、
ハンダ付けや工具や端子を購入する必要もなくなるかと思います。

※端子の抜き取り方法は、千枚通しとかシャーペン(壊れてもよいもの。要領が解れば壊すこともない)を使って、
コネクタ側面の端子金具が見える窓(=金具の出っ張りを引っ掛けるところ)に上記の道具の先を押し付けながら、
ケーブル方向に押し出すと、金属端子ごときれいに抜けるので、3端子のコネクタにそのまま差し込めると思います。

変換ケーブルとGPIOの接続は、以下の通りクロス接続させます。
 <変換ケーブル> |   <GPIO>
 黒(GND)   <=>  14番または6番(GND)
 黄(RXD)   <=>  8番(TXD)
 橙(TXD)   <=>  10番(RXD)

次に、ラズパイの方は、
/boot/cmdline.txtをエディタで開き、下記の箇所を確認の上修正。

 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

修正ないし確認した後、シリアルコンソール接続するため、ラズパイをシャットダウンしておく。

接続するDebian端末において、
変換ケーブルをUSBポートに接続させた後、コンソールプログラムを立ち上げて、以下のコマンドを実行し、変換ケーブルのデバイスファイルを確認する。

 $> dmesg
 [201786.992092] usb 5-1: new full-speed USB device number 2 using uhci_hcd
 [201787.188131] usb 5-1: New USB device found, idVendor=0403, idProduct=6001
 [201787.188142] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
 [201787.188150] usb 5-1: Product: TTL232R-3V3
 [201787.188156] usb 5-1: Manufacturer: FTDI
 [201787.188162] usb 5-1: SerialNumber: FTA3BBZ5
 [201788.243386] usbcore: registered new interface driver usbserial
 [201788.243444] usbcore: registered new interface driver usbserial_generic
 [201788.243491] usbserial: USB Serial support registered for generic
 [201788.247032] usbcore: registered new interface driver ftdi_sio
 [201788.247089] usbserial: USB Serial support registered for FTDI USB Serial Device
 [201788.247346] ftdi_sio 5-1:1.0: FTDI USB Serial Device converter detected
 [201788.247458] usb 5-1: Detected FT232RL
 [201788.247465] usb 5-1: Number of endpoints 2
 [201788.247472] usb 5-1: Endpoint 1 MaxPacketSize 64
 [201788.247478] usb 5-1: Endpoint 2 MaxPacketSize 64
 [201788.247484] usb 5-1: Setting MaxPacketSize 64
 [201788.252298] usb 5-1: FTDI USB Serial Device converter now attached to ttyUSB0
 以上の出力結果から、変換ケーブルのデバイスファイルは、”/dev/ttyUSB0”

さらに、Debian端末にて、シリアルポートがサポートされたターミナルプログラム(cuなど)をインストールする。

シリアル通信するデバイスを接続後、シリアル通信プログラムを実行して、シリアル通信が可能かを確認する。

参考)以下、シリアル通信プログラムとして、”cu”を使用して通信を確認する場合
% sudo chmod 666 /dev/ttyUSB0

補足)ラズパイのGPIOのシリアルポートは、”/dev/ttyUSB0”である。

% sudo cu -s 115200 -l /dev/ttyUSB0

と入力する(ボーレートとデバイス名は、接続機器にあわせて指定のこと)。

上記コマンド実行後,/dev/ttyUSB0に接続が成功すると,

Connected.

が表示され、ラズパイ待ち状態になるので、ラズパイの電源をONする。

しばらくすると、ラズバイのOS起動時のコンソール出力が、Debian端末のシリアル通信プログラムのウィンドウに表示される。

 pi@debian:~$ cu -s 115200 -l /dev/ttyUSB0
 Connected.
 [ 0.000000] Booting Linux on physical CPU 0x0
 [ 0.000000] Linux version 4.9.35+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #1014 Fri Jun 30 14:34:49 BST 2017
 [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
 [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
 [ 0.000000] OF: fdt:Machine model: Raspberry Pi Model B Plus Rev 1.2
 [ 0.000000] cma: Reserved 8 MiB at 0x17400000
 [ 0.000000] Memory policy: Data cache writeback
 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 97440
 [ 0.000000] Kernel command line: bcm2708_fb.fbwidth=1360 bcm2708_fb.fbheight=768 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
 [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
 ・・・・省略・・・・

ログインプロンプトが表示されるので、ラズパイのアカウント情報を入力してログインし、間違いなくシリアル接続したラズパイであることを確認する。

・・・・省略・・・・
 b1/1-1/1-1.5/1-1.5:1.0/0003:093A:2521.0003/input/input2
 [ 4.981346] hid-generic 0003:093A:2521.0003: input,hidraw2: USB HID v1.11 Mouse [USB OPTICAL MOUSE] on usb-20980000.usb-1.5/input0
 [ 5.017712] fuse init (API version 7.26)
 [ 5.061482] i2c /dev entries driver

Raspbian GNU/Linux 8 raspberrypi ttyAMA0

raspberrypi login: pi
 Password:
 Last login: Mon Oct 8 22:27:33 JST 2018 on tty1
 Linux raspberrypi 4.9.35+ #1014 Fri Jun 30 14:34:49 BST 2017 armv6l

The programs included with the Debian GNU/Linux system are free software;
 the exact distribution terms for each program are described in the
 individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 permitted by applicable law.
 pi@raspberrypi:~$

以上