記事一覧

pythonでシリアル通信(Raspberry Pi Zero WのBluetoothでMacと接続)

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秒でタイムアウトになるように設定)

pyserial01.png

基本的なコマンド

read() 一文字受信

>>> print(s.read())

read(x) ( )内の数だけ受信

>>> print(s.read(5))

readline() 改行\nまで受信

>>> print(s.readline())

pyserial02.png

Mac側で200,200,300,400改行としみた。
どうやら改行コードが\rで送られているみたい。
Timeout10秒で受信したようだ。ここらへんは今後改善。

write() 送信

Raspberry Pi Zero W -> Mac 送信
>>> s.write(b’hello’) byte列に返還のためbを付ける。

pyserial03.png

Mac側で受信
pyserial04.png

シリアルのクローズ

>>> s.close()

Macで自作ロボットコントロールアプリから送信

以前紹介したロボット操作ようMacアプリ(自作)で文字を送信してみます。

シリアルポートは/dev/cu.raspberrypi-SerialPortに設定。

pyserial05.png

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

pyserial06.png

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

pyserial07.png

Raspberry Piのpyserialで受信出来ました。

Send Data で各関節の角度を送信。今回は89,89,89,89改行を送信

pyserial08.png

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

pyserial09.png

これで近々Macの自作ロボットコントロールアプリからBluetooth経由でRaspberry Pi Zero Wに角度データを送信してサーボを動かせそうです。

それでは今回はこの辺で失礼します!ありがとうございます。

スポンサードリンク

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

Author:RoboTakao
みなさんご訪問ありがとうございます。ロボット作りたいけどお小遣いそんなにないし、簡単でローコストでロボットを作るための私のプロジェクトを紹介します。

ウェブサイトもありますのでそちらもよろしくお願いします。
http://robotakao.jp/

スポンサーリンク