• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / Arduino / Arduino実践編 / ArduinoでSTEM教育​ 実践編:スマートフォンで制御するラジコン

ArduinoでSTEM教育​ 実践編:スマートフォンで制御するラジコン

2019年11月17日 by STEMSHIP 1 コメント

今回は、Arduino互換ボード(Adafruit Feather 32u4 Bluefruit LE)とBlynkアプリを使用して、スマートフォンからBLE( Bluetooth Low Energy )通信で車をコントロールする方法を紹介します。

使用する部品一覧

使用する車は、前回の記事(ArduinoでSTEM教育​ 実践編:ライントレースカー)で作成したものを使用します。 電子部品の説明、回路図、ブレッドボード図はこちらを参照してください。 今回はライントレースではないので、フォトリフレクタは不要です。

Blynkとは

Blynkは、スマートフォンやタブレットのアプリから、様々な通信規格(Ethernet, Wi-Fi, USB, GSM, Bluetooth, BLE)を使用して、ArduinoやRasberry Pieを制御することができます。アプリの画面上に、ボタンやスライダー、ジョイスティックなどのウィジェットを自由に配置することができます。基本的に無料で利用できますが、ウィジェットを多く使用すると「Energy」残量がなくなってしまうため、他のウィジェットを削除するか、課金(数百円~)する必要があります。スマホのアプリをゼロベースで作成するのは大変なので、プロトタイプを早く完成させるには大変便利です。

Blynkのアプリ側の設定

まずは、アプリ側の設定について説明します。Blynkのサイト( http://www.blynk.cc/)にアクセスして、Android用やiOS用のリンクをクリックして、各々のストアからインスールします。アプリを開くとアカウント作成画面が表示されるので、メールアドレスを登録するか、FacebookのIDを使用します。

プロジェクトを新規作成します。「DEVICES」の「HARDWARE MODEL」は、「Arduino Uno」( Adafruitが無いので代用 )を選択し、 「CONNECTION TYPE]は「BLE」を選択します。プロジェクトを新規作成すると、「AUTH TOKEN」(認証トークン)が発行されます。これは、Arduinoのプログラムコード内で使用します。

ウィジェットは「Joystick」と「BLE」を使用します。Joystickの出力は「MERGE」とし、「Select pin」は「Virtual」のV0に設定します。ジョイスティックを動かすと、X座標/Y座標が-255~255の値を取るように設定します。Arduinoのプログラムを作成して、アプリと接続する場合は、BLEのウィジェットをクリックして、「Connect BLE Device」をタッチします。

BlynkのArduino側の設定

Blynkを使用するために、ライブラリをインストールする必要があります。[ツール]->[ライブラリを管理]をクリックし、Blynkを検索してインストールします。もしくは、github( https://github.com/blynkkk/blynk-library )のページからダウンロードしてインストールしてください。インストールが完了したら、コンパイルできるかどうか、スケッチ例([ファイル]->[スケッチ例]->[Blynk]->[Boards_Bluetooth]->[Adafruit_Feather_32u4_BLE]) で試してみてください 。

以下のコンパイルエラーが発生した場合は、Adafruitのライブラリ「 Adafruit_BluefruitLE_nRF51 」をインストールしてください。この説明は、 Adafruit Feather 32u4 Bluefruit LE の製品ページに記載がありますので、参考にしてください。

プログラム​​

プログラムは、Blynkのスケッチ例([ファイル]->[スケッチ例]->[Blynk]->[Boards_Bluetooth]->[Adafruit_Feather_32u4_BLE])をベースとして、前回作成した記事(ArduinoでSTEM教育​ 実践編:ライントレースカー)のプログラムを移植します。

今回は VirtualPin(V0)を使用するので、プログラム内でBLYNK_WRITE(V0)を使用して、その中に処理内容を記述します。ジョイスティックのx軸/y軸座標を param[0].asInt() と param[1].asInt()で取得します。このパラメータ記述は、Blynkアプリのジョイスティック設定画面に表示されています。そして、その値をもとに、Speed、SpeedL、SpeedRの変数を設定し、左右のモータ回転数を決定します。

//www.stemship.com
//2019.11.17
#include "Motor.h"

#define BLYNK_USE_DIRECT_CONNECT

#define BLYNK_PRINT Serial

#include <BlynkSimpleSerialBLE.h>
#include <Adafruit_BLE.h>
#include <Adafruit_BluefruitLE_SPI.h>
#include <SPI.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "ご自身の認証キーを入力してください";

// SHARED SPI SETTINGS (see adafruit webpages for details)
#define BLUEFRUIT_SPI_CS               8
#define BLUEFRUIT_SPI_IRQ              7
#define BLUEFRUIT_SPI_RST              4    // Optional but recommended, set to -1 if unused
#define BLUEFRUIT_VERBOSE_MODE         true

// Create ble instance, see pinouts above
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);

//右と左のモータ
Motor motorR = Motor(11, 10);
Motor motorL = Motor(6, 5);

//車の動作関数
void runForward();
void runRight();
void runLeft();
void runBack();

long Speed;
long SpeedL, SpeedR;
 
BLYNK_WRITE(V0) {
  long x = param[0].asInt();
  long y = param[1].asInt();
 
  Serial.print("x: ");
  Serial.print(x);
  Serial.print("  y: ");
  Serial.print(y);
 
  Speed = sqrt(x*x+y*y);
  if(Speed > 255){
    Speed = 255;
  }
  Serial.print("  Speed: ");
  Serial.println(Speed);
 
  if(y >= 0){
    if(x >= 0){
      SpeedL = abs(x);
      SpeedR = 0;
    }else{
      SpeedL = 0;
      SpeedR = abs(x);
    }
    motorR.forward(Speed - SpeedR);
    motorL.forward(Speed - SpeedL);

  }else{
    if(x >= 0){
      SpeedL = abs(x);
      SpeedR = 0;
    }else{
      SpeedL = 0;
      SpeedR = abs(x);
    }
    motorR.reverse(Speed - SpeedR);
    motorL.reverse(Speed - SpeedL);
  }
}

void setup() {
  Serial.begin(9600);

  ble.begin(BLUEFRUIT_VERBOSE_MODE);
  ble.factoryReset(); // Optional
  ble.setMode(BLUEFRUIT_MODE_DATA);

  Serial.println("Waiting for connections...");

  Blynk.begin(auth, ble);
}

void loop() {
  Blynk.run();
}

//前進
void runForward(int val) {
  motorR.forward(val);
  motorL.forward(val);  
}

//後退
void runBack(int val) {
  motorR.reverse(val);
  motorL.reverse(val);
}

//右旋回
void runRight(int val) {
  motorR.stop(false);
  motorL.forward(val);
}

//左旋回
void runLeft(int val) {
  motorR.forward(val);
  motorL.stop(false);
}

参考にしたサイト: https://homemadegarbage.com/blynk_car01

Filed Under: Arduino実践編 関連タグ:BLE, ラジコン, 無線通信

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2025年5月
月 火 水 木 金 土 日
 1234
567891011
12131415161718
19202122232425
262728293031  
« 10月    

Copyright © 2025 · STEMSHIP.COM