ESP32を使ってデバイス開発を始めた。まずはLチカする
はじめに
院生の頃に、安価な筋電義手を作ろうと思い電子工作で遊んでいた時期があります。
短距離センサを埋め込んだ小さい箱を複数腕に巻き付けて、姿勢検知するデバイスを作っていました。 仕組みとしてはシンプルで、体を動かすとくぼみに脂肪がむにゅっと入り込み、距離が変わるのでその距離を機械学習に投げて姿勢を検知するというものです。
アルゴリズムにはランダムフォレストを使って、学習時間は数十秒で8割ぐらいの精度がでていました。
当時は優先でしたが安価な無線用のマイコンも出てきており改めて作ってみるのも一興だとは思います。
ただ、今回の趣旨は別にそういったものを作るのではなく室温やCO2などの情報がわかる画面付きの時計を作ろうかと思います。 無線経由でデータ取得もできるので、ゆくゆくはIFTTT機器としてDiscordに通知したり、エアコンの制御にも使えないかしらとか考えています。
先の話は置いといて、まずは室温などを撮って画面に表示できるようにしたいなと思っています。
普通に買ってもいいのですが、タッチパネル搭載の温度計なら機能追加して、株価をリアルタイムで表示したりYahooニュースのRSSなど 受動的な情報収集端末に使えそうだなと思い、部品をいくつか買い集めていました。
定番になっているようで情報は豊富なのですが、ESP32を使うのは初めてなので情報を残しながら少しずつ作っていきます。 3Dプリンタもあるのでケースも作って公開したいなとか。
本格的にやりだすと結構時間が掛かりそうなので、仕事の合間を縫って少しずつやっていきます。
購入した部品一覧
電子部品は中華系サイトで買うのが最安です。 電子工作あるあるなのですが、電波法などもあるのでちゃんと認証取れているものを使用しましょうね。
アーリーエクスプレスで購入しました。 うまいことセールで変えると、秋月電子通商で買うより遥かに安いです。1/5ぐらいの値段で集まります。
開発準備
Arduino StudioでESP32に対して書き込むことができるのでインストールしていきます。
インストーラーがあるので環境にあったものを選べばOK。
ESP32をArduino IDEで使う為に、ボードマネージャでライブラリを追加する必要があります。
Aruduino Studioを起動して、ファイルー>基本設定ー>追加ボードマネージャからリンクを追加します。
https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
ボードマネージャからESP32向けの追加
esp32と書かれている方を、インストールします。 インストール時は、v3.0.4ですね。
CP210x UART Bridge Driver
どうも必要らしいのでインストールします。
CP210x USB - UART ブリッジ VCP ドライバ
Windows PCとESP32を接続
実際にESP32とPCをマイクロUSBで接続する。 ツール > シリアルポートで接続したUSBのシリアルポートを選択します。
このとき不慮の事故を防ぐため、使っていないデバイスは外しておくことをおすすめします。 間違って書き込まれたら目も当てられない。
正しいCOMを選択して、ボード情報の取得とするとこのような情報が取得できるはず。
デスクトップPCだと本体の背面にあるUSBじゃないと認識しないとあるので注意してください。 ハブを噛ませると失敗する原因になるので直通がいいです。
当方の環境では、COM3としました。 使用しているのがESP32-WROOM-32U なのですが一致するものが無いためとりあえずESP32 Dev Moduleを選択して実行していきます。
余談ですが、最近マイコンに印字されている米粒より小さい文字が肉眼で見えなくなってきましたね。辛い。
書き込み確認
とりあえず空の関数をコンパイルして書き込んでいきます。
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
ここから書き込みを選べばOKです。
右下に書き込み成功とでたらOKのはずです。 ここまで行けば準備完了ですね。先に進めましょう。
Lチカ
LEDを指して動作確認をします。 手元に赤外線LEDしか無いので肉眼では見えないのですがカメラ越しに確認するようにします。
19番ピンとGNDに直刺しして、スケッチに書きこんでいきます。
足の短い方(カーソド)がマイナス側なのでGNDにぶっ刺します。 LEDの寿命を縮めるので抵抗を挟むのが一般的です。USB給電なら3.3Vだったはずなので数秒光らせるぐらいなら壊れないでしょう。多分。
ブレッドボード使っているのでこんな感じです。
PIN_NOは環境に応じてですが、Lチカコードを書きました。
const int PIN_No = 19;
void setup() {
pinMode(PIN_No, OUTPUT);
}
void loop() {
digitalWrite(PIN_No, HIGH);
delay(250);
digitalWrite(PIN_No, LOW);
delay(250);
}
結果
Lチカの様子をYoutubeにアップしてます。 ほのかにチカチカしているのが確認できるかと思います。
まとめ
これでESP32の開発環境が整いました。データ取得を進めていきましょう。