Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Malinowy wyświetlacz, czyli Raspberry Pi w małżeństwie z LCD Hitachi HD44780

Już na niejednej stronie o tym małżeństwie było, ale jakoś na blogach taki tekst jeszcze nie zawitał, dlatego też korzystając z chwili wolnego czasu podzielę się z Wami moim małym doświadczeniem jakim było pobratanie Raspberry Pi z wyświetlaczem LCD zgodnym ze standardem Hitachi HD44780.

Oczywiście pierwszym krokiem był wybór odpowiedniego wyświetlacza. U mnie wybór padał na LCD-AC-2402A-DIW W/KK-E12 C PBF = ABC024002A12-DIW-R-01 z jednego powodu. W przeciwieństwie do innych wyświetlaczy, w tym modelu nie było potrzeby dolutowywania rezystora, co dla mnie było dużą zaletą, albowiem nie posiadam lutownicy :)
Następnie czekało mnie "przestudiowanie" jak to świecące ustrojstwo podłączyć po przez GPIO do Malinki. Na pomoc przyszedł mi artykuł Matt'sa Hawkinsa z strony raspberrypi-spy.co.uk, w którym to łopatologicznie opisał jak takowy LCD podłączyć do RPi. Dlatego też mój wpis, czy kod będzie bazował na jego opisie, albowiem po co Amerykę odkrywać od nowa :)

Podłączenie

Oznaczenie pinów wyświetlacza i mailny przedstawiłem w poniższej tabelce i na schemacie "obrazkowym" obok. Myślę, że tak będzie łatwiej niż opisywać każdy pin po kolei.

System

Odkąd Raspberry Pi trafiło do moich rąk pierwszym system jaki na niej zainstalowałem był Debian “squeeze”, zaś teraz jedynym słusznym jest Debian “wheezy” (zwany Raspbianem).
I dlatego proces przygotowania "podłoża" do oprogramowania LCD przedstawię na tym systemie. Pierwszym krokiem będzie zainstalowanie Pythona - prawdopodobnie będzie on już zainstalowany w wersji 2.7.3 jeśli posiadacie taką samą dystrybucję jak ja, jeśli nie instalujemy go wpisując polecenie:sudo apt-get install pythonKolejno będziemy potrzebować "paczki", dzięki której będziemy mogli się komunikować przez interfejs GPIO. Znajdziemy ją na stronie http://code.google.com/p/raspberry-gpio-python w dziale download. Jeśli jesteście leniwi ;) to po prost wpiszcie w terminalu polecenie:
dla Pythona2wget http://raspberry-gpio-python.googlecode.com/files/python-rpi.gpio_0.5.0a-1_armhf.debzaś jeśli zainstalowaliście Pythona w wersji trzeciej to:wget http://raspberry-gpio-python.googlecode.com/files/python3-rpi.gpio_0.5.0a-1_armhf.debpo pobraniu deba instalujemy go za pomocą komendysudo dpkg -i pobrany_pakiet

Programujemy

Po tych czynnościach możemy zabrać się za uruchomienie pierwszego programu, na którym wypiszemy coś na LCD. #!/usr/bin/python #Importujemy zainstalowaną wcześniej bibliotekę i bibliotekę time import RPi.GPIO as GPIO import time #Prze mapowanie pinów RPi na zmienne odpowiadające nazwą pinów wyświetlacza LCD_RS = 7 LCD_E = 8 LCD_D4 = 25 LCD_D5 = 24 LCD_D6 = 23 LCD_D7 = 18 # Definicja stałych dla LCD LCD_WIDTH = 24 # Maksymalna ilość znaków na linię LCD_CHR = True LCD_CMD = False LCD_LINE_1 = 0x80 # LCD RAM adres dla 1 linii LCD_LINE_2 = 0xC0 # LCD RAM adres dla 2 linii # Stałe czasowe E_PULSE = 0.00005 E_DELAY = 0.00005 ########## Funkcja główna programu def main(): GPIO.setmode(GPIO.BCM) GPIO.setup(LCD_E, GPIO.OUT) # E GPIO.setup(LCD_RS, GPIO.OUT) # RS GPIO.setup(LCD_D4, GPIO.OUT) # DB4 GPIO.setup(LCD_D5, GPIO.OUT) # DB5 GPIO.setup(LCD_D6, GPIO.OUT) # DB6 GPIO.setup(LCD_D7, GPIO.OUT) # DB7 # Inicjalizacja wyświetlacza lcd_init() # wysłanie tekstu na pierwszą linię lcd_byte(LCD_LINE_1, LCD_CMD) lcd_string("dobreprogramy.pl") #wysłanie tekstu nadrugą linię lcd_byte(LCD_LINE_2, LCD_CMD) lcd_string("Kochaja KOTY :P") ########## Funkcja inicjalizująca wyświetlacz def lcd_init(): lcd_byte(0x33,LCD_CMD) lcd_byte(0x32,LCD_CMD) lcd_byte(0x28,LCD_CMD) lcd_byte(0x0C,LCD_CMD) lcd_byte(0x06,LCD_CMD) lcd_byte(0x01,LCD_CMD) ########## Funkcja wysyłająca string na konkretną linię def lcd_string(message): message = message.ljust(LCD_WIDTH," ") for i in range(LCD_WIDTH): lcd_byte(ord(message{i}),LCD_CHR) # literka "i" powinna być w kwadratowym nawiasie!!! #musiałem to zmienić bo blogowy edytor się gubił... ########## Funkcja wysyłająca dane do pinów def lcd_byte(bits, mode): GPIO.output(LCD_RS, mode) # RS # High bits GPIO.output(LCD_D4, False) GPIO.output(LCD_D5, False) GPIO.output(LCD_D6, False) GPIO.output(LCD_D7, False) if bits&0x10==0x10: GPIO.output(LCD_D4, True) if bits&0x20==0x20: GPIO.output(LCD_D5, True) if bits&0x40==0x40: GPIO.output(LCD_D6, True) if bits&0x80==0x80: GPIO.output(LCD_D7, True) # Przełączenie pinu 6E time.sleep(E_DELAY) GPIO.output(LCD_E, True) time.sleep(E_PULSE) GPIO.output(LCD_E, False) time.sleep(E_DELAY) # Low bits GPIO.output(LCD_D4, False) GPIO.output(LCD_D5, False) GPIO.output(LCD_D6, False) GPIO.output(LCD_D7, False) if bits&0x01==0x01: GPIO.output(LCD_D4, True) if bits&0x02==0x02: GPIO.output(LCD_D5, True) if bits&0x04==0x04: GPIO.output(LCD_D6, True) if bits&0x08==0x08: GPIO.output(LCD_D7, True) # Przełączenie pinu 6E time.sleep(E_DELAY) GPIO.output(LCD_E, True) time.sleep(E_PULSE) GPIO.output(LCD_E, False) time.sleep(E_DELAY) if __name__ == '__main__': main()

Na koniec zapisujemy projekt i odpalamy go z uprawnieniami root'a, albowiem dostęp do interfejsu GPIO i /dev/mem ma tylko administrator - pewnie można to zmienić za pomocą /etc/udev/rules.d, ale mi to nie potrzebne :)

Jak na razie to tyle... Powiem tylko, że planuje użyć tego LCD do wyświetlania informacji z klienta BitTorrent Deluge. Jak coś wyskrobię to na pewno z wami się tym podzielę. Pozdrawiam wojtekadams.

Aaaa za wytrwałość Kot plecakowy ;)

 

linux sprzęt oprogramowanie

Komentarze

0 nowych
okokok   12 #1 14.03.2013 22:41

Hej, Fajny wpis i kot :D
Do czego u Ciebie służy Raspberry?
Opłacało się kupować?
Nie lepszy jakiś tańszy Mini ITX?
Robiłeś z niego router?
Pytam, bo już od jakiegoś czasu myślę o zakupie tego, ale jakoś odstrasza mnie zabawa z sieciówkami na USB (wydają mi się jakieś takie badziewne) i tylko 2 porty USB.

dragonn   10 #2 14.03.2013 23:15

@okoko właśnie też myślę na routerem, powiem tak sam port Ethernet też na płytce jest podłączony na USB... na daną chwilę się zastanawiam co z tym fantem zrobić, jakoś zwykłe router mnie nie satysfakcjonują....

wojtekadams   18 #3 15.03.2013 00:19

@okokok
- RPi służy jako player video, klient/server ftp, server ssh, tunel do mojej domowej sieci.
- opłacało się - trochę żałuje że nie mam wersji z 512MB Ramu
- mam mini ITXa ;) - płytka intela D945GSEJT
- nie nie miałem potrzeby ;), ale bez problemu udało mi się odpalić dongla Wifi Tp-Linka

@dragon
polecam routery Mikrotika, lub malinkę :)

Autor edytował komentarz.
FaUst   11 #4 15.03.2013 08:40

@dragon
Również polecam Mikrotika (nie pytajcie kiedy ciąg dalszy wpisów na blogu :P)

dragonn   10 #5 15.03.2013 09:04

@FaUst właśnie na to wpadłem!! :D, ale nie da się chyba na niego wgrać wrt? Ale i tak, chyba zdecyduję się na taki wynalazek ;).

wojtekadams   18 #6 15.03.2013 09:07

@dragon
WRT się chowa, do Mikrotika :)

GBM MODERATOR BLOGA  19 #7 15.03.2013 09:15

Elektronika i klocki LEGO - najlepsze połączenie :P

dragonn   10 #8 15.03.2013 09:28

@wojtekadams ok :D, ale i tak widzę że do modelu RB951G wsparcie wrt jest, nie oficjalne ale jest!! Tak że ;), wiem już co kupuję!.

wojtekadams   18 #9 15.03.2013 10:00

@GBM
obudowa jak na razie tymczasowa - później prawdopodobnie zastosuję coś bardziej profesjonalnego :)

@dragon
cieszę się, że mogłem pomóc.

okokok   12 #10 15.03.2013 12:03

@dragon, WRT to w porównaniu z MikroTikiem bardzo słaby i ograniczony system na domowe routery.
Ja chyba zdecyduje się na Raspberry albo jakąś płytkę Mini ITX i zrobie na tym Debiana, wraz z kilkoma usługami.

nitro2012   10 #11 15.03.2013 13:07

ja używam gargoyle, daje większe możliwości niż wrt.

  #12 15.03.2013 13:37

Opłaca się kupić Raspberry i postawić Debiana jako serwer plików? Myślę o wersji z 512 MB.

wojtekadams   18 #13 15.03.2013 14:04

@MarekCh
zależy co masz na myśli pisząc "serwer plików"...

FaUst   11 #14 15.03.2013 16:45

Jeśli dopięcie zewnętrznego HDD to trzeba zwrócić na niską moc portów USB w Malince.

@wojtekadams
Uważaj na slot SD - ja swojego Raspa tak załatwiłem (dam go komuś kogo lutownica nie gryzie i może uratuje, a sam kupię nową wersję)

Autor edytował komentarz.
  #15 15.03.2013 16:51

Mam na myśli mało pojemny dysk na przechowywanie danych. Np. około 8 GB, aby były dostępne z każdego miejsca.

wojtekadams   18 #16 15.03.2013 16:54

@FaUst
jak ktoś chce podłączyć zewnętrzny dysk HDD do maliny to tylko przez aktywnego HUBa USB

No współczuje .... - dlatego ja trzymam swoją w klockowej obudowie i karta jest zabezpieczona - na zdjęciach nie widać.

A powiedz @FaUst - serio mówisz o oddaniu :> to jak coś to mogę ją zaadoptować - nawet pokryję koszty transportu :)

wojtekadams   18 #17 15.03.2013 17:51

@MarekCh
chyba mówisz o jakimś USB Sticku 8GB ? A nie zwykłym HDD. Proponuje abyś kupił kartę SD 16GB i będziesz miał problem z bańki bez dodatkowych urządzeń. Postawisz na tym system, który zajmie max 2GB i 14 jest dla Ciebie na twoje pliczki.

Autor edytował komentarz.
  #18 15.03.2013 19:27

@wojtekadams
Dokładnie o to mi chodzi. Raspberry ma za mało portów, aby podłączać dyski, czy pendrivy. Wszystko ma lecieć z karty pamięci.

okokok   12 #19 15.03.2013 20:55

O co chodzi z tą kartą? Jak się ją wyjmie w trakcie pracy to pada cały Raspberry?

wojtekadams   18 #20 15.03.2013 21:37

@okokok
nie, FaUst uszkodził mechanicznie slot karty SD

Autor edytował komentarz.
parranoya   8 #21 15.03.2013 21:54

@wojtekadams
"ale bez problemu udało mi się odpalić dongla Wifi Tp-Linka "
A w jakim trybie? Klient czy access point? Ciekawi mnie to bo gdzieś przeczytałem, że obniżona moc portu usb nie zawsze pozwala na uruchomienia na tym access pointa.

okokok   12 #22 15.03.2013 23:14

@wojtekadams, może jakaś seria how to nt malinki? Np. jak poradziłeś sobie z tą kartą WiFi?

wojtekadams   18 #23 15.03.2013 23:24

@parranoya
odpaliłem dongla w trybie klienta... - faktycznie mogłem wprowadzić kogoś w błąd.
ale bez problemu można dostarczyć zasilanie z aktywnego huba usb i to powinno rozwiązać problem

@okokok
nie mówię nie

parranoya   8 #24 16.03.2013 13:19

@okokok
Właśnie piszę jak uruchomić punkt dostępowy na Debianie z kartą TP-LINK, tak więc bądź czujny.

wojtekadams   18 #25 16.03.2013 13:30

@parranoya
jak opiszesz to, to ja dodam swoje 3 grosze jak uruchomić tą kartę na RPi.
Powiedz jaki model karty posiadasz?

  #26 17.03.2013 21:23

Konfiguracja bezprzewodowej karty sieciowej dołączonej do rPi jest fajnie opisana tu: http://databoyz.wordpress.com/tag/how-to-setup-network-and-wpa_supplicant-conf-f.../
ja zrobiłem tak ze swoją kartą TP-Linka (TL-WN725N) na rPi i ruszyła pomimo, żeSSID mojej sieci jest ukryty. Moje rPi jest w piwnicy i mierzy temperatury z 4 czujników DS18b20 na kotle CO.

command-dos   17 #27 17.03.2013 23:29

panie kolego... forum i blog raspberry jest od tego ;) tak na poważnie, to jest kilka osób na forum zainteresowanych właśnie takimi wyświetlaczami, może powielisz temat? Grupa zainteresowanych tam zaglądających jest bardziej, jak docelowa :P BTW @Kyrol próbował mi na forum pomóc w odpaleniu quake'a 3 na r-pi, ale zbytnio czasu nie mam...

  #28 18.03.2013 10:06

Udało Ci się może zaimplementować obsługę polskich znaków?

wojtekadams   18 #29 18.03.2013 10:32

@command-dos
mogę powielić temat :), ale nie wiem czy jest sens - zawsze można odesłać ludzi do tego tematu ;)
Ja osobiście nie lubię forum dyskusyjnych - zraziłem się kilka lat temu i teraz tego unikam jak ognia.

@mielu007
Nie miałem takiej potrzeby, aby używać polskich znaków, ale jak dzisiaj znajdę chwilkę to spróbuje odpalić nasze ą i ę :)

  #30 18.03.2013 11:46

Wielkie dzięki. Jak będzie jeden znak to resztę też się uda (tzn 8 bo tyle można zdeklarować)

command-dos   17 #31 18.03.2013 13:44

@wojtekadams - do wyboru masz też bloga: blog.r-pi.pl - zrobię Cię redaktorem i już. Dodatkowo link z forum i gotowe. A do linki tutaj, to nie omieszkam - ma się rozumieć. Problemem jest fragmentacja informacji w internecie. Ja chciałbym (marzy mi się) stworzyć taką swoistą bazę wiedzy, tak aby malinowcy wiedzieli gdzie szukać informacji i żeby mogli ją znaleźć (najlepiej) w jednym miejscu. To, czy pomysł jest godny, to już użytkownicy ocenią ;) a to co zrobiłeś, to majstersztyk.

  #32 19.03.2013 11:52

Dałem redę, zaimplementowałem 8 polskich znaków ą, ś, ć, ż, ń, ó, ł.

  #34 11.09.2013 23:40

Da się jakoś zmusić do działa lcd4linux z HD44780 po szynie GPIO? Czy trzeba kupić/zrobić adapter I2C lub USB? :>

  #35 05.10.2013 02:34

Gdzie taki wyświetlacz kupić, co wymaga wpięcia tylko poru kabelków? wpisuje w google model i nic nie ma

  #36 14.05.2014 14:27

Robię wszystko jak w poradniku i mam tylko te krzaczki, po odpaleniu skryptu nic się nie wyświetla. Jakie mogą być problemy? Podłączenie sprawdzałem 100 razy.

wojtekadams   18 #37 14.05.2014 15:29

Wyświetlacz masz na pewno dobrze podłączony ?

  #38 14.05.2014 16:08

Takimi pytaniami jeszcze bardziej się irytuje...Napisałem że sprawdzałem nie raz nie dwa i jest dobrze...

zypolit   3 #39 04.09.2014 14:19

Kupiłem wyświetlacz dla Raspberry Pi na ematador.pl, chociaż był problem żeby coś znaleźć. Miałem instrukcję do podłączenia, trochę i was poczytałem i jakoś to poszło, a swoją drogą takich produktów brakuje.

wojtekadams   18 #40 04.09.2014 15:22

@zypolit: takich produktów jest dużo tylko nie na polskim rynku

zypolit   3 #41 09.10.2014 15:24

Czy ja wiem? Ja miałem problem. Jak już był jakiś sklep to wydawał się być lewy. U nich dokupiłem jeszcze klawiaturkę i dodatkową pamięć pod sprzęcik. Zwyczajnie chciałem wyciągnąć z tego więcej możliwości - chyba się udało.

  #42 05.10.2015 16:39

ja chyba wykorzystam to do wyświetlania kursu bitcoina, prawdopodobnie z otwartego API giełdy Bitbay