Wemos ESP32 with OLED display
Utilizar o Wemos Lolin32 ESP32 OLED com MicroPython

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

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:
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.
