Indholdsfortegnelse:

1602 LCD -tastaturbeskyttelsesmodul med I2C -rygsæk: 6 trin
1602 LCD -tastaturbeskyttelsesmodul med I2C -rygsæk: 6 trin

Video: 1602 LCD -tastaturbeskyttelsesmodul med I2C -rygsæk: 6 trin

Video: 1602 LCD -tastaturbeskyttelsesmodul med I2C -rygsæk: 6 trin
Video: How to Use I2C LCD with Arduino | Very Easy Arduino LCD I2C Tutorial | Arduino 16x2 LCD I2C Tutorial 2024, Juli
Anonim
1602 LCD -tastaturskærmsmodul med I2C -rygsæk
1602 LCD -tastaturskærmsmodul med I2C -rygsæk

Som en del af et større projekt ville jeg have et LCD -display og et tastatur til navigation i nogle enkle menuer. Jeg vil bruge mange af I/O -portene på Arduino til andre job, så jeg ville have en I2C -grænseflade til LCD'en. Så jeg købte noget hardware, bestående af et 1602 LCD -tastatur -skjoldmodul fra DFRobot og et anonymt I2C -seriemodul til LCD -skærme. Jeg vil bruge disse med en Arduino Nano. Så fandt jeg ud af, at der er nogle udfordringer med at få disse komponenter til at fungere sammen - men det er muligt. Så jeg vil dele min erfaring og måske hjælpe nogle andre.

Dette foto er af det fungerende brødbræt, som kan vise meddelelser på LCD'et og identificere tastetryk. LCD'et styres via I2C -interface, herunder LCD -baggrundsbelysning. Tastetrykkene modtages af Arduino på pin A0 (det kan være en hvilken som helst af de analoge ben, undtagen A4 og A5, der er bundet til I2C -interfacet).

Trin 1: Beskrivelse af dele - LCD -tastaturbeskyttelsesmodul

Dele Beskrivelse - LCD -tastaturbeskyttelsesmodul
Dele Beskrivelse - LCD -tastaturbeskyttelsesmodul

LCD -tastaturets afskærmningsmodul består af en almindeligt anvendt 1602 LCD monteret oven på et printkort, der indeholder tasterne, og som tager et undersæt af LCD -forbindelserne og gør dem tilgængelige for headerstifterne på printkortets underside. Jeg forstår, at dette kort er beregnet til at blive monteret oven på en Arduino Uno eller lignende og giver det rigtige pin -layout til at det kan fungere i det miljø. Jeg købte dette modul på Ebay fra en sælger i Kina. Overskriftsstifterne på den nederste (tastatur) side af tavlen er for det meste mærket, men benene på oversiden, som er LCD -grænsefladen, er ikke mærket. Imidlertid er benene på selve LCD'et mærket.

Trin 2: Beskrivelse af dele - I2C Serial Module

Beskrivelse af dele - I2C Serial Module
Beskrivelse af dele - I2C Serial Module

Seriemodulet har det sædvanlige 4-bens header til I2C, og et sæt umærkede headerstifter, som jeg forstår, er beregnet til at tilsluttes direkte på undersiden af LCD-modulet. Ved at studere etiketterne på LCD'et kunne jeg identificere funktionerne på benene på det serielle modul.

Dette modul er baseret på IC PCF8574T, der afslutter I2C -protokollen, har 3 ben til adressekontrol (20 til 27) og har 8 digitale input/output -ben P0 til P7. Ifølge databladet til PCF8574T har hver I/O -pin en FET til at trække den til jorden for den LAVE tilstand og kan synke mindst 20ma. I tilstanden Høj har den en forbigående aktiv pull-up og derefter en fortsat pull-up strøm på ca. 0,1 mA.

På dette modul bringes alle de digitale I/O -ben, bortset fra P3, simpelthen frem til headerstifter (til højre på billedet). I tilfælde af P3 er den forbundet til bunden af en transistor (synlig på billedet øverst til højre lige under etiketten "LED"). Transistorens emitter er forbundet til Vss (jord), og kollektoren er forbundet til headerstift 16, hvor den kan bruges til at styre LCD -baggrundsbelysningen. På grund af transistoren er den logiske tilstand vendt i forhold til den, der antages i softwarebiblioteket. Det vil sige, at LCD -baggrundsbelysningen er tændt, når P3 -stiften er lav, og FRA, når P3 -stiften er høj.

Etiketten på transistoren siger L6, som ifølge min forskning sandsynligvis gør den til en MMBC1623L6, der har en minimum strømforstærkning på 200. Med 0,1 mA basisstrøm bør den kunne opretholde en LAV tilstand ved sin kollektor (modul Pin 16) med mindst 20mA kollektorstrøm.

Derudover har dette modul et 10K potentiometer forbundet mellem +5 og jord, hvis variable ledning bringes ud til pin 3 (tredje fra bunden på billedet). Når den er tilsluttet direkte til LCD'en, styrer denne gryde kontrasten på LCD'en. Denne funktion leveres imidlertid af en separat lignende gryde på LCD -skjoldet, så denne gryde på det serielle modul har ingen funktion.

Jeg kunne ikke finde nogen forbindelse til INT -stiften på PCF8574T.

OPDATERING 22. august 2019

Som nævnt ovenfor har PCF8574 3 adressekontrolstifter. Disse ser ud til at blive bragt ud til puder på rygsækbrættet, hvor de er mærket A0, A1 og A2. De kan ses på billedet. Jeg har ikke testet dette, men det virker næsten sikkert, at ved at bygge en eller flere af disse ben til de tilstødende puder kan I2C -adressen styres over området fra 20 til 27. Desuden er der en anden næsten identisk enhed, PCF8574A, der har identisk funktionalitet som PCF8574, men dækker adresseområdet fra 0x38 til 0x3F.

Den adresse, din enhed faktisk bruger, kan kontrolleres med en I2CScanner. Der findes flere enkle I2C -scannere fra forskellige kilder. Denne på https://github.com/farmerkeith/I2CScanner identificerer også nogle af de fundne enheder.

Trin 3: Forbindelser

Forbindelser
Forbindelser

Tak til ChaitanyaM17, der leverede Fritzing -diagrammet, som viser forbindelserne, beskrevet nedenfor.

Strøm:

LCD -modulet har en pin på undersiden mærket "5.0V". Til højre ved siden af er to umærkede stifter, som begge er slebet.

Hvis du holder det serielle modul med I2C -grænsefladen i venstre ende, er der 16 ben i den nederste kant. Den første af disse er formalet, og den anden af disse er +5v. En anden mulighed er at bruge de to nederste ben på I2C -grænsefladen til strøm, men jeg fandt det mere bekvemt at bruge stifterne som beskrevet ovenfor.

I2C interface. På det serielle modul er den øverste pin SCL (ur), og den går til Arduino A5. Den anden pin -down er SDA (data), og den går til Arduino A4.

LCD print interface. Der er 6 forbindelser mellem det serielle modul og LCD -tastaturets skærm, alle mellem stifter uden etiketter. Jeg vil identificere dem på LCD -modulet ved at tælle fra højre til venstre, med den første pin som 1. Der er 2 blokke med 8, så de går fra 1 til 16. Jeg identificerer dem på I2C -seriemodulet ved at tælle fra venstre til Der er også 16 af dem. Derudover giver jeg hver ledning en etiket, som er den tilsvarende pin på Arduino, der normalt er forbundet med denne funktion, i tilfælde af en direkte forbindelse uden det serielle modul.

Så de 6 dataforbindelser er:

Arduino ækvivalent // Seriel modul pin // LCD tastatur modul pin

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

LCD -baggrundsbelysningskontrol: Denne bruger endnu en forbindelse:

Arduino ækvivalent // Seriel modul pin // LCD tastatur modul pin

D10 // 16 // 11

Tastaturgrænseflade: Dette bruger en enkelt ledning fra LCD -modulets pin på undersiden mærket "A0" til pin A0 på Arduino. Det var i hvert fald ret let!

Trin 4: Gør RST -nøglen anvendelig ligner de andre 5 taster

RST kan tilsluttes direkte til RESTART -indgangen på Arduino Nano.

Men hvis du vil have, at RST -nøglen kan bruges i softwaren til andre ting, kan dette gøres ved at tilslutte en 15K modstand mellem RST -stiften og A0 -stiften på undersiden af LCD -tastaturets skærm.

Dette fungerer som følger: Der er en 2K modstand mellem +5V og den højre tast. Derefter en kæde af gradvist større modstande for hver af de andre taster (330R til UP -tasten, 620R til DOWN -tasten, 1K til VENSTRE -tasten og 3K3 til SELECT -tasten. Alle tasterne (inklusive RST -tasten) forbindes til Ved tilslutning til en 10 bit A/D -konverter (som for Arduino Nano A0) leverer de omtrent følgende værdier:

Højre = 0; Op = 100; Ned = 260; Venstre = 410; Vælg = 640.

Med 15 k modstanden til RST leverer den omkring 850.

Softwaren vil bruge værdier omkring midtpunkterne mellem disse værdier til at afgøre, hvilken tast der er blevet trykket på.

Trin 5: Software

Nyttig software er naturligvis en øvelse for læseren. Men for at komme i gang kan du kigge på min testsoftware. Jeg brugte NewLiquidCrystal -biblioteket, som indeholder understøttelse af I2C -grænsefladen. Det hele fungerede bare, når jeg har installeret bibliotekerne korrekt.

Hovedpunktet var at vende polariteten af kommandoer for baggrundslys OFF og ON (på grund af transistoren på I2C -modulet som forklaret i afsnittet Beskrivelse af dele).

OPDATERING 22. august 2019

Hvis du har problemer med, at LCD -displayet ikke fungerer, skal du kontrollere I2C -adressen på din serielle rygsæk ved hjælp af en I2C -scanner. En passende scanner er vedhæftet. Juster derefter om nødvendigt den første parameter i sætningen

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

Trin 6: Gennemgang og diskussion

Som du kan se, fik jeg hovedfunktionerne til at fungere.

Min næste intention er at lægge dette i en projektboks som en del af et andet projekt. Men efter at have begået denne vej lærte jeg, at der er en anden vanskelighed, som jeg ikke havde regnet med.

Problemet er, at dette LCD -tastaturmodul ikke er konfigureret til at blive installeret i en boks. Enhver form for kasse. Knapperne på de 6 taster er langt under niveauet på LCD -skærmen, så hvis modulet er monteret i en boks (f.eks. I låget) med toppen af LCD -printkortet i flugt med undersiden af låget, er toppen af tasterne er cirka 7 mm under toppen af låget.

Mulige løsninger er:

a) Hold op med det. Bor adgangshuller i låget, og brug et værktøj (f.eks. En nedskåret strikkepind med passende diameter) til at trykke på knapperne.

b) Fjern LCD'et fra modulets printkort og udfør kirurgi på tastaturet, så de to komponenter kan fastgøres til låget på projektboksen uafhængigt (jeg tror, at der stadig kan være et problem med, at knapperne er for korte)

c) fjern de eksisterende knapper og udskift dem med højere knapper. De nye knapper skal være cirka 13 mm høje, så de kan betjenes gennem låget på projektboksen). Udskiftning af knapkontakter er let tilgængelige i en række højder, herunder 13 mm.

d) kassér LCD -tastaturets skærmmodul og brug separate LCD- og tastaturenheder (dvs. start forfra). Der er en bred vifte af tastaturenheder til rådighed, men jeg har ikke set en med samme 6-tasters layout som på dette modul (dvs. Vælg, Venstre, Op, Ned, Højre, Genstart). Det er måske ikke et stort problem, men en af grundene til at jeg startede med dette modul var, at jeg troede, at dette nøglelayout var det, jeg ville.

Jeg planlægger at gå med løsning c) ovenfor, og se hvordan jeg går.

Et andet stykke information, der kan være af interesse:

Med baggrundsbelysningen tændt er det nuværende forbrug af dette projekt: Arduino Nano 21,5 ma; Seriemodul 3,6 ma; LCD -modul 27,5 mA; I alt 52 mA.

Når baggrundslyset er OFF, er det nuværende forbrug af dette projekt: Arduino Nano 21,5 ma; Seriemodul 4,6 ma; LCD -modul 9,8 mA; I alt 36 mA.

Anbefalede: