タミヤのツイストクローラーをArduinoの Maker Pi RP2040ボードで動かしてみた
タミヤのツイストクローラーにArduinoで動くボード Maker Pi RP2040を組み込み,コントロールしてみました。→ ロボット組込に便利なボード Maker Pi RP2040 をArduino で動かす準備・ハード構成 組み立てキットに既製ボードを組み込むだけなので,,,楽しく作れます(^^)。このツイストクローラーは左右のクローラー(キャタピラ)が独立して動くリモコンタイプで,シンプルなマイコン制御にはピッタリです(^^)。障害物検知用に赤外線センサーをつけています。Maker Pi RP2040ボードに2個ついているDCモータードライブにクローラーキットに入っている左右のモーターをつないでいます。電源は手持ちで適当なものがなく,重くて少し非力ですが単三4本の6Vです。障害物検知用のセンサーはアナログ出力の赤外線測距センサSHARP GP2YDA21で,ボードのGP2にGroveコネクタでつないでいます。室内で走行させてみました。さすがに力強く動きますが,車幅にくらべて赤外線センサの認知範囲が狭いのでなかなかに危うい走行になっています(^^;;;;;。要改善です。・ソフトウェアとボードの接続ピン 既製ボードなので,モータードライバやサーボ接続などに対応するGPIOピンは決まっています。 → メーカー製品情報 モーターの動作テストプログラムです。前進・後進と左右(超信地旋回)でテストしています。6V電源なのでモーターの負担を考えてPWM値は最大160に設定しました。/*** TAMIYA Twist Crawler, Cytron Maker Pi RP2040 *** IR Sensor: SHARP GP2Y0A21YK (Analog), GP2 DC Motor 1(Right Crawler): Forward GP8, Backward GP9 2(Left Crawler): Forward GP10, Backward GP11 Sart button: GP21*/#define IR_Sensor 2#define Mortor_1_F 8#define Mortor_1_B 9#define Mortor_2_F 10#define Mortor_2_B 11#define Button_1 21const byte spd_Max=160; // Maximum Speed (pwm)void Move_set(byte F1,byte B1,byte F2,byte B2){ // Motor controll analogWrite(Mortor_1_F,F1); // Motor1 Forward analogWrite(Mortor_1_B,B1); // Motor1 Backward analogWrite(Mortor_2_F,F2); // Motor2 Forward analogWrite(Mortor_2_B,B2); // Motor2 Backward }void setup() { pinMode(Button_1, INPUT_PULLUP); Move_set(0,0,0,0);}void loop() { while(digitalRead(Button_1) > 0){}; // start button Move_set(spd_Max,0,spd_Max,0); // Forward 5sec delay(5000); Move_set(0,spd_Max,0,spd_Max); // Backrward 5sec delay(5000); Move_set(0,0,0,0); // Stop 1sec delay(1000); Move_set(spd_Max,0,spd_Max,0); // Forward 5sec delay(5000); Move_set(0,spd_Max,spd_Max,0); // turn Right 1.6sec delay(1600); Move_set(spd_Max,0,spd_Max,0); // Forward 5sec delay(5000); Move_set(spd_Max,0,0,spd_Max); // turn Leftt 1.6sec delay(1600); Move_set(0,0,0,0); // Stop} // loop end 障害物回避走行のプログラムです。 基本前進し,障害物を検知すると右に回転するだけの、動作テストより短いプログラムです(^^;;;;;;。 なお,赤外線センサはアナログ出力ですが,対象物と10cmぐらいの距離でデジタル出力"1"の電圧になります。手を抜いてdigitalReadでチェックしています。<pre/*** TAMIYA Twist Crawler, Cytron Maker Pi RP2040 *** IR Sensor: SHARP GP2Y0A21YK (Analog), GP2 DC Motor 1(Right Crawler): Forward GP8, Backward GP9 2(Left Crawler): Forward GP10, Backward GP11 Sart button: GP21*/#define IR_Sensor 2#define Mortor_1_F 8#define Mortor_1_B 9#define Mortor_2_F 10#define Mortor_2_B 11#define Button_1 21const byte spd_Max=160; // Maximum Speed (pwm)void Move_set(byte F1,byte B1,byte F2,byte B2){ // Motor controll analogWrite(Mortor_1_F,F1); // Motor1 Forward analogWrite(Mortor_1_B,B1); // Motor1 Backward analogWrite(Mortor_2_F,F2); // Motor2 Forward analogWrite(Mortor_2_B,B2); // Motor2 Backward }void setup() { pinMode(Button_1, INPUT_PULLUP); Move_set(0,0,0,0); while(digitalRead(Button_1) > 0){}; // Check the start button}void loop() { if (digitalRead(IR_Sensor) == 0){ Move_set(spd_Max,0,spd_Max,0); // Forward delay(100); }else{ Move_set(0,spd_Max,spd_Max,0); // turn Right delay(200); }} // loop end </pre単純で大した事ない動きでも,プログラムで自立して動くのを見るのは楽しいですね(^^)。ツイストクローラーはなかなか力があります。土台としては使いでがあると思いますので,これからどう使うかです。考えれば自動掃除ロボットとか,よくできていますね。