Salle de TP d'Arduino

Toutes les discussions sur l'Arduino !

Modérateur : MOD

Répondre
Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » ven. 26 févr. 2016, 12:39

Je vous propose au cours de ce weekend une solution au premier exercice proposé dans cette "salle de TP". Bien entendu, je vous recommande de réaliser cette solution pour que cela vous soit profitable ; vous verrez que vous obtiendrez un montage très sympa pour votre réseau et que ce montage pourra être amélioré par la suite pour arriver progressivement à un véritable B.A.L (Block Automatique Lumineux). D'autant qu'un simple ovale de voie permet déjà de l'installer... :wink:

Circuit à quatre cantons

Rappel de l’exercice N°1

On divise un ovale de voie en quatre cantons successifs en disposant quatre signaux à deux feux (vert-rouge). Le circuit est parcouru dans le sens des aiguilles d'une montre. Le but de l'exercice est de rendre les signaux fonctionnels en fonction de la progression d'un engin motorisé parcourant l'ovale.

Attention : dans un but de simplification, il ne s'agit pas de créer un B.A.L. On se contente de l'effet visuel des signaux.


Image

Ce n'est pas tant l'écriture du programme qui est intéressante, mais l'analyse de ce problème pour trouver les solutions les plus simples et les moins gourmandes en ressources. Utilisez des ILS, un module Uno et des LED pour les signaux (ou des signaux du commerce si vous en avez). Placez tout cela sur un ovale de voie ou faite un mock-up. Et quand cela fonctionne, une petite vidéo si possible.

Analyse du problème

Le circuit est composé de 4 cantons. Des ILS vont être placés pour matérialiser l’entrée des cantons et leur sorties. Comme les cantons se suivent, l’ILS pour matérialiser la sortie n’est pas nécessaire ; en effet, lorsqu’un engin entre dans un canton, il sort du canton précédent. Quatre ILS suffisent donc pour matérialiser le circuit. Ils seront placés légèrement en arrière du signal : lorsqu’un engin passe l’ILS, le signal qu’il vient juste de franchir passe au rouge.

Les signaux sont constitués de deux feux, un vert et un rouge. Il y a deux fils de commande et un fil commun de retour du courant. Si les signaux sont à cathodes communes, ils sont commandés par un signal HIGH. Si les signaux sont à anodes communes, ils sont commandés par un signal LOW. La figure TP1 montre le branchement d’un signal (à cathodes communes) par rapport au module Uno. Chaque signal nécessite deux sorties pour être commandé.

Image

Au total, le montage nécessite 12 E/S : 4 pour les ILS et 8 pour les quatre signaux.

Réduction du nombre d’entrées-sorties

Douze entrées-sorties, c’est parfaitement compatible avec un module Uno. Néanmoins, certains montages ont besoin de plus et il peut être intéressant de chercher à réduire le nombre d’E/S nécessaires.

Pour les ILS, on peut utiliser le montage décrit par la figure 18 du cours, en montant les 4 ILS avec des résistances constituant un diviseur de tension et en utilisant une entrée analogique du module. On passe ainsi de 4 à une seule entrée.

Pour les signaux, on peut utiliser le montage de deux LED commandées par une seule sortie (la sortie 3 du NE555 tel qu’on le voit à la figure 111 du cours « Démarrer en électronique »). Ce montage est repris par la figure TP2 en le commandant par la sortie 13 du module Uno. On peut ainsi tester le comportement en utilisant le programme Blink qui fait clignoter cette sortie. Lorsque la sortie est HIGH (5 V), la LED rouge s’allume, lorsqu’elle est LOW, c’est la LED verte. Avec cette astuce, on passe de 8 à 4 sorties seulement.

Image

Comme vous le savez, le programme (software) est très dépendant du montage (hardware). C'est pourquoi il faut commencer par réfléchir à la façon dont on veut commander les accessoires (ici, les signaux) et voir si on peut réduire le nombre d'E/S nécessaires. Nous verrons demain comment réaliser une maquette pour mettre au point le programme. Et vous, quelle solution adopterez-vous ? :?: :ugeek:
Fichiers joints
Cantons_signaux_2_feux_R.png
Cantons_signaux_2_feux_R.png (358.49 Kio) Vu 3000 fois
figure_TP1.png
figure_TP1.png (6.95 Kio) Vu 3000 fois
figure_TP2.png
figure_TP2.png (7.72 Kio) Vu 3000 fois

Avatar du membre
tgvdu88
Papotier
Messages : 180
Enregistré le : sam. 25 oct. 2008, 17:45
Site Internet : https://www.facebook.com/tgvdu88/
Contact :

Re: Salle de TP d'Arduino

Message par tgvdu88 » sam. 27 févr. 2016, 09:49

J'ai une question par rapport aux interrupteurs. Je sais ça remonte à loin maintenant :mdr:
Je m'explique, lorsque j'appui sur un interrupteur, il doit actionné l'allumage et le clignotement de 2 leds et lorsque je j'appuis sur un 2eme inter, celle-ci s'éteignent.

Le problème que j'ai, c'est que lorsque l'inter est appuyé, il ne va pas reproduire indéfiniment le programme de clignotement.

Comment je peux dire au programme que le clignotement doit continuer tant que il n'y a pas un 2 eme appui sur le BP?
Modifié en dernier par tgvdu88 le sam. 27 févr. 2016, 09:58, modifié 2 fois.

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » sam. 27 févr. 2016, 09:52

Tu peux utiliser une variable booléenne qui ne prendra que deux valeurs : 0 pas de clignotement, 1 clignotement.
Lors de l'appui sur l'interrupteur, la variable change de valeur. En fonction de sa valeur, tu fais ou non clignoter dans ton programme.
Ai-je répondu à tes interrogations ?

Avatar du membre
tgvdu88
Papotier
Messages : 180
Enregistré le : sam. 25 oct. 2008, 17:45
Site Internet : https://www.facebook.com/tgvdu88/
Contact :

Re: Salle de TP d'Arduino

Message par tgvdu88 » sam. 27 févr. 2016, 09:59

Parfait! Merci grand chef! :P

ET j'ai une autre question concernant le TP cette fois ci.

Sion utilise la fonction switch case pour le programme on devrait pour voir faire démarrer le train sur n'importe quel canton, non?

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » sam. 27 févr. 2016, 10:12

tgvdu88 a écrit :Parfait! Merci grand chef! :P

ET j'ai une autre question concernant le TP cette fois ci.

Sion utilise la fonction switch case pour le programme on devrait pour voir faire démarrer le train sur n'importe quel canton, non?
Il y a autant de possibilité de programmes que de programmeurs ! On peut tout à fait utiliser une variable pour repérer le ou les cantons occupés (de 1 à 4) et donc utiliser switch case.

Comme il y a beaucoup de débutants, je vais vous proposer un programme simple et fonctionnel, mais ensuite il y aura de nombreuses façon de l'optimiser. Car le travail du programmeur est aussi de savoir identifier les points faibles de la solution qu'il développe... et ce n'est pas toujours simple. :roll:

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » sam. 27 févr. 2016, 10:25

Nous continuons l'étude de notre projet. Hier, nous avons examiné le principe et déterminé les E/S nécessaires, ce qui permet de dessiner un premier montage. Nous allons voir aujourd'hui, comment réaliser une maquette permettant le mise au point du montage. Lorsque celui-ci donne satisfaction, la maquette est reproduite sur le circuit (locodrome ou réseau). :wink:

Choix d’une solution

A partir de l’analyse du problème, on peut arrêter une solution concernant le hardware, c’est-à-dire la partie « composants à mettre en œuvre ».

La solution proposée ici fait appel à 4 E/S pour les 4 ILS et 4 E/S pour les 4 signaux. Le programme à écrire devra bien entendu tenir compte du choix qui a été fait puisque le software est corrélé au hardware.

Il faut donc 8 E/S au total. Comme on évite d’utiliser les E/S 0 et 1, les E/S nécessaires vont donc de 2 à 9.

Fabrication de la maquette

L’ensemble des composants est réuni sur une plaque d’essai et les liaisons avec le module Uno sont raccordées. L’ILS du canton 1 est sur l’entrée 2 et celui du canton 4, sur l’entrée 5. Le signal du canton 1 est sur la sortie 6, celui du canton 4 sur la sortie 9. La figure TP3 montre le montage.
Image

Figure TP3
En fait, réalisé de cette façon, le montage présente un défaut : une forêt de fils ne permettant pas un accès aisé aux ILS et ne permettant pas de bien voir les signaux. Pour faire une vidéo du fonctionnement, c’est assez gênant. La figure TP4 montre donc le même montage mais en positionnant le module Uno sur l’arrière afin de laisser dégagée la vue du circuit.
Image

Figure TP4
Edition : correction de la figure TP4 pour rajouter les câbles d'alimentation :oops:

Je vous laisse construire votre maquette, soit sur le principe développé ici, soit sur un autre principe permettant par la suite de commander des signaux à trois feux. La solution que je donne ne doit constituer qu'un exemple que vous n'êtes pas obligés de suivre. Demain, nous aborderons le programme faisant fonctionner cette maquette. :geek:
Fichiers joints
Mockup_1.png
Mockup_2.png
Modifié en dernier par Arduino le sam. 27 févr. 2016, 12:24, modifié 1 fois.

Avatar du membre
alanya
Causant
Messages : 204
Enregistré le : jeu. 14 août 2008, 13:33
Echelle pratiquée : N, HO et H0e
Prénom : Yves
Club : RGP49
Localisation : Saumur
Âge : 62

Re: Salle de TP d'Arduino

Message par alanya » sam. 27 févr. 2016, 10:55

C'est marrant comme ça parait facile expliqué comme ça !
RGP49

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » sam. 27 févr. 2016, 11:20

En fait, rien n'est très compliqué avec Arduino et c'est ce qui a fait sa force de vente et son succès.

Ce qu'il faut avoir compris, c'est qu'en positionnant les sorties à 0 ou 5 V, cela permet de commander des accessoires (en amplifiant le signal éventuellement). Et l'ordre pour cela est digitalWrite.

A partir de ça, on peut commencer à faire des choses intéressantes. D'ailleurs, en deux mois de cours, vous avez déjà appris à faire deux automatismes (la gare à deux voies, et les signaux du B.A.L). Pas mal non ? :mrgreen:

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » sam. 27 févr. 2016, 12:11

Voici quelques conseils pour monter une maquette proprement (ni plus difficile, ni plus long que de la monter n'importe comment... :lol: ).

En examinant la figure TP4, on constate qu'il y a d'une part la breadbord (plaque d'essai) et ses composants, d'autre part le module Arduino Uno raccordé à la breadboard.

Commençons par la breadboard : pour ceux qui ne connaissent pas le principe, voir cet article :
http://locoduino.org/spip.php?article83

Les lignes de la breadboard sont repérées par des lettres (de A à J) et les colonnes sont repérées par des nombres. En suivant la même implantation que le schéma pour disposer les composants, vous êtes certains de ne pas manquer de place et de minimiser le risque d'erreurs. Prenez votre temps...

Les poussoirs : de forme carrée, ils ne sont pas faciles à utiliser. Dans quel sens les mettre ? Pas de panique, si vous utilisez deux broches opposées en diagonale, cela fonctionnera et c'est ce que j'ai fait sur le plan de montage.

Les DEL : l'anode qui doit être reliée au plus est la broche la plus longue (procédé mnémotechnique logique : la broche la plus longue au plus). Si on regarde la DEL par transparence, l'anode a la forme d'un A (voir la figure TP4). Bien respecter le sens de montage des DEL !

Les fils de liaison (ou straps) : sur la breadboard, ils doivent être au ras de la plaque pour que le montage soit propre ; au besoin, recoupez les (de toute façon, ils vous resserviront à cette dimension). Seuls les fils avec conducteur monobrin sont utilisables (ne pas employer de fils multibrins, trop souples pour être enfichés dans la breadboard). Pour raccorder le module Arduino, utiliser les câbles souples terminés par un bout rigide (cela s'achète ou se construit). Voir l'article cité plus haut.

Les résistances : la valeur n'est pas très critique, si vous ne l'avez pas, remplacez la par la valeur située juste au-dessus, votre DEL sera un peu moins lumineuse. Personnellement, je les place à cheval sur le canal central de la breadboard ; ce n'est pas une obligation.

L'alimentation : elle est prise sur le module Uno. En bleu, tous les straps reliés à la masse (GND), en rouge, tous ceux reliés au plus de l'alim (ici + 5 V). Cette alimentation apparait sur la figure TP3 et a été oubliée sur la figure TP4 que je corrigerai (c'est maintenant fait :) ). Comme il n'y a qu'une seule alimentation, reliez par des straps rouge et bleu les deux lignes possibles pour les alimentations (elles sont repérées par un trait rouge ou un trait bleu).

Le module Uno : il est relié par les câbles souples à bouts rigides et l'alimentation est prise sur lui (GND et +5V). Le module peut être programmé avant d'être relié à la breadboard, ou bien une fois relié ; cela n'a pas d'importance tant que la prise USB est accessible. De toute façon, le module est ici alimenté par le câble USB.

Dernier conseil mais de taille : vérifiez bien votre montage :ange: . Souvent, cela ne fonctionne pas parce qu'un simple câble n'a pas été mis dans le bon trou de la breadboard. Encore une fois, prendre son temps. :wink:

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » sam. 27 févr. 2016, 16:18

Allez, pour vous inciter à résoudre cet exercice, voici une petite vidéo qui vous montrera le fonctionnement de la maquette de mise au point décrite ce matin :


Demain, on analyse le programme. Ensuite on passera à l'exercice N°2, le même mais avec des signaux à 3 feux...

Enfin, on analysera les faiblesses de ce montage et on étudiera ce qu'il faudrait améliorer pour arriver à un véritable B.A.L (Block Automatique Lumineux) capable d'espacer les trains sur le réseau tout en gérant la signalisation à 3 feux (et peut-être même en faisant ralentir les trains...).

Ca vous tente ? :wink:

Avatar du membre
tgvdu88
Papotier
Messages : 180
Enregistré le : sam. 25 oct. 2008, 17:45
Site Internet : https://www.facebook.com/tgvdu88/
Contact :

Re: Salle de TP d'Arduino

Message par tgvdu88 » sam. 27 févr. 2016, 23:10

Oui la suite semble interessante :D
A suivre!

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » dim. 28 févr. 2016, 11:10

Examinons le programme qui fait fonctionner cette maquette...

Programme

Une fois défini le hardware, reste à écrire un programme pour le faire fonctionner.

Les E/S 2 à 5 sont des entrées définies en INPUT_PULLUP.

Les E/S 6 à 9 sont des sorties numériques. A l’état HIGH, le signal est au vert et à l’état LOW, il est au rouge (voir figure TP4).

La définition du montage peut être faite par des #define ou par des const byte.

La figure TP5 montre les définitions et le setup.
Image
Figure TP5
L’avantage du circuit qui est parcouru dans un seul sens, est qu’on connait l’ordre dans lequel les ILS vont se déclencher. On peut donc les surveiller les uns après les autres, et on n’a rien à faire d’autre pendant cette surveillance. Pour cette raison, on peut utiliser des boucles while pour surveiller ; tant que l’ILS n’est pas déclenché, on ne fait rien, lorsqu’il l’est, on positionne les signaux et on passe à la surveillance de l’ILS suivant.

La figure TP6 montre ce programme qui est donc relativement simple.
Image
Figure TP6
Les commentaires de début de programme indiquent comment l’utiliser (voir figure TP5). A la mise en route, tous les signaux se positionnent au vert. La circulation d’un engin motorisé sur le circuit commencera le cycle dès que celui-ci arrivera sur le canton 1. Au fur et à mesure de sa progression, les signaux se positionnent comme il se doit.

Si l’engin motorisé est enlevé du circuit, il suffit de faire un reset sur le module Uno pour que les feux se repositionnent au vert comme au début du jeu.

Maintenant que nous avons vu la marche à suivre pour résoudre l'exercice N°1, nous allons nous attaquer à l’exercice N° 2 :wink:
Fichiers joints
Setup_cantons_2feux.PNG
Programme_cantons_2feux.PNG
Programme_cantons_2feux.PNG (18.49 Kio) Vu 2895 fois

Avatar du membre
tgvdu88
Papotier
Messages : 180
Enregistré le : sam. 25 oct. 2008, 17:45
Site Internet : https://www.facebook.com/tgvdu88/
Contact :

Re: Salle de TP d'Arduino

Message par tgvdu88 » dim. 28 févr. 2016, 11:40

C'est a peu de chose près le même programme que le mien. Mais il va falloir à l'occasion que j'essaye de voir pour y mettre le switch case... enfin quand j'aurai réussi mon programme de PN :mdr:

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Salle de TP d'Arduino

Message par Arduino » dim. 28 févr. 2016, 11:48

Ne brule pas les étapes ; dans le domaine de la programmation, il faut y aller par étapes successives et avoir bien compris au fur et à mesure. Devenir bilingue prend du temps. :lol:

On aurait aimé voir le résultat de ta programmation. Une petite vidéo (caméscope, appareil photo numérique, smartphone, même une webcam !). Est-ce que tu l'as testé sur une maquette ou bien directement sur ton réseau ? (là, la vidéo serait sympa... :wink: , je vais essayer d'en faire une sur mon locodrome avec les signaux 3 feux)

Avatar du membre
tgvdu88
Papotier
Messages : 180
Enregistré le : sam. 25 oct. 2008, 17:45
Site Internet : https://www.facebook.com/tgvdu88/
Contact :

Re: Salle de TP d'Arduino

Message par tgvdu88 » dim. 28 févr. 2016, 12:37

Malheureusement je n'ai pas de réseau bouclé, après je peux remonter le mock up pour le montrer mais le résultat est le même que toi à part que j'ai utilisé des LED bi-color. ;)

Répondre