LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

jeudi 16 août 2018

13 visiteurs en ce moment

Comment réussir son projet Arduino

. Par : Christian

Mener à bien un projet impliquant un Arduino est très valorisant. Outre la sympathique phrase "C’est moi qui l’ai fait" toujours la bienvenue à l’usage de son public, c’est surtout la satisfaction personnelle qui prédomine assez égoïstement. Mais là c’est permis… Avant d’en arriver à cette heureuse conclusion, et avant de se lancer à corps perdu les mains dans le cambouis, quelques moments de réflexion sont nécessaires pour éviter les écueils les plus communs et se donner toutes les chances d’en arriver là. Voici donc quelques conseils qui s’adressent à chaque modéliste voulant entreprendre un projet plus ou moins sophistiqué, afin de mettre toutes les chances de son côté pour réussir.

1- Savoir évaluer son savoir-faire

Un projet Arduino ne requiert pas de compétences extrêmement poussées en électronique et en programmation, mais il faut avoir acquis les bases. Heureusement, cela peut s’apprendre et le site LOCODUINO vous propose plusieurs articles pour vous former. Avant de démarrer votre projet, n’hésitez pas à faire le bilan de votre savoir-faire pour que votre projet soit bien en adéquation avec votre propre expérience. N’hésitez pas à remettre à plus tard un projet trop compliqué, le temps de vous faire un peu la main sur des projets plus simples. Sur le site LOCODUINO, plusieurs articles traitent des méthodes de programmation et un cours d’électronique est en téléchargement, dans l’article Démarrer en électronique. Pour évaluer son savoir-faire, il suffit de faire la liste de ce que vous savez ou non mettre en œuvre avec Arduino. Par exemple, si vous souhaitez motoriser les barrières de passage à niveau avec un servomoteur, il faut savoir mettre en œuvre trois choses : repérer l’approche d’un train, faire clignoter des feux de PN et utiliser la bibliothèque Servo fournie avec l’IDE. S’il vous manque un des savoir-faire, le mieux est d’abord de lire les articles de Locoduino qui en parlent et les mettre en pratique avec les exemples de programmes donnés. Vous pouvez également vous familiariser avec les exemples de chaque bibliothèque. Pour un projet d’automatisation d’un PN, vous pouvez consulter par exemple les articles Une barrière infrarouge, Fonctionnement et pilotage d’une DEL et La bibliothèque Servo pour vous faire une première idée ou bien l’article Un automatisme de Passage à Niveau pour aller un peu plus loin.

2- Savoir évaluer la complexité de son projet

Bien évaluer la complexité de votre projet vous permettra de ne pas avoir de mauvaises surprises. N’hésitez pas à le simplifier pour commencer, quitte à revenir dessus ultérieurement pour ajouter des fonctionnalités. Construisez votre projet de façon progressive, où la difficulté va en augmentant. L’échec arrive quand on veut tout traiter en même temps, bien souvent sans trop savoir par où commencer. La complexité d’un projet peut être évaluée en tenant compte des composants électroniques à faire fonctionner en même temps. Voici une petite liste non exhaustive de composants classés par ordre de difficulté croissante à mettre en œuvre :

  1. Allumer ou éteindre des DEL   pour constituer une animation lumineuse : ce genre de projet est très simple et constitue une bonne entrée en matière pour les débutants.
  2. Mettre en œuvre un bouton poussoir, un ILS ou une pédale de voie : il faut tenir compte d’éventuels rebonds et ne pas louper des appuis. La bibliothèque Bounce2 est faite pour cela.
  3. Commander des relais : cela demande d’amplifier les signaux d’Arduino.
  4. Utiliser des capteurs analogiques : le signal délivré doit rester dans la fourchette 0-5 V.
  5. Utiliser des périphériques avec les bibliothèques de base : écran LCD, servomoteur, moteur pas à pas, etc.
  6. Utiliser des périphériques avec des bibliothèques externes : écran LCD I2C, écran LCD couleur.
  7. Faire communiquer entre eux différents composants ou plusieurs cartes Arduino : cela demande de connaître les protocoles de communication (SPI  , I2C, CAN) et savoir les mettre en œuvre à l’aide de leur bibliothèque respective.
  8. Utiliser des programmes graphiques ou des pages internet : cela peut demander des connaissances dans d’autres langages de programmation comme Processing, HTML  , PHP, etc.
    Pour autant, un projet complexe n’est pas impossible à réaliser : pour faire fonctionner ensemble divers composants, il faut déjà savoir les mettre en œuvre séparément et le site Locoduino vous permet d’acquérir toutes les techniques nécessaires (voir dans la page « Accueil » « Les composants électroniques » ou bien « Les bibliothèques »).

3- Savoir évaluer les différentes phases à maîtriser pour aboutir

Pour que votre projet aboutisse, il faut définir quelles phases vous devrez savoir mettre en œuvre. Pour aller sur la lune, il a fallu maîtriser le décollage, la mise en orbite, la sortie extravéhiculaire, le rendez-vous en orbite, l’alunissage, la rentrée dans l’atmosphère et tout ne s’est pas fait en une seule mission. Pour un projet Arduino, c’est la même chose et avant qu’une carte Arduino soit capable de piloter tout un réseau, il faut maîtriser différentes phases comme commander une locomotive, savoir la localiser sur votre réseau, aubiner la signalisation (c’est-à-dire afficher le bon visuel en fonction des conditions présentes), savoir commander les appareils de voie, etc. Lister à l’avance ces différentes phases à maîtriser vous permet de voir comment construire votre projet, comment progresser dans sa réalisation. Pour reprendre l’exemple de la gestion d’un passage à niveau, une première phase est déjà de savoir localiser un train sur le réseau en utilisant un capteur, une deuxième phase est de faire clignoter les feux de PN à l’approche du train et les éteindre une fois le train passé, la troisième phase est de rajouter le mouvement des barrières. Comme vous le constatez, le projet est construit progressivement, chaque phase devant fonctionner parfaitement avant d’envisager la phase suivante. Sur votre réseau, le projet est évolutif car vous passez d’un passage à niveau non gardé (fin de phase 2) à un passage à niveau gardé (fin de phase 3) : c’est plus amusant que de vouloir tout réaliser en une seule fois. Et pourquoi ne pas rajouter le son de la sonnerie de PN ? Cela pourrait constituer une quatrième phase pour un peu plus tard. Comme vous le voyez, au départ de votre projet, il faut définir un « cahier des charges », c’est-à-dire lister ce qu’on veut obtenir ou pas (les feux, les barrières, la sonnerie) et parfois se limiter au raisonnable (ne pas envisager la garde-barrières qui sort tourner la manivelle, du moins pas en N !)

4- Comparer les différentes solutions technologiques (hardware)

Entre le réseau et la carte Arduino, il est souvent nécessaire de construire de petites interfaces électroniques souvent très simples. De même, sur le réseau, il est nécessaire de positionner des capteurs afin d’envoyer des informations à la carte Arduino. Toute cette électronique constitue la partie matérielle du projet, le hardware. Bien entendu, plusieurs solutions existent pour obtenir un résultat. Il n’y a pas une meilleure façon de faire, chaque solution a ses avantages et ses inconvénients. La solution retenue aura par contre des conséquences sur la partie logicielle du projet, le software. Pour faire le bon choix d’une solution, il est nécessaire de se documenter sur les composants et la façon de les utiliser dans le contexte Arduino. Par exemple, pour localiser un train, on peut faire appel à un ILS, une barrière infra-rouge ou bien un détecteur d’occupation. Pour afficher une information, on peut faire appel à une simple DEL  , un afficheur 7 segments ou bien un écran LCD, chaque composant nécessitant un programme informatique différent pour fonctionner. N’hésitez pas à comparer différentes solutions en choisissant composants et bibliothèques et en réalisant des programmes d’essais très simples pour mettre en œuvre ces solutions. Faites bien le bilan de ce qui est réellement nécessaire au fonctionnement de votre projet et adoptez toujours les solutions les plus simples.

5- Trouver la documentation appropriée

Il est important de réunir une documentation appropriée au projet à réaliser afin de vous y référer si nécessaire. Cela peut être une simple fiche technique (datasheet  ) de composant ou bien l’explication d’une fonction sur la page de référence du site Arduino. Grâce aux moteurs de recherche, internet permet d’avoir facilement de telles documentations. Si vous ne parlez pas anglais, sachez qu’il existe de nombreux sites qui proposent une traduction française des pages du site Arduino (www.mon-club-elec.fr ou encore le blog d’Eskimon). De même, il peut être intéressant, surtout si votre projet est complexe, d’écrire votre propre documentation. Cela commence par le cahier des charges dont nous avons parlé au paragraphe 3 complété par les choix technologiques que vous avez faits, les développements informatiques, les différentes fonctionnalités, etc. Il vaut mieux en mettre trop que pas assez. Cette documentation sera utile pour les modélistes qui reprendront votre projet soit pour l’utiliser tel quel, soit pour l’améliorer. Elle vous sera également utile si vous reprenez votre projet après quelques mois d’interruption car c’est fou comme on oublie vite sur quelle sortie est branché tel capteur ou bien l’utilité d’une variable du programme.

6- Recopier ou s’inspirer du travail des autres

Pourquoi vouloir réinventer la roue ? Pour écrire votre programme, le mieux est de vous inspirer d’un programme opérationnel publié et de le compléter afin d’y introduire des fonctionnalités supplémentaires. Souvent, il est possible de trouver des bibliothèques (libraries en anglais) qui permettent d’utiliser simplement des composants électroniques qui seraient sans cela difficiles à mettre en œuvre. Cette façon de faire, parfaitement admise dans la communauté Arduino qui pratique l’open-source, permet de réduire le temps de développement d’un projet et permet surtout d’accéder à des solutions déjà éprouvées. Bien évidemment, pour utiliser le travail des autres, il faut comprendre ce que font les différentes fonctions de la bibliothèque, comment les appeler, avec quels paramètres et surtout avec quels types de paramètres (voir à ce sujet l’article Types, constantes et variables). Tout cela est généralement décrit dans la documentation fournie avec la bibliothèque (fichier README ou LISEZMOI ou autre).

7- Pour chaque phase, travailler l’algorithme

C’est facile de savoir ce qu’il y a à faire, mais plus difficile de savoir comment le faire. Écrire des lignes de codes à la suite n’est pas la meilleure méthode pour faire fonctionner un programme. Il faut concevoir l’algorithme et en conséquence, écrire un programme informatique ne se fait pas seulement devant un écran d’ordinateur mais plutôt devant un bloc de papier. L’algorithme est la façon d’arriver à faire les choses, une sorte de méthode que suivra la carte Arduino pour arriver au résultat. Si la méthode n’est pas bonne, le résultat ne le sera pas non plus. Chaque tâche à réaliser doit être décomposée en une série de tâches élémentaires, plus simple à mettre en œuvre et qui doivent se suivre dans un certain ordre. Et il ne faut rien oublier. Il est donc important de passer beaucoup de temps à réfléchir à l’algorithme. Par exemple, pour aubiner un sémaphore sur un signal B.A.L, il faut éteindre le feu qui est allumé (jaune ou vert) puis allumer le feu rouge ; si on oublie la première tâche, le résultat sera deux feux allumés sur le signal B.A.L, ce qui ne correspond à rien. Une fois l’algorithme trouvé, il peut être traduit dans un langage informatique et pour cela, il est nécessaire de connaître les possibilités du langage, par exemple les différentes fonctions d’Arduino. Un algorithme peut d’ailleurs être traduit avec plusieurs langages et certains sont mieux adaptés que d’autres. Avec Arduino, le langage à utiliser est le C, le C++ ou bien les fonctions ou bibliothèques d’Arduino qui sont elles-mêmes écrites en C ou C++. Pour bien comprendre que l’algorithme est indépendant du langage, vous pouvez vous référez au chapitre 17 du cours d’électronique téléchargeable dans l’article Démarrer en électronique où la tâche à accomplir est le changement des quatre roues d’une voitures.

8- Savoir évaluer les ressources et choisir son Arduino

Un projet Arduino, c’est à la fois un schéma de montage des différents composants électroniques et un programme qui les fait fonctionner ensemble. Les composants sont reliés aux entrées-sorties de la carte et il est donc important d’évaluer quels types d’entrées-sorties sont nécessaires (digitales, analogiques, sorties PWM  , etc.). Cette évaluation vous permet de choisir la carte la plus appropriée à votre projet, mais elle ne doit pas se limiter aux entrées-sorties : en effet, la taille mémoire est également importante pour y loger le programme (plus ou moins long) ou bien les variables (plus ou moins nombreuses), et le nombre d’interruptions externes possibles est aussi à considérer (voir par exemple les articles La carte Arduino Uno et Qu’est ce qu’une carte Arduino ?). Enfin, certaines cartes offrent des possibilités complémentaires bien utiles pour limiter le développement électronique (cartes shield   (voir par exemple l’article Les shields de prototypage et de connexion), carte WiFi, carte bluetooth, etc.). Sur le plan financier, il peut être plus intéressant d’utiliser des cartes toutes faites, produites en grande série, plutôt qu’assembler les composants électroniques soi-même, mais ce n’est pas toujours vrai. Par contre, assembler soi-même les composants demande un savoir-faire supplémentaire et requiert davantage de temps. Voici la page à consulter pour évaluer les possibilités des différentes cartes Arduino.

9- Ecrire son code en différentes versions

Plus un projet est complexe, plus il demande d’alterner des phases de développement et des phases de vérification et mise au point. Construisez votre programme pas à pas, en partant toujours d’une version fonctionnelle (mais incomplète) que vous copierez pour développer une nouvelle version complétée ayant une fonctionnalité de plus. Il vous suffit alors d’enregistrer les différentes versions sous des numéros différents et bien penser à commenter le programme pour indiquer ce que fait telle ou telle version. Vous pourrez ainsi toujours revenir en arrière si le logiciel ne fonctionne plus mais cette façon de procéder conduit très vite à ne plus savoir ce qu’il faut garder ou jeter. Il vous faut donc être très rigoureux dans l’archivage des différentes versions et faire des sauvegardes régulières sur un support externe (clé USB par exemple).

10- Etablir un calendrier et savoir où trouver de l’aide

La meilleure façon d’aller jusqu’au bout d’un projet est de se fixer un calendrier de développement qui soit raisonnable. Il faut se donner du temps, mais pas trop non plus. Comme on l’a vu au conseil N° 3, un projet nécessite de maîtriser différentes phases, ce qui peut déjà vous permettre d’établir votre calendrier. Si vous vous trouvez bloqué à cause d’un problème technique, vous pouvez bien-sûr vous donner plus de temps pour le résoudre, mais c’est peut-être plus efficace de trouver de l’aide. Pour cela, vous pouvez consulter différents sites (LOCODUINO, Arduino, etc.), différents forum associés à ces sites, ou encore différents cours de formation sur internet (appelés MOOC pour Massive Open Online Course en anglais). Enfin, une autre solution est de faire appel aux copains mais pas n’importe lesquels, ceux qui ont réellement de l’expérience en programmation, en électronique, en développement Arduino, etc.

Application de ces conseils à un exemple

Nous allons prendre un exemple simple, un feu tricolore de carrefour routier, pour vous montrer comment appliquer ces conseils.
1- Savoir évaluer son savoir-faire
Vous savez allumer ou éteindre une DEL et vous savez attendre le temps nécessaire car vous avez déjà utilisé le programme Blink décrit dans l’article Arduino : toute première fois !.
Vous savez comment relier une DEL à une carte Arduino car vous avez lu l’article Fonctionnement et pilotage d’une DEL
Vous avez donc le savoir-faire requis par votre projet.
2- Savoir évaluer la complexité de son projet
Le montage (le projet) doit reproduire les séquences d’allumage de deux feux tricolores placés à l’intersection de deux routes. Il consiste donc à allumer ou éteindre des DEL et à attendre le temps nécessaire, dans un certain ordre. Le programme constitue un séquenceur, c’est-à-dire qu’il exécute les ordres les uns après les autres et qu’il n’effectue aucun test. De plus, il ne nécessite aucun capteur.
Cela semble assez simple à réaliser.
3- Savoir évaluer les différentes phases à maîtriser pour aboutir
Phase 1 : reproduire la séquence d’allumage pour un feu tricolore.
Phase 2 : rajouter le deuxième feu tricolore.
4- Comparer les différentes solutions technologiques (hardware)
Le hardware est constitué de deux fois trois DEL (une verte, une orange, une rouge) et des résistances de limitation. La DEL peut être connectée par son anode, ou sa cathode, ce qui change le programme à écrire (voir l’article Fonctionnement et pilotage d’une DEL).
5- Trouver la documentation appropriée
Cherchez les datasheets de vos DEL pour connaître le courant à ne pas dépasser et pour différencier l’anode de la cathode. Pour la séquence du feu tricolore, il suffit d’observer la réalité.
6- Recopier ou s’inspirer du travail des autres
Vous pouvez vous inspirer du programme Blink (déjà cité) pour écrire votre programme.
7- Pour chaque phase, travailler l’algorithme
Rappelez-vous que pour allumer un feu, il faut au préalable éteindre le feu déjà allumé. L’algorithme se réduit à éteindre une couleur, allumer le couleur suivante, attendre le temps nécessaire, etc. Quand on rajoute le deuxième feu, penser que les deux feux tricolores peuvent être au rouge en même temps (si vous ne le croyez pas, observez mieux des feux réels).
8- Savoir évaluer les ressources et choisir son Arduino
Le montage nécessite six sorties numériques et rien d’autre (carte Arduino Uno par exemple).
9- Ecrire son code en différentes versions
Au moins deux versions, pour chacune des deux phases (voir au 3-). La première version pourra être supprimée quand la deuxième fonctionnera (version finale).
10- Etablir un calendrier et savoir où trouver de l’aide
Fixez-vous deux jours maximum pour réaliser la phase 1 puis deux jours de plus pour la phase 2 (nous sommes persuadés que vous le ferez certainement en beaucoup moins de temps). Si nécessaire, cherchez une solution toute faite pour comprendre pourquoi vous n’y arrivez pas en lisant par exemple l’article Feux tricolores.

Mise au point

Tout ne fonctionne pas forcément du premier coup et c’est parfaitement normal. Chaque projet requiert une phase de mise au point, de contrôle. Pour ce qui concerne l’électronique, il faut vérifier que chaque composant joue bien son rôle et déjà vérifier que les alimentations sont opérationnelles et fournissent bien les tensions nécessaires avant de les brancher ! Un simple multimètre permet déjà de contrôler ce genre de choses ainsi que la continuité électrique d’un circuit. Ceux qui possèdent un oscilloscope peuvent vérifier les différents signaux en différents points du montage. Pour ce qui concerne le programme, on peut contrôler comment évoluent les variables en utilisant le moniteur de l’IDE d’Arduino pour réaliser des affichages qui ne servent que pour la mise au point du programme et sont ensuite enlevés. La chapitre 26 du cours téléchargeable dans l’article Démarrer en électronique vous donnera quelques voies à explorer dans la mise au point de votre programme et comment éviter des erreurs dues à un mauvais choix de variable, à des débordements lors de calcul ou encore à des boucles infinies. L’article Trucs, astuces et choses à ne pas faire ! vous indique également quelques erreurs à ne pas faire et quelques trucs à appliquer pour qu’un programme fonctionne. La recherche de panne est un sujet qui nécessite à lui seul tout un article, mais pour comprendre ce qui se passe dans un programme, le mieux est de construire ce programme à partir d’un programme fonctionnant et de rajouter une fonctionnalité et la tester. Si cela ne fonctionne plus, l’erreur est à rechercher dans ce qui a été rajouté.

Conclusion

Comme vous le voyez, appliquer ces quelques conseils n’est pas compliqué et vous permettra de savoir par quel bout aborder votre projet. Vous devez absolument savoir que face à votre ténacité, votre projet finira toujours par aboutir et qu’il y a toujours une solution à chaque problème. Souvent l’erreur du débutant est de vouloir se lancer dans un projet trop complexe pour son expérience. Le développement sur Arduino est une technique qui doit s’apprendre, au même titre que d’autres techniques du modélisme ferroviaire (kit laiton, moulage, aérographe, etc.) et cela demande à la fois temps et patience. Heureusement, LOCODUINO vous donne déjà de très bonnes bases. Alors, bon développement !

9 Messages

Réagissez à « Comment réussir son projet Arduino »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Programmation »

Comment gérer le temps dans un programme ?

La programmation, qu’est ce que c’est

Types, constantes et variables

Installation de l’IDE Arduino

Répéter des instructions : les boucles

Les interruptions (1)

Instructions conditionnelles : le if … else

Instructions conditionnelles : le switch … case

Comment concevoir rationnellement votre système

Comment gérer l’aléatoire ?

Calculer avec l’Arduino (1)

Calculer avec l’Arduino (2)

Les structures

Systèmes de numération

Les fonctions

Trois façons de déclarer des constantes

Transcription d’un programme simple en programmation objet

Ces tableaux qui peuvent nous simplifier le développement Arduino

Les chaînes de caractères

Trucs, astuces et choses à ne pas faire !

Processing pour nos trains

Arduino : toute première fois !

Démarrer en Processing (1)

TCOs en Processing

Comment réussir son projet Arduino

Le monde des objets (1)

Le monde des objets (2)

Le monde des objets (3)

Le monde des objets (4)

Les pointeurs (1)

Les pointeurs (2)

Les Timers (I)

Les Timers (II)

Les Timers (III)

Les Timers (IV)

Les Timers (V)

Bien utiliser l’IDE d’Arduino (1)

Bien utiliser l’IDE d’Arduino (2)

Piloter son Arduino avec son navigateur web et Node.js (1)

Piloter son Arduino avec son navigateur web et Node.js (2)

Piloter son Arduino avec son navigateur web et Node.js (3)

Piloter son Arduino avec son navigateur web et Node.js (4)

Les derniers articles

Comment concevoir rationnellement votre système


Jean-Luc

Comment réussir son projet Arduino


Christian

Piloter son Arduino avec son navigateur web et Node.js (4)


bobyAndCo

TCOs en Processing


Pierre59

Ces tableaux qui peuvent nous simplifier le développement Arduino


bobyAndCo

Processing pour nos trains


Pierre59

Piloter son Arduino avec son navigateur web et Node.js (3)


bobyAndCo

Piloter son Arduino avec son navigateur web et Node.js (2)


bobyAndCo

Démarrer en Processing (1)


DDEFF

Piloter son Arduino avec son navigateur web et Node.js (1)


bobyAndCo

Les articles les plus lus

Les interruptions (1)

Les Timers (I)

Piloter son Arduino avec son navigateur web et Node.js (1)

Les chaînes de caractères

Le monde des objets (1)

Ces tableaux qui peuvent nous simplifier le développement Arduino

Bien utiliser l’IDE d’Arduino (1)

Comment gérer le temps dans un programme ?

Instructions conditionnelles : le if … else

Répéter des instructions : les boucles