Wi-Fi/Bluetooth/ZigBee無線用Raspberry Piプログラム全集
書籍連携サポートページ by 国野 亘
このページについて
このたびは「Wi-Fi/Bluetooth/ZigBee無線用Raspberry Piプログラム全集」をお買い上げいただき、どうもありがとうございました。このページは筆者によるサポートページです。不具合情報や更新情報などを提供いたします。ブックマークに登録して、ご活用いただければ幸いです。
ダウンロード情報
GitHubの最新版ではXBee3シリーズに対応しました。P.89の「新しいXBee ZB シリーズS2Cについて」に記載している方法で、XBee3シリーズのデバイスタイプを変更することが出来ます。
GitHubからダウンロード可能な最新版では、スイッチサイエンスより2018年12月に国内販売が開始された「XBee3シリーズ」に対応 |
ウェブページ移転のお知らせ
Yahoo!ジオシティーズのサービス終了(2019年3月予定)に伴い、ウェブページの移転を行いました。
Raspberry Pi 3での利用について
最新モデルの Raspberry Pi 3や、Raspberry Pi Zero W では、内蔵Bluetooth機能の影響で、本書記載の機能の一部に制約があります。
- Raspberry Pi 3 / Pi Zero W での制約事項
- 拡張用GPIO端子を使った各種シリアル通信 (/dev/ttyAMA0)
Raspberry Pi 3 および Zero W の拡張用GPIO端子(8番ピンと10番ピン)上のシリアル端子を使用する場合は、内蔵の Bluetooth機能を無効する必要があります。USBシリアル変換アダプタやXBee USB エクスプローラを使用する場合は、問題ありません。
- sudo raspi-config もしくは設定メニューの「Interface」「Serial」でシリアルシェル(コンソール)を無効に、インタフェースを有効に設定する
- The serial login shell is disabled
- The serial interface is enabled
- leafpadなどを使って/boot/config.txtに以下の行を追加する
- リブートする
- バージョンによっては以下のコマンドを使って手動でシリアルシェル(コンソール)を無効にする必要がある
- $ sudo systemctl stop serial-getty@ttyS0.service
- $ sudo systemctl disable serial-getty@ttyS0.service
または
- $ sudo systemctl stop serial-getty@ttyAMA0.service
- $ sudo systemctl disable serial-getty@ttyAMA0.service
Raspberry Pi には、「PL011(/dev/ttyAMA0)」と「mini UART(/dev/ttyS0)」の2種類のシリアルIFが実装されており、PL011(/dev/ttyAMA0)はBluetoothにも接続されています。拡張用GPIO端子上でPL011(/dev/ttyAMA0)を使用するには、上記の方法でBluetoothを無効にするか、拡張用GPIO端子をmini UART(/dev/ttyS0)へ割り当てる必要があります。また、mini UART(/dev/ttyS0)はその名の通り限定的なシリアルIFで、通信エラーが発生しやすいようです。
なるべく、USBシリアル変換アダプタやXBee USB エクスプローラを使用してください。Raspberry Pi 2やZeroなど、Bluetoothを搭載していないモデルでは問題ありません。
- サンプル 45 (example45_ble_prev.c) BLEタグによる盗難防止システム
BLEタグとの通信が不安定で、タグが遠ざかることを上手く検出できない場合があります。今後、Raspberry Piのファームウェアの更新で改良されるかもしれませんが、ハードウェアの制約のため改良されない可能性もあります。
Bluetooth モジュール RN-42XVP の補足情報
- Bluetooth モジュール RN-42XVP-I/RM のデバイスを発見できるのに SPP RFCOMM で接続できない
Bluetooth モジュール RN-42XVP-I/RM (以下 RN-42XVP ) の9番ピンをHighにした状態でRN-42を起動すると、デバイスの発見は出来るのに接続が出来ないという状態になってしまいます。RN-42XVPの9番ピンをオープン、もしくはLowの状態で使用してください。
XBee USB エクスプローラを使用している場合、USBシリアル変換ICのDTR信号がRN-42XVPの9番ピンに接続されています。USBシリアル変換ICのUSB側に、PCまたはRaspberry PiがUSBで接続されていれば、DTRがLowになっているので問題ありません。しかし、PCやRaspberry Piが非接続だった場合や、接続後のDTR出力に時間がかかる場合などに、DTRがHighの状態でRN-42が起動してしまいます。
9番ピンがLowになっている状態で、RN-42をリセットすれば適切な状態で起動します。
以下は、見分け方です。
- 正常:RN-42XVP上のLEDが1秒間に2度の頻度(2Hz)で、点灯と消灯を繰り返す。
- 異常:RN-42XVP上のLEDが1秒間に1度の頻度(1Hz)で、点灯と消灯を繰り返す。
- 対策方法:RN-42XVPの9番ピンをLowにした状態で起動する
- 最新版の RN42-I/RM630 が起動しない。LEDが1秒間、高速点滅し、その後、暗く点灯する
Bluetoothモジュール RN-42XVP 上に実装されているBluetoothモジュール RN42-I/RM の最新版 RN42-I/RM630 では、起動後、LEDが1秒間、高速点滅し、その後、暗く点灯し、適切に起動しない現象が発生する場合があります。
- RN42-I/RM :従来品・ファームウェアのバージョンは不明(6.30の場合もある)。
- RN42-I/RM630 :ファームウェア書き換え対応品。ファームウェアバージョン 6.30。
- 不具合現象:起動後、LEDが1秒間、高速点滅し、その後、暗くなり、起動しない。
- 対策方法:RN-42XVPの7番ピンをLowにした状態で起動する
これは、ファームウェアのバージョン6.30以降の RN42-I/RM に、「Device Firmware Update (DFU) ファームウェアの書き換えモード」が搭載されたためで、RN-42XVPの7番ピンをHighにした状態で起動すると、書き換えモードで起動してしまうことが原因です。RN-42XVPの7番ピンをLowにした状態で起動することで、対策することが出来ます
製造元のMicrochipではモジュールの発注型番「RN42-I/RM630」を設定しており、モジュール上の型番表示を「RN41-I/RM630」に変更しています(末尾の630がバージョン6.30を示す)。ただし、単に「RN42-I/RM」と書かれているにも関わらず、バージョン6.30が書き込まれているものも混在しているので、見分けるには本書P.296以降のコマンドモードにて「V」コマンドを実行して確認してください。
本文中の誤りについて
本書中に誤り・情報不足がありました。ご不便をおかけしますが、以下の通り訂正させていただきます。
正誤表
頁
| 行
| 誤
| 正
|
14
| 第2節 左列 下から2行目
| 可能であれば2A
| 可能であれば2A(Raspberry Pi 3の場合は 2.5A)
|
23
| 第7節 左列 6行目
| LEDが完全に消灯するまで待ち
| LEDが点滅しなくなるまで待ち |
23
| 第7節 右列 6行目
| 緑のLEDが消灯してから
| 緑のLEDが点滅しなくなってから
|
23
| 第10節
| リモートデスクトップとxrdpを使用
| 最新のRaspbianにはVNC Serverがインストール されています。Raspberry Piの設定の「インター フェイス」タブ内の「VNC」を有効にしてください。 PC側のクライアントソフトは、VNC-Viewerをダ ウンロードしてください。 https://www.realvnc.com/
|
お問い合わせ先・更新情報の受け取り方法
筆者は雑誌に記載した内容以外のサポートは行っていません。購入方法や乱丁については、書店・出版社へお問い合わせください
免責事項
本書および当サイトで紹介した内容のご利用は自己責任でお願いします。出版社および筆者は一切の責任を負いません。
- 当ページは筆者によるサポートページです。(CQ出版社によるものではありません。)
- 本サポートページのリンクや情報公開はご遠慮ください。
- サンプル・プログラムの利用(複製、改変、配布)は自由ですが、補償はありません。また、著作権に関する情報の改変・削除はご遠慮ください。