Kのアイコン画像
K 2020年04月28日作成 (2020年05月02日更新)
製作品 製作品 閲覧数 17003
K 2020年04月28日作成 (2020年05月02日更新) 製作品 製作品 閲覧数 17003

Arduino UnoとHC-06Bluetoothモジュールを使ってラジコンカーを製作してみた

はじめに

Arduino Uno R3とHC-06Bluetoothモジュールを使ってラジコンカーを製作しました。
実際に完成した車体はこんな感じです。ジャンパワイヤで配線しているのでごちゃごちゃですね。
テストの為ブレッドボード上で配線したので、これからはんだ付け、回路小型化等やっていきたいと思います。

製作したラジコンカー

※HC-06は安価で手軽ですが、残念な事に現在購入できるものは技適マークが付いていないため日本国内ではそのままでは使用できません。通信はBluetooth 2.0+EDR形式で通信範囲は10m程度なので使用しても問題は出ないと思いますが、国内で使用する場合には自分で技適を取るか、電波暗室等の外部に電波が漏れない場所で使う必要があります。注意してください。

使用したもの

Arduino Uno R3
・HC-06Bluetoothモジュール
・Androidのスマートフォン(コントローラー用)
・モータードライバーTA7291P 2個
ジャンパワイヤ
ミニブレッドボード
10kΩ抵抗×2
ユニバーサルプレートセット
オフロードタイヤセット
ツインモーターギヤーボックス
ボールキャスター
セラミックコンデンサ×2
電解コンデンサ×2
単三電池×4(モーター電源用)
9V角乾電池(Arduino電源用)
電池ボックス
バッテリースナップ

※上記は基本的に秋葉原にある秋月電子さんで購入することができます。筆者もそこで購入しました。

回路図

ラジコンカーの配線図です。配線図はFritzingを用いて作成しました。

ラジコンカーの配線図

Arduino Uno R3とHC-06のTX, RXを互いに逆に接続することに注意してください!

プログラム

ラジコンカーのプログラムです。Arduinoの統合開発環境であるArduino IDEを用いて作成しました。
簡単にプログラムの説明をします。
まず最初に、コントローラー側(スマートフォン)からのデータを受け取る変数と使用するデジタルI/Oピンの番号を定数で宣言します。
setup()関数内では使用するデジタルI/Oピンをそれぞれ出力に設定します。そして、コントローラーからのデータを受け取る為にSerialクラスのbegin関数でシリアル通信のポートを開けます。
loop関数内ではスマホからBluetoothで送られてきた信号を読み取り、
・'F'なら進む
・'R'なら右回転する
・'L'なら左回転する
・'B'ならバックする
・'S'なら止まる
という処理をしています。

制御プログラム

//スマートフォンからのデータを受け取る char data; //motor1:右モーター const int in1Pin = 6; const int in2Pin = 7; //motor2:左モーター const int in3Pin = 8; const int in4Pin = 9; void setup() { //2つのモーターのそれぞれのピンを出力に設定 pinMode(in1Pin,OUTPUT); pinMode(in2Pin,OUTPUT); pinMode(in3Pin,OUTPUT); pinMode(in4Pin,OUTPUT); //シリアル通信のポートを転送レート9600bpsで開ける Serial.begin(9600); } void loop() { if (Serial.available() > 0) { //もし、スマートフォンからのデータがあったら data = Serial.read(); } if(data == 'F') { //↑ボタンを押すと前進 digitalWrite(in1Pin,LOW); digitalWrite(in2Pin,HIGH); digitalWrite(in3Pin,LOW); digitalWrite(in4Pin,HIGH); }else if(data == 'R') { //→ボタンを押すと右回転 digitalWrite(in1Pin,LOW); digitalWrite(in2Pin,HIGH); digitalWrite(in3Pin,HIGH); digitalWrite(in4Pin,LOW); }else if(data == 'L') { //←ボタンを押すと左回転 digitalWrite(in1Pin,HIGH); digitalWrite(in2Pin,LOW); digitalWrite(in3Pin,LOW); digitalWrite(in4Pin,HIGH); }else if(data == 'B') { //↓ボタンを押すと後進 digitalWrite(in1Pin,HIGH); digitalWrite(in2Pin,LOW); digitalWrite(in3Pin,HIGH); digitalWrite(in4Pin,LOW); }else if(data == 'S') {//ボタンが押されなければ停止 digitalWrite(in1Pin,LOW); digitalWrite(in2Pin,LOW); digitalWrite(in3Pin,LOW); digitalWrite(in4Pin,LOW); } }

動かし方

今回はラジコンカーのコントローラーとしてスマートフォンを使用しました。PCから操作することも可能ですが、今回はスマートフォンを使用する方法について解説します。
HC-06はiPhoneに対応していないのでAndroidスマホでのみ操作が可能です。(筆者はAQUOSを使用しました。)
まず、Bluetooth RC ControllerをGoogle Playからインストールしてください。
次に、インストールしたアプリを開くと、下のような画面が出てくると思います。これが、ラジコンカーを操作する画面です。

操作画面

アプリのボタンにはデフォルトでそれぞれ文字があてはめられていて、Bluetoothでそのデータが送信される形になっています。今回はデフォルト値をそのまま利用しているので、送信するデータを変更する必要はありません。
BluetoothをONにしたら、HC-06モジュールを接続します。
後はボタンをタップするだけで、簡単にラジコンカーを操作することができます。

おわりに

今回Arduino Uno R3とHC-06Bluetoothモジュールを使ってラジコンカーを製作することができました。実際に自分で作ったモノで遊んでみると、とても楽しいです。皆さんも是非試してみてください!
また、質問や疑問点、ここを直したほうがいいよ等有りましたら、コメントよろしくお願いします。
今回学んだことを生かして、次はArduinoでミニ四駆の制御をしてみたいなと思います。
※最初に書いた通り、HC-06Bluetoothモジュールは日本国内ではそのままでは使用できません。実際に使用する際は十分注意してください。

Author

Twitter ID : __kei0917

2
  • K さんが 2020/04/28 に 編集 をしました。 (メッセージ: 初版)
  • K さんが 2020/04/28 に 編集 をしました。
  • K さんが 2020/04/29 に 編集 をしました。
  • K さんが 2020/04/29 に 編集 をしました。
  • K さんが 2020/04/29 に 編集 をしました。
  • K さんが 2020/04/29 に 編集 をしました。
  • K さんが 2020/04/29 に 編集 をしました。
  • K さんが 2020/05/02 に 編集 をしました。
  • Opening
    amizuのアイコン画像 amizu 2021/10/18

    電解コンデンサーってどこに付けたんですか?

    0 件の返信が折りたたまれています
ログインしてコメントを投稿する