すぐにできる!Arduinoで赤外線ラジコンカー製作 (DCモーター制御) スケッチコード付き

Arduino UNO互換機を使って、DCモーターを赤外線で制御してラジコンを作成します。

材料
1. Arduino 2輪駆動 三輪スマートカー車体キット(Yahoo!ショッピングAmazon
2. Arduino(互換品) UNO R3
3. モータードライバー L298N
4. 赤外線受信モジュール(CHQ1838, 5V, 周波数:37.9KHz)
5. IRワイヤレスリモコン
6. アルカリ電池(単三×4、9V型角型電池×1)
7. 9V型角型電池用ホルダー×1、DCプラグ端子台×1
8. UNO R3ボード固定用ネジ×1・ナット×2、L298Nモジュール固定用ネジ×2・ナット×4、IR受信モジュール固定用ネジ×1・ナット×2、9V型角型電池用ホルダー固定用ネジ×2、ナット×2

上記全部セットはこちら(Yahoo!ショッピングAmazon)で買えます

写真のように組立をしていきます。
①下段車体にモーター2個と車輪3個を取り付ける
②下段シャーシにL298Nモータードライバーを取り付ける
③モーター2個とL298NのMOTORA、MOTORBとを繋ぐ(要マイナスドライバー)
④上段シャーシにArduino UNOと単三用電池ボックス、9V角型電池用ボックスを取り付ける
⑤単三電池ボックスのプラスマイナス導線をL298NのGNDとVMSに繋ぐ

 

⑥Arduino UNOとL298Nモータードライバーを下記のように接続する
※上段と下段のシャーシはまだネジで接続して固定しない(最後に行う)
※Arduinoへの接続ピン番号は適当に選んで繋げただけなので、自由に変更してOKです。
それに合わせてスケッチ内の該当ピンナンバーを変更するだけで動きます。

L298NとArduinoのピン接続は下記
ENA ⇒ 5
IN1 ⇒ 2
IN2 ⇒ 4
IN3 ⇒ 8
IN4 ⇒ 7
ENB ⇒ 10

⑦IRレシーバーモジュールとArduinoを下記のようにピン接続する
S ⇒ 12
+ ⇒ 5V
GND ⇒ GND

⑧Arduinoに下記スケッチを書込む⇒リモコン操作で動作確認できたら、上段と下段のシャーシをネジで固定するのをお勧め(配線間違いで何度もネジを外したりするのを避ける為)⇒終了
【詳細】
IRワイヤレスリモコンの7つのボタンを前、後、左、右、停止、右回転、左回転に使用します。
また、使用する7つのボタンを下記のように解析したので、そのHEXコードをスケッチ内で使用します。
※リモコン毎に赤外線コード割り当てが違うので、動かない場合にはご使用のリモコンの赤外線コードを解析して、スケッチ内の該当箇所を変更してください
↑(前): 0x00FF629D
↓(後): 0x00FFA857
→(右): 0x00FFC23D
←(左): 0x00FF22DD
OK(停止): 0x00FF02FD
1(左回転): 0x00FF6897
2(右回転): 0x00FF9867

下記がUNO R3用のスケッチコード

#include <IRremote.h>
// Author Fumiyoshi.Yotsugi @ Wind Abaft Co.,Ltd.

int RECV_PIN = 12; //IR受信データピンを12に設定

IRrecv irrecv(RECV_PIN);
decode_results results;

// モーターコントローラー(L298N)とArduino UNO R3の接続
// motor A
int enA = 5;
int in1 = 2;
int in2 = 4;
// motor B
int enB = 10;
int in3 = 7;
int in4 = 8;


void setup()

{
irrecv.enableIRIn();

// モーターコントロールピンをoutputにセット
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {

if (irrecv.decode(&results)) {
irrecv.resume();

if (results.value == 0x00FF629D){ // ↑ボタンを押すと前進

  // turn on motor A
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  // スピードは 200に設定、 0~255の範囲で設定できるが100以下だとV不足で回らないこともある
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  // スピードは 200に設定、 0~255の範囲で設定できるが100以下だとV不足で回らないこともある
  analogWrite(enB, 200);

}else if(results.value == 0x00FF22DD){ // ←ボタンを押すと左折する 

 // motor Aを前進させてmotor Bは止める
  // turn on motor A
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  analogWrite(enB, 200);
  
}else if(results.value == 0x00FF6897){ // ボタン1を押すと左回転 

 // motor Aは前進、motor Bは後進
  // turn on motor A
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enB, 200);
  
}else if(results.value == 0x00FFC23D){ // →ボタンを押して右折する 

// motor Aは止めてmotor Bは前進 
  // turn on motor A
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enB, 200);

}else if(results.value == 0x00FF9867){ // ボタン2を押すと右回転 

// motor A後進、motor B前進 
  // turn on motor A
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enB, 200);

} else if(results.value == 0x00FFA857){ // ↓ボタン押すと後進(バック)

// motor A後進、motor B後進 
  // turn on motor A
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enB, 200);

}else if(results.value == 0x00FF02FD){ // OKボタン押すと停止(ストップ) 

// motor A停止、motor B停止 
  // turn on motor A
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  analogWrite(enB, 200);

}

}

}

※2WD3輪車体の場合、モーターを付けていない白の後輪車輪が動いてしまい、前進や後進時に曲がって進んでしまいます。4WD4輪車体の場合には、それが解消されますので、気になる場合には4WD4輪車体をご利用ください

【完成写真】


ロボットスクール様や塾で教材として使用したい方向けに、本資材のご提供やカスタマイズ、出張講義も可能です!

是非お問い合わせください!