GROVEシールド付きのESP32ボードがあったので、購入してみました。このボードは日本だと取り扱いがないのかな?
そして本当にWemosの商品なのかが怪しいです。。。
ボードの特徴
ESP-WROOM-32を使っていますので、技適マークもしっかりついて、使いやすいボードです。I2C経由でのOLEDが実装してあるのでちょっとした表示に使えて便利です。
GROVEシールド
裏側はGROVEシールドになっており、アナログが使えるESP32って他ではあまりなかった気がします。
GROVEシールドの横には3Vと5Vを切り替えるスイッチがありますので、通常は3Vに設定して使ったほうがよいと思います。
購入元
国内だと扱っている店がなかったのでBanggoodで1つ千円強で購入しました。2018-07-01注文で2018-07-21到着となりました。海外からだと3週間ぐらいはかかっちゃいますね。
あとはAliexpressでも何個か取扱がありましたが、ちょうどセールをしていたのでBanggoodの方が安かったです。
事前準備
このボードはピンヘッダーがはんだ付けされていませんので、自分でつける必要があります。
表面26ヶ所に、裏面が二列分で52ヶ所、全部で78ヶ所もあります。特に裏側の二列部分はかなり狭いので、細い小手先がないと苦戦します。
GROVEシールドの配線
IO | Define | ADC | Grove | Note | |
0 | 0 | A11/T1 | ADC2_CH1 | D3 | ADC2 |
1 | TX | TX | D10/TX | ||
2 | 2 | A12/T2 | ADC2_CH2 | D4 | ADC2 |
3 | RX | RX | D9/RX | ||
4 | 4 | A10/T0 | ADC2_CH0 | D2/SCL | ADC2 |
5 | 5 | SS | D1/SDA | ||
6 | CL | 利用不可 | |||
7 | S0 | 利用不可 | |||
8 | S1 | 利用不可 | |||
11 | CM | 利用不可 | |||
12 | 12 | A15/T5 | ADC2_CH5 | D6 | ADC2 |
13 | 13 | A14/T4 | ADC2_CH4 | D7 | ADC2 |
14 | 14 | A16/T6 | ADC2_CH6 | D5 | ADC2 |
15 | 15 | A13/T3 | ADC2_CH3 | D8 | ADC2 |
16 | 16 | ||||
25 | 25 | A18/DAC1 | ADC2_CH8 | ADC2 | |
26 | 26 | A19/DAC2 | ADC2_CH9 | ADC2 | |
36 | SVP | A0 | ADC1_CH0 | 入力専用 | |
39 | SVN | A3 | ADC1_CH3 | 入力専用 |
注意点としてはBluetoothとかを利用する場合ADC2が利用できなくなります。なのでアナログは入力だけで出力ができません。
開発方法
Arduinoで「WEMOS LoLin32」を選択することで開発可能です。Windows環境の場合転送速度を115200に下げるか、BOOTボタンを押さないと書き込みできませんでした。
サンプルプログラム
#include <ssd1306.h>
#include <oleddisplay.h>
#include <bluetoothserial.h>
SSD1306 display(0x3c, 5, 4);
BluetoothSerial SerialBT;
uint64_t chipid;
char chipname[256];
// 実行間隔(ms)
int intervalTime = 100;
void setup() {
// チップID取得
chipid = ESP.getEfuseMac();
sprintf( chipname, "ESP32_%04X", (uint16_t)(chipid >> 32));
display.init();
display.resetDisplay();
display.displayOn();
display.clear();
display.setFont(ArialMT_Plain_16);
SerialBT.begin(chipname);
}
void loop() {
// データ取得と送信
int val = analogRead(A0);
char str[256];
SerialBT.println(val);
// 画面描画
display.clear();
display.drawString(0, 0, chipname);
sprintf( str, "A0:%d", val );
display.drawString(0, 24, str);
display.drawString(0, 48, "Ver:2018/10/22");
display.display();
delay(intervalTime);
}
上記のプログラムで100ms間隔でA0から取得したデータをBluetoothで送信することができます。
chipidを取得して、Bluetooth待受名に追加していますので複数台動かしてもIDがかぶることはないはずです。
これはWemosの製品なのか?
ボードにはWemosと書いてありますが、WemosはOLED付きの製品はないと言っていますので、Wemosの製品ではない可能性が高いです。
総括
ちょっと出生が怪しいボードですが、GROVEのアナログセンサーなどを利用して、Bluetoothで送信したい場合にはかなり使いやすいボードではないでしょうか?
OLEDに出力値やプログラムのバージョンなどを表示することができるので、ちゃんと動いているかの確認もしやすいです。
ただしピンヘッダーのはんだ付けはかなり面倒ですし、国内で手に入りにくいって点はマイナスです。
コメント
[…] 「Wemos?のESP32 OLED Module+GROVEシールド」とかだと簡単にBluetoothでデータを送信できます。BluetoothSerialを使えばBluetooth接続したパソコンからはシリアルポートに見えますので便利です。 […]