"/>

気になる、をやってみたら・・見える景色が変わる!ナーンテナ

Fun-Desire-Blog 

PexelsのVanessa Garciaによる写真

電子工作

ESP32でIoTへ挑戦!【Lブリ~Bluetooth でデータ転送と制御】

更新日:

めっちゃ、やってみたかったんです。無線接続。ESP32という Wi-FiとBluetoothを内蔵する低コストで、低消費電力なマイクロコントローラを使って無線接続が出来ます。プログラムは、Arduino IDEの開発環境を使って行えます。 Arduino IDE とすごく似ていますが、違うところもあったり、ESP32用のライブラリのインクルードが必要になります。そのあたり、順番にやっていきます。 

ESP32(ESP-WROOM-32)

●まずは環境設定!

Arduino IDEをつかってESP32を使うには、まずは、環境設定が必要!

めっちゃ、分かりやすく書かれています。参考にして環境設定してみて下さい。

ESP32-Arduino IDEを活用した開発環境の準備 | Spiceman

●続いて、Lブリと行きましょう!

Lチカではなく、Lブリなのは、どこかのブログに、LEDをBlink(またたく)させると書いてあったので、流用、アレンジしました。略して、Lブリ。マクドナルドは略してマクド。(古いか?)

LEDの点灯は目を凝らしてじっくり見て下さい。
  void setup() {

  pinMode( 5, OUTPUT );  //LED(5番)ピン出力
}

void loop() {

  digitalWrite( 5, HIGH);//LED_PINがHIGHの時、LED点灯 :制御A
  delay( 1000 );         //1秒(1000ms)待ちます

  digitalWrite( 5, LOW); //LED_PINがHIGHの時、LED点灯 :制御B
  delay( 1000 );         //1秒(1000ms)待ちます


    }

ESP32に書き込むと、こんなメッセージがでます。(正常時です)

書き込み開始のメッセージ欄
書き込み完了のメッセージ欄。OKのとき、こんな感じです。「 via RTS pin... 」

●さぁ~て、通信です。

まず、有線のUSBケーブルで、シリアルモニターに書き込みます。COMポートは、COM3です。

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Hello Wendy.");
  delay(3000); 
}

これを、Bluetooth経由でパソコンに書いてみます。

参考にさせて頂きました。

ESP32 Bluetooth テスト - JH7UBCブログ (goo.ne.jp)

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32");
}

void loop() {

  SerialBT.println("Hello peter Pan!");
  delay(4000);

}

・パソコンにBluetoothデバイスの追加が必要になります。(パソコンの「設定」からやってみて下さい)

今回は、COM8でBluetooth通信ができました。(それ以外はダメでした)
できました!

スケッチ(プログラム)をパソコンからESP32に書き込む場合は、USBケーブルで書き込む必要があるようです。(Bluetoothで一度繋いだら、無線で書き込めないかと思い、シリアルポート設定をCOM8にしてマイコンボードに書き込んでみましたが、COM8はBuzyで書き込めませんでした)

次のステップとして、Bluetoothのシリアルプリントと、Lブリを同時にやってみます。

●今度は、PCから情報を送信して、ESP32を制御します。

LEDのON/OFFを制御します。

PCの「1」を入力すると、LED点灯、「0」を入力すると、LED消灯。

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32");
  pinMode(5, OUTPUT);
}

char databox;
void loop() {

  SerialBT.println("パソコンからLEDをON/OFF");
  delay(1000);

  if (SerialBT.available()) {
    databox = SerialBT.read();
    Serial.println(databox);

    if (databox == '0') {
      digitalWrite(5, LOW);
      SerialBT.println("OFF yade。");
    }
    if (databox == '1') {
      digitalWrite(5, HIGH);
      SerialBT.println("ON sunde!");
    }
  }
  delay(2000);
}

これも、参考にさせて頂きました。
ワークライフアンバランス: ESP32でスマホとシリアル通信(Arduino IDE編) (worklifeunbalance.blogspot.com)
ESP32でBluetooth相互無線通信(Arduino互換機) - All_outlook (hateblo.jp)

●最後に、一気にサーボ動作まで(これは、Bluetooth関係ない)

参考にさせて頂きました。

ESP32で マイクロサーボ SG92Rを動かしてみます - みるしるてくる (mirushirutechru.com)

#include <Servo.h>

Servo servo;

void setup() {
  servo.attach(25); //25番ピンにサーボ制御線(オレンジ)を接続

}

void loop() {
     servo.write( 150 ); //150度へ回転
     delay(800);
     servo.write(30); //30度へ回転
     delay(800);
}

これは、サーボのライブラリをインクルードすれば、問題無いですが、それができないと、Arduinoで使えていたanalogWrite()がないので、少々、面倒です。
ESP32でledcWrite()を使ってPWM出力をする | Wak-tech

めちゃめちゃ駆け足でしたが、なんとか、ESP32も使えそうです。ArduinoのIDEが使えるとはいうものの、ライブラリはESP32用のものが必要になるので、注意が必要です。今回は、IoTまで遠いですが、例えば、ESP32にセンサーと電池を繋いでおけば、5分とか10分おきの温度が取得でき、自分の家の同じ時間帯、ある場所の年間の温度推移や、暖房付けた時にどのくらいの時間で何度まで上がるかなど、細かいデータが取れると思います。(エアコンと、床暖房、ストーブの温まり方を調べられる)

冷暖自知(れいだんじち)

禅の言葉で、自分で実際に体験してみないと分からないという意味の言葉です。ESP32についても自分で実際にやってみないとライブラリのことなど分からなかったですし、体験は人それぞれの視点、何を感じるかが違いますし、それを共感できるときは楽しいと思います。データも感覚だけでなく、実際に採ってみると意外な発見が出来るのではないか?と楽しみにしています。

-電子工作
-, ,

Copyright© Fun-Desire-Blog  , 2024 All Rights Reserved Powered by STINGER.