Table des matières:

Module de protection de clavier LCD 1602 avec sac à dos I2C : 6 étapes
Module de protection de clavier LCD 1602 avec sac à dos I2C : 6 étapes

Vidéo: Module de protection de clavier LCD 1602 avec sac à dos I2C : 6 étapes

Vidéo: Module de protection de clavier LCD 1602 avec sac à dos I2C : 6 étapes
Vidéo: Things Mr. Welch is No Longer Allowed to do in a RPG #1-2450 Reading Compilation 2024, Novembre
Anonim
Module de protection de clavier LCD 1602 avec sac à dos I2C
Module de protection de clavier LCD 1602 avec sac à dos I2C

Dans le cadre d'un projet plus vaste, je souhaitais disposer d'un écran LCD et d'un clavier pour la navigation dans certains menus simples. J'utiliserai beaucoup de ports d'E/S sur l'Arduino pour d'autres travaux, je voulais donc une interface I2C pour l'écran LCD. J'ai donc acheté du matériel, composé d'un module de protection de clavier LCD 1602 de DFRobot et d'un module série I2C anonyme pour écrans LCD. Je veux les utiliser avec un Arduino Nano. Ensuite, j'ai découvert qu'il y avait des défis pour faire fonctionner ces composants ensemble - mais c'est possible. Je veux donc partager mon expérience et peut-être aider d'autres.

Cette photo représente la maquette fonctionnelle, qui peut afficher des messages sur l'écran LCD et identifier les pressions sur les touches. L'écran LCD est contrôlé via l'interface I2C, y compris le rétroéclairage LCD. Les pressions sur les touches sont reçues par l'Arduino sur la broche A0 (il peut s'agir de n'importe laquelle des broches analogiques, à l'exception de A4 et A5 qui sont liées à l'interface I2C).

Étape 1: Description des pièces - Module de protection du clavier LCD

Description des pièces - Module de protection du clavier LCD
Description des pièces - Module de protection du clavier LCD

Le module de protection du clavier LCD se compose d'un écran LCD 1602 couramment utilisé monté sur une carte de circuit imprimé qui contient les touches, et qui prend un sous-ensemble des connexions LCD et les met à disposition des broches d'en-tête sur la face inférieure de la carte de circuit imprimé. Je comprends que cette carte est destinée à être montée sur un Arduino Uno ou similaire et fournit la bonne disposition des broches pour qu'elle fonctionne dans cet environnement. J'ai acheté ce module sur Ebay auprès d'un vendeur en Chine. Les broches d'en-tête du côté inférieur (clavier) de la carte sont pour la plupart étiquetées, mais les broches du côté supérieur, qui est l'interface LCD, ne sont pas étiquetées. Cependant, les broches de l'écran LCD lui-même sont étiquetées.

Étape 2: Description des pièces - Module série I2C

Description des pièces - Module série I2C
Description des pièces - Module série I2C

Le module série a l'embase à 4 broches habituelle pour I2C et un ensemble de broches d'en-tête non étiquetées qui, je crois, sont destinées à se brancher directement sur la face inférieure du module LCD. En étudiant les étiquettes sur l'écran LCD, j'ai pu identifier les fonctions des broches du module série.

Ce module est basé sur l'IC PCF8574T qui termine le protocole I2C, dispose de 3 broches pour le contrôle d'adresse (20 à 27) et dispose de 8 broches d'entrée/sortie numériques P0 à P7. Selon la fiche technique du PCF8574T, chaque broche d'E/S a un FET pour la mettre à la terre pour l'état BAS, et peut couler au moins 20 mA. Dans l'état haut, il a un pull-up actif transitoire, puis un courant de pull-up continu d'environ 0,1 mA.

Sur ce module, toutes les broches d'E/S numériques, à l'exception de P3, sont simplement sorties vers les broches d'en-tête (à droite sur la photo). Dans le cas de P3, il est connecté à la base d'un transistor (visible sur la photo en haut à droite zone juste sous l'étiquette "LED"). L'émetteur de ce transistor est connecté à Vss (masse) et le collecteur est connecté à la broche d'en-tête 16, où il peut être utilisé pour contrôler le rétroéclairage de l'écran LCD. Du fait du transistor, l'état logique est inversé par rapport à celui supposé dans la librairie logicielle. C'est-à-dire que le rétroéclairage de l'écran LCD est allumé lorsque la broche P3 est faible et éteint lorsque la broche P3 est élevée.

L'étiquette sur le transistor dit L6 ce qui selon mes recherches en fait probablement un MMBC1623L6 qui a un gain de courant minimum de 200. Avec 0,1 mA de courant de base, il devrait pouvoir maintenir une condition FAIBLE au niveau de son collecteur (module Pin 16) avec au moins 20 mA de courant de collecteur.

De plus ce module dispose d'un potentiomètre 10K connecté entre +5 et Ground, dont le fil variable est amené sur la broche 3 (troisième à partir du bas sur la photo). Lorsqu'il est connecté directement à l'écran LCD, ce pot contrôlera le contraste de l'écran LCD. Cependant, cette fonction est assurée par un pot similaire séparé sur le blindage LCD, donc ce pot sur le module série n'a aucune fonction.

Je n'ai pas pu trouver de connexion à la broche INT du PCF8574T.

MISE À JOUR 22 août 2019

Comme mentionné ci-dessus, le PCF8574 possède 3 broches de contrôle d'adresse. Ceux-ci semblent être sortis sur des coussinets sur le panneau du sac à dos où ils sont étiquetés A0, A1 et A2. Ils sont visibles sur la photo. Je n'ai pas testé cela, mais il semble presque certain qu'en reliant une ou plusieurs de ces broches aux plots adjacents, l'adresse I2C peut être contrôlée sur la plage de 20 à 27. De plus, il existe un deuxième appareil presque identique, le PCF8574A qui a des fonctionnalités identiques au PCF8574 mais couvre la plage d'adresses de 0x38 à 0x3F.

L'adresse que votre appareil utilise réellement peut être vérifiée avec un I2CScanner. Il existe plusieurs scanners I2C simples disponibles auprès de diverses sources. Celui-ci sur https://github.com/farmerkeith/I2CScanner identifie également certains des appareils trouvés.

Étape 3: Connexions

Connexions
Connexions

Merci à ChaitanyaM17 qui a fourni le diagramme de Fritzing qui décrit les connexions, décrites ci-dessous.

Puissance:

Le module LCD a une broche sur la face inférieure étiquetée "5.0V". À droite, à côté de cela se trouvent deux broches non étiquetées qui sont toutes deux mises à la terre.

Tenant le module série avec l'interface I2C à l'extrémité gauche, il y a 16 broches sur le bord inférieur. Le premier d'entre eux est la masse, et le second d'entre eux est +5v. Une autre option consiste à utiliser les deux broches inférieures de l'interface I2C pour l'alimentation, mais j'ai trouvé plus pratique d'utiliser les broches comme décrit ci-dessus.

Interface I2C. Sur le module série, la broche supérieure est SCL (horloge) et elle va à l'Arduino A5. La deuxième broche vers le bas est SDA (données) et elle va à l'Arduino A4.

Interface d'impression LCD. Il y a 6 connexions entre le module série et le blindage du clavier LCD, toutes entre des broches sans étiquette. Je vais les identifier sur le module LCD en comptant de droite à gauche, avec la première broche à 1. Il y a 2 blocs de 8, donc ils vont de 1 à 16. Je les identifie sur le module série I2C en comptant de gauche à Bon, il y en a aussi 16. De plus je donne à chaque fil une étiquette, qui est la broche équivalente sur l'Arduino qui est normalement associée à cette fonction, dans le cas d'une connexion directe sans module série.

Les 6 connexions de données sont donc:

Équivalent Arduino // Broche du module série // Broche du module du clavier LCD

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

Contrôle du rétroéclairage LCD: Cela utilise une connexion supplémentaire:

Équivalent Arduino // Broche du module série // Broche du module du clavier LCD

J10 //16 // 11

Interface du clavier: Cela utilise un seul fil de la broche du module LCD sur le côté inférieur étiqueté "A0", à la broche A0 sur l'Arduino. Au moins, c'était assez facile !

Étape 4: Rendre la clé RST utilisable similaire aux 5 autres clés

Le RST peut être connecté directement à l'entrée RESTART de l'Arduino Nano.

Cependant, si vous voulez que la clé RST soit utilisable dans le logiciel pour d'autres choses, cela peut être fait en connectant une résistance de 15K entre la broche RST et la broche A0 sur la face inférieure du blindage du clavier LCD.

Cela fonctionne comme suit: Il y a une résistance de 2K entre +5V et la touche Droite. Puis une chaîne de résistances progressivement plus grandes pour chacune des autres touches (330R à la touche HAUT, 620R à la touche BAS, 1K à la touche GAUCHE et 3K3 à la touche SELECT. Toutes les touches (y compris la touche RST) se connectent à Lorsqu'ils sont connectés à un convertisseur A/N 10 bits (comme pour Arduino Nano A0), ils fournissent approximativement les valeurs suivantes:

Droite = 0; Haut = 100; Bas = 260; Gauche = 410; Sélectionnez = 640.

Avec la résistance de 15 k à RST, il délivre environ 850.

Le logiciel utilisera des valeurs autour des points médians entre ces valeurs pour décider quelle touche a été enfoncée.

Étape 5: Logiciel

Un logiciel utile est bien sûr un exercice pour le lecteur. Cependant, pour vous aider à démarrer, vous pouvez jeter un œil à mon logiciel de test. J'ai utilisé la bibliothèque NewLiquidCrystal, qui prend en charge l'interface I2C. Tout a fonctionné, une fois les bibliothèques correctement installées.

Le point principal était d'inverser la polarité des commandes Backlight OFF et ON (à cause du transistor sur le module I2C comme expliqué dans la section Description des pièces).

MISE À JOUR 22 août 2019

Si vous rencontrez des problèmes avec l'écran LCD qui ne fonctionne pas, veuillez vérifier l'adresse I2C de votre sac à dos série à l'aide d'un scanner I2C. Un scanner approprié est joint. Ensuite, si nécessaire, ajustez le premier paramètre de l'instruction

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

Étape 6: Examen et discussion

Comme vous pouvez le voir, j'ai fait fonctionner les fonctions principales.

Ma prochaine intention est de mettre cela dans une boîte de projet dans le cadre d'un autre projet. Cependant, après m'être engagé dans cette voie, j'ai appris qu'il y avait une autre difficulté que je n'avais pas prévue.

La difficulté est que ce module Clavier LCD n'est pas configuré pour être installé dans un boîtier. N'importe quelle sorte de boîte. Les boutons des 6 touches sont bien en dessous du niveau de l'écran LCD, de sorte que si le module est monté dans un boîtier (par exemple dans le couvercle) avec le dessus de la carte de circuit LCD affleurant le dessous du couvercle, les dessus des touches sont à environ 7 mm sous le haut du couvercle.

Les solutions possibles sont:

a) Acceptez-le. Percez des trous d'accès dans le couvercle et utilisez un outil (par exemple une aiguille à tricoter coupée de diamètre approprié) pour appuyer sur les boutons.

b) Retirez l'écran LCD de la carte de circuit imprimé du module et effectuez une intervention chirurgicale sur le clavier afin que les deux composants puissent être fixés indépendamment sur le couvercle de la boîte de projet (je pense qu'il peut toujours y avoir un problème avec les boutons trop courts)

c) retirez les boutons existants et remplacez-les par des boutons plus hauts. Les nouveaux boutons doivent avoir une hauteur d'environ 13 mm pour pouvoir être actionnés à travers le couvercle de la boîte à projets). Les interrupteurs à bouton de remplacement sont facilement disponibles dans une gamme de hauteurs, y compris 13 mm.

d) jeter le module de protection du clavier LCD et utiliser des unités LCD et clavier séparées (c.-à-d. recommencer). Il existe une large gamme d'unités de clavier disponibles, mais je n'en ai pas vu avec la même disposition à 6 touches que sur ce module (c'est-à-dire Sélectionner, Gauche, Haut, Bas, Droite, Redémarrer). Ce n'est peut-être pas un gros problème, mais l'une des raisons pour lesquelles j'ai commencé avec ce module était que je pensais que cette disposition des touches était ce que je voulais.

Je prévois d'aller avec la solution c) ci-dessus, et de voir comment je vais.

Un autre extrait d'information qui peut être intéressant:

Avec le rétroéclairage allumé, la consommation actuelle de ce projet est: Arduino Nano 21,5 ma; Module série 3,6 mA; module LCD 27,5 mA; Total 52 mA.

Avec le rétroéclairage éteint, la consommation actuelle de ce projet est: Arduino Nano 21,5 ma; Module série 4,6 mA; module LCD 9,8 mA; Total 36 mA.

Conseillé: