ESP-WROOM-02 を使って、サイコロを作ってみました。
少し前から気になっていた ESP-WROOM-02 を使って、何か作ろうと考えたものの、面白いアイディアが降ってこなかったので、ひとまずサイコロを作ってみました。
写真のように、100円ショップで買ってきたアクリル製の立方体ケースの中に、3種類の基板(順に、キャラクタ液晶基板、ESP-WROOM-02基板、加速度センサー基板)と電池(単三電池 × 4)を収めました。
それぞれの基板について、少し説明します。写真のような立方体のケースに内蔵することを想定したのと、それぞれのデバイスを I2C で接続するので、各機能をモジュール化するために、基板をそれぞれ機能ごとに分割しています。一枚の基板の大きさは 48mm角となっています。
それぞれの基板は 10Pコネクタで接続しますが、電源(5V / 3.3V / GND)とI2C(SDA / SCL)、OE の他に、GPIO 4つを引き回して、拡張性を持たせました。 ※現時点では、I2C しか使っていません。
ESP-WROOM-02基板
今回は、いろいろと扱いやすいように ESP-WROOM-02 をそのまま使うのではなく、秋月電子通商の「ESP-WROOM-02開発ボード : AE-ESP-WROOM02-DEV」を使いました。ESP-WROOM-02 の入出力を 10Pコネクタに引き出して、他の基板と接続しやすくしています。
I2C の SDA と SCL は、ヘッダファイルでデフォルト値として定義されている SDA = 4、SCL = 5 としてあります。他のピンにも変更できるのですが、ライブラリによっては SDA と SCL が変更できないものもあるようなので、デフォルト値を使うことにしました。
単体で “Lチカ” が行えるように、LED を 4つ実装しています。OE については、SW で 3.3V 信号を ON/OFF できるようにしてあります。
ESP-WROOM-02開発ボード : AE-ESP-WROOM02-DEV → http://akizukidenshi.com/catalog/g/gK-12236/
キャラクタ液晶基板
ESP-WROOM-02 は、あまり多くの GPIO を持っていないので、キャラクタ液晶は I2C で接続しました。これも秋月電子通商で販売されていた安価な液晶を選択しました。ちょうど Arduino 用のライブラリも用意されていたので、簡単に表示できました。
基板下部(液晶の向きに合わせると右側)には、5V→3.3V の三端子レギュレータを実装しています。「ESP-WROOM-02開発ボード」からも 3.3V は出力されているのですが、ネット上で見つけた書き込みでは電源の容量が足らずに動作が不安定になる、といった書き込みも見つけたので保険の意味で載せてあります。
I2C接続小型キャラクタLCDモジュール 8x2行 : AQM0802A-RN-GBW →
http://akizukidenshi.com/catalog/g/gP-06669/
加速度センサー基板
加速度センサーもキャラクタ液晶と同様に、I2C で接続しています。手元に残っていた Kionix, Inc. の KXP84-2050 をモジュール化した AE-KXP84 を使いました。この加速度センサーを使うための Arduino 用ライブラリは用意されていなかったので、単純に各軸を読み込むだけの機能を持ったライブラリを自作してみました。
I2C 関係のピンだけを配線し、アナログ出力や MOT(Motion interrupt)、FF(Free-fall interrupt)は使っていません。動作電圧は、これまで 5V でばかり使っていましたが、適応電圧は 2.7 ~ 5.25 [V] で、標準的な電圧は 3.3V でした...
この加速度センサーは、これまでも 5V 系の PIC で使っていましたが、アナログ出力を A/D 変換するばかりで、I2C で接続して使ったのは初めてでした。加速度センサーそのものは、↓ のものと同じです。
3軸加速度センサ KXP84-2050(5個入) :KXP84-2050 →
http://akizukidenshi.com/catalog/g/gI-02350/
プログラム
いろいろとネット上から見つけてきた情報を元にして、↑ のように作ってみました。探すと、先人の知恵がいくつも見つかるもんです。 プログラム中で使用している MyWiFi.h は、Wi-Fi の SSID とパスワードを記述したものです。公開するものではないので、別ファイルにしてあります。