2013年5月22日 星期三

RaspberryPi : Nokia 5110 LCD

由 Nokia 5110 手機拆下來的  LCD ,很多人應用在 Arduino ,有現成的連接方式及程式碼可以拿來修改,不用再從頭研究。花了 90 元,上網買了一片已經焊在電路板上的來玩,在賣家還沒給相關的參考資料前,已經先用網路上找到的資料玩了一下,剛好用來測試之前由帶有溫度計的時鐘上拆來的熱敏電阻,能夠在 LCD 上看到經由熱敏電阻偵側值轉換而來的氣溫,很是神奇。查了一下,在 Rasberry Pi 也有人用 C 及 Python 寫了程式,先下載了 Python 的版本來玩一玩,簡單的記錄一下。

Raspberry Pi  + Nokia 5110 LCD

程式下載及安裝

在 Raspberry Pi 的討論區有人貼了他的成果,程式碼可以在討論串找到:


討論串中可以找到好幾個版本,我測試成功的程式碼是放在一個名為「nokimagpi.tar.gz」的附件檔案中。下載回來的檔案解壓縮以後,裡面有一個函數庫、顯示圖檔的範例程式及圖案。
由於這個 Python 的程式使用到一些 modules ,所以我們要先準備好程式執行時所需的基本環境,依序執行底下的安裝指令:
sudo apt-get install python-dev
sudo apt-get install python-pip
sudo pip install wiringpi
sudo pip install spidev
sudo pip install pil

Nokia 5110 LCD 腳位配置

Nokia 5110 LCD 和 Raspberry Pi 的腳位對應關係如下:

  • RST ←→ pin 11
  • CE (SCE) ←→ pin 24
  • DC (D/C)  ←→ pin 15
  • Din (DNK) ←→ pin 19
  • Clk (SCLK) ←→ pin 23
  • Vcc  ←→ pin 1
  • BL(LED) ←→ pin 12
  • Gnd  ←→ pin 6


如果硬體已按照程式作者設計的腳位將 Raspberry Pi 和 Nokia 5110 LCD 連接好,就可以在 nokimagpi 的目錄中執行底下的指令:
sudo python magpi.py
成功的話,應該可以看到範例圖檔的圖形。


自製圖片檔

上述程式可以直接讀入圖檔,不過圖檔的格式必須符合底下的條件:

  • 大小:84x48 (但必須將圖順時針旋轉 270度變成 48x84 ,才會正確顯示)。
  • 單色。
  • BMP 格式。


常用的指令

在前述的壓縮檔中,有個檔案名為「nokiaSPI.py」,裡面的主要幾個函數功能如下:

  • noki.cls():清除畫面
  • noki.gotoxy(x, y):將畫筆遊標移到 x, y 指定的位置。
  • noki.text("英文字串"):在目前的畫筆所在顯示指定的英文字串。
  • noki.load_bitmap("xxx.bmp"):載入並顯示指定的 BMP 圖檔。
  • noki.load_bitmap("xxx.bmp",True):載入並以反白的方式顯示指定的 BMP 圖檔。


FAQ

※ 只出現類似底下的錯誤訊息,LCD 沒有畫面,何解?
Traceback (most recent call last):
  File "magpi.py", line 7, in <module>
    noki = nokiaSPI.NokiaSPI(contrast=0xb4)
  File "/home/pi/gpio/nokimagpi/nokiaSPI.py", line 158, in __init__
    self.spi.open(self.dev[0],self.dev[1])
IOError: [Errno 2] No such file or directory

系統沒有載入「spi-bcm2708」module,可以先執行底下指令後再重試:
sudo modprobe spi-bcm2708

如果想讓系統在開機時自動載入該 module ,修改一下 raspi-blacklist.conf 檔案中的設定:
sudo nano /etc/modprobe.d/raspi-blacklist.conf

然後將有 「spi-bcm2708」那一行加個井字號(註解掉),下一次啟動時就會自動載入。


沒有留言:

張貼留言

 
© 2009. Design by Pocket