###### tags: `つくばロボットコンテスト2021` `Tsukuba Univ` # Raspberry PiとArduino UNOの通信プロトコル ## Raspberry Pi to Arduino UNO **計24byteの固定長データ** - 2byte: 信号種類 - 10: ステッピングモータ(右) - 20: ステッピングモータ(左) - ステッピングモータの左右は機体後方から見たときのもの - 30: ステッピングモータ(左右) - 40: ボール認識用測距センサ測定指示 - 50: ライントレーサ測定指示 - 51: ライントレーサ初期設定 - 60: カメラ用サーボモータ(上) - 70: カメラ用サーボモータ(下) - 80: 9軸測定指示 - 4byte: ランダムなID - 1byte: 回転方向 - 0: 右回転 - 1: 左回転 - 2: ロック - 3: 前進(左右) - 4: 後進(左右) - 5: 右旋回 - 6: 左旋回 - 軸を正面に見たときの方向 - 1byte: 信号種類 - 0: (1)角速度```deg/ms```と(2)総角度```deg``` - 1: (1)角速度```deg/ms```と(2)時間```ms``` - 2: 回転開始 - 3: 回転停止 - 4byte: データ(1)(右) - 4byte: データ(2) - 4byte: データ(3)(左) - 4byte: データ(4) ## Arduino UNO to Raspberry Pi **計42byteの固定長データ** - 2byte: センサ種類 - 10: ステッピングモータ(右)動作完了 - 20: ステッピングモータ(左)動作完了 - 30: ステッピングモータ(左右)動作完了 - 40: ボール認識用測距センサ測定結果 - 50: ライントレーサ測定結果 - 60: サーボモータ(上)動作完了 - 70: サーボモータ(下)動作完了 - 80: 9軸センサ測定結果 - 4byte: ランダムなID - 4byte * 3軸 * 3種類: データ(単精度浮動小数点数) - 10: ステッピングモータ(右)動作完了 - データ1:角速度 - データ2:総角度or時間(ms) - 20: ステッピングモータ(左)動作完了 - データ1:角速度 - データ2:総角度or時間(ms) - 20: ステッピングモータ(左)動作完了 - データ1:角速度 - データ2:総角度or時間(ms) - データ3:角速度 - データ4:総角度or時間(ms) - 40: ボール認識用測距センサ測定結果 - データ1:距離(mm) - 50: ライントレーサ測定結果 - データ1:ライン上にある時:1 ない時:0 - 60: サーボモータ(上)動作完了 - データ1:角速度 - データ2:総角度or時間(ms) - 70: サーボモータ(下)動作完了 - データ1:角速度 - データ2:総角度or時間(ms) - 80: 9軸センサ測定結果 - データ1:X加速度 - データ2:Y加速度 - データ3:Z加速度 - データ4:X角速度 - データ5:Y角速度 - データ6:Z角速度 - データ7:X地磁気 - データ8:Y地磁気 - データ9:Z地磁気 #### JSONで送信 \>#{"SignalType" : 00, "UniqueID" : 00, "AccelX" : 00, "AccelY" : 00, "AccelZ" : 00, "GyroX" : 00, "GyroY" : 00", GyroZ" : 00, "Direction" : 00, "Temperature" : 00, "LineTracer" : 0or1} 値はすべて小数点以下2桁のfloat, LineTracerのみint ## RaspberryPiの通信仕様 ### 送信 - Arduino側からStop信号が来ない限り10msごとにキューにたまったパケットを送信 - Arduino側からStop信号が来た場合、RaspberryPiは一旦送信を停止 - 受信信号としてArduino側から送信済みパケットのrand_idが返ってきた場合に送信を再開 ### 受信 - Arduino側から来るパケットを常にリッスンしており、受信するたびにイベントを発火する ## Arduinoの通信仕様 ### 送信 - RaspberryPi側からパケットを受け取る前にStop信号を送信し、受け取り終わるとパケットのrand_idを送信 - 測定または動作が終わったときにパケットを送信 ### 受信 - RaspberryPi側から来るパケットを常にリッスンしており、受信するたびに動作を開始する
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up