リモート電圧計を作る ③ 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-シリアル・アダプタが必要ですが、実行時には単独で動きます。
●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以前のバージョンは使わないでください。