2024年1月1日月曜日

障害物回避ロボットカー ESP32 RemoteXY操作

障害物回避ロボットカーをスマホアプリ[RemoteXY]を使って走行操作してみました。(障害物回避無し走行操作)
●ESP32NodeMCU開発ボード
(技適製品)
●同ブログ関連記事:【RemoteXY使い方】【障害物回避ロボットカー ESP32

動画





Properties】【Configuration】設定変更
[Connection]WiFi access point
Board]ESP32 based board
[Module]WiFi on chip
【Apply】実行
【Button】をスマホ画面に貼付け形・色・文字を入力
作成したら。
button_1 【G】
button_2 【S】
button_3 【B】
button_4 【R】
button_5 【L】

【Get source code】実行
コードをArduino IDE エディタ画面に貼付てスケッチを行う。






Arduino IDE





プログラム
// RemoteXY select connection mode and include library 
#define REMOTEXY_MODE__ESP32CORE_WIFI_POINT
#include <WiFi.h>

#include <RemoteXY.h>

// RemoteXY connection settings 
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =   // 60 bytes
  { 255,5,0,0,0,53,0,16,20,1,1,1,14,5,37,21,5,24,71,0,
  1,1,20,30,22,31,5,24,83,0,1,1,14,65,37,21,5,24,66,0,
  1,1,44,30,17,31,5,24,82,0,1,1,1,30,17,31,5,24,76,0 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  uint8_t button_1; // =1 if button pressed, else =0 
  uint8_t button_2; // =1 if button pressed, else =0 
  uint8_t button_3; // =1 if button pressed, else =0 
  uint8_t button_4; // =1 if button pressed, else =0 
  uint8_t button_5; // =1 if button pressed, else =0 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

#define LM1Pin    33      // AIN1 左モーター DRV8835
#define LM2Pin    32      // AIN2 左モーター
#define RM1Pin    26      // BIN1 右モーター
#define RM2Pin    25      // BIN2 右モーター
int PWM=250;              //モーター回転数制御

void Go(){
  ledcWrite(0, PWM);      
  ledcWrite(1, 0);           
  ledcWrite(2, PWM);          
  ledcWrite(3, 0); 
}

void Back(){
  ledcWrite(0, 0);      
  ledcWrite(1, PWM);           
  ledcWrite(2, 0);          
  ledcWrite(3, PWM); 
}

void Right(){
  ledcWrite(0, PWM);      
  ledcWrite(1, 0);           
  ledcWrite(2, 0);          
  ledcWrite(3, PWM); 
}

void Left(){
  ledcWrite(0, 0);      
  ledcWrite(1, PWM);           
  ledcWrite(2, PWM);          
  ledcWrite(3, 0);  
}

void Stop(){
  ledcWrite(0, 0);      
  ledcWrite(1, 0);           
  ledcWrite(2, 0);          
  ledcWrite(3, 0);   
}

void setup() 
{
  RemoteXY_Init ();   
  // TODO you setup code

  pinMode(LM1Pin, OUTPUT); // AIN1
  pinMode(LM2Pin, OUTPUT); // AIN2
  pinMode(RM1Pin, OUTPUT); // BIN1
  pinMode(RM2Pin, OUTPUT); // BIN2

  ledcSetup(0,490,8);     // モータ 0CH 490Hz 8bit=0-255(PWM)
  ledcSetup(1,490,8);     
  ledcSetup(2,490,8);     
  ledcSetup(3,490,8);
  ledcAttachPin(LM1Pin, 0); // モータ 0CH
  ledcAttachPin(LM2Pin, 1);
  ledcAttachPin(RM1Pin, 2); 
  ledcAttachPin(RM2Pin, 3);
  Stop();
  delay(100); 
}

void loop() 
  RemoteXY_Handler ();  
  // TODO you loop code
  // use the RemoteXY structure for data transfer
  // do not call delay() 

  if(RemoteXY.button_1 == 1)Go(); 
  if(RemoteXY.button_2 == 1)Stop(); 
  if(RemoteXY.button_3 == 1)Back(); 
  if(RemoteXY.button_4 == 1)Right(); 
  if(RemoteXY.button_5 == 1)Left(); 
}





 

0 件のコメント:

コメントを投稿

Raspberry Pi Donkey Car スマートカー

  2020年に製作したDonkey Car スマートカー について記事にしました。 Donkey CarはRaspberry Pi のカメラからコースを ディープラーニングさせ自動走行を行います。(動画は白線上を自動走行)   動画