8. IoT カー

このプロジェクトでは、携帯電話のBlynkアプリを使用して車を制御しました。しかし、車の組み立てや基本的な理解については、 カープロジェクト を参照してください。 5Gネットワークの普及時代に、このモードは多くの産業で主要な生産方法の一つとなるかもしれませんので、先取りしてこのプレイを体験してみましょう。

1. 回路を組む

../_images/iot_car.png

2. ダッシュボードを編集

モバイルのBlynkではDatastreamを編集することができないので、これらのステップはウェブサイドで行う必要があります。

  1. Datastream ページで、ジョイスティックのX軸の値を記録するための Virtual Pin タイプの Datastream を作成します。NAMEを Xvalue、DATA TYPEを Integer、MINとMAXを -1010 に設定します。

    ../_images/sp220613_164507.png
  2. ジョイスティックのY軸の値を記録するための Virtual Pin タイプの Datastream を作成します。NAMEを Yvalue、DATA TYPEを Integer、MINとMAXを -1010 に設定します。

    ../_images/sp220613_164717.png

次に、以下の手順を携帯電話で行ってください。

  1. GOOGLE PlayまたはAPP Storeで "Blynk IoT" (Blynk(legacy)ではありません)を検索してダウンロードします。

  2. アプリを開いてログインします。このアカウントは、ウェブクライアントで使用したアカウントと同じである必要があります。

  3. 次にダッシュボードに移動します(持っていない場合は作成します)。モバイルとウェブのダッシュボードは互いに独立していることがわかります。

../_images/APP_11.jpg
  1. 編集アイコンをクリックします。

  2. 空白のエリアをクリックします。

  3. ジョイスティックウィジェットを選択します。

../_images/APP_21.jpg
  1. 空白のエリアにジョイスティックウィジェットが表示されますので、それをクリックします。

  2. ジョイスティックの設定が表示されますので、先ほどdatastreamsで設定したXvalueとYvalueを選択します。

  3. ダッシュボードページに戻って、ジョイスティックを操作したいときに操作します。

../_images/APP_31.jpg

3. コードの実行

  1. 3in1-kit\iot_project\8.iot_car のパス下で 8.iot_car.ino ファイルを開くか、このコードを Arduino IDE にコピーします。

  2. 自分の Template IDDevice Name、および Auth Token に置き換えます。使用しているWiFiの ssid および password も入力する必要があります。詳しいチュートリアルは、 1.4 R4ボードをBlynkに接続する を参照してください。

  3. 適切なボードとポートを選択した後、 Upoad ボタンをクリックします。

  4. シリアルモニター(ボーレートを115200に設定)を開き、成功した接続などのプロンプトが表示されるのを待ちます。

    ../_images/2_ready.png

    注釈

    接続時に ESP is not responding というメッセージが表示された場合、以下の手順に従ってください。

    • 9Vのバッテリーが接続されていることを確認してください。

    • RSTピンを1秒間GNDに接続してESP8266モジュールをリセットし、その後、それを取り外します。

    • R4ボード上のリセットボタンを押します。

    これらの操作を3〜5回繰り返す必要があることがあります。忍耐強く行ってください。

  5. 今、USBケーブルを抜いて、9Vのバッテリーだけでカートを起動します。LEDが点灯するのを待ちます。これは、車がBlynkに接続されていることを示しています。

  6. 携帯電話でBlynkを開き、ジョイスティックウィジェットを使用して車の動きを制御できます。

    ../_images/iot_car.jpg

どのように動作するのか?

これらの関数は、車の動きを制御するために使用されます。

void moveForward(int speed) {...}
void moveBackward(int speed) {...}
void turnRight(int speed) {...}
void turnLeft(int speed) {...}
void stopMove() {...}

IoTセクションは、ジョイスティックウィジェットの値を読み取り、それらを変数 Xvalue および Yvalue に割り当てます。

int Xvalue = 0;
int Yvalue = 0;

BLYNK_WRITE(V9)
{
    Xvalue = param.asInt();
}

BLYNK_WRITE(V10)
{
    Yvalue = param.asInt();
}

loop() で、 Xvalue および Yvalue に基づいて車にさまざまなアクションを実行させます。

if (Yvalue >= 5) {
    moveForward(255);
} else if (Yvalue <= -5) {
    moveBackward(255);
} else if (Xvalue >= 5) {
    turnRight(150);
} else if (Xvalue <= -5) {
    turnLeft(150);
} else {
    stopMove();
}

また、Blynk Cloudに接続されている場合にLEDを点灯させるために、 loop() にネットワークステータスの判定を追加します。

if (!Blynk.connected()) {
    digitalWrite(ledPin, LOW);
    Serial.print("offline!");
    bool result = Blynk.connect();
    Serial.println(result);
} else {
    digitalWrite(ledPin, HIGH);
}