pythonでシリアル通信(Raspberry Pi Zero WのBluetoothでMacと接続)
- 2018/02/12
- 17:37
pythonでシリアル通信(Raspberry Pi Zero WのBluetoothでMacと接続)
RoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。
これまで、Raspberry Pi Zero WとMac間でBluetooth経由でシリアル通信をテストしてきましたが、ここでシリアル通信をpythonで実現したいと思います。
pyseialのインストール
sudo apt-get install python-serial
Raspbian jessieではインストール済みのようです。
rfcommをlistenする。
これまでにBluetoothでRaspberry Pi Zero WとMacがペアリングされていて、シリアルポート登録が終わっているとします。
詳しくは以前の記事を参照してください。
pi@raspberrypi:~ $ sudo rfcomm listen /dev/rfcomm0 1
iTermなどのターミナルソフトでscreenしておきます。(シリアルポートが接続)
itermの簡単な説明はこちらを参照してください。
python3側の操作
pi@raspberrypi:~ $ python3
>>> import serial
>>> s = serial.Serial('/dev/rfcomm0', 9600, timeout=10)
>>> print(s.readline())
iTerm側で文字を打ち込みます。改行するとpython側で表示されます。
(10秒でタイムアウトになるように設定)

基本的なコマンド
read() 一文字受信
>>> print(s.read())
read(x) ( )内の数だけ受信
>>> print(s.read(5))
readline() 改行\nまで受信
>>> print(s.readline())

Mac側で200,200,300,400改行としみた。
どうやら改行コードが\rで送られているみたい。
Timeout10秒で受信したようだ。ここらへんは今後改善。
write() 送信
Raspberry Pi Zero W -> Mac 送信
>>> s.write(b’hello’) byte列に返還のためbを付ける。

Mac側で受信

シリアルのクローズ
>>> s.close()
Macで自作ロボットコントロールアプリから送信
以前紹介したロボット操作ようMacアプリ(自作)で文字を送信してみます。
シリアルポートは/dev/cu.raspberrypi-SerialPortに設定。

以下のボタンを押すとそれぞれ一文字送信するような仕様です。

Forward “F”送信
Left “L”送信
Back “B”送信
Right “R”送信

Raspberry Piのpyserialで受信出来ました。
Send Data で各関節の角度を送信。今回は89,89,89,89改行を送信

こちらも\nを最後につけて受信出来ました。

これで近々Macの自作ロボットコントロールアプリからBluetooth経由でRaspberry Pi Zero Wに角度データを送信してサーボを動かせそうです。
それでは今回はこの辺で失礼します!ありがとうございます。
スポンサードリンク
MacからBluetooth経由でRaspberry Piにシリアル通信で角度データを送信してArduinoでサーボを動かす。
ホーム
Raspberry Pi Zero WでBluetooth経由でシリアル通信でログインする