2024年2月1日木曜日

落下回避 ロボットカー Arduino VL53 RemoteXY操作



Arduino nano 落下回避 ロボットカーをスマホアプリRemoteXYで走行操作してみました。
[Module]HC-05(06)Bluetoothを選択しますが、HC-5(06)Bluetoothモジュールは技適製品でありません。代替品にRN-42 Bluetooth無線モジュール技適製品を使いました。
●同ブログ関連記事:【RemoteXY使い方】【落下回避ロボットカー Arduino VL53


動画



RN-42 Bluetooth無線モジュール
販売元:秋月電子通商【https://akizukidenshi.com/catalog/g/g108690/
●RN-42Bluetoothバージョン2.0、1.2、1.1と下位互換
(HC-05(06)Bluetooth バージョン2.0) 
●技適製品








通信ボーレートをRemoteXY SERIAL_SPEED 9600に合わせる

抵抗3.3KΩをIO7とVDD(3.3V)に接続する。(115200 → 9600bps)



Properties】【Configuration】設定変更
[Connection]Bluetooth
[Board]Arduino Nano
[Module]HC-05(06)Bluetooth 
【Apply】実行
【Button】をスマホ画面に貼付け形・色・文字を入力
作成したら。
button_1 【G】
button_2 【S】
button_3 【B】
button_4 【R】
button_5 【L】

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






回路図




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

#include <RemoteXY.h>

// RemoteXY connection settings 
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =   // 60 bytes
  { 255,5,0,0,0,53,0,16,138,1,1,1,22,6,20,18,177,31,71,0,
  1,1,22,28,20,18,176,31,83,0,1,1,22,50,20,20,177,31,66,0,
  1,1,1,28,19,18,177,31,76,0,1,1,44,28,18,18,177,31,82,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_5; // =1 if button pressed, else =0 
  uint8_t button_4; // =1 if button pressed, else =0 

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

} RemoteXY;
#pragma pack(pop)

const int motorR2 = 4;  // 
const int motorR1 = 5;  //
const int motorRp = 6;  //
const int motorL2 = 7;  // 
const int motorL1 = 8;  // 
const int motorLp = 9;  //
const int STBY = 10;
int dist;

void Go() {
  digitalWrite( motorLp, HIGH );
  digitalWrite( motorL1, HIGH );
  digitalWrite( motorL2, LOW );
  digitalWrite( motorRp, HIGH );
  digitalWrite( motorR1, HIGH );
  digitalWrite( motorR2, LOW );
}
void Back(){
  digitalWrite( motorLp, HIGH );
  digitalWrite( motorL1, LOW );
  digitalWrite( motorL2, HIGH );
  digitalWrite( motorRp, HIGH );
  digitalWrite( motorR1, LOW );
  digitalWrite( motorR2, HIGH );  
}
void Stop(){
  digitalWrite( motorLp, LOW );
  digitalWrite( motorRp, LOW );
}
void Right(){
  digitalWrite( motorLp, HIGH );
  digitalWrite( motorL1, HIGH );
  digitalWrite( motorL2, LOW );
  digitalWrite( motorRp, HIGH );
  digitalWrite( motorR1, LOW );
  digitalWrite( motorR2, HIGH );
}

void Left(){
  digitalWrite( motorRp, HIGH );
  digitalWrite( motorR1, HIGH );
  digitalWrite( motorR2, LOW );
  digitalWrite( motorLp, HIGH );
  digitalWrite( motorL1, LOW );
  digitalWrite( motorL2, HIGH );
}
 



void setup() 
{
  RemoteXY_Init ();
   
  pinMode( motorL1, OUTPUT );
  pinMode( motorL2, OUTPUT );
  pinMode( motorLp, OUTPUT );
  pinMode( motorR1, OUTPUT );
  pinMode( motorR2, OUTPUT );
  pinMode( motorRp, OUTPUT );
  pinMode( STBY, OUTPUT );
   
  digitalWrite( motorL1, LOW );
  digitalWrite( motorL2, LOW );
  digitalWrite( motorLp, LOW );
  digitalWrite( motorR1, LOW );
  digitalWrite( motorR2, LOW );
  digitalWrite( motorRp, LOW );
  digitalWrite( STBY, HIGH );
  }
 
void loop() 
  RemoteXY_Handler ();
  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 のカメラからコースを ディープラーニングさせ自動走行を行います。(動画は白線上を自動走行)   動画