Innholdsfortegnelse:

1602 LCD -tastaturskjermmodul med I2C -ryggsekk: 6 trinn
1602 LCD -tastaturskjermmodul med I2C -ryggsekk: 6 trinn

Video: 1602 LCD -tastaturskjermmodul med I2C -ryggsekk: 6 trinn

Video: 1602 LCD -tastaturskjermmodul med I2C -ryggsekk: 6 trinn
Video: Introduksjon til LCD2004 LCD-skjerm med I2C-modul for Arduino 2024, November
Anonim
1602 LCD -tastaturskjermmodul med I2C -ryggsekk
1602 LCD -tastaturskjermmodul med I2C -ryggsekk

Som en del av et større prosjekt ønsket jeg å ha en LCD -skjerm og et tastatur for navigering av noen enkle menyer. Jeg kommer til å bruke mange av I/O -portene på Arduino for andre jobber, så jeg ønsket et I2C -grensesnitt for LCD -skjermen. Så jeg kjøpte litt maskinvare, bestående av en 1602 LCD -tastaturskjermmodul fra DFRobot og en anonym I2C -seriemodul for LCD -skjermer. Jeg vil bruke disse med en Arduino Nano. Da fant jeg ut at det er noen utfordringer for å få disse komponentene til å fungere sammen - men det er mulig. Så jeg vil dele min erfaring og kanskje hjelpe noen andre.

Dette bildet er av det fungerende brødbrettet, som kan vise meldinger på LCD -skjermen og identifisere tastetrykk. LCD -skjermen styres gjennom I2C -grensesnittet, inkludert LCD -bakgrunnsbelysningen. Tastetrykkene mottas av Arduino på pinne A0 (det kan være hvilken som helst av de analoge pinnene, bortsett fra A4 og A5 som er bundet opp for I2C -grensesnittet).

Trinn 1: Beskrivelse av deler - LCD -tastaturskjermmodul

Delebeskrivelse - LCD -tastaturskjermmodul
Delebeskrivelse - LCD -tastaturskjermmodul

LCD -tastaturets skjermmodul består av en vanlig 1602 LCD montert på toppen av et kretskort som inneholder nøklene, og som tar et delsett av LCD -tilkoblingene og gjør dem tilgjengelige for toppnålene på undersiden av kretskortet. Jeg forstår at dette brettet er beregnet på å monteres på toppen av en Arduino Uno eller lignende, og gir den riktige pinneoppsettet for at det skal fungere i det miljøet. Jeg kjøpte denne modulen på Ebay fra en leverandør i Kina. Topptekstene på den nedre (tastatur) siden av brettet er stort sett merket, men pinnene på oversiden, som er LCD -grensesnittet, er ikke merket. Imidlertid er pinnene på selve LCD -en merket.

Trinn 2: Delbeskrivelse - I2C Serial Module

Delebeskrivelse - I2C Serial Module
Delebeskrivelse - I2C Serial Module

Seriemodulen har den vanlige 4-pinners overskriften for I2C, og et sett med umerkede toppstifter som jeg forstår er ment å plugge direkte i undersiden av LCD-modulen. Ved å studere etikettene på LCD -skjermen, var jeg i stand til å identifisere funksjonene til pinnene på den serielle modulen.

Denne modulen er basert på IC PCF8574T som avslutter I2C -protokollen, har 3 pinner for adressekontroll (20 til 27) og har 8 digitale inngangs-/utgangspinner P0 til P7. I henhold til databladet til PCF8574T har hver I/O -pinne en FET for å trekke den til bakken for LAV tilstand, og kan synke minst 20ma. I høy tilstand har den en forbigående aktiv pull-up og deretter en kontinuerlig pull-up strøm på omtrent 0,1 mA.

På denne modulen blir alle de digitale I/O -pinnene, bortsett fra P3, ganske enkelt ført ut til toppnålene (til høyre på bildet). Når det gjelder P3, er den koblet til bunnen av en transistor (synlig på bildet øverst til høyre like under etiketten "LED"). Emitteren til den transistoren er koblet til Vss (jord) og kollektoren er koblet til toppnål 16, hvor den kan brukes til å kontrollere LCD -bakgrunnsbelysningen. På grunn av transistoren er logikktilstanden reversert i forhold til den som antas i programvarebiblioteket. Det vil si at LCD -bakgrunnsbelysningen slås PÅ når P3 -pinnen er lav, og AV når P3 -pinnen er høy.

Etiketten på transistoren sier L6 som ifølge min forskning sannsynligvis gjør det til en MMBC1623L6 som har en minimum strømforsterkning på 200. Med 0,1 mA grunnstrøm bør den kunne opprettholde en LAV tilstand ved kollektoren (modul Pin 16) med minst 20mA kollektorstrøm.

I tillegg har denne modulen et 10K potensiometer koblet mellom +5 og jord, hvis variabel ledning bringes ut til pinne 3 (tredje fra bunnen på bildet). Når den er koblet direkte til LCD -skjermen, vil denne potten kontrollere kontrasten til LCD -skjermen. Denne funksjonen tilbys imidlertid av en egen lignende pott på LCD -skjermen, så denne potten på seriemodulen har ingen funksjon.

Jeg kunne ikke finne noen forbindelse til INT -pinnen til PCF8574T.

OPPDATERING 22. august 2019

Som nevnt ovenfor har PCF8574 3 adressekontrollpinner. Disse ser ut til å bli brakt ut til putene på ryggsekkbrettet der de er merket A0, A1 og A2. De kan sees på bildet. Jeg har ikke testet dette, men det virker nesten sikkert at ved å bygge en eller flere av disse pinnene til de tilstøtende putene, kan I2C -adressen styres over området fra 20 til 27. Videre er det en andre nesten identisk enhet, PCF8574A som har identisk funksjonalitet til PCF8574, men dekker adresseområdet fra 0x38 til 0x3F.

Adressen enheten din faktisk bruker, kan kontrolleres med en I2CScanner. Det er flere enkle I2C -skannere tilgjengelig fra forskjellige kilder. Denne på https://github.com/farmerkeith/I2CScanner identifiserer også noen av enhetene som ble funnet.

Trinn 3: Tilkoblinger

Tilkoblinger
Tilkoblinger

Takk til ChaitanyaM17 som ga Fritzing -diagrammet som viser forbindelsene, beskrevet nedenfor.

Makt:

LCD -modulen har en pinne på undersiden merket "5.0V". Til høyre ved siden av det er to umerkede pinner som begge er slipt.

Når du holder seriemodulen med I2C -grensesnittet i venstre ende, er det 16 pinner i nedre kant. Den første av disse er malt, og den andre av disse er +5v. Et annet alternativ er å bruke de to nederste pinnene på I2C -grensesnittet for strøm, men jeg syntes det var mer praktisk å bruke pinnene som beskrevet ovenfor.

I2C -grensesnitt. På den serielle modulen er den øverste pinnen SCL (klokke) og den går til Arduino A5. Den andre pinnen ned er SDA (data) og den går til Arduino A4.

LCD -utskriftsgrensesnitt. Det er 6 tilkoblinger mellom seriemodulen og LCD -tastaturskjermen, alle mellom pinner uten etiketter. Jeg vil identifisere dem på LCD -modulen ved å telle fra høyre til venstre, med den første pinnen som 1. Det er 2 blokker med 8, så de går fra 1 til 16. Jeg identifiserer dem på I2C -seriemodulen ved å telle fra venstre til Høyre, det er også 16 av disse. I tillegg gir jeg hver ledning en etikett, som er den tilsvarende pinnen på Arduino som normalt er knyttet til den funksjonen, i tilfelle en direkte tilkobling uten seriemodulen.

Så de 6 datatilkoblingene er:

Arduino -ekvivalent // Seriell modulpinne // LCD -tastaturmodulpinne

D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10

LCD -bakgrunnsbelysningskontroll: Denne bruker en tilkobling til:

Arduino -ekvivalent // Seriell modulpinne // LCD -tastaturmodulpinne

D10 // 16 // 11

Tastaturgrensesnitt: Dette bruker en enkelt ledning fra LCD -modulpinnen på undersiden merket "A0", til pinne A0 på Arduino. Det var i hvert fall ganske enkelt!

Trinn 4: Gjør RST -nøkkelen brukbar i likhet med de andre 5 tastene

RST kan kobles direkte til RESTART -inngangen på Arduino Nano.

Men hvis du vil at RST -nøkkelen skal kunne brukes i programvaren til andre ting, kan dette gjøres ved å koble en 15K motstand mellom RST -pinnen og A0 -pinnen på undersiden av LCD -tastaturskjermen.

Dette fungerer som følger: Det er en 2K motstand mellom +5V og høyre tast. Deretter en kjede med gradvis større motstander for hver av de andre tastene (330R til UP -tasten, 620R til NED -tasten, 1K til VENSTRE -tasten og 3K3 til SELECT -tasten. Alle tastene (inkludert RST -tasten) kobles til Når de er koblet til en 10 -biters A/D -omformer (som for Arduino Nano A0) leverer de omtrent følgende verdier:

Høyre = 0; Opp = 100; Ned = 260; Venstre = 410; Velg = 640.

Med 15 k motstand mot RST leverer den ca 850.

Programvaren vil bruke verdier rundt midtpunktene mellom disse verdiene for å bestemme hvilken tast som er trykket på.

Trinn 5: Programvare

Nyttig programvare er selvfølgelig en øvelse for leseren. Men for å komme i gang kan du ta en titt på testprogramvaren min. Jeg brukte NewLiquidCrystal -biblioteket, som inneholder støtte for I2C -grensesnittet. Alt fungerte bare, når jeg har installert bibliotekene riktig.

Hovedpoenget var å reversere polariteten til kommandoene for bakgrunnsbelysning AV og PÅ (på grunn av transistoren på I2C -modulen som forklart i delen Beskrivelse).

OPPDATERING 22. august 2019

Hvis du har problemer med at LCD -skjermen ikke fungerer, må du sjekke I2C -adressen til den serielle ryggsekken ved hjelp av en I2C -skanner. En passende skanner er vedlagt. Juster deretter om nødvendig den første parameteren i setningen

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

Trinn 6: Gjennomgang og diskusjon

Som du kan se, fikk jeg hovedfunksjonene til å fungere.

Min neste intensjon er å sette dette inn i en prosjektboks som en del av et annet prosjekt. Men etter å ha begynt på denne veien lærte jeg at det er en annen vanskelighet som jeg ikke hadde forventet.

Problemet er at denne LCD -tastaturmodulen ikke er konfigurert for å installeres i en eske. En hvilken som helst boks. Knappene på de 6 tastene er godt under nivået på LCD -skjermen, slik at hvis modulen er montert i en boks (f.eks. I lokket) med toppen av LCD -kretskortet i flukt med undersiden av lokket, vil toppene av tastene er omtrent 7 mm under toppen av lokket.

Mulige løsninger er:

a) Tål det. Bor tilgangshull i lokket og bruk et verktøy (f.eks. En kuttet strikkepinne med passende diameter) for å trykke på knappene.

b) Fjern LCD -skjermen fra kretskortet og utfør kirurgi på tastaturet slik at de to komponentene kan festes til lokket på prosjektboksen uavhengig (jeg tror det fortsatt kan være et problem med knappene som er for korte)

c) fjern de eksisterende knappene og erstatt dem med høyere knapper. De nye knappene må være omtrent 13 mm høye, slik at de kan betjenes gjennom lokket på prosjektboksen). Utskiftningsknappbrytere er lett tilgjengelige i en rekke høyder, inkludert 13 mm.

d) Kast LCD -tastaturets skjermmodul og bruk separate LCD- og tastaturenheter (dvs. start på nytt). Det er et bredt spekter av tastaturenheter tilgjengelig, men jeg har ikke sett en med samme 6-tasters layout som på denne modulen (dvs. Velg, Venstre, Opp, Ned, Høyre, Start på nytt). Det er kanskje ikke et stort problem, men en av grunnene til at jeg begynte med denne modulen var at jeg trodde dette nøkkeloppsettet var det jeg ønsket.

Jeg planlegger å gå med løsning c) ovenfor, og se hvordan jeg går.

En annen bit av informasjon som kan være av interesse:

Med bakgrunnslyset PÅ, er dagens forbruk av dette prosjektet: Arduino Nano 21,5 ma; Seriemodul 3,6 ma; LCD -modul 27,5 mA; Totalt 52 mA.

Med bakgrunnslyset AV, er dagens forbruk av dette prosjektet: Arduino Nano 21,5 ma; Seriemodul 4,6 ma; LCD -modul 9,8 mA; Totalt 36 mA.

Anbefalt: