2026年1月1日木曜日

PS4コントローラーによるロボットアーム操作

純正PS4コントローラー(Bluetooth通信)による6軸ロボットアームを操作しました(動作不安定ですが操作出来ました)

●ボードマネージャ esp32  
 by Espressif Systemsバージョン1.0.6
※バージョン3.2.0→コンパイルエラー















動画



参考サイト
●趣味的ロボット研究所
●いそぷろのブログ
●たいらのぶろぐ



回路図


















PS4コントローラー(Bluetooth)
PSボタンを押してペアリング











PS4-esp32-master libraries入手










【Code】【Download ZIP】
【PS4-esp32-master】圧縮ファイルを展開
【PS4-esp32-master】フォルダを任意のArduino librariesに貼付け


MACアドレスの確認













【LO4D.com UK】ダウンロード
【SixaxisPairToolSetup-0.3.1】任意ファイルにインストール


PS4コントローラーとパソコンをUSB接続
【SixaxisPairTool】実行する。
Current Master
【XX:XX:XX:XX:XX:XX】MACアドレス
   ↓
 ESP32 プログラム 
  PS4.begin("XX:XX:XX:XX:XX:XX")
MACアドレスを入力


ESP-32S 開発ボード
●ESP32 NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード(技適製品)








ESP32を2台登録すると1台目が接続できなくなる→解除方法
ESP32
【スケッチ例】
【BluetoothSerial】
【bt_remove_paired_devices】



bt_remove_paired_devices
【0】→【1】に変更

接続できないESP32に同プログラム書込→
プログラムを戻すと接続出来ました。
(ESP32の登録デバイスを解除)










プログラム Arduino IDE【ボード:NodeMCU-32s】
#include <PS4Controller.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN 150
#define SERVOMAX 600
void setup()
{    
  PS4.begin("XX:XX:XX:XX:XX:XX");
  Wire.begin(); //I2Cをマスターとして動作させる
  pwm.begin();
  pwm.setPWMFreq(60);  
  servo_write(0,90);
}
void loop()
{
if (PS4.isConnected()) {  
 
  if (PS4.R1()){
    servo_write(5,90);  
  }
  if (PS4.R2()){
    servo_write(5,180);
  }
 
  if (PS4.L1()){
    servo_write(4,30);
  }
  if (PS4.L2()){
    servo_write(4,120);
  }

   
  if (PS4.LStickX()) {
     int LSX = PS4.LStickX();
     LSX =  map(LSX, -128, 128, 0, 180);
     servo_write(0,LSX);  
    }
  if (PS4.LStickY()) {
     int LSY = PS4.LStickY();
     LSY =  map(LSY, -128, 128, 0, 180);
     servo_write(1,LSY);
    }
  if (PS4.RStickX()) {
     int RSX = PS4.RStickX();
     RSX =  map(RSX, -128, 128, 0, 180);
     servo_write(2,RSX);
    }
  if (PS4.RStickY()) {
     int RSY = PS4.RStickY();
     RSY =  map(RSY, -128, 128, 0, 180);
     servo_write(3,RSY);
    }
}
  delay(100);  
}

void servo_write(int n, int ang){ //サーボ番号・角度
ang = map(ang, 0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(n, 0, ang);
}




0 件のコメント:

コメントを投稿

ドローン ESP32 PS4コントローラー操作

PS4コントローラー と ESP32制御 ドローン をBluetooth 接続。 9軸 センサ BMX055 を読込 Madgwickフィルタ・PID 姿勢 制御による浮上テストを行いましたが、ホバリングに 程遠い操作です。 PS4コントローラーは電源オンと同時に接続され 操作し...