Display LCD do NOKIA 5110 no Raspberry
Lembram do antigo NOKIA 5110 da foto abaixo?
Vamos aprender a ligar o LCD desse antigo aparelho diretamente no Raspberry, para exibir qualquer tipo de informação que precisar.
O display esta a venda e custa em torno de R$ 25 a R$ 30.
O LCD que estou utilizando é o da foto abaixo:
O Esquema a ser utilizado para pinagem é seguinte para esse LCD:
Referencia: https://github.com/richard-hull/pcd8544
Verifique se o seu LCD possui exatamente a mesma pinagem, pois encontrei modelos com pinagens diferentes. Verifiquem o LCD se é o mesmo da foto acima o de cor "Azul", para evitar ligações erradas.
Depois de feita as conexões vamos baixar as bibliotecas:
git clone git://git.drogon.net/wiringPi cd wiringPi ./build
Depois de instalado podems testar utilizando o comando:
gpio readall
Deverá aparecer algo como a imagem abaixo. Pronto agora já estamos com o controlador das GPIOS instalado.
Agora vamos instalar as bibliotecas para o Python:
sudo apt-get install python-dev python-imaging python-imaging-tk python-pip
sudo pip install wiringpi wiringpi2
Agora precisamos editar o arquivo /etc/modprobe.d/raspi-blacklist.conf e comentar a seguinte linha:
#blacklist spi-bcm2708
Após ter feito o comentario faço o reboot do sistema:
sudo reboot
Agora precisamos instalar a seguinte biblioteca do Python:
sudo pip install spidev
Agora vamos clonar um repositorio com exemplos do github:
git clone https://github.com/XavierBerger/pcd8544.git
cd pcd8544
./setup.py clean build
sudo ./setup.py install
Pronto agora é só utilizar a biblioteca e seus exemplos:
cd examples
sudo ./pi_logo.py
Esse exemplo mostrará a imagem abaixo:
Eu tive um sério problema para exibir qualquer informação no LCD, achei que até estava com problemas, pois só acendia os LEDs mas nada aparecia.
Consegui resolver o problema setando o contrast em (190), caso isso venha ocorrer a linha a inserir dentro do script é a seguinte:
lcd.set_contrast(190)
Em nenhum dos scripts modelos vem com o contrast setado, ou seja pra mim todos ficaram invisíveis até setar o valor (190).
Segue abaixo um script em python que fiz para exibir informações no raspberry.
nome: info.py
-----------------
#!/usr/bin/env python import os, time import pcd8544.lcd as lcd ON, OFF = [1, 0] def verTempCPU(): res = os.popen('vcgencmd measure_temp').readline() v = "Temp.CPU:"+ (res.replace("temp=","")).replace("'C\n","") lcd.text(v.center(14)) def verMEM(): p = os.popen('free') i=1 for line in p.readlines(): if i==2: #print "Total: "+str((int(line.split()[1])/1024))+ " MB" #print "Usada: "+str((int(line.split()[2])/1024))+ " MB" #print "Livre: "+str((int(line.split()[3])/1024))+ " MB" m = "RAM Free:"+str((int(line.split()[3])/1024))+ "MB" lcd.text(m.center(14)) i=i+1 def verUsoCPU(): c = "Uso CPU: "+(str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip()))+"%" lcd.text(c.center(14)) def verEspacoHD(): lcd.text(("*** Espaco ***").center(14)) p = os.popen("df -h /") i = 1 for line in p.readlines(): if i==2: lcd.text(" TT Used Free") lcd.text(line.split()[1]+" "+line.split()[2]+" "+line.split()[3]) i=i+1 lcd.init() lcd.cls() lcd.backlight(ON) lcd.set_contrast(190) verTempCPU() verUsoCPU() verMEM() verEspacoHD() #time.sleep(60) #lcd.cls() #lcd.backlight(OFF) -------------------------
Imagem do script em execução:
As ultimas 2 linhas comentadas no script, servem para que o LCD nao limpe o que esta escrito e para que nao apague o LED do LCD.
Com isso podemos agendar esse script via (contrab) para ser executado de tempos em tempos, fazendo o LCD ficar sempre atualizado com os dados do sistema.















