2024年2月1日木曜日

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

2020年に製作した落下回避ロボットカーについて記事にしました。
 VL53L0Xはレーザー反射時間により距離を求めています、テーブルの反射がないと走行方向を変えてテーブルから落下しないように走行します。(完璧でありません)









動画




●VL53L0X レーザー距離測定センサー (I2C)














● Arduino nano
●TB6612FNG モーター ドライバー モジュール  【https://www.amazon.co.jp/gp/product/B018VYJGRO/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1


●DCギアモータ規格不明です。
●ダイソーモバイルバッテリーより電源供給













回路図



Arduino IDE









プログラム
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X gVL530X;
 
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 setup() {
  Serial.begin(9600);
  Wire.begin();
  gVL530X.init();
  gVL530X.setTimeout(1000);
  gVL530X.startContinuous(100);
  
  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 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 loop() {
  dist = gVL530X.readRangeContinuousMillimeters();
  Serial.println(dist);
  if (gVL530X.timeoutOccurred()){
  Serial.println("timeout"); 
  }   
    
  if(dist > 200 || dist < 90 ){    
    Left();
    delay(200);    
  }
    Go();
}


0 件のコメント:

コメントを投稿

Raspberry Pi Donkey Car スマートカー

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