Raspberry PiのGPIOポートのTxd/Rxdピンは、初期状態では外部機器と通信できるような設定になっていない。
■ Linux設定の変更
GPIOのシリアルポート(Txd/Rxd)を通信用に使えるようにするため、次の設定ファイルを書き換えてから再起動する。
参考資料
・Arduino and Raspberry Pi Serial Communication
・Raspberry Pi and the Serial Port
・Raspberry PiとAruduinoでシリアル通信
/boot/cmdline.txt
dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
もとの設定は ”dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
” なので、太字にした部分が削除されている。
/etc/inittab
#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 ← コメントアウトする
inittab最下行のttyAMA0に関する部分をコメントアウトするか削除する。
■ テスト回路で実験
回路図
pic側のボードには、別の目的用に付けたピンが大量に並んでいます…。
Raspberry pi上でminicomを起動してシリアル送受信のテストを行う。
$ sudo minicom -b 2400 -o -D /dev/ttyAMA0
オシロスコープで波形を観察してみる
1目盛が2Vなので、シリアル出力は3.3Vではなく3.5V程度あるようだ。
pic側に3.3Vを給電しなくても、Raspberry piのTxd/Rxd/GNGと相互結線すれば、それらの線から送られてくる電力でpicが稼動してしまう。