Blog

Blog

PHODAL

Raspberry Pi Nokia 5110 显示IP

好不容易再次拿到了一块Nokia 5110,在此在缅怀一下硬件巨人诺基亚

Nokia 5110

NOKIA 5110 LCD 简介

NOKIA 5110是一款基于图形显示的LCD屏,并且有很多的应用。使用的PCD8544控制器,NOKIA 3110用的也是这款控制器,PCD8554是一款低功耗的CMOS LCD控制器,用于驱动48行84列的图形显示,并且采用串行总线接口与微控制器相连,大大减少了外围控制线的数量,在使用时十分的方便,而且相对于LCD1602、LCD12864都有着自己的独特优势。

Nokia 5110

Nokia 5110 优点

  • 84 x 48的点阵LCD,最多可显示四行汉字;
  • 采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。
  • 可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。
  • LCD 控制器/驱动器芯片已绑定到LCD 晶片上,模块的体积很小。
  • 采用低电压供电,正常显示时的工作电流在200μA 以下,且具有掉电模式。

Nokia 5110 Python库pcd8544

NOKIA5110 的LCD 控制芯片是PCD8544

Github 上有这样一个用于Nokia 5110的驱动。https://github.com/rm-hull/pcd8544

Raspberry PI Nokia 5110

硬件连接图如示下所:

Nokia 5110 With Raspberry PI

安装Nokia 5110库

Raspberry Pi Nokia 5110依赖安装

编译需要的


$ sudo apt-get install zlibc libpng3 libfreetype6 libfreetype6-dev python-pip
$ sudo pip install pillow

wiringPi 安装

之前没注意到这里报错了,补上


    Traceback (most recent call last):
      File "showip.py", line 1, in 
        import pcd8544.lcd as lcd
      File "/usr/local/lib/python2.7/dist-packages/pcd8544/lcd.py", line 4, in 
        import wiringPy
    ImportError: No module named wiringPy

1.安装依赖

 sudo apt-get install python-dev libi2c-dev

2.Clone

 git clone https://github.com/rm-hull/wiringPi

3.Build


    $ cd ~/wiringPi
    $ ./build clean 
    $ ./build

Raspberry Pi Nokia 5110库安装


$ git clone https://github.com/rm-hull/pcd8544
$ cd pcd8544
$ python setup.py clean build
$ sudo python setup.py install

官方提供了一些库,在samples目录下


$ cd examples
$ sudo ./alphabet-text.py

而这里要做的是用来显示IP

Raspberry Pi Nokia 5110 IP显示

代码如下所示:


import pcd8544.lcd as lcd
import time, os, sys
import subprocess

if not os.geteuid() == 0:
    sys.exit('Script must be run as root')

ON, OFF = [1, 0]

arg='ip route list'
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE)
data = p.communicate()
split_data = data[0].split()
ipaddr = split_data[split_data.index('src')+1]

while(True):
    lcd.init()
    lcd.cls()
    lcd.backlight(ON)
    lcd.define_custom_char([0x30,0x2c,0x66,0x6c,0x30])
    lcd.text(ipaddr)
    time.sleep(100)

似乎在这里time.sleep()是必须的。

最后效果如下所示:

Raspberry Pi Nokia 5110 Results

自动执行

添加到定时执行crontab

$crontab -e

添加一行

@reboot /home/pi/ip.sh

添加ip.sh脚本

 sudo python ipshow.py

或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签