Raspberry Pi i wyświetlacz LCD

Jak podłączyć wyświetlacz LCD do Raspberry Pi

Wyświetlacz LCD jest bardzo przydatny w projektach, kiedy chcemy wyświetlić jakieś informacje a Raspberry nie jest podłączony do monitora. Możliwość bezpośredniego odczytu jakiś informacji bez konieczności logowania się przez SSH jest w takich sytuacjach przydatna.

W tym artykule zajmiemy się podłączeniem LCD kitu do Raspberry Pi. Użyjemy do tego celu tylko 6 pinów GPIO.

Jakie są zalety takiego podłączenia ?

Przykładowy program, który został użyty w teście ma za zadanie wyświetlić datę, aktualną godzinę oraz adres IP naszego Raspberry (bardzo przydatne jeśli nasze RPI podłączone jest do sieci bezprzewodowej, a my nie pamiętamy adresu jaki został mu przydzielony).

Zegarek

Co nam będzie potrzebne:

Podłączenie interfejsu GPIO

Wyświetlacz LCD 2 linie 16 znaków

Jeśli spojrzycie na najzwyklejszy wyświetlacz 2x16 zobaczycie, że posiada on 16 pinów. My będziemy potrzebować tylko 6 pinów do sterowania.

Widok na sterownik wyświetlacza LCD

Na tylnej części wyświetlacza widoczna jest numeracja pinów. Oznaczony jest pin nr. 1 oraz ostatni 16pin.
Piny w LCD:

  1. Masa
  2. VCC - 5v nie 3.3v
  3. Ustawienie kontrastu (wyjście potencjometra)
  4. Wybór rejestru (RS) RS=0 : wysyłanie komend; RS=1 : wysyłanie dancyh
  5. Read/Write (R/W). R/W=0: Zapis, R/W=1: Odczyt (tego pinu nie używamy)
  6. Zegar (Enable).
  7. Bit 0 (nie używany)
  8. Bit 1 (nie używany)
  9. Bit 2 (nie używany)
  10. Bit 3 (nie używany)
  11. Bit 4
  12. Bit 5
  13. Bit 6
  14. Bit 7
  15. podświetlenie LED Anoda (+)
  16. podświetlenie LED Katoda (-)

Schemat połączeniowy

Na koniec jeszcze raz sprawdzcie połączenia czy się nigdzie nie pomyliliście. Warto dodać, że powyższe podłączenie jest przykładowe. Każdy może dowolnie zmienić ustawienie na takie, które mu pasuje. Należy tylko pamiętać, aby potem pozmieniać piny w pliku konfiguracyjnym. Nasze podłączenie jest inne od tego, które jest w bibliotece - zmieniliśmy dwa piny. Jeśli teraz podłączycie cobbler do Raspberry Pi powinniście zobaczyć poniższe zdjęcie. Możecie sprawdzić czy regulacja kontrastu potencjometrem działa.

Uruchomiony wyświetlacz LCD

Jeśli z jakiegoś powodu kręcąc potencjometrem nie widzicie górnej lini prostokątów, musicie sprawdzić połączenia. Jeśli wszystko jest połączone dobrze to standardowo jeśli nie zainicjujemy wyświetlacza powinien nam się zapalić górny rząd.

Paczki

W celu poprawnego działania należy zaopatrzyć się w odpowiednie paczki, które możecie ściągnąć i zainstalować korzystając z poniższych komend.

Paczka dla Pythona (2.x)

$ sudo apt-get install python-dev

Aktualizacja dystrybucji ( w celu poprawnego działania RPi.GPIO 0.3.1a)

$ sudo apt-get install python-setuptools
$ sudo easy_install -U distribute

$ sudo apt-get install python-pip

Instalacja rpi.gpio (0.3.1a) lub wersji późniejszej

$ sudo pip install rpi.gpio

Skrypt w Pythonie

Skorzystamy z kompletu przygotowanego przez Adafruit’a. Na swoim Github’ie udostępniają oni komplet skryptów do pierwszego uruchomienia oraz testu wyświetlacza LCD.

My będziemy korzystali z dwóch poniższych skryptów:

Najłatwiejszym sposobem na pobranie tych plików jest wpięcie kabla Ethernet do naszego RPI i sklonowanie paczki poleceniem “git”.

Korzystamy z poniższych komend:

apt-get install git
git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
cd Adafruit-Raspberry-Pi-Python-Code
cd Adafruit_CharLCD

Ostatnia z nich przenosi nas do folderu Adafruit_CharLCD.

Teraz wystarczy odpalić plik Adafruit_CharLCD.py aby sprawdzić czy wszystko jest ok. Pamiętacie, że wyżej w tekście wspomnieliśmy o zamianie pinów? Tak to jest ten moment, w którym należy dokonać zmiany w pliku konfiguracyjnym. Używając polecenia 'nano Adafruit_CharLCD.py' możemy zmienić piny.

Plik konfiguracyjny otwarty w konsoli

Po zmianie pinów naciskamy “ctrl+X” i wychodzimy. Następnie wpisujemy:

chmod +x Adafruit_CharLCD.py
sudo ./Adafruit_CharLCD.py

Na wyświetlaczu powinna się wyświetlić poniższa informacja.

Przykładowy tekst na wyświetlaczu 16x2

Zegarek

Kolejny przykład to program, który wyświetli na naszym LCD’ku datę, godzinę oraz adres IP naszego RPI. Domyślnie w programie jest ustawione wyświetlanie adresu Ethernet (eth0), jeśli macie podłączone Raspberry PI za pomocą karty WiFi musicie zmienić w linijce “ip addr show” eth0 na wlan0 lub wlan1, etc. Zrobicie to podobnie jak w poprzednim przypadku używając komendy nano.

#!/usr/bin/python

from Adafruit_CharLCD import Adafruit_CharLCD
from subprocess import *
from time import sleep, strftime
from datetime import datetime

lcd = Adafruit_CharLCD()

cmd = "ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1"

lcd.begin(16,1)

def run_cmd(cmd):
        p = Popen(cmd, shell=True, stdout=PIPE)
        output = p.communicate()[0]
        return output

while 1:
        lcd.clear()
        ipaddr = run_cmd(cmd)
        lcd.message(datetime.now().strftime('%b %d  %H:%M:%S\n'))
        lcd.message('IP %s' % ( ipaddr ) )
        sleep(2)

Po tym zabiegu możemy uruchomić powyższy program używając komendy:

$ sudo ./Adafruit_CharLCD_IPclock_example.py

Poprawnie działający program

Własny tekst

Powyżej skorzystaliśmy z gotowego rozwiązania, a co gdybyśmy chcieli wyświetlić własny tekst np. słynne Hello World?

Wystarczy zmienić linijkę odpowiadającą np. za wyświetlanie adresu IP.

lcd.message(Hello World)

a do linijki z adresem IP dodajemy #, który utworzy z niej komentarz

Cały kod będzie wyglądał teraz tak:

#!/usr/bin/python

from Adafruit_CharLCD import Adafruit_CharLCD
from subprocess import *
from time import sleep, strftime
from datetime import datetime

lcd = Adafruit_CharLCD()

cmd = "ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1"

lcd.begin(16,1)

def run_cmd(cmd):
        p = Popen(cmd, shell=True, stdout=PIPE)
        output = p.communicate()[0]
        return output

while 1:
        lcd.clear()
        ipaddr = run_cmd(cmd)
        lcd.message(datetime.now().strftime('%b %d  %H:%M:%S\n'))
        lcd.message(Hello World)
            #lcd.message('IP %s' % ( ipaddr ) )
        sleep(2)

Hello World

Czego się własnie nauczyłeś

W tym artykule przedstawiliśmy następujące zagadnienia