記事一覧

MacからBluetooth経由でRaspberry Piにシリアル通信で角度データを送信してArduinoでサーボを動かす。

MacからBluetooth経由でRaspberry Pi Zero Wにシリアル
通信で角度データを送信してpythonで受け取りつつArduino NanoにI2Cでデータ送信してサーボを動かす。


RoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。
タイトルが長すぎですが、最近の集大成のような報告です。そもそも何を目的にしているかというと、Raspberry PiをMasterにしてArduino NanoをSlaveで使ってサーボを駆動するが、そのRaspberry PiはMacからBluetoothでサーボの角度データを送ってコントロールしたいと思っていたわけです。
py_servo_seri00.jpg
流れ
1) Macの自作アプリで角度データをBuletooth xシリアル通信で送信
2) Raspberry Piでデータを受信(python使用)
3) Raspberry Pi でArduinoにI2Cで角度データ送信(python使用)
4) Arduinoでサーボを駆動
py_servo_seri01.png
それぞれは過去の投稿を参照していただけると嬉しいです。
1) Macでの自作コントロールアプリ(x-code)
2) Raspberry Pi Zero WとMacをBluetooth x シリアル通信でつなぐ
3) Raspberry PiとArduinoをI2Cでつなぐ
動作
Mac上のコントロールアプリで角度データを入れて送信すると角度データがRaspberry Pi上のpythonの画面で表示される。
さらにArduinoにデータ送信される。(ArduinoはMacにつながっているのでMac上のIDEのシリアルモニターで確認すると角度データが表示される。)
Arduinoは入力した角度にサーボを駆動。

Arduinoのスケッチ

#include
#include

Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;

int cmd;
int ang[]= {90,90,90,90};

void setup()
{
myservo2.attach(2);
myservo3.attach(3);
myservo4.attach(4);
myservo5.attach(5);

Wire.begin(8);
Wire.onReceive(receiveEvent);

Serial.begin(9600);

}

void loop()
{
myservo2.write(ang[0]);
myservo3.write(ang[1]);
myservo4.write(ang[2]);
myservo5.write(ang[3]);

delay(100);
}

void receiveEvent(int howMany)
{
cmd =Wire.read();
for (int i=0; i <=3; i++){
ang[i]= Wire.read();
}
for (int i=0; i <=2; i++){
Serial.print(ang[i]);
Serial.print(",");
}
Serial.println(ang[3]);
}


python(Raspberry Pi)のコード

import smbus
import time
import serial

angleA0 = [0, 0, 0, 0]

bus = smbus.SMBus(1)

SLAVE_ADDRESS_A = 0x08
CMD = 0x00

s = serial.Serial('/dev/rfcomm0', 9600)

while True:
ang = s.readline()[0:-1]
ang_sp = ang.decode().split(',')
angleA0 = [int(ang_sp[0]), int(ang_sp[1]), int(ang_sp[2]), int(ang_sp[3])]
bus.write_i2c_block_data(SLAVE_ADDRESS_A, CMD, angleA0)
print(angleA0)
time.sleep(1)


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

スポンサードリンク

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

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

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

スポンサーリンク