Innehållsförteckning:

1602 LCD -knappsatsskyddsmodul med I2C -ryggsäck: 6 steg
1602 LCD -knappsatsskyddsmodul med I2C -ryggsäck: 6 steg

Video: 1602 LCD -knappsatsskyddsmodul med I2C -ryggsäck: 6 steg

Video: 1602 LCD -knappsatsskyddsmodul med I2C -ryggsäck: 6 steg
Video: How to Use I2C LCD with Arduino | Very Easy Arduino LCD I2C Tutorial | Arduino 16x2 LCD I2C Tutorial 2024, November
Anonim
1602 LCD -knappsatsskyddsmodul med I2C -ryggsäck
1602 LCD -knappsatsskyddsmodul med I2C -ryggsäck

Som en del av ett större projekt ville jag ha en LCD -skärm och en knappsats för navigering av några enkla menyer. Jag kommer att använda många av I/O -portarna på Arduino för andra jobb, så jag ville ha ett I2C -gränssnitt för LCD -skärmen. Så jag köpte lite hårdvara, bestående av en 1602 LCD -knappsatsskyddsmodul från DFRobot och en anonym I2C -seriemodul för LCD -skärmar. Jag vill använda dessa med en Arduino Nano. Sedan upptäckte jag att det finns några utmaningar för att få dessa komponenter att fungera tillsammans - men det är möjligt. Så jag vill dela med mig av min erfarenhet och kanske hjälpa några andra.

Detta foto är av den fungerande brödbrädan, som kan visa meddelanden på LCD -skärmen och identifiera knapptryckningar. LCD -skärmen styrs via I2C -gränssnittet, inklusive LCD -bakgrundsbelysningen. Nyckelpressarna tas emot av Arduino på stift A0 (det kan vara vilken som helst av de analoga stiften, förutom A4 och A5 som är bundna för I2C -gränssnittet).

Steg 1: Beskrivning av delar - LCD -knappsatsskyddsmodul

Delbeskrivning - LCD -knappsatsskyddsmodul
Delbeskrivning - LCD -knappsatsskyddsmodul

Skärmsmodulen för LCD -knappsatsen består av en vanligt förekommande 1602 LCD monterad ovanpå ett kretskort som rymmer nycklarna, och som tar en delmängd av LCD -anslutningarna och gör dem tillgängliga för huvudstiften på kretskortets undersida. Jag förstår att det här kortet är avsett att monteras ovanpå en Arduino Uno eller liknande och ger rätt stiftlayout för att det ska fungera i den miljön. Jag köpte den här modulen på Ebay från en leverantör i Kina. Sidhuvudstiften på kortets nedre (knappsats) sida är mestadels märkta men stiften på ovansidan, som är LCD -gränssnittet, är inte märkta. Men stiften på själva LCD -skärmen är märkta.

Steg 2: Beskrivning av delar - I2C -seriemodul

Delbeskrivning - I2C Serial Module
Delbeskrivning - I2C Serial Module

Seriemodulen har den vanliga 4-stifts rubriken för I2C och en uppsättning omärkta rubrikstift som jag förstår är avsedda att anslutas direkt till LCD-modulens undersida. Genom att studera etiketterna på LCD -skärmen kunde jag identifiera funktionerna hos stiften på seriemodulen.

Denna modul är baserad på IC PCF8574T som avslutar I2C -protokollet, har 3 stift för adresskontroll (20 till 27) och har 8 digitala ingångs-/utgångsstift P0 till P7. Enligt databladet för PCF8574T har varje I/O -stift en FET för att dra den till marken för LÅGT tillstånd och kan sjunka minst 20ma. I högläge har den en övergående aktiv uppdragning och sedan en fortsatt uppdragningsström på cirka 0,1 mA.

På den här modulen tas alla digitala I/O -stift, förutom P3, helt enkelt ut till rubrikstift (till höger på fotot). När det gäller P3 är den ansluten till basen på en transistor (synlig på bilden längst upp till höger strax under etiketten "LED"). Sändaren för den transistorn är ansluten till Vss (jord) och kollektorn är ansluten till huvudstift 16, där den kan användas för att styra LCD -bakgrundsbelysningen. På grund av transistorn är det logiska tillståndet omvänt i förhållande till det som antas i mjukvarubiblioteket. Det vill säga att LCD -bakgrundsbelysningen är PÅ när P3 -stiftet är lågt och AV när P3 -stiftet är högt.

Etiketten på transistorn säger L6 som enligt min forskning förmodligen gör det till en MMBC1623L6 som har en minsta strömförstärkning på 200. Med 0,1 mA basström bör den kunna bibehålla ett LÅGT tillstånd vid sin kollektor (modul Pin 16) med minst 20mA kollektorström.

Dessutom har denna modul en 10K potentiometer ansluten mellan +5 och jord, vars variabla ledning förs ut till stift 3 (tredje från botten på bilden). När den är ansluten direkt till LCD -skärmen kommer denna kruka att styra kontrasten på LCD -skärmen. Den funktionen tillhandahålls dock av en separat liknande kruka på LCD -skärmen, så den här potten på seriemodulen har ingen funktion.

Jag kunde inte hitta någon anslutning till INT -stiftet på PCF8574T.

UPPDATERING 22 augusti 2019

Som nämnts ovan har PCF8574 3 adresskontrollstift. Dessa verkar tas ut till dynorna på ryggsäckskortet där de är märkta A0, A1 och A2. De syns på bilden. Jag har inte testat detta, men det verkar nästan säkert att genom att överbrygga en eller flera av dessa stift till de intilliggande dynorna kan I2C -adressen styras över intervallet från 20 till 27. Vidare finns det en andra nästan identisk enhet, PCF8574A som har identisk funktionalitet som PCF8574 men täcker adressintervallet från 0x38 till 0x3F.

Adressen som din enhet faktiskt använder kan kontrolleras med en I2CScanner. Det finns flera enkla I2C -skannrar tillgängliga från olika källor. Den här på https://github.com/farmerkeith/I2CScanner identifierar också några av de hittade enheterna.

Steg 3: Anslutningar

Anslutningar
Anslutningar

Tack till ChaitanyaM17 som gav Fritzing -diagrammet som visar anslutningarna, som beskrivs nedan.

Kraft:

LCD -modulen har en stift på undersidan märkt "5.0V". Till höger, intill det finns två omärkta stift som båda är slipade.

Håller seriemodulen med I2C -gränssnittet i vänster ände, det finns 16 stift vid den nedre kanten. Den första av dessa är slipad, och den andra av dessa är +5v. Ett annat alternativ är att använda de två nedre stiften på I2C -gränssnittet för ström, men jag tyckte att det var mer bekvämt att använda stiften enligt beskrivningen ovan.

I2C -gränssnitt. På seriemodulen är den översta stiftet SCL (klocka) och den går till Arduino A5. Den andra nålen är SDA (data) och den går till Arduino A4.

LCD -utskriftsgränssnitt. Det finns 6 anslutningar mellan seriemodulen och LCD -knappsatsskyddet, alla mellan stift utan etiketter. Jag kommer att identifiera dem på LCD -modulen genom att räkna från höger till vänster, med den första stiftet som 1. Det finns 2 block med 8, så de går från 1 till 16. Jag identifierar dem på I2C -seriemodulen genom att räkna från vänster till Precis, det finns också 16 av dessa. Dessutom ger jag varje tråd en etikett, som är motsvarande stift på Arduino som normalt är associerad med den funktionen, vid en direktanslutning utan seriemodulen.

Så de 6 dataanslutningarna är:

Arduinoekvivalent // Seriell modulstift // LCD -knappsatsmodulstift

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

LCD -bakgrundsbelysningskontroll: Detta använder ytterligare en anslutning:

Arduinoekvivalent // Seriell modulstift // LCD -knappsatsmodulstift

D10 // 16 // 11

Knappsatsgränssnitt: Detta använder en enda kabel från LCD -modulens stift på undersidan märkt "A0", till stift A0 på Arduino. Det var åtminstone ganska enkelt!

Steg 4: Gör RST -nyckeln användbar Liknande de andra 5 nycklarna

RST kan anslutas direkt till RESTART -ingången på Arduino Nano.

Men om du vill att RST -tangenten ska vara användbar i programvaran för andra saker, kan detta göras genom att ansluta ett 15K -motstånd mellan RST -stiftet och A0 -stiftet på undersidan av LCD -knappsatsskärmen.

Detta fungerar enligt följande: Det finns ett 2K -motstånd mellan +5V och högerknappen. Sedan en kedja med successivt större motstånd för var och en av de andra tangenterna (330R till UPP -tangenten, 620R till DOWN -tangenten, 1K till VÄNSTER -tangenten och 3K3 till SELECT -tangenten. Alla tangenter (inklusive RST -tangenten) ansluts till Vid anslutning till en 10 bitars A/D -omvandlare (som för Arduino Nano A0) levererar de ungefär följande värden:

Höger = 0; Upp = 100; Ned = 260; Vänster = 410; Välj = 640.

Med 15 k -motståndet mot RST levererar det cirka 850.

Programvaran använder värden runt mittpunkterna mellan dessa värden för att bestämma vilken knapp som har tryckts in.

Steg 5: Programvara

Användbar programvara är naturligtvis en övning för läsaren. Men för att komma igång kan du titta på min testprogramvara. Jag använde biblioteket NewLiquidCrystal, som innehåller stöd för I2C -gränssnittet. Allt fungerade bara när jag väl har installerat biblioteken korrekt.

Huvudpunkten var att vända polariteten för bakgrundsbelysningen OFF och ON -kommandon (på grund av transistorn på I2C -modulen som förklaras i avsnittet Beskrivning av delar).

UPPDATERING 22 augusti 2019

Om du har problem med att LCD -skärmen inte fungerar, kontrollera I2C -adressen till din seriella ryggsäck med en I2C -skanner. En lämplig skanner är ansluten. Om det behövs justerar du sedan den första parametern i uttalandet

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

Steg 6: Granska och diskutera

Som du kan se fick jag huvudfunktionerna att fungera.

Min nästa avsikt är att lägga detta i en projektlåda som en del av ett annat projekt. Men efter att ha gett mig ut på den här vägen lärde jag mig att det finns en annan svårighet som jag inte hade räknat med.

Svårigheten är att denna LCD -knappsatsmodul inte är installerad för att installeras i en låda. Vilken typ av låda som helst. Knapparna på de sex tangenterna ligger långt under LCD -skärmens nivå, så att om modulen är monterad i en låda (t.ex. i locket) med toppen av LCD -kretskortet i linje med lockets undersida, topparna av knapparna är cirka 7 mm under lockets ovansida.

Möjliga lösningar är:

a) Håll ut med det. Borra åtkomsthål i locket och använd ett verktyg (t.ex. en nedskuren sticknål med lämplig diameter) för att trycka på knapparna.

b) Ta bort LCD -skärmen från modulens kretskort och utför kirurgi på knappsatsen så att de två komponenterna kan fästas på locket på projektlådan oberoende (jag tror att det fortfarande kan vara problem med att knapparna är för korta)

c) ta bort de befintliga knapparna och ersätt dem med högre knappar. De nya knapparna måste vara cirka 13 mm höga så att de kan manövreras genom locket på projektlådan). Utbytesknappbrytare är lätt tillgängliga i olika höjder, inklusive 13 mm.

d) Kassera LCD -knappsatsskärmsmodulen och använd separata LCD- och knappsatsenheter (dvs. börja om). Det finns ett brett utbud av knappsatser tillgängliga, men jag har inte sett en med samma 6-tangenters layout som på denna modul (dvs Select, Left, Up, Down, Right, Restart). Det kanske inte är en stor fråga, men en av anledningarna till att jag började med den här modulen var att jag trodde att den här nyckellayouten var vad jag ville ha.

Jag planerar att gå med lösning c) ovan och se hur jag går.

En annan bit av information som kan vara av intresse:

Med bakgrundsbelysningen PÅ är den nuvarande förbrukningen av detta projekt: Arduino Nano 21,5 ma; Seriemodul 3,6 ma; LCD -modul 27,5 mA; Totalt 52 mA.

Med bakgrundsbelysningen AV är den nuvarande förbrukningen för detta projekt: Arduino Nano 21,5 ma; Seriemodul 4,6 ma; LCD -modul 9,8 mA; Totalt 36 mA.

Rekommenderad: