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

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

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

开源深度爱好者

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

联系我: h@phodal.com

微信公众号: 与我沟通

标签