takashiskiのブログ

覚書の殴り書き

OLED付きESP32の動確だけした

 変わり種を見つけたので購入してみました。比較的安いし。

 何が一番うれしいかというと、リッチなLチカ的なことができるということです。シリアルコンソール開いてなくても結果を表示できます。

 

今回はArduino IDEを使います。というか今回初めてESP32使います。そういえばdev boardもすぐ買ったのに使ってなかったです。

なので、ESP32 arduino coreいれるとこからやります。

開発環境の準備

以下を参考にやります。

github.com

gitって何?って人は1番から3番までのgit導入~git cloneまで全部すっとばしましょう。

代わりに以下の Clone or downloadからZIPで落として ~/Documents/Arduino/hardware/espressif/の下にフォルダごと移動すればよいです。

github.com

解凍後、フォルダ名がarduino-esp32になっていると思いますので、esp32に変更します。変更しなくても動くには動きますけど、毎度「名前違うけど大丈夫?」って聞かれてめんどくさいので変えましょう。

 

その後、esp32>tool>get.exeを実行してください。

これで準備完了です。Arduino IDEを起動すると、ターゲットボードにESP32が選べるようになっています。今回はwemos lolin32がいいんじゃないかと思います(確か)

 

本題

乗っかっているOLEDはSSD1306とのことなので、これは以前使ったことがあります。なので、とりあえずAdafruitのライブラリ突っ込んでみます。

これは、ライブラリの管理からも追加できます。

github.com

ピンなどが間違ってなければ、Adafruitのロゴのあとなんか派手な演出が描画されるはずです。

動きませんでした。何で動かないんだろうなーと思いつつ1月くらい放置してました。

昨日時間ができたのでライブラリソースコードを読んだところ、I2Cの場合はピンの指定ができない構造になってます。Wire.begin()をするコンストラクタしか用意されてません。

ESP32のフォーラムとかドキュメント読んだところ、I2Cバスは複数あるよ!とかいろいろ書かれていました。片方がマスタ用、片方がスレーブ用っぽい?

https://espressif.com/sites/default/files/documentation/esp32_chip_pin_list_en.pdf

公式のサンプル見たら25がSDA,26がSCLですね。

github.com

しかし、ググった結果このボードでは5がSDA,4がSCLらしいのです。だめだこりゃ。

と、いうわけでライブラリ書き換えるのも面倒なのでほかのサンプルを探します。ぴったりの物がありました。これも、ライブラリの管理から見つかります。名前が微妙に違います。

github.com

面白そうなので、今回はSSD1306ClockDemoを動かします。

69行目がI2C用のコンストラクタですので、ピン番号を変更します。

ピン番号に接頭辞のDは不要なので以下のようになります。

SSD1306 display(0x3c,5,4); 

 この変更をして別名保存し、コンパイル・書き込みを実行すればアナログ時計・デジタル時計が交互に表示されます。

諸事情により、現在twitterアカウントを非公開設定にしているので動画はありません。

 

その他

なんかこれWEMOSの公式製品じゃないらしくて、いろいろへろへろだそうです。

bootボタン押しっぱなしにしないとだめ、とかいろいろ書かれてますけれど、ロットによるようで、私のボードは特に何もしなくても書き込まれるし、書き込み後リセットされます。

ただし、microUSB端子があまり強くないので、ブレッドボードに刺して力がかからないようにして使うことをおすすめします。(ただしその場合はbootボタンmodeボタンが隠れて押せなくなる)。

私はよそ見しながらケーブルを刺したら端子吹っ飛ばしました。固定用ランドははがれたのでもうダメです。延命はんだづけができたので動確できました。

とりあえず、これに適当に温湿度センサなりぶっ刺して表示するようにすれば暫定温湿度系作れますね。CO2も繋いじゃおうかしら。その辺はまた次回。

 

使用デバイス

 

 

参考サイト

github.com

D-duino-32 and Lolin ESP32 OLED wemosmacsbug.wordpress.com

d.hatena.ne.jp

forum.wemos.cc