ESP8266+Arduino IDE+I2C+ST7032液晶ディスプレイを使う

esp826605-01.jpg

ESP8266(WROOM-02)がArduino IDEで動くようになりましたので、手始めにキャラクタ液晶をつないでみました。

使ったのは、以前Arduino Pro Miniで使用した、aitendoの激安液晶です。
ソフトウェアも、同じく

I2C液晶のArduinoライブラリ – ST7032 | オレ工房

を使わせていただきました。

【2019/1/30追記:ライブラリがアップデートされたので、現在は以下の修正は不要になりました。】

ライブラリ(ST7032.cpp)は微小な修正が必要でした。
このファイルは、ドキュメントフォルダの中の

 Arduino\libraries\arduino_ST7032-master\ST7032.cpp

に格納されています。

修正は、ST7032.cppの30行過ぎのあたり、以下の赤い部分を追加しました。

#include "ST7032.h"
#include "Arduino.h"
#include <Wire.h>
#if defined(__AVR__)
#include <avr/pgmspace.h>
#endif

配線は、下図のようになります。
これはこちらの回路からの差分です。
Arduinoのスケッチ書き込みに必要な回路は省略しています。

esp826605-02.png

以上で、上記のST7032ライブラリに付属しているサンプルスケッチが動作しました。

なお、上の配線はI2CのSDA・SCLがそれぞれIO4・IO5になっていますが、このマッピングはESP8266のボードによって異なります。
今回は、Arduinoe IDEのボードメニューから”Generic ESP8266 Module”を選択しており、このボードでのピン配置に従います。

このピン配置の情報は、先日Arduino IDEに追加したボード情報の中で記述されています。
ファイルは、
 %USERPROFILE%\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\variants\generic

というフォルダの中の”pins_arduino.h”です。
(%USERPROFILE%には、”C:\Users\ユーザ名”が入ります。
また、”1.6.5-947-g39819f0″の部分はIDEのバージョンによって変わってきそうです。)

このファイルでは、I2CおよびSPIのピン配置が以下のように定義されています。

static const uint8_t SDA = 4;
static const uint8_t SCL = 5;

static const uint8_t SS    = 15;
static const uint8_t MOSI  = 13;
static const uint8_t MISO  = 12;
static const uint8_t SCK   = 14;

static const uint8_t BUILTIN_LED = 1;

static const uint8_t A0 = 17;

ちなみに、Generic以外に定義されているボードは、現時点では

adafruit
nodemcu
thing
wifio

の4つでした。

なお「thing」はSparkfunの出しているESP8266ボードですが、このボードの解説ページ(以下のリンク)は分かりやすくて良いと思います。

ESP8266 Thing Hookup Guide – learn.sparkfun.com

ESP8266でArduinoを動かす場合、簡単なスケッチでもファイルサイズは200KB超と結構大きなものができてきますが、上の解説によると、WiFiや通信機能を動作させるために、裏で行う様々な処理のためのコードが含まれているそうです。

コメント