Raspberry Pi:lle LCD-näyttö

Näitähän projekteja on jo miljoona mutta päätinpä silti lisätä omani. :wink:

[size=150]Idea[/size]

Idea tähän projektiin tuli siitä kun Raspberry Pi oli palvelinkäytössä. Siinä ei ollut mitään näyttöä joten täytyi luottaa vaan dy.fi osoitteeseen. Jos jokin meni vikaan niin en pystynyt ottamaan SSH yhteyttä. Tämän projektin tarkoitus on laittaa Raspberry Pi:iin GPIO väylään LCD-näyttö josta voi lukea järjestelmän tiedot kuten IP-osoitteen tai uptimen.

[size=150]Näyttö[/size]

Näyttönä toimii HD44780 -yhteensopiva 16×2 LCD moduuli. En löytänyt moduulin datasheettiä (se on joku kiinalainen), mutta onneksi se on standardi näyttö.

lcd_naytto.jpg

Näytön pinout on onneksi standardi.

1 VSS
2 VDD
3 Contrast
4 RS
5 R/W
6 Enable
7 D0
8 D1
9 D2
10 D3
11 D4
12 D5
13 D6
14 D7
15 anodi (taustavalo)
15 katodi (taustavalo)

[size=150]Kytkentä[/size]

Näytölle annetaan 5v virta ja logiikat ovat 3v3 tasoisia. Mitään erillistä suojauspiiriä ei ole sillä minulla ei sattunut olemaan niitä juuri sillä hetkellä. Näyttö toimii ilmankin niitä mutta en ole varma että kuluttaako se Raspberry Piitä. Näytön R/W pinni on liitetty maahan jotenka näyttö ei tapa Raspberry Piitä sen 5v jännitteellä. Kontrastin säätö on toteutettu 4K7 vastuksella joka on pinni 3:n ja maan välillä. Taustavalo on kytketty 5v ja maan välille, jolloinka sitä ei voida ohjelmallisesti ohjata.

Näyttö on kytketty seuraavasti:

RPI           LCD
11 (GPIO 17)  6 (EN)
12 (GPIO 18)  4 (RS)
15 (GPIO 22)  11 (D4)
16 (GPIO 23)  12 (D5)
17 (GPIO 24)  13 (D6)
18 (GPIO 25)  14 (D7)
1 (5V power)  15 (A)
6 (GND)       16 (K)
1 (5V power)  2 (VDD)
18 (GND)      1 (VSS)

[size=150]Ohjaus[/size]

Näytön ohjaus tapahtuu GPIO väylän kautta. Ohjaukseen käytetty koodi on minun itse kirjoittama, mutta GPIO piirin ohjauskoodi on Gert van Loo:n koodia (http://elinux.org/RPi_Low-level_peripherals#GPIO_Driving_Example_.28C.29). Näyttö toimii 4-bit tilassa jolloin GPIO pinnejä vapautuu muuhunkin käyttöön.

lcd_uptime.jpg

[size=150]Ohjauskoodi[/size]

Ohjauskoodi on daemoni joka toimii taustalla ja ajaa näyttöä. Se vaatii pääkäyttäjän oikeudet sillä sen täytyy avata /dev/mem. Voisin myös joskus kirjoittaa Kernel ajurin LCD näytölle mutta en osaa vielä tarpeeksi hyvin kirjoittaa Kernelin koodia. Olen testannut koodia Arch Linuxilla ja se toimii täydellisesti. Koodi on kuitenkin suunniteltu 16×2 näytöille sillä itse en omista muita näyttöjä. Siinä voi olla muutama bugi mutta omassa testikäytössä ohjelma toimi moitteettomasti.

Koodi on pakattu tar.gz muodossa. Sen voi purkaa ja kääntää komennoilla:

tar -xzf lcd.tar.gz cd lcd make
jonka jälkeen koodi voidaan ajaa komennolla:

sudo ./lcdd

Makefilessä ei ole mitään asennusvaihtoehtoja mutta ohjelman voi manuaalisesti asentaa komennolla:

sudo cp lcdd /usr/local/bin

joka asentaa ohjelman /usr/local/bin hakemistoon. Huomaa että asentamiseen tarvitaan pääkäyttäjän oikeudet.

Kirjoittanut: Eino-Pekka Kanto (Nimeni saa mainita).
lcd.tar.gz (3.4 KB)