INHOUDSOPGAWE:

1602 LCD -sleutelbordskermmodule met I2C -rugsak: 6 stappe
1602 LCD -sleutelbordskermmodule met I2C -rugsak: 6 stappe

Video: 1602 LCD -sleutelbordskermmodule met I2C -rugsak: 6 stappe

Video: 1602 LCD -sleutelbordskermmodule met I2C -rugsak: 6 stappe
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Julie
Anonim
1602 LCD -sleutelbordskermmodule met I2C -rugsak
1602 LCD -sleutelbordskermmodule met I2C -rugsak

As deel van 'n groter projek wou ek 'n LCD -skerm en 'n klavier hê om 'n paar eenvoudige spyskaarte te navigeer. Ek sal baie van die I/O -poorte op die Arduino gebruik vir ander werk, so ek wou 'n I2C -koppelvlak vir die LCD hê. Ek het 'n paar hardeware gekoop, bestaande uit 'n 1602 LCD -sleutelbordskermmodule van DFRobot en 'n anonieme I2C -reeksmodule vir LCD's. Ek wil dit gebruik met 'n Arduino Nano. Toe vind ek dat daar 'n paar uitdagings is om hierdie komponente saam te laat werk - maar dit is moontlik. Ek wil dus my ervaring deel en miskien ander help.

Hierdie foto is van die werkende broodbord, wat boodskappe op die LCD kan vertoon en sleutels kan druk. Die LCD word beheer deur die I2C -koppelvlak, insluitend die LCD -agtergrond. Die sleutelpers word deur die Arduino op pen A0 ontvang (dit kan enige van die analoog penne wees, behalwe vir A4 en A5 wat vasgemaak is vir die I2C -koppelvlak).

Stap 1: Beskrywing van onderdele - LCD -sleutelbordskermmodule

Onderdele beskrywing - LCD -sleutelbordskermmodule
Onderdele beskrywing - LCD -sleutelbordskermmodule

Die LCD -sleutelbordskermmodule bestaan uit 'n algemeen gebruikte 1602 LCD wat bo -op 'n printplaat is wat die sleutels bevat, en wat 'n deelversameling van die LCD -verbindings neem en dit beskikbaar stel aan die koppenne aan die onderkant van die printplaat. Ek verstaan dat hierdie bord bedoel is om bo -op 'n Arduino Uno of soortgelyke gemonteer te word, en bied die regte penuitleg om in die omgewing te werk. Ek het hierdie module op Ebay gekoop by 'n verkoper in China. Die koppenne aan die onderkant (klavier) van die bord is meestal gemerk, maar die penne aan die bokant, wat die LCD -koppelvlak is, is nie gemerk nie. Die penne op die LCD self is egter gemerk.

Stap 2: Beskrywing van dele - I2C -reeksmodule

Onderdele beskrywing - I2C Serial Module
Onderdele beskrywing - I2C Serial Module

Die reeksmodule het die gewone 4-pins kopstuk vir I2C, en 'n stel ongemerkte koppenne wat ek verstaan, is bedoel om direk aan die onderkant van die LCD-module te koppel. Deur die etikette op die LCD te bestudeer, kon ek die funksies van die penne op die reeksmodule identifiseer.

Hierdie module is gebaseer op die IC PCF8574T wat die I2C -protokol beëindig, het 3 penne vir adresbeheer (20 tot 27) en het 8 digitale invoer-/uitvoerpenne P0 tot P7. Volgens die datablad van die PCF8574T, het elke I/O -pen 'n FET om dit grond toe te trek vir die LAE toestand, en kan dit ten minste 20ma sak. In die hoë toestand het dit 'n kortstondige aktiewe trekkrag en dan 'n aanhoudende optrekstroom van ongeveer 0,1 mA.

Op hierdie module word al die digitale I/O -penne, behalwe P3, eenvoudig na die koppenne gebring (regs op die foto). In die geval van P3 is dit gekoppel aan die basis van 'n transistor (sigbaar op die foto regs bo regs onder die etiket "LED"). Die sender van die transistor is aan Vss (grond) gekoppel en die kollektor is gekoppel aan koppen 16, waar dit gebruik kan word om die LCD -agtergrond te beheer. As gevolg van die transistor word die logiese toestand omgekeer relatief tot die wat in die sagtewarebiblioteek aanvaar word. Dit wil sê, die LCD -agtergrond word aangeskakel as die P3 -pen laag is, en UIT wanneer die P3 -pen hoog is.

Die etiket op die transistor sê L6, wat volgens my navorsing waarskynlik 'n MMBC1623L6 maak met 'n minimum stroomversterking van 200. Met 0.1 mA basisstroom behoort dit 'n LAE toestand by sy kollektor te kan handhaaf (module pen 16) met ten minste 20mA kollektorstroom.

Boonop het hierdie module 'n 10K potensiometer wat tussen +5 en grond is gekoppel, waarvan die veranderlike leiding na pen 3 (derde van onder op die foto) gebring word. As dit direk aan die LCD gekoppel is, sal hierdie pot die kontras van die LCD beheer. Die funksie word egter verskaf deur 'n aparte soortgelyke pot op die LCD -skerm, sodat hierdie pot op die seriële module geen funksie het nie.

Ek kon geen verbinding met die INT -pen van die PCF8574T vind nie.

OPDATERING 22 Augustus 2019

Soos hierbo genoem, het die PCF8574 3 adresbeheerpenne. Dit blyk dat dit na pads op die rugsakbord gebring word, waar dit gemerk is A0, A1 en A2. Hulle kan op die foto gesien word. Ek het dit nie getoets nie, maar dit lyk amper seker dat deur die oorbrugging van een of meer van hierdie penne na die aangrensende pads, die I2C -adres beheer kan word oor die reeks van 20 tot 27. Verder is daar 'n tweede byna identiese toestel, die PCF8574A wat identiese funksionaliteit het as die PCF8574, maar die adresbereik dek van 0x38 tot 0x3F.

Die adres wat u toestel eintlik gebruik, kan met 'n I2CScanner nagegaan word. Daar is verskeie eenvoudige I2C -skandeerders beskikbaar uit verskillende bronne. Hierdie een op https://github.com/farmerkeith/I2CScanner identifiseer ook sommige van die toestelle wat gevind is.

Stap 3: Verbindings

Verbindings
Verbindings

Dankie aan ChaitanyaM17 wat die Fritzing -diagram verskaf wat die verbindings uitbeeld, hieronder beskryf.

Krag:

Die LCD -module het 'n pen aan die onderkant met die naam "5.0V". Aan die regterkant is twee ongemerkte penne wat albei gemaal is.

Met die seriemodule met die I2C -koppelvlak aan die linkerkant, is daar 16 penne aan die onderkant. Die eerste hiervan word gemaal, en die tweede hiervan is +5v. 'N Ander opsie is om die onderste twee penne op die I2C -koppelvlak vir krag te gebruik, maar ek vind dit geriefliker om die penne te gebruik soos hierbo beskryf.

I2C koppelvlak. Op die seriële module is die boonste pen SCL (klok) en dit gaan na die Arduino A5. Die tweede pen is SDA (data) en dit gaan na die Arduino A4.

LCD druk koppelvlak. Daar is ses verbindings tussen die reeksmodule en die skerm van die LCD -toetsbord, almal tussen penne sonder etikette. Ek sal hulle op die LCD -module identifiseer deur van regs na links te tel, met die eerste pen as 1. Daar is 2 blokke van 8, so hulle gaan van 1 tot 16. Ek identifiseer dit op die I2C -reeksmodule deur van links na te tel Daar is ook 16 hiervan. Boonop gee ek aan elke draad 'n etiket, wat die ekwivalente pen op die Arduino is wat normaalweg met die funksie verband hou, in die geval van 'n direkte verbinding sonder die seriële module.

Die 6 dataverbindings is dus:

Arduino -ekwivalent // Seriële module -pen // LCD -sleutelbordmodule -pen

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

LCD -agtergrondbeheer: Dit gebruik nog 'n verbinding:

Arduino -ekwivalent // Seriële module -pen // LCD -sleutelbordmodule -pen

D10 // 16 // 11

Toetsenbord -koppelvlak: Dit gebruik 'n enkele draad van die LCD -modulepen aan die onderkant met die naam "A0", om A0 op die Arduino te pen. Dit was darem redelik maklik!

Stap 4: maak die RST -sleutel bruikbaar, soortgelyk aan die ander 5 sleutels

Die RST kan direk gekoppel word aan die RESTART -invoer van die Arduino Nano.

As u egter wil hê dat die RST -sleutel vir ander dinge in die sagteware bruikbaar is, kan dit gedoen word deur 'n 15K -weerstand tussen die RST -pen en die A0 -pen aan die onderkant van die LCD -toetsbordskerm aan te sluit.

Dit werk soos volg: Daar is 'n 2K -weerstand tussen +5V en die regter sleutel. Dan 'n ketting van geleidelik groter weerstande vir elk van die ander sleutels (330R tot die UP -sleutel, 620R na die DOWN -sleutel, 1K na die LINKER -sleutel en 3K3 na die SELECT -sleutel. Al die sleutels (insluitend die RST -sleutel) sluit aan As dit gekoppel is aan 'n 10 bit A/D -omskakelaar (soos vir Arduino Nano A0), lewer dit ongeveer die volgende waardes:

Regs = 0; Op = 100; Af = 260; Links = 410; Kies = 640.

Met die 15 k -weerstand teen RST lewer dit ongeveer 850.

Die sagteware gebruik waardes rondom die middelpunte tussen hierdie waardes om te besluit watter toets ingedruk is.

Stap 5: sagteware

Nuttige sagteware is natuurlik 'n oefening vir die leser. Om egter aan die gang te kom, kan u na my toetsprogrammatuur kyk. Ek het die NewLiquidCrystal -biblioteek gebruik, wat ondersteuning bied vir die I2C -koppelvlak. Dit het net gewerk, sodra ek die biblioteke korrek geïnstalleer het.

Die belangrikste punt was om die polariteit van die op- en aan -opdragte van die agtergrond om te keer (as gevolg van die transistor op die I2C -module, soos verduidelik in die artikelbeskrywing -afdeling).

OPDATERING 22 Augustus 2019

As u probleme ondervind dat die LCD -skerm nie werk nie, kyk dan na die I2C -adres van u reekssak met 'n I2C -skandeerder. 'N Geskikte skandeerder word aangeheg. Pas dan indien nodig die eerste parameter in die verklaring aan

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

Stap 6: Hersiening en bespreking

Soos u kan sien, het ek die belangrikste funksies laat werk.

My volgende bedoeling is om dit as deel van 'n ander projek in 'n projekboks te plaas. Maar nadat ek hierdie pad begin het, het ek geleer dat daar 'n ander probleem is wat ek nie verwag het nie.

Die probleem is dat hierdie LCD -sleutelbordmodule nie in 'n boks geïnstalleer is nie. Enige soort boks. Die knoppies van die 6 sleutels is ver onder die vlak van die LCD -skerm, sodat as die module in 'n boks (bv. In die deksel) gemonteer is, met die bokant van die LCD -printplaat gelyk met die onderkant van die deksel, die bokant van die sleutels is ongeveer 7 mm onder die bokant van die deksel.

Moontlike oplossings is:

a) Verdra dit. Boor toegangsgate in die deksel en gebruik 'n gereedskap (bv. 'N afgesnyde breinaald van gepaste deursnee) om op die knoppies te druk.

b) Verwyder die LCD van die modulebord en voer 'n operasie uit op die bedieningspaneel sodat die twee komponente onafhanklik aan die deksel van die projektiekas vasgemaak kan word (ek dink daar is nog steeds 'n probleem dat die knoppies te kort is)

c) verwyder die bestaande knoppies en vervang dit met groter knoppies. Die nuwe knoppies moet ongeveer 13 mm hoog wees sodat hulle deur die deksel van die projektiekas bedien kan word). Vervangingsknopskakelaars is geredelik beskikbaar in verskillende hoogtes, insluitend 13 mm.

d) gooi die lcd -sleutelbordskermmodule weg en gebruik aparte lcd- en klavier -eenhede (dws begin weer). Daar is 'n wye verskeidenheid keypad-eenhede, maar ek het nog nie een met dieselfde 6-sleutel-uitleg gesien as op hierdie module nie (dws Select, Left, Up, Down, Right, Restart). Dit is miskien nie 'n groot probleem nie, maar een van die redes waarom ek met hierdie module begin het, was dat ek gedink het dat ek hierdie sleuteluitleg wou hê.

Ek is van plan om met oplossing c) hierbo te gaan, en kyk hoe dit gaan.

Nog 'n brokkie inligting wat van belang kan wees:

Met die agtergrond AAN, is die huidige verbruik van hierdie projek: Arduino Nano 21,5 ma; Seriële module 3.6 ma; LCD -module 27,5 mA; Totaal 52 mA.

Met die agterlig AF, is die huidige verbruik van hierdie projek: Arduino Nano 21,5 ma; Seriële module 4.6 ma; LCD -module 9,8 mA; Totaal 36 mA.

Aanbeveel: