8. IoT カー¶
このプロジェクトでは、スマホのBlynkアプリを使用して車を制御しました。しかし、車を組み立て、基本的な理解を得るためには カープロジェクト を参照する必要があります。 5Gネットワークが普及する時代に、このモードは多くの産業での主要な生産方法の一つになるかもしれません。先取りしてこの遊びを体験しましょう。
1. 回路を組む
2. ダッシュボードを編集
携帯のBlynkではデータストリームを編集できないため、これらの手順はWeb側で行う必要があります。
Datastream ページで、ジョイスティックのX軸の値を記録するための Virtual Pin タイプの Datastream を作成します。名前は
Xvalue
、データタイプはInteger
、最小値と最大値は-10
と10
に設定します。ジョイスティックのY軸値を記録するために、 Virtual Pin 型の Datastream を作成します。NAMEを
Yvalue
、DATA TYPEをInteger
、MINとMAXを-10
と10
に設定する。
次に、携帯電話で以下の操作を行う必要があります。
GOOGLE PlayまたはAPP Storeで "Blynk IoT" (Blynk(legacy)ではない) を検索してダウンロードします。
アプリを開いた後、ログインします。このアカウントは、Webクライアントで使用されたものと同じである必要があります。
次に、ダッシュボードに移動します(持っていない場合は作成します)。ここで、モバイル用とWeb用のダッシュボードが互いに独立していることがわかります。
編集アイコンをクリックします。
空白のエリアをクリックします。
ジョイスティックウィジェットを選択します。
空白のエリアにジョイスティックウィジェットが表示されますので、それをクリックします。
ジョイスティックの設定が表示されますので、データストリームで先ほど設定したXvalueとYvalueを選択します。
ダッシュボードページに戻り、ジョイスティックを操作することができます。
3. コードの実行
パス
3in1-kit\iot_project\8.iot_car
の下にある8.iot_car.ino
ファイルを開くか、このコードを Arduino IDE にコピーします。Template ID
、Device Name
、およびAuth Token
を自分のものに置き換えます。また、使用しているWiFiのssid
およびpassword
を入力する必要があります。詳しいチュートリアルは、 1.4 R3ボードをBlynkに接続 を参照してください。正しいボードとポートを選択した後、 Upoad ボタンをクリックします。
シリアルモニターを開き(ボーレートを115200に設定)、接続成功のようなプロンプトが表示されるのを待ちます。
注釈
接続時に
ESP is not responding
というメッセージが表示された場合は、以下の手順に従ってください。9Vのバッテリーが接続されていることを確認します。
ESP8266モジュールのRSTピンを1秒間GNDに接続してリセットし、その後、取り外します。
R3ボードのリセットボタンを押します。
これらの操作を3-5回繰り返す必要があることもありますので、お待ちください。
USBケーブルを抜いて、9Vのバッテリーだけでカートに電力を供給します。LEDが点灯すると、車がBlynkに接続されていることを示しています。
携帯電話のBlynkを開き、ジョイスティックウィジェットを使用して車の動きを制御します。
どのように動作するか?
これらの関数は、車の動きを制御するために使用されます。
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();
}
また、 loop()
にBlynk Cloudに接続されている場合にLEDを点灯するネットワークステータスの判定を追加します。
if (!Blynk.connected()) {
digitalWrite(ledPin, LOW);
Serial.print("offline!");
bool result = Blynk.connect();
Serial.println(result);
} else {
digitalWrite(ledPin, HIGH);
}