O Wemos ESP32 OLED é um ESP32 com um pequeno display, de 0.96 polegadas, com 128x64 pixels de resolução que podemos usar nos nossos projectos que precisem de um pequeno display sem ser preciso recorrer a hardware externo.

Nota: É necessário que o nosso ESP32 tenha MicroPython. Podem ver aqui como colocar

Piscar um LED com o ESP32 e MicroPython
Como colocar MicroPython no ESP32 e começar a explorar este mundo

Para trabalhar com o display, precisamos de uma biblioteca.

A Adafruit criou uma para trabalhar com este driver.  Apesar de informar que já está ultrapassada, funciona muito bem com o  MicroPython.

Podem ir buscar a biblioteca aqui:

adafruit/micropython-adafruit-ssd1306
MicroPython driver for SSD1306 OLED displays. Contribute to adafruit/micropython-adafruit-ssd1306 development by creating an account on GitHub.

Para copiar a biblioteca para o Wemos, usamos o utilitário ampy.

ampy -p /dev/ttyUSB0 put ssd1306.py	
  • -p /dev/ttyUSB0 é o porto onde está ligado o Wemos
  • put é o comando a executar - neste caso, colocar "put"
  • ssd1306.py é o ficheiro a copiar para o Wemos ESP32

Para confirmar que foi copiado, vamos listar o conteúdo do ESP32

ampy -p /dev/ttyUSB0 ls
boot.py
ssd1306.py

Vamos experimentar escrever texto no display

minicom /dev/ttyUSB0

PS: Se não conseguirem uma prompt (porque já têm lá o main.py e está em  execução), basta  efetuar um reset à board (usar o botão de EN ou RESET)  e pressionar Ctrl+C

Para experimentar, escrevam o seguinte código:

>>> import ssd1306
>>> import machine
>>> # inicializar I2C
>>> i2c = machine.I2C(scl=machine.Pin(4), sda = machine.Pin(5))
>>> # inicializar o display
>>> oled = ssd1306.SSD1306_I2C(128,64, i2c)
>>> oled.fill(0)
>>> oled.text('Ola Mundo ',0,0)
>>> oled.text('do MicroPython',0,15)
>>> #mostrar conteudo
>>> oled.show()

Assim que pressionarem <enter> deverão ver no OLED o que escreveram no código

Chamo a atenção para a seguinte linha:

i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5)) 

Esta linha permite inicializar a comunicação I2C nos pinos SCL e SDA, para falar com o OLED, que no caso do Wemos ESP32 OLED são os pinos 4 e 5

Esta biblioteca usa as mesmas funções que a framebuffer do MicroPython, que podem consultar aqui:

http://docs.micropython.org/en/latest/library/framebuf.html

Para que o códido seja executado cada vez que ligamos o ESP32, temos que o escrever num ficheiro main.py, eliminar algum que exista já no Wemos e copiar para lá o novo, cujo conteúdo é o que colocamos em cima.

ampy -p /dev/ttyUSB0 rm main.py
ampy -p /dev/ttyUSB0 put main.py

Pronto. Sempre que reiniciarem o Wemos, o texto no display OLED vai aparecer.

[bvsantos@darkrider ~]$ ampy -p /dev/ttyUSB0 ls
boot.py
ssd1306.py
[bvsantos@darkrider ~]$ ampy -p /dev/ttyUSB0 put main.py 
[bvsantos@darkrider ~]$ ampy -p /dev/ttyUSB0 ls
boot.py
ssd1306.py
main.py

Em cima, listei o conteúdo do ESP32, copiei para lá o main.py e voltei a listar para confirmar que existia.

Assim, quando desligar e ligar o ESP32, o código em main vai aparecer.

Wemos Lolin32 ESP32 OLED MicroPython