Objectifs du projet

Bon nombre d’entre nous rencontrons des problèmes avec le maquettage autour des contrôleurs UNO. Souvent le câblage des composants devient difficile avec un grand nombre de composants.

D’autre part la programmation sous Arduino peut s’avérer complexe et peut nécessiter de nombreuses lignes de code.

Le projet décrit ici devrait grandement faciliter le maquettage.

Ce projet se base et utilise près de 80% des composants du « ELEGOO Super Starter Kit UNO R3 »

Ce projet a pour objectif

  • La création d’un Bus technique permettant l’utilisation simultanée jusqu’à quatre platines de prototypage.
  • La création d’un programme de référence servant de base à de nombreux montages.
  • La création de fonctions facilitant la lisibilité de la programmation.
  • Le montage de l’afficheur LCD en I2C.
  •  

L’ensemble des fichiers du projet est téléchargeable ici.

Le Bus de prototypage

Les composants :

  • Câble plat multibrins de 40 conducteurs (35cm).
  • Connecteurs pour câble plat à 40 broches (5).
  • Connecteur PCB mâle-mâle à 40 tenons.
  • Facultatif platines de prototypage courtes (2).

Du kit ELEGOO :

  • La carte contrôleur.
  • La carte d’extension.
  • Les platines de prototypage (2).

Le montage est simple à réaliser :

Monter les 5 connecteurs sur le câble plat. Quatre connecteurs seront fixés avec la partie connectique vers le haut et un connecteur avec la partie connectique tournée vers le bas. Ce connecteur sera plus tard enfiché sur la carte d’extension.

Monter les deux connecteurs pour PCB en parallèle sur la platine d’extension afin de recevoir le connecteur du câble plat.

Sous la platine relier les pin vers les pin des entrées/sorties des connecteurs d’extension.

Enficher la carte d’extension sur le contrôleur UNO puis enficher le connecteur du câble plat.

Après montage on retrouvera tous les signaux de la carte contrôleur sur les 4 connecteurs du câble plat.

On obtient ainsi un Bus d’extension pouvant recevoir 4 plaques de prototypage comme indiqué sur l’image.

Un certain nombre de pin seront non connectés sur la carte d’extension (je les ai notés en lettres minuscules) et sont disponibles. On pourra les utiliser pour connecter des circuits entre les platines de prototypage.

Premier montage : l’afficheur LCD en I2C

L’afficheur LCD LCM1602/HD44780 comporte un nombre important de liaisons. Son branchement sur le contrôleur UNO diminue les possibilités de branchement d’autres composants.

C’est la raison pour laquelle j’ai ajouté un circuit intégré afin de réduire à 2 le nombre de liaisons en utilisant le protocole I2C.

Les composants :

  • Un connecteur mâle-mâle de 16 tenons.
  • Une plaine ELEGOO à souder de 2x8cm
  • Un circuit PCF8574.
  • Un connecteur 4 broches avec sa partie pour PCB.

Les composants du kit :

  • L’afficheur LCD
  • Le potentiomètre de 10k

Le montage :

Le montage est testé sur le Bus de prototypage puis soudé sur la platine à souder. On pourra facilement ajouter cet afficheur pour une utilisation simple dans d’autres maquettes.

La programmation

 

L’objectif du programme est de simplifier le travail de nouveaux projets.

 

Le programme comporte plusieurs parties :

– La partie déclarative avec l’inclusion des bibliothèques et les constantes. Cette partie fixe sera commune à l’ensemble des tests des divers composants. (B,C)

– La partie programme proprement dite qui contient les séquence « setup » et « loop ». (D)

– La partie fonctions qui en regroupe trois. Ces fonctions sont décrites plus bas. (A)

Le répertoire « 0-My_ELEGOO_soft_build” contient cinq fichiers qui devront rester ensembles :

  • « 0-My_ELEGOO_soft_build.ino »
  • « 1-My_LCD_function.ino »
  • « 2-My_IR_function.ino »
  • « 3-My_Output_port_extension.ino »
  • « Some samples.rtf »

En ouvrant le fichier « 0-My_ELEGOO_soft_build.ino » Arduino ouvrira également les autres fichiers (.ino). On retrouve à l’affichage l’ensemble des fichiers.

Le fichier « Some samples.rtf » contient quelques exemples de programmes simples qui font appel aux fonctions.

Diverses fonctions

L’interface LCD

L’objectif de cette fonction est de faciliter l’affichage sur LCD d’informations à l’aide d’une seule commande. Cette commande sera utilisée dans les sections void setup et void loop.
Elle montre également comment est construite une fonction.

L’appel de cette fonction se fait par lcdw(par1, par2, par3, par4, par5) ;

par1 indique la sous fonction voulue.
par2 indique le numéro de ligne sur l’afficheur (0 ou 1).
par3 indique le numéro de ligne sur l’afficheur (0 à 15).
par4 comporte le texte à afficher.
par5 comporte une valeur numérique à afficher.

Exemples :

– lcdw(0,0,0, “”,0); initialise l’afficheur. Cet appel sera placé dans le groupe void setup.
– lcdw(1,1,5,”HELLO WORLD”,0); affiche le texte sur la seconde ligne à partir de la position 6.
– lcdw(1,1,5,”HELLO WORLD”,25); affiche le texte « HELLO WORLD 25 » sur la seconde ligne à partir de la position 6.
– lcdw(1,0,0,””,25); affiche le texte « 25 » sur la première ligne à partir de la position 1.
– lcdw(2,0,0,””,0); effacle l’afficheur.

L’interface infrarouge et sa télécommande

L’objectif de cette fonction est de faciliter l’utilisation du capteur infrarouge avec sa télécommande.

L’appel de cette fonction se fait par tst = IRrec(par1) ;

par1 indique la sous fonction voulue. 0 pour initialisation du capteur, 1 pour recevoir et décoder la touche appuyée sur la télécommande. Un texte correspondant au nom de la touche est renvoyé dans la variable tst

Augmentation du nombre de portes digitales

L’objectif est d’utiliser le circuit 74hc595 pour augmenter le nombre de portes digitales en sortie. Le circuit utilise 3 portes de l’UNO en entrée et offre 8 portes binaires en sortie. Nous utiliserons deux fonctions. Le schéma de branchement sera décrit dans la section suivante.
Le circuit est constitué de deux registres de 8 positions (un registre interne au programme ino et un autre contenu dans le circuit). La mise à jour se fait en deux temps. D’abord on modifie les valeurs du registre interne (par la fonction setExtPin). Ensuite on copie le registre interne dans le circuit 74hc595 (par la fonction Expin).
Expin(par1) ;
Par1 : 0 pour initialisation du circuit. 1 pour mettre toutes les portes en sortie à LOW. 2 pour enregistrer les changements sur les portes dans le circuit.

setExtPin(par1, par2);

par1 : le numéro de la porte à changer (0-7).
par2 : l’état de la porte désiré (LOW ou HIGH).

Exemples d’utilisation du BUS, du programme et des exemples.

Afin de mettre en musique les éléments décrits dans ce projet je propose quelques exemples.
Ces exemples se trouvent dans le fichier « Some samples.rtf ».

Le câblage des composants est montré sur les schémas. Le projet a été élaboré pour permettre l’utilisation simultanée d’un grand nombre de composants.

Pour utiliser un modèle il suffit de :
– Câbler les composants utilisés.
– De recopier la partie concernée du fichier « Some samples.rtf » dans la partie (D) du programme et de le compiler/téléverser dans le contrôleur.
Vous constaterez que ces modèles ne comportent pas beaucoup de ligne de code. C’est le but recherché afin de faciliter la programmation.

Le programme, lors de sa compilation, ne chargera que les fonctions utilisées. Le code en sortie est optimisé.
D’autre part le bus hardware avec sa possibilité d’utiliser plusieurs platines facilite grandement les montages.

Pour ce projet tous les éléments ont été câblés ensemble sur les platines. L’afficheur LCD a lui été connecté sur la platine d’extension de l’UNO.

Le tout permet une combinaison facile et un montage rapide des composants. Grâce aux fils de câblage courts l’ensemble est visuellement sympathique.

Vous pouvez maintenant donner libre cours à votre imagination pour le maquettage de vos projets.