Gestion d'un projet (complexe) Arduino en restant ORGANISÉ

1. Introduction NOTE : Je ne suis pas un expert . Des erreurs se sont peut-être glissées dans l'article. Ce tutoriel est ...

Gestion d'un projet (complexe) Arduino en restant ORGANISÉ

1. Introduction

NOTE : Je ne suis pas un expert. Des erreurs se sont peut-être glissées dans l'article. Ce tutoriel est adressé à des débutants et/ou surtout des étudiants, pas à des bêtes de courses en Arduino/C++ !

Je suis, aussi régulièrement que possible, un intervenant sur le forum Arduino francophone. Souvent au moment de la fin des projets d'examens des jeunes arrivent sur le forum avec des comptes fraîchement créés pour demander de l'aide sur leur projet, souvent sans lire les bonnes pratiques avec des posts du genre

Cc la famille aidez moi sur mon projet Arduino c'est pour allumer une lampe avec un bouton et aussi faut que je fasse tourner le moteur 12V merci

Vous voyez le problème ? Pas facile d'aider dans ces conditions!

Ça, c'est le plus gros problème. Mais tous les débutants ne sont pas les mains dans les poches quand il arrive et certains ont même dans leurs bagages une sérieuse envie de travailler! Eux, ce qui va leur poser problème, c'est l'organisation.

Parfois un nouveau membre arrive avec une idée de projet très intéressant (pour un examen par exemple mais c'est un problème que tout débutant peut rencontrer!), un échange s'ensuit et au bout de 100 messages une trentaine de solutions a été évoquée car le demandeur revient à chaque fois sur les paramètres du projet, change des détails, certaines choses restent floues. On lui indique donc les étapes à suivre pour rester organisé. Mais c'est long de le répéter à chaque fois, surtout que souvent cela décourage le demandeur!

Quand on veut faire un gros projet, on ne doit pas faire n'importe quoi, au risque de se perdre et de ne pas réussir à finir à temps ou correctement. C'est comme si vous souhaitiez acheter une voiture et que vous décidiez de prendre la dernière Ferrari sans savoir combien vous avez dans le portefeuille!

Je me suis dis qu'un petit tuto rapide serait utile 😉

2. Comment démarrer son projet ?

NOTE : Déjà, petit point qu'il me semble important de rappeler pour les étudiants à charge d'un projet de fin d'étude, ou de n'importe quoi de noté en rapport avec Arduino; Commencer à lancer les neurones à une semaine de la fin du temps imparti ne vous aidera pas 🙂. Plus vous aurez de temps consacré au projet, même pour quelques dizaines de minutes par jour, mieux se portera la note parce que vous aurez compris ce que vous aurez fait au lieu de recopier bêtement ce qui dit M.Internet.

2.1 Le cahier des charges

Avant toutes choses, probablement la partie la plus importante, il vous faut un cahier des charges. C'est THE partie importante d'un projet. J'imagine que vous savez ce que c'est (enfin j'espère!), mais comme je suis pénible je vais le rappeler quand même 👍️😝.

Un cahier des charges, c'est un document qui liste tout ce que l'on attend du projet. Rien d'autre. C'est rapide à faire, et si on le fait bien on n'aura pas à se poser de question plus tard. C'est un peu le squelette du projet, ça fixe le ou les objectif.s.

2.2 Un peu d'analyse...

2.2.1 Réalisable ?

Une fois que vous savez exactement ce que vous voulez que votre système fasse, comment, et que vous avez identifié les contraintes auxquelles votre projet va être confronté (en gros, après avoir fait votre cahier des charges 😉), vous devez identifier ce qui est réalisable ou non, et quel est le niveau de complexité du projet.

Comme ça, si vous tentez de faire un truc impossible, vous le saurez directement et pourrez retravailler vos objectifs. Typiquement, une communauté peut être très utile à ce moment là. Mais si vous réalisez un projet d'examen, vos professeurs seront aussi d'une grande aide!

2.2.2 De quoi vais-je avoir besoin ?...

Bon. Vous avez maintenant une base solide pour votre projet. Vous savez

- Ce que vous voulez qu'il fasse, comment, qu'elles vont être les contraintes;
- Si ce que vous voulez faire est réalisable ou non, et quel est le niveau de difficulté de la chose.

Maintenant, vous pouvez vous poser la question "de quoi vais-je avoir besoin ?". Et oui, grande question! Commencez par faire la liste de tout ce que votre projet à besoin. Et comme un exemple c'est plus parlant qu'un long discours, prenons un petit robot suiveur de ligne. Il a besoin de

  • Pouvoir suivre les lignes au sol (donc un capteur);

  • Pouvoir avancer (donc deux moteur et une carte pour les piloter);

  • Et bien sûr une carte Arduino pour piloter tout ça.

Ensuite, vous prenez 5 minutes et votre moteur de recherche préféré, et vous trouvez les capteurs et actionneurs correspondant au besoin de votre projet. Dans le cas de notre petit robot suiveur de ligne, on a par exemple:

  • le capteur OPENST1140 pour les lignes au sol,

  • deux petits moteurs à courant continu avec motoréducteur, une carte L298N pour les piloter sans cramer la carte Arduino;

  • Une carte Arduino NANO.

Bon, maintenant vous avez la liste du matériel. Avant de vous le procurer, demander l'avis de la communauté si vous avez un doute, mais souvent vous trouverez des exemples, des tutos et des schémas sur Internet.

2.3 Vous reprendrez bien un peu de schéma ?

Chouette! Maintenant que je sais ce dont j’ai besoin, je vais courir l’acheter sur un site chinois pour pas cher, ça va être trop bien, youpi!

Ben non, pas si vite! Okey, vous savez ce dont vous avez besoin, mais vous ne savez pas comment brancher vos composants entre eux! Pour ça, rien de bien compliqué mais il faut faire ça dans les règles. Et pour faire ça dans les règles, il vous faut une règle, justement 😄 Et même un peu plus. Le truc dont il faut se souvenir, c'est Papier, Crayon, Gomme, Cerveau!

➜ Regardez sur Internet des tutos, des exemples, et surtout la datasheet (c'est à dire la documentation officiel du constructeur, souvent en anglais, à propos du composant)! Renseignez vous sur la carte Arduino, pour connaître ses entrées/sorties par exemple (toutes ne servent pas à la même chose).

NOTE : La doc du constructeur c'est surtout pour les composants électroniques ou les modules peu documentés. Si vous utilisez un capteur ou un module connu, normalement vous trouverez plus lisible dans des tutoriels sur Internet, et en français!

3. Le code, le code!

C'est bon maintenant, je peux commander le matériel ?

Yep, c'est bon mon capitaine! Maintenant que vous avez fait un schéma lisible, que vous savez de quel éléments vous avez besoin et que lesdits éléments sont sur un bateau en chemin depuis la Chine vers la France, vous pouvez vous attaquer... suspense... au code!

Et oui, vous avez maintenant toutes les cartes en mains pour créer le "cerveau" de votre projet qui habitera votre carte Arduino (il aura des capacités à peine plus élevées que celle d'une brique, mais c'est déjà pas mal pour des petits bouts de circuits à 5€ et aux 2ko de RAM 📟️ !)

3.1 Nota bene spécial examens!

Vous vous en doutez, il n'y a pas de méthode magique pour faire rapidement le code quand on part de 0. Enfin si, mais elle ne fera pas le code à votre place! Il faut s'engager, soi-même et pas une IA, à fond dans le projet, si on veut apprendre des trucs ou simplement ne pas se retrouver à bégayer devant les examinateurs

Alors, heu, ben mon code, heu, comment dire, heu, il... il... Il fonctionne avec des fonctions, en... heu, en C++! Voila, merci pour votre écoute, tchao.

Vous vous retrouverez avec un joli 0 pointé si vous n'êtes pas capable d'expliquer comment fonctionne votre programme!

Si vous vous y prenez longtemps avant la fin du temps imparti pour rendre le projet, vous pouvez suivre un cours rapide sur le C++/Arduino (une bonne référence, les tutos d'Eskimon), histoire que tout soit plus facile à comprendre ensuite (vous y passerez un peu de temps, mais bien ridicule par rapport à celui que vous allez gagner ensuite!)

Je peux vous donner quelques conseils tout de même, voir ci-dessous.

3.2 Commencez par simple

Je vois venir à dix kilomètres les petits malins qui pense que coder, c'est réservé à une classe restreinte d'élites, qui passent leurs soirées devant des terminaux couverts de lignes vertes d'un langage inconnu, qu'eux seuls parviennent à comprendre. Sauf que... non.

3.2.1 Apprendre les bases (un minimum)

Comme je l'ai dis, si c'est possible suivez un petit cours (pas besoin d'un truc d'expert à rallonge, juste de quoi avoir les bases pour ne pas se retrouver paumé devant un Serial.print("Hello, world!");). La base c'est simplement,

  • la structure d'un programme, les commentaires, les variables,

  • les structures de contrôle (boucles, conditions)

  • la classe Serial pour le débogage,

  • les opérations mathématiques simples,

  • l'utilisation de quelques fonctions, comme pinMode ou #include.

3.2.2 Créer l’algorithme du code!

Vous pouvez, techniquement, commencer à créer le code maintenant. Mais ce que je vous conseil de faire avant, c’est de prendre une feuille de papier, un stylo, et d’écrire, instruction après instruction, le fonctionnement du programme, sa logique. Si on reprend l’exemple du petit robot suiveur de ligne, cela donnerai quelque chose comme…

Boucle infinie (loop)

Si capteur détecte ligne

Avancer tout droit

Sinon si capteur détecte que ligne tourne

Tourner dans le sens de la ligne
Sinon si capteur ne détecte plus ligne
S’arrêter net, revenir au début

NOTE : Ceci est un exemple très simplifié et peu réaliste. Faites ce schéma comme vous le sentez pour qu’il vous aide au mieux!

3.2.3 Tout tester séparément!

OK. Vous avez la base, et le comment le programme va faire ce qu’il doit faire. Maintenant, cherchez, pour chaque élément de votre projet (un capteur, un module, une LED, un buzzer, ou que sais-je encore ?), un tutoriel sur Internet avec un programme d'exemple. Essayer de faire fonctionner l'élément tout seul, avec le strict minimum (si ça ne marche pas tout de suite, pas de panique! Avant de courir sur un forum, regardez l'erreur, cherchez-la, quelqu'un l'a peut-être déjà eu. Essayez de comprendre le code pour voir ce qui coince)

Une fois que vous aurez réussi à faire fonctionnement chaque élément du projet séparément, avec un programme ne gérant que cet élément, ajouter progressivement les programmes ensembles, toujours en testant à chaque fois! Cela augmentera le niveau de complexité du programme, alors attention à garder un code lisible pour s'y retrouver!

Si quelque chose qui fonctionnait avant ne fonctionne plus une fois utilisé en même temps qu'autre chose, alors vous saurez exactement où ça coince 👍️

3.2.4 Appréhender les bibliothèques nécessaires

Nombre d'éléments de l'univers Arduino, à partir du moment ou il dépasse le stade de la simple LED, auront généralement une bibliothèque (le mot correct en français, synonyme de librairie dans la langue de Shakespeare) permettant de l'utiliser plus simplement.

Recherchez si il n'en existe pas pour ce dont vous avez besoin (vous le verrez de toute façon dans les tutoriels, souvent), installez-la dans l'IDE Arduino ou n'importe quoi que vous utilisez pour programmer, et regardez les exemples proposés !

Souvent vous verrez comment utiliser la bibliothèque grâce à ces fameux exemples (des programmes tout près montrant un cas d’utilisation des fonctions de la librairie, disponibles dans l’IDE Arduino dans le menu « FileExamples »), ce sont des aides complémentaires aux tutoriels et à la documentation, très utiles!

3.3 Petites astuces

3.3.1 Noms de variables/fonctions simple mais explicites

Utilisez des noms de fonction ou de variables simple mais clair (on voit parfois passer des variables nommée dans un style similaire à "cptTp". Préférez à cette écriture "capteurTemperature" (qui respecte le "CamelCase"), par exemple - on comprend son utilité au premier coup d’œil) - évitez les raccourcis, ils rendent illisible le code.

3.3.2 Formatage automatique

En adéquation avec le deuxième paragraphe du chapitre 3.2.2, pour maintenir lisible votre code, dans l'IDE Arduino vous pouvez utiliser le formatage automatique, disponible avec le raccourci clavier Ctrl+T. Usez et abusez de cette fonction, elle ne vous rendra la lecture du code que plus agréable, à vous et à ceux qui vous aideront, potentiellement.🔥

4. Donc, récapitulons simplement…

4.1 Cahier des charges

Dès que vous avez la feuille de présentation du projet à réaliser en main, ou que l'idée du projet vous vient, faites un cahier des charges, listant vos attentes vis-à-vis de la réalisation, et si il y en a des contraintes auxquelles vous devrez faire face autant sur la partie software (le code) que sur le hardware (matériel).

4.2 Trouver les composants

Une fois que vous savez ce que votre projet doit faire, recherchez pour chaque fonctionnalité un capteur ou un module qui fasse ce travail. Veuillez à ce que les composants que vous choisirez soit compatibles avec la carte Arduino (type de protocole de communication, nombre de pin, etc…) et entre eux (tensions, etc...).

4.3 Concevoir le schéma

Ensuite, avant de commander les composants, faites à l’aide de tutoriels sur Internet ou des exemples de câblage disponibles dans la documentation du constructeur, un schéma regroupant chaque élément hardware du projet, avec toutes les connections.

4.4 Créer l’algorithme du code

Une fois que vous êtes sûr de vous, vous pouvez commencer à coder. Mais avant faites, sur un papier, le schéma de l’algorithme de votre code (étape inutile si le projet est très simple mais qui peut beaucoup vous aider si le code est complexe – cas qui nous intéresse dans cet article).

4.5 Programmer chaque module séparément

Une fois que vous savez comment le code fonctionne, vous pouvez vous renseigner sur les bibliothèques existantes pour les modules que vous souhaitez utiliser, et prendre en main chaque module séparément, n’écrivez pas tout d’un coup!

4.3 Mettre en commun les programmes

Une fois que vous avez fait fonctionner chaque module seul, ajouter progressivement les programmes de chacun ensembles. Testez le code à chaque ajout/changement.

Enfin, testez le code, soit sur votre montage réel, ou soit si vous n’avez pas encore les composants/pas encore fabriqué le montage, sur un simulateur Arduino en ligne comme Wokwi ou Tinkercad.


Excusez moi pour ce joli pavé (plein de baratin inutile, je dois l'admettre) 🥴, si l'envie vous prend dites moi dans les commentaires si vous trouvez la démarche présentée ici correcte ou incorrecte, ou simplement votre avis à propos de l'article.

En espérant que ce petit cours sur la manière de structurer son projet Arduino à partir du moment ou il devient un tant soit peu complexe, à destination des débutants et des étudiants tout d'abord, vous aura servi;

Cordialement,

Pandaroux007