ESP8266(WIO NODE)のMicroPythonでI2Cを使ってみた

前回WIO NODEで無事MicroPythonが起動できましたので、今度はGroveコネクタからI2Cを使ってみました。

とりあえずGroveコネクタからピンヘッダに変換するアダプタをつくり、ブレッドボード経由でSSD1306 OLEDに接続しました。
変換アダプタは、前回、UART接続のためにGroveケーブルを2つに切って使ったので、そのもう一方のコネクタを使いました。

最初、I2Cが反応しなくて悩んだのですが、検索してみたら、以下のページを発見しました。Groveコネクタを使う場合、GPIO15経由でGroveコネクタの電源をオンにしなくてはならないそうです。

TI DSP ソフトウェア設計のファームロジックス | 話題の Wio Node を買うも、MicroPython 載せて IFTTT するの巻

下図のように、GPIO15がスイッチの役割をしています。

ESP8266のI2Cはソフト実装なので、任意のGPIOピンにSDA/SCLを割り当てることができます。
今回はコネクタがGPIO4とGPIO5なので、OLEDへ配線しやすいようにGPIO5をSDA、GPIO4をSCLに割り当てました。

コードは以下の通りです。

>>> from machine import Pin, I2C
>>> Pin(15, Pin.OUT).value(1)
>>> i2c=I2C(sda=Pin(5),scl=Pin(4))
>>> i2c.scan()
[60]
>>> from ssd1306 import SSD1306_I2C
>>> oled = SSD1306_I2C(128,64,i2c)
>>> oled.text("Hello world!", 0, 0)
>>> oled.show()

コメント