Cuprins:

Modul ecran ecran LCD 1602 cu rucsac I2C: 6 pași
Modul ecran ecran LCD 1602 cu rucsac I2C: 6 pași

Video: Modul ecran ecran LCD 1602 cu rucsac I2C: 6 pași

Video: Modul ecran ecran LCD 1602 cu rucsac I2C: 6 pași
Video: Proiect Arduino cu senzor ultrasonic HC-SR04 | Senzor parcare masina | Bitmi.ro 2024, Iulie
Anonim
Modul ecran 1602 LCD tastatură cu rucsac I2C
Modul ecran 1602 LCD tastatură cu rucsac I2C

Ca parte a unui proiect mai mare, am vrut să am un ecran LCD și o tastatură pentru navigarea unor meniuri simple. Voi folosi o mulțime de porturi I / O de pe Arduino pentru alte joburi, așa că am dorit o interfață I2C pentru LCD. Așa că am cumpărat niște hardware, constând dintr-un modul ecran 1602 LCD Keypad de la DFRobot și un modul serial I2C anonim pentru LCD-uri. Vreau să le folosesc cu un Arduino Nano. Apoi am constatat că există câteva provocări pentru a face aceste componente să funcționeze împreună - dar este posibil. Așa că vreau să împărtășesc experiența mea și poate să îi ajut și pe alții.

Această fotografie este a panoului de lucru, care poate afișa mesaje pe ecranul LCD și identifica apăsările de taste. Ecranul LCD este controlat prin interfața I2C, inclusiv lumina de fundal LCD. Apăsările de taste sunt primite de Arduino pe pinul A0 (poate fi oricare dintre pinii analogici, cu excepția A4 și A5 care sunt legate pentru interfața I2C).

Pasul 1: Descrierea pieselor - Modulul ecranului tastaturii LCD

Descrierea pieselor - Modulul ecranului tastaturii LCD
Descrierea pieselor - Modulul ecranului tastaturii LCD

Modulul ecranului tastaturii LCD constă dintr-un ecran LCD 1602 utilizat în mod obișnuit, montat deasupra unei plăci de circuite care deține tastele și care preia un subset de conexiuni LCD și le pune la dispoziția pinilor antetului de pe partea inferioară a plăcii de circuite. Înțeleg că această placă este destinată să fie montată deasupra unui Arduino Uno sau similar și oferă aspectul corect al pinului pentru a funcționa în acel mediu. Am cumpărat acest modul de pe Ebay de la un furnizor din China. Pinii antetului de pe partea inferioară (tastatură) a plăcii sunt în mare parte etichetați, dar pinii din partea superioară, care este interfața LCD, nu sunt etichetați. Cu toate acestea, pinii de pe ecranul LCD sunt etichetați.

Pasul 2: Descrierea pieselor - Modul serial I2C

Descrierea pieselor - Modul serial I2C
Descrierea pieselor - Modul serial I2C

Modulul serial are antetul obișnuit cu 4 pini pentru I2C și un set de pini de antet nemarcate, pe care înțeleg că sunt destinate să le conecteze direct în partea inferioară a modulului LCD. Studiind etichetele de pe ecranul LCD, am putut identifica funcțiile pinilor de pe modulul serial.

Acest modul se bazează pe IC PCF8574T care termină protocolul I2C, are 3 pini pentru controlul adresei (20 la 27) și are 8 pini de intrare / ieșire digitale P0 la P7. Conform fișei tehnice a PCF8574T, fiecare pin I / O are un FET pentru al trage la sol pentru starea LOW și poate scufunda cel puțin 20ma. În starea High, are un pull-up activ tranzitoriu și apoi un curent continuu de pull-up de aproximativ 0,1 mA.

Pe acest modul, toți pinii I / O digitale, cu excepția P3, sunt pur și simplu aduși la pinii antetului (în dreapta în fotografie). În cazul P3, acesta este conectat la baza unui tranzistor (vizibil în fotografie în zona din dreapta sus chiar sub eticheta „LED”). Emițătorul respectivului tranzistor este conectat la Vss (masă), iar colectorul este conectat la pinul de antet 16, unde poate fi utilizat pentru a controla lumina de fundal LCD. Datorită tranzistorului, starea logică este inversată față de cea presupusă în biblioteca software. Adică, lumina de fundal LCD este pornită când pinul P3 este scăzut și OFF când pinul P3 este ridicat.

Eticheta de pe tranzistor spune L6, care, conform cercetărilor mele, îl face probabil un MMBC1623L6 care are un câștig de curent minim de 200. Cu 0,1 mA de curent de bază, ar trebui să poată menține o stare LOW la colectorul său (modulul Pin 16) cu cel puțin 20mA curent colector.

În plus, acest modul are un potențiometru de 10K conectat între +5 și masă, al cărui cablu variabil este adus la pinul 3 (al treilea din partea de jos a fotografiei). Când este conectat direct la ecranul LCD, acest pot va controla contrastul ecranului LCD. Cu toate acestea, această funcție este asigurată de un pot similar separat pe ecranul LCD, astfel încât acest pot de pe modulul serial nu are funcție.

Nu am putut găsi nicio conexiune la pinul INT al PCF8574T.

ACTUALIZARE 22 august 2019

După cum sa menționat mai sus, PCF8574 are 3 pini de control al adresei. Acestea par a fi aduse pe tampoane de pe placa de rucsac unde sunt etichetate A0, A1 și A2. Ele pot fi văzute în fotografie. Nu am testat acest lucru, dar pare aproape sigur că, punând unul sau mai mulți dintre acești pini la plăcuțele adiacente, adresa I2C poate fi controlată în intervalul 20-27. Mai mult, există un al doilea dispozitiv aproape identic, PCF8574A care are funcționalități identice cu PCF8574, dar acoperă intervalul de adrese de la 0x38 la 0x3F.

Adresa pe care o folosește dispozitivul dvs. poate fi verificată cu un I2CScanner. Există mai multe scanere I2C simple disponibile din diverse surse. Acesta de la https://github.com/farmerkeith/I2CScanner identifică, de asemenea, unele dintre dispozitivele găsite.

Pasul 3: Conexiuni

Conexiuni
Conexiuni

Mulțumim lui ChaitanyaM17 care a furnizat diagrama Fritzing care descrie conexiunile, descrisă mai jos.

Putere:

Modulul LCD are un pin în partea inferioară, etichetat „5.0V”. În dreapta, adiacente sunt două știfturi nemarcate care sunt ambele măcinate.

Ținând modulul serial cu interfața I2C la capătul din stânga, există 16 pini la marginea inferioară. Primul dintre acestea este măcinat, iar al doilea dintre acestea este + 5v. O altă opțiune este să folosiți cei doi pini inferiori de pe interfața I2C pentru alimentare, dar mi s-a părut mai convenabil să folosiți pini așa cum este descris mai sus.

Interfață I2C. Pe modulul serial, pinul superior este SCL (ceas) și merge la Arduino A5. Al doilea pin down este SDA (date) și merge la Arduino A4.

Interfață de imprimare LCD. Există 6 conexiuni între modulul serial și ecranul tastaturii LCD, toate între pini fără etichete. Le voi identifica pe modulul LCD numărând de la dreapta la stânga, cu primul pin ca 1. Există 2 blocuri de 8, deci trec de la 1 la 16. Le identific pe modulul serial I2C numărând de la stânga la Corect, sunt și 16 dintre acestea. În plus, dau fiecărui fir o etichetă, care este pinul echivalent pe Arduino care este în mod normal asociat cu acea funcție, în cazul unei conexiuni directe fără modulul serial.

Deci cele 6 conexiuni de date sunt:

Echivalent Arduino // Pin modul serial // Pin modul LCD tastatură

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

Control LCD de iluminare din spate: Aceasta utilizează încă o conexiune:

Echivalent Arduino // Pin modul serial // Pin modul LCD tastatură

D10 // 16 // 11

Interfață tastatură: Aceasta folosește un singur fir de la pinul modulului LCD din partea inferioară etichetată „A0”, pentru a fixa A0 pe Arduino. Cel puțin a fost destul de ușor!

Pasul 4: Utilizarea cheii RST similară cu celelalte 5 taste

RST poate fi conectat direct la intrarea RESTART a Arduino Nano.

Cu toate acestea, dacă doriți ca tasta RST să poată fi utilizată în software pentru alte lucruri, acest lucru se poate face prin conectarea unui rezistor de 15K între pinul RST și pinul A0 de pe partea inferioară a ecranului tastaturii LCD.

Acest lucru funcționează după cum urmează: Există un rezistor de 2K între + 5V și tasta dreaptă. Apoi un lanț de rezistențe progresiv mai mari pentru fiecare dintre celelalte taste (330R la tasta SUS, 620R la tasta DOWN, 1K la stânga și 3K3 la tasta SELECT. Toate tastele (inclusiv tasta RST) se conectează la Când sunt conectate la un convertor A / D de 10 biți (la fel ca pentru Arduino Nano A0), acestea furnizează aproximativ următoarele valori:

Dreapta = 0; Sus = 100; Jos = 260; Stânga = 410; Selectați = 640.

Cu rezistorul de 15 k la RST, acesta oferă aproximativ 850.

Software-ul va utiliza valori în jurul punctelor medii dintre aceste valori pentru a decide ce tastă a fost apăsată.

Pasul 5: Software

Un software util este, desigur, un exercițiu pentru cititor. Cu toate acestea, pentru a începe, puteți arunca o privire asupra software-ului meu de testare. Am folosit biblioteca NewLiquidCrystal, care conține suport pentru interfața I2C. Totul a funcționat, odată ce am instalat corect bibliotecile.

Principalul punct a fost inversarea polarității comenzilor OFF și ON de iluminare din spate (datorită tranzistorului de pe modulul I2C, așa cum se explică în secțiunea Descrierea pieselor).

ACTUALIZARE 22 august 2019

Dacă aveți probleme cu afișajul LCD care nu funcționează, vă rugăm să verificați adresa I2C a rucsacului dvs. serial folosind un scaner I2C. Este atașat un scaner adecvat. Apoi, dacă este necesar, ajustați primul parametru din instrucțiune

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

Pasul 6: Revizuire și discuții

După cum puteți vedea, am funcționat funcțiile principale.

Următoarea mea intenție este să pun acest lucru într-o cutie de proiect ca parte a unui alt proiect. Cu toate acestea, după ce am pornit pe această cale, am aflat că există o altă dificultate pe care nu o anticipasem.

Dificultatea este că acest modul de tastatură LCD nu este configurat pentru a fi instalat într-o cutie. Orice fel de cutie. Butoanele celor 6 taste sunt cu mult sub nivelul ecranului LCD, astfel încât, dacă modulul este montat într-o cutie (de exemplu, în capac), cu partea superioară a plăcii de circuite LCD la același nivel cu partea inferioară a capacului, dintre taste sunt la aproximativ 7 mm sub partea superioară a capacului.

Soluțiile posibile sunt:

a) Suportă-l. Găuriți găurile de acces din capac și folosiți un instrument (de ex. Un ac de tricotat tăiat cu diametrul adecvat) pentru a apăsa butoanele.

b) Scoateți LCD-ul de pe placa de circuit a modulului și efectuați o intervenție chirurgicală pe tastatură, astfel încât cele două componente să poată fi fixate independent de capacul cutiei de proiect (cred că poate exista încă o problemă cu butoanele prea scurte)

c) scoateți butoanele existente și înlocuiți-le cu butoane mai înalte. Noile butoane trebuie să aibă o înălțime de aproximativ 13 mm, astfel încât să poată fi acționate prin capacul cutiei de proiect). Întrerupătoarele de butoane de schimb sunt disponibile cu ușurință într-o gamă de înălțimi, inclusiv 13 mm.

d) aruncați modulul ecranului tastaturii LCD și utilizați unități LCD și tastatură separate (adică reporniți). Există o gamă largă de unități de tastatură disponibile, totuși nu am văzut una cu același aspect cu 6 taste ca pe acest modul (de exemplu, Selectați, Stânga, Sus, Jos, Dreapta, Reporniți). Poate că nu este o problemă mare, dar unul dintre motivele pentru care am început cu acest modul a fost că am crezut că acest aspect cheie este ceea ce îmi doresc.

Am de gând să merg cu soluția c) de mai sus și să văd cum merg.

Un alt fragment de informații care ar putea fi de interes:

Cu lumina de fundal aprinsă, consumul actual al acestui proiect este: Arduino Nano 21,5 ma; Modul serial 3,6 ma; Modul LCD 27,5 mA; Total 52 mA.

Cu lumina de fundal OFF, consumul actual al acestui proiect este: Arduino Nano 21,5 ma; Modul serial 4,6 ma; Modul LCD 9,8 mA; Total 36 mA.

Recomandat: