RCB-4とRaspberryPiの接続方法
はじめに
RCB-4とRaspberryPi 3 Model Bを接続する方法について説明します。
紹介時の環境
Raspberry Pi 3 Model B
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch
対応機種
以下の解説は、両ボードとも共通に対応する内容ですが、基板上のコネクタが異なる場合がありますのでご注意ください。
電源について
RaspberryPi 3Bは最大で2.5A消費するといわれています。特に、サーボモータで瞬間的に電流が必要になった場合、電圧降下でRaspberryPi本体がリセットがかかってしまう可能性があります。そのため、RCB-4とRaspberryPiの電源は、別系統にすることを推奨します。
RCB-4では、ロボットに搭載しているサーボに適した動力用のバッテリー、RaspberryPiでは別系統でACアダプタやモバイルバッテリーをご利用ください。
ただし、通信を行うため、GNDは共通にしてください。
RaspberryPi3とRCB-4の接続方法
RaspberryPiとRCB-4を接続する方法は2種類あります。
1.USB経由で接続する
従来は、モーションの作成や登録をする際にWindows PCとRCB-4をDaul USBアダプターHS(シリアルモード)で接続していましたが、RaspberryPiも同じようにUSB経由で接続することができます。
USBを使用して接続する場合、ドライバ(カーネル)のインストールが必要です。「弊社USBアダプタをLinuxで使うには(2019版)」を参考にインストールしてください。
2.UARTで接続する
弊社では、RCB-4の信号をUARTに変換するための「RCB-4変換基板」を販売しています。
この基板はArduino等のマイコンボードだけでなく、RaspberryPiでも使用できます。
RaspberryPiの信号が3.3Vに対してRCB-4は5Vですが、変換基板内で電圧の変換をしていますので、各端子に接続すれば簡単に通信することが可能になります。
UARTを使用する方法について
RaspberryPi3からは、BluetoothのUARTをttyAMA0で使われてしまいました。
その代わりにRaspberryPiのUARTにソフトウェア上で制御を行う簡易シリアル(ttyS0)に割り当てられました。
RaspberryPiで使用しているttyS*は、CPUのコアクロックに依存していたり、パリティの設定ができないため使用できません。
通信する方法としては、下記の候補があります。
・UARTを諦めてDual USBアダプターHS(シリアルモード)を使用する
・Bluetoothの設定を外してしまう
UARTで使用するためにはBluetoothを諦めるしかありませんので、Bluetoothの設定を外してUARTにttyAMA0を使用する方法を紹介します。
ただし、UARTのコンソール経由でログインができなくなりますので、予めご注意ください。
-
初期設定でUARTが使えるようにしておく
1 |
sudo raspi-config |
5 Interfacting Option -> P6 Serial
"Would you like a login shell to be accessible over serial?"
(シリアルでシェルにログインしますか?) ->No (いいえ)
"Would you like the serial port hardware to be enabled?"
(シリアルを有効にしますか?) -> Yes (はい)
を行って再起動をかける。
-
起動時の設定を変更する
/boot/config.txtを編集することで起動時の設定を追加、変更ができます。
root権限でしかアクセスできませんので注意が必要です。
1 |
$ sudo nano /boot/config.txt |
テキストエディアはnanoを使用しましたが、ほかのエディタでもかまいません。
一番最後に下記を記述します。
1 2 3 4 5 |
# UART enable enable_uart=1 # BT disable dtoverlay=pi3-miniuart-bt |
UARTを有効にし、BluetoothのUARTを無効にします。
次に、コンソールでログインできないようにするため、/boot/cmdline.txtを編集します。
1 |
$ sudo nano /boot/cmdline.txt |
その中に、
1 |
dwc_otg.lpm_enable= ...... |
があるのですが、その中に
1 |
console=serial0,115200 |
がありますので、その部分だけ消してください。
場合によっては「serial0」ではなく「ttyAMA0」の時がありますが同様に消してください。
編集が終わりましたら再起動をします。
動作確認
動作を確認するため、RCB-4の緑色のLEDを点滅させます。
Dual USBアダプターHS(Serialモード)の場合も同じように確認ができますが、/dev//ttyAMA0の代わりにUSBに割り当てられたポート(/dev/ttyUSB*)をお使いください。
/dev//ttyAMA0に直接コマンドを送りますので、/dev//ttyAMA0の設定をRCB-4に合わせます。
通信速度 | 115200bps |
パリティ | 偶数(even) |
スタート | 1bit |
ストップ | 1bit |
※通信速度はデフォルトで115200bpsですが、RaspberryPiが対応できていれば設定次第で1.25Mbpsに変更も可能です。
コマンドで行う場合、
/dev/ttyAMA0を115200bpsに設定(出力のみ)
1 |
sudo stty -F /dev/ttyAMA0 ospeed 115200 |
/dev/ttyAMA0を偶数パリティに設定
1 |
sudo stty -F /dev/ttyAMA0 parenb -parodd |
コマンドの詳細は省略しますが、configのレジスタの15bit目を1にすると点灯、0にすると消灯をします。
|
コマンド(16進数 バイナリデータ) |
点灯 |
09 00 02 00 00 00 11 82 9E |
消灯 | 09 00 02 00 00 00 11 02 1E |
※1.25Mbps通信を行う場合はconfigレジスタに通信速度を変える部分がありますのでコマンドが変わります。
このコマンドを/dev/ttyAMA0に送る場合は、
点灯
1 |
echo -en "\x09\x00\x02\x00\x00\x00\x11\x82\x9E" >/dev/ttyAMA0 |
消灯
1 |
echo -en "\x09\x00\x02\x00\x00\x00\x11\x02\x1E" >/dev/ttyAMA0 |
コマンドを送って点灯、消灯が確認できると成功です。
失敗時の確認事項
失敗をしている場合は下記の原因が考えられます。
・RCB-4とRaspberryPiが接続されていない、もしくは接続方法が間違っている
・RCB-4自体の電源が入っていない
・設定の漏れでBluetoothの設定がONになっていたりUARTが有効になっていない
・設定を行ったが再起動を行っていない
・コマンドを送るときに/dev/ttyAMA0の設定をしていない
以上の手順で接続ができるようになりました。ほかの記事でも、RaspberryPiに関連する内容をご紹介していますので、ぜひご参照ください。
関連記事
RCB-4 Library for Python ver.1.0.0B
RCB-4 Library Arduino版(V1.1)とPython版(V1.0.0B)の違いについて
KHR-3HV Ver.3.1 リフェバッテリー付きセットの詳細をみる KHR-3HV Ver.3 リフェバッテリー付きセットの詳細をみる RCB-4HVボードのみの詳細をみる KMR-M6 Ver.3 リフェバッテリー付きセットの詳細をみる RCB-4miniの詳細をみる KHR-3HV Ver.2 リフェバッテリー付きセットの詳細をみる KXR-L2 ヒューマノイド型 Ver.2の詳細をみる KXR-L4T-R カメ型・ローバー型 Ver.2(アカデミックパック)の詳細をみる KXR-A5 アーム型 Ver.2の詳細をみる KXR アドバンスセットA Ver.2の詳細をみる KXR アドバンスセットB Ver.2の詳細をみる