TOPに戻る

リモート電圧計を作る ③ BLEペリフェラル 使用するのはAE-ESP32-WROOM-32E-MINI<その1>

 M5STAMP C3に代わる低価格なマイコン・ボードを探しました。

 ESP32-WROOM-32はデバイスのリビジョンが更新によって2021年の夏ごろにEになりました。メーカは新しい設計のESP32-S3やS2シリーズに移行したいようなので、ESP32-WROOM-32Eが最終版と思われます。執筆時点で、ESP32-S3やS2は技適はどの会社も所得していません。

 ESP32-WROOM-32を利用した開発キットはESP32-DevKitC-32Eが一番オーソドックスなボードですが、ebayなどを見ると、ESP32-DevKitC-32Dが多いようです。

 ESP32-WROOM-32Eを用いたボードの中でも、秋月電子通商の「ESP32-WROOM-32Eマイコンボード」は730円と安価です。Arduino IDEで開発時には、USB-シリアル・アダプタが必要ですが、実行時には単独で動きます。

  ESP32-WROOM-32Eデータシート

AE-ESP32-WROOM-32E-MINIのセットアップ

 USB-シリアル・アダプタは「FT232RQ USBシリアル変換モジュールキット」を使います。FT232のドライバはWindows10では入っているので、インストールは不要と思います。

 AE-ESP32-WROOM-32E-MINIにはL型ピンヘッダが付属しているので、はんだ付けします。USB-シリアル・アダプタははんだ付けをするところはありません。GNDのシルク表示を基準に差し込んで接続します。USB-シリアル・アダプタのDIPスイッチはOFFのデフォルトのままにします。信号レベルは3.3Vになります。USBケーブルからの+5Vは、USB-シリアル・アダプタを経由してAE-ESP32-WROOM-32E-MINIボードに配給されます。

I2CバスのA-DコンバータMCP3421をつなぐ

 MCP3421はI2Cインターフェースをもつ18ビットのA-Dコンバータです。2.7 ~ 5.5Vで動作するので、3.3Vの電源を利用します。内蔵の基準電圧Vrefは2.048Vです。

  データシート

 次のように接続します。I2Cバスの信号のピンは、SDA = IO21、SCL = IO22です。

MCP3421のスケッチ

 データシートに従って、setup()内で、デフォルトの12ビットから18ビットへ変更、連続変換モードの設定をコンフィグレーション・レジスタへ書き込みます。

 read_tempdata()関数では、18ビットのデータを読み取り、2の補数形式なので、符号の処理をしてから値を返します。

 1LSBは15.625uVです。uV単位まで表示します。


#include <Wire.h>

#define MCP3421_address 0x68
#define configData 0b00011100  // RDY continuas 18bit PGA=x1

void setup() {
  Serial.begin(115200);
  Wire.begin();
  Serial.println("\nstart");
  Wire.setClock(100000);
  Wire.beginTransmission(MCP3421_address); 
      Wire.write(configData);
  Wire.endTransmission();
}

int32_t read_tempdata() {
  Wire.requestFrom(MCP3421_address, 3);
    //wait for response
  while(Wire.available() == 0);
    uint32_t T = Wire.read();
    T = (T & 0b00000011)  << 8 | Wire.read() ;
    T = T << 8 | Wire.read() ;
    return ( -(T & 0b100000000000000000) | (T & 0b011111111111111111) );
}

void loop() {
  float temp = read_tempdata() * 15.625 / 1000000.0;
  Serial.println(temp,6);
  delay(2000);
}

 ->アイコンをクリックしてコンパイルをします。コンパイルが終了します。

 ここで、BOOTボタンを押したまま、ENボタンを押し、両方のボタンを離します。1、2秒ほどすると、マイコンへの書き込みが始まります。時々失敗しますが、何度か繰り返します。

 下記のように書き込みが終了した時点で、ENボタンを押すとリセットがかかり、プログラムが動き出します。

 シリアルモニタは115200bpsにしておきます。

環境

  • AE-ESP32-WROOM-32E-MINI
  • Arduino IDE 1.8.19
  • Windows10 21H2

 javaのログソフトの脆弱性が存在するため、Arduino IDE 1.8.18以前のバージョンは使わないでください。

連載 リモート電圧計を作る

(1) BLEペリフェラル 使用するのはM5STAMP C3<その1>

(2) BLEペリフェラル 使用するのはM5STAMP C3<その2>

(3) BLEペリフェラル 使用するのはAE-ESP32-WROOM-32E-MINI<その1>

(4) BLEペリフェラル 使用するのはAE-ESP32-WROOM-32E-MINI<その2>

(5) BLEセントラルをラズパイで<その1>BLEの接続

(6) BLEセントラルをラズパイで<その2>Webへ出力