8. IoT カー

このプロジェクトでは、スマホのBlynkアプリを使用して車を制御しました。しかし、車を組み立て、基本的な理解を得るためには カープロジェクト を参照する必要があります。 5Gネットワークが普及する時代に、このモードは多くの産業での主要な生産方法の一つになるかもしれません。先取りしてこの遊びを体験しましょう。

1. 回路を組む

../_images/wiring_iot_car.jpg

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

携帯のBlynkではデータストリームを編集できないため、これらの手順はWeb側で行う必要があります。

  1. Datastream ページで、ジョイスティックのX軸の値を記録するための Virtual Pin タイプの Datastream を作成します。名前は Xvalue 、データタイプは Integer 、最小値と最大値は -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. アプリを開いた後、ログインします。このアカウントは、Webクライアントで使用されたものと同じである必要があります。

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

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

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

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

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

  2. ジョイスティックの設定が表示されますので、データストリームで先ほど設定した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 R3ボードをBlynkに接続 を参照してください。

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

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

    ../_images/2_ready.png

    注釈

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

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

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

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

    これらの操作を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セクションでは、ジョイスティックウィジェットの値を読み取り、 XvalueYvalue の変数に代入します。

int Xvalue = 0;
int Yvalue = 0;

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

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

loop() の中で、 XvalueYvalue に基づいて車が異なるアクションを実行するようにします。

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();
}

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

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