Spisu treści:

1602 Moduł osłony klawiatury LCD z plecakiem I2C: 6 kroków
1602 Moduł osłony klawiatury LCD z plecakiem I2C: 6 kroków

Wideo: 1602 Moduł osłony klawiatury LCD z plecakiem I2C: 6 kroków

Wideo: 1602 Moduł osłony klawiatury LCD z plecakiem I2C: 6 kroków
Wideo: Урок 4 Подключаем модуль часов реального времени 1302 и дисплей 1602 I2C схема + код 2024, Lipiec
Anonim
1602 Moduł osłony klawiatury LCD z plecakiem I2C
1602 Moduł osłony klawiatury LCD z plecakiem I2C

W ramach większego projektu chciałem mieć wyświetlacz LCD i klawiaturę do nawigacji po kilku prostych menu. Będę używał wielu portów I/O w Arduino do innych zadań, więc chciałem mieć interfejs I2C dla LCD. Kupiłem więc trochę sprzętu, składającego się z modułu osłony klawiatury LCD 1602 firmy DFRobot i anonimowego modułu szeregowego I2C dla wyświetlaczy LCD. Chcę ich używać z Arduino Nano. Potem odkryłem, że istnieją pewne wyzwania, aby te komponenty działały razem - ale jest to możliwe. Więc chcę podzielić się moim doświadczeniem i być może pomóc innym.

To zdjęcie przedstawia działającą płytkę stykową, która może wyświetlać komunikaty na wyświetlaczu LCD i identyfikować naciśnięcia klawiszy. Wyświetlacz LCD jest sterowany przez interfejs I2C, w tym podświetlenie LCD. Naciśnięcia klawiszy są odbierane przez Arduino na pinie A0 (może to być dowolny z pinów analogowych, z wyjątkiem A4 i A5, które są związane z interfejsem I2C).

Krok 1: Opis części - moduł osłony klawiatury LCD

Opis części - moduł osłony klawiatury LCD
Opis części - moduł osłony klawiatury LCD

Moduł osłony klawiatury LCD składa się z powszechnie używanego wyświetlacza LCD 1602 zamontowanego na górze płytki drukowanej, która przechowuje klawisze, i która pobiera podzestaw połączeń LCD i udostępnia je pinom nagłówka na spodzie płytki drukowanej. Rozumiem, że ta płyta jest przeznaczona do montażu na Arduino Uno lub podobnym i zapewnia odpowiedni układ pinów do pracy w tym środowisku. Kupiłem ten moduł w serwisie eBay od sprzedawcy w Chinach. Styki nagłówka na dolnej (klawiatury) stronie płyty są w większości oznaczone, ale styki na górnej stronie, która jest interfejsem LCD, nie są oznaczone. Jednak styki na samym wyświetlaczu LCD są oznaczone.

Krok 2: Opis części - moduł szeregowy I2C

Opis części - moduł szeregowy I2C
Opis części - moduł szeregowy I2C

Moduł szeregowy ma zwykłe 4-pinowe złącze I2C i zestaw nieoznakowanych pinów, które, jak rozumiem, są przeznaczone do podłączenia bezpośrednio do spodu modułu LCD. Badając etykiety na wyświetlaczu LCD, udało mi się zidentyfikować funkcje pinów na module szeregowym.

Moduł ten jest oparty na układzie scalonym PCF8574T, który kończy protokół I2C, posiada 3 piny do kontroli adresu (20 do 27) i ma 8 cyfrowych pinów wejścia/wyjścia P0 do P7. Zgodnie z arkuszem danych PCF8574T, każdy pin I/O ma tranzystor FET do uziemienia dla stanu LOW i może opaść co najmniej 20 mA. W stanie wysokim ma przemijające aktywne podciąganie, a następnie ciągły prąd podciągający o wartości około 0,1 mA.

W tym module wszystkie cyfrowe piny we/wy, z wyjątkiem P3, są po prostu wyprowadzone na piny nagłówka (po prawej stronie na zdjęciu). W przypadku P3 jest on podłączony do bazy tranzystora (widoczny na zdjęciu w prawym górnym rogu tuż pod napisem „LED”). Emiter tego tranzystora jest podłączony do Vss (masa), a kolektor jest podłączony do pinu 16, gdzie można go wykorzystać do sterowania podświetleniem LCD. Ze względu na tranzystor stan logiczny jest odwrócony w stosunku do przyjętego w bibliotece oprogramowania. Oznacza to, że podświetlenie LCD jest włączone, gdy pin P3 jest w stanie niskim, a wyłączone, gdy pin P3 jest w stanie wysokim.

Etykieta na tranzystorze mówi L6, co według moich badań prawdopodobnie sprawia, że jest to MMBC1623L6, który ma minimalne wzmocnienie prądowe 200. Przy prądzie bazowym 0,1 mA powinien być w stanie utrzymać stan NISKI na swoim kolektorze (moduł Pin 16) przy prądzie kolektora co najmniej 20mA.

Dodatkowo moduł ten posiada potencjometr 10K podłączony pomiędzy +5 a masą, którego wyprowadzenie zmienne jest wyprowadzone na pin 3 (trzeci od dołu na zdjęciu). Po podłączeniu bezpośrednio do LCD, ten potencjometr kontroluje kontrast wyświetlacza LCD. Jednak funkcję tę pełni osobny podobny potencjometr na ekranie LCD, więc ten potencjometr na module szeregowym nie pełni żadnej funkcji.

Nie udało mi się znaleźć żadnego połączenia z pinem INT w PCF8574T.

AKTUALIZACJA 22 sierpnia 2019

Jak wspomniano powyżej, PCF8574 ma 3 piny kontroli adresu. Wygląda na to, że są one wyniesione do podkładek na tablicy plecaka, gdzie są oznaczone A0, A1 i A2. Widać je na zdjęciu. Nie testowałem tego, ale wydaje się prawie pewne, że poprzez zmostkowanie jednego lub więcej z tych pinów do sąsiednich padów, adres I2C może być kontrolowany w zakresie od 20 do 27. Ponadto istnieje drugie, prawie identyczne urządzenie, PCF8574A, który ma identyczną funkcjonalność jak PCF8574, ale obejmuje zakres adresów od 0x38 do 0x3F.

Adres faktycznie używany przez urządzenie można sprawdzić za pomocą skanera I2C. Istnieje kilka prostych skanerów I2C dostępnych z różnych źródeł. Ten na https://github.com/farmerkeith/I2CScanner identyfikuje również niektóre znalezione urządzenia.

Krok 3: Połączenia

Znajomości
Znajomości

Podziękowania dla ChaitanyaM17, który dostarczył diagram Fritzing, który przedstawia opisane poniżej połączenia.

Moc:

Moduł LCD ma pin na dolnej stronie oznaczony „5.0V”. Po prawej stronie obok znajdują się dwa nieopisane styki, które są uziemione.

Trzymając moduł szeregowy z interfejsem I2C po lewej stronie, na dolnej krawędzi znajduje się 16 pinów. Pierwszy z nich to uziemienie, a drugi to +5v. Inną opcją jest użycie dolnych dwóch pinów interfejsu I2C do zasilania, ale uważam, że wygodniej jest użyć pinów, jak opisano powyżej.

Interfejs I2C. Na module szeregowym górny pin to SCL (zegar) i idzie do Arduino A5. Drugi pin w dół to SDA (dane) i trafia do Arduino A4.

Interfejs drukowania LCD. Istnieje 6 połączeń pomiędzy modułem szeregowym a osłoną klawiatury LCD, wszystkie pomiędzy pinami bez etykiet. Zidentyfikuję je na module LCD, licząc od prawej do lewej, z pierwszym pinem jako 1. Są 2 bloki po 8, więc przechodzą od 1 do 16. Identyfikuję je na module szeregowym I2C, licząc od lewej do Zgadza się, jest ich również 16. Dodatkowo każdemu przewodowi podaję etykietę, która jest równoważnym pinem w Arduino, który normalnie jest skojarzony z tą funkcją, w przypadku bezpośredniego połączenia bez modułu szeregowego.

Tak więc 6 połączeń danych to:

Odpowiednik Arduino // pin modułu szeregowego // pin modułu klawiatury LCD

K4 // 11 // 5 K5 // 12 // 6 K6 // 13 // 7 K7 // 14 // 8 K8 // 4 // 9K9 // 6 // 10

Sterowanie podświetleniem LCD: Wykorzystuje jeszcze jedno połączenie:

Odpowiednik Arduino // pin modułu szeregowego // pin modułu klawiatury LCD

K10 //16 // 11

Interfejs klawiatury: wykorzystuje pojedynczy przewód od pinu modułu LCD na dolnej stronie oznaczonego "A0" do pinu A0 na Arduino. Przynajmniej to było całkiem proste!

Krok 4: Spraw, aby klucz RST działał podobnie jak pozostałe 5 klawiszy

RST można podłączyć bezpośrednio do wejścia RESTART Arduino Nano.

Jeśli jednak chcesz, aby klawisz RST był używany w oprogramowaniu do innych celów, można to zrobić podłączając rezystor 15K między pin RST a pin A0 na dolnej stronie osłony klawiatury LCD.

Działa to w następujący sposób: pomiędzy +5V a prawym klawiszem znajduje się rezystor 2K. Następnie łańcuch stopniowo większych rezystorów dla każdego z pozostałych klawiszy (330R do klawisza UP, 620R do klawisza DOWN, 1K do klawisza LEFT i 3K3 do klawisza SELECT. Wszystkie klawisze (w tym klawisz RST) są połączone z Po podłączeniu do 10-bitowego przetwornika A/D (jak dla Arduino Nano A0) dostarczają w przybliżeniu następujące wartości:

Prawo = 0; w górę = 100; w dół = 260; Lewy = 410; Wybierz = 640.

Z rezystorem 15 k dla RST dostarcza około 850.

Oprogramowanie użyje wartości w pobliżu punktów środkowych między tymi wartościami, aby zdecydować, który klawisz został naciśnięty.

Krok 5: Oprogramowanie

Przydatne oprogramowanie to oczywiście ćwiczenie dla czytelnika. Jednak na początek możesz rzucić okiem na moje oprogramowanie testowe. Skorzystałem z biblioteki NewLiquidCrystal, która zawiera wsparcie dla interfejsu I2C. Wszystko po prostu działało, gdy mam poprawnie zainstalowane biblioteki.

Głównym celem było odwrócenie polaryzacji poleceń wyłączenia i włączenia podświetlenia (z powodu tranzystora na module I2C, jak wyjaśniono w sekcji Opis części).

AKTUALIZACJA 22 sierpnia 2019

Jeśli masz problemy z niedziałającym wyświetlaczem LCD, sprawdź adres I2C swojego plecaka szeregowego za pomocą skanera I2C. Dołączony jest odpowiedni skaner. Następnie, jeśli to konieczne, dostosuj pierwszy parametr w oświadczeniu

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Krok 6: Przegląd i dyskusja

Jak widać, główne funkcje działają.

Moim następnym zamiarem jest umieszczenie tego w pudełku projektu jako część innego projektu. Jednak po wejściu na tę drogę dowiedziałem się, że jest jeszcze jedna trudność, której się nie spodziewałem.

Trudność polega na tym, że ten moduł klawiatury LCD nie jest przystosowany do instalacji w pudełku. Każde pudełko. Przyciski 6 klawiszy znajdują się znacznie poniżej poziomu ekranu LCD, dzięki czemu jeśli moduł jest zamontowany w puszce (np. w pokrywie), górna część płytki drukowanej LCD jest zlicowana z dolną częścią pokrywy, klawiszy znajduje się około 7 mm poniżej górnej części pokrywy.

Możliwe rozwiązania to:

a) Pogódź się z tym. Wywierć otwory dostępowe w pokrywce i za pomocą narzędzia (np. przyciętej igły dziewiarskiej o odpowiedniej średnicy) wciśnij guziki.

b) Wyjmij wyświetlacz LCD z płytki drukowanej modułu i wykonaj operację na klawiaturze, aby oba elementy można było niezależnie przymocować do pokrywy skrzynki projektowej (myślę, że nadal może być problem ze zbyt krótkimi przyciskami)

c) usunąć istniejące guziki i zastąpić je wyższymi guzikami. Nowe przyciski muszą mieć wysokość około 13 mm, aby można było nimi sterować przez pokrywę pudełka projektu). Zamienne przełączniki przyciskowe są łatwo dostępne w różnych wysokościach, w tym 13 mm.

d) wyrzuć moduł osłony klawiatury LCD i użyj oddzielnych jednostek LCD i klawiatury (tj. zacznij od nowa). Dostępna jest szeroka gama klawiatur, jednak nie widziałem takiej z takim samym układem 6-klawiszowym jak w tym module (tj. Wybierz, Lewo, Góra, Dół, Prawo, Restart). Może nie jest to duży problem, ale jednym z powodów, dla których zacząłem z tym modułem, było to, że myślałem, że ten układ klawiszy jest tym, czego chciałem.

Planuję skorzystać z rozwiązania c) powyżej i zobaczę, jak sobie poradzę.

Kolejny fragment informacji, które mogą być interesujące:

Przy włączonym podświetleniu pobór prądu tego projektu wynosi: Arduino Nano 21,5 ma; Moduł szeregowy 3,6 mA; Moduł LCD 27,5 mA; Razem 52 mA.

Przy wyłączonym podświetleniu pobór prądu tego projektu wynosi: Arduino Nano 21,5 ma; Moduł szeregowy 4,6 mA; moduł LCD 9,8 mA; Razem 36 mA.

Zalecana: