OLED como display da câmera do Raspberry

Tenho um display OLED 128×32 que mostrei no artigo anterior como configurá-lo para ser utilizado no Raspberry. Bem, 128×32 é um “icone wide”, não dá pra esperar uma super-resolução de cinema, mas dá pra brincar com ele. Sua atualização é lenta e alguns outros processos necessitam de execução sequencial. Tendo dito isso, é uma brincadeira muito divertida capturar imagens com a câmera do Raspberry e exibí-las no display, não acha? Não importa a resolução, importa a diversão!

Materiais



Precisamos de:

Proceda como descrito no artigo anterior para configurar o display. Faça o teste e então passe para o próximo passo desse artigo.

Instalação de pacotes

Precisamos instalar apenas um programa e ele trará todas suas dependências junto:

sudo su
apt-get install imagemagick

Executar diretamente da memória

O cartão micro SD é lento e não queremos destruí-lo com a brincadeira, certo?

No Linux temos um dispositivo que utiliza automaticamente RAMFS. Copie o diretório de exemplos para /dev/shm. Supondo que o diretório da biblioteca da Adafruit esteja em /home/pi:

sudo su
cp -r /home/pi/Adafruit_Python_SSD1306-master/examples /dev/shm
cd /dev/shm/examples

Criar o programa para exibir no display

Vamos fazer um singelo script shell, com apenas algumas linhas. Pra ficar mais simples ainda, invés de escrevermos todo o script python para jogar a imagem no display, vamos usar o script que já tem pronto, apenas substituindo a imagem default (é o cúmulo da preguiça, eu sei). Crie um script chamado toOLED.sh dentro do seu diretório atual, com o seguinte conteúdo:

#!/bin/sh
while true; do
    raspistill -w 128 -h 32 -t 10 -n -o out.jpg
    convert out.jpg out.ppm
    cp out.ppm happycat_oled_32.ppm
    python image.py
done

Esse script executará em um loop infinito que pode ser interrompido com Ctrl+C. Enquanto em execução, ele captura uma imagem da câmera no formato necessário para jogar no display. Em seguida, é feita a conversão do arquivo .jpg para .ppm, que é o formato utilizado pelo script python em questão. Depois de convertido, substitui o arquivo original que seria carregado pelo script python. Por último, executa o script que carrega a imagem no display. Acredito que dê para acelerar um pouquinho o processo usando OpenCV, já fiz inclusive um script python para gerar uma imagem binária, mas achei que assim ficou mais legal.

Salve o script e dê-lhe um bit de execução:

chmod 700 toOLED.sh

Agora basta executar e ficar na frente da câmera.

./toOLED.sh

Bricandeira rápida, não tem desculpa pra não fazer também! No video você vê “mais ou menos” como fica. Devido ao video ampliar os pixels e iluminar o display, a resolução fica mais baixa ainda, mas acredite, é satisfatório “ao vivo”.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.