8. IoT カー¶
このプロジェクトでは、携帯電話のBlynkアプリを使用して車を制御しました。しかし、車の組み立てや基本的な理解については、 カープロジェクト を参照してください。 5Gネットワークの普及時代に、このモードは多くの産業で主要な生産方法の一つとなるかもしれませんので、先取りしてこのプレイを体験してみましょう。
1. 回路を組む
2. ダッシュボードを編集
モバイルのBlynkではDatastreamを編集することができないので、これらのステップはウェブサイドで行う必要があります。
Datastream ページで、ジョイスティックのX軸の値を記録するための Virtual Pin タイプの Datastream を作成します。NAMEを
Xvalue
、DATA TYPEをInteger
、MINとMAXを-10
と10
に設定します。ジョイスティックのY軸の値を記録するための Virtual Pin タイプの Datastream を作成します。NAMEを
Yvalue
、DATA TYPEをInteger
、MINとMAXを-10
と10
に設定します。
次に、以下の手順を携帯電話で行ってください。
GOOGLE PlayまたはAPP Storeで "Blynk IoT" (Blynk(legacy)ではありません)を検索してダウンロードします。
アプリを開いてログインします。このアカウントは、ウェブクライアントで使用したアカウントと同じである必要があります。
次にダッシュボードに移動します(持っていない場合は作成します)。モバイルとウェブのダッシュボードは互いに独立していることがわかります。
編集アイコンをクリックします。
空白のエリアをクリックします。
ジョイスティックウィジェットを選択します。
空白のエリアにジョイスティックウィジェットが表示されますので、それをクリックします。
ジョイスティックの設定が表示されますので、先ほどdatastreamsで設定した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 R4ボードをBlynkに接続する を参照してください。適切なボードとポートを選択した後、 Upoad ボタンをクリックします。
シリアルモニター(ボーレートを115200に設定)を開き、成功した接続などのプロンプトが表示されるのを待ちます。
注釈
接続時に
ESP is not responding
というメッセージが表示された場合、以下の手順に従ってください。9Vのバッテリーが接続されていることを確認してください。
RSTピンを1秒間GNDに接続してESP8266モジュールをリセットし、その後、それを取り外します。
R4ボード上のリセットボタンを押します。
これらの操作を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();
}
また、Blynk Cloudに接続されている場合にLEDを点灯させるために、 loop()
にネットワークステータスの判定を追加します。
if (!Blynk.connected()) {
digitalWrite(ledPin, LOW);
Serial.print("offline!");
bool result = Blynk.connect();
Serial.println(result);
} else {
digitalWrite(ledPin, HIGH);
}