Sylvain Mahé Le site Web Retour à l'accueil Principes Partager mes idées et mes projets librement et gratuitement. Thématiques Mécatronique du système embarqué, artisanat pluridisciplinaire, bricolage commun, esthétique logicielle et matérielle, minimalisme fonctionnel, conceptualisation alternative, rédaction technique et littéraire, partage pédagogique documenté. Contact ✆ Téléphone : 06.45.49.96.98
✉ E-mail : contact@sylvainmahe.site
✎ Site Web : sylvainmahe.site
Écriture de la page : Sylvain Mahé
Comprendre ce qu'est MODULE MODULE est un système embarqué d'automates programmables, c'est-à-dire une partie logicielle (programmation) et une partie matérielle (électronique) permettant de réaliser des tâches d'automatisation. Partie logicielle, le programme MODULE est un outil de développement qui se présente sous la forme d'une suite de classes autonomes écrites en langage C++ dédiées à la programmation des microcontrôleurs ATmega48P, ATmega88P, ATmega168P, ATmega328P, ATmega164P, ATmega324P, ATmega644P, et ATmega1284P qui équipent mes automates programmables. Partie matérielle, le projet MODULE est un ensemble de circuits imprimés constituants la base de cartes électroniques complètes partie commande équipées de microcontrôleurs (ce sont les automates programmables associés au programme MODULE), et également d'autres cartes électroniques périphériques que vous pouvez connecter aux automates programmables. Photos ci-dessous, l'automate programmable MODULABLE 20 équipé de 20 entrées/sorties et MODULABLE 32 équipé de 32 entrées/sorties : Les plans de fabrication des PCB (pour "Printed Circuit Board", ou circuit imprimé) de mes cartes électroniques sont disponibles dans les sections "Fabrications et diverses réalisations" et "Téléchargements" en page d'accueil de mon site Web. Historique du projet MODULE :
Le projet MODULE et les circuits électroniques qui y sont associé a débuté il y a quelques années, et aura demandé beaucoup de travail pour aboutir au produit actuel.
Personnellement je me suis toujours intéressé à l'électricité d'un point de vue physique, mais l'électronique (qui est la mise en pratique de la physique de l'électron) m'apparaissait comme obscure et difficile à appréhender. J'ai donc décidé d'apprendre l'électronique en autodidacte avec la meilleure volonté, parce que c'était un domaine que je ne connaissais (sans même encore parler de maîtriser ou de pratiquer) absolument pas. Sans aucune formation dans le domaine, j'ai donc progressé en lisant pendant des années les fiches techniques des composants électroniques, des articles sur internet (dans lesquels il convient souvent de trier et de recouper l'information), mais aussi et surtout à force de pratique et d'expériences personnelles (ce qui finalement peut être appelé le bricolage). La philosophie du programme MODULE :
L'objectif de MODULE est de trouver le point de performance le plus élevé pour chaque composant électronique mis en œuvre. Ceci est réalisé en étudiant très finement les fiches techniques des composants (registres, paramètres, fréquences de fonctionnement, etc...), puis en effectuant des bancs d'essai successifs jusqu'à l'obtention des meilleurs résultats, tout en restant complètement valide eu égard les tolérances constructeur et la portabilité du code écrit en langage C++.
De surcroît, MODULE n'est pas programmé en surcouche d'une autre bibliothèque comme l'est la plupart des autres plates-formes de développement pour microcontrôleurs. Le code source C++ de MODULE, minimaliste de fait, est dédié et optimisé pour chaque microcontrôleur programmé, soit l'ATmega48P, l'ATmega88P, l'ATmega168P, l'ATmega328P, l'ATmega164P, l'ATmega324P, l'ATmega644P, ou l'ATmega1284P afin d'obtenir le meilleur compromis en matière de rapidité et d'espace mémoire. MODULE est une bonne alternative à d'autres plates-formes de développement pour programmer plus efficacement l'ATmega48P, l'ATmega88P, l'ATmega168P, l'ATmega328P, l'ATmega164P, l'ATmega324P, l'ATmega644P, ou l'ATmega1284P. Le programme MODULE est une création singulière unique (car non plagiée), dans le seul but de la compréhension, de l'optimisation, et du partage d'une modeste expression créative personnelle libre de droit d'auteur et à sources ouvertes et modifiables. Tous mes programmes sont écrits avec un simple éditeur de texte (gedit) pourvu uniquement de la coloration syntaxique (nul besoin d'autre chose). Le programme MODULE fonctionne en totale autonomie et ne requiert pas de ressources annexes externes. En effet, même aucune bibliothèque couramment admise comme indispensable (par la communauté des programmeurs) faisant partie du standard du langage C++ n'a été utilisée pour programmer MODULE, comme par exemple stdlib, stdio, ou encore math, ceci dans un objectif pédagogique de compréhension du fonctionnement intime matériel des circuits intégrés. Ne pas être lié à d'autres programmes permet à MODULE d'être autonome et indépendant, en outre de ne pas subir les aléas, évolutions, bogues, ou encore obsolescences de fichiers concurrents. MODULE qui a débuté avec l'ATmega328P (ce fut le point de départ), c'est aussi redonner tout l'intérêt pour ce petit microcontrôleur 8 bits de plus en plus délaissé au profit de microcontrôleurs 32 bits aux fréquences de fonctionnement plus élevées du fait que les bibliothèques concurrentes demandent plus de cycles pour faire les mêmes opérations que le programme MODULE. La normalisation de la structure logique et syntaxique du programme MODULE :
MODULE a été programmé avec rigueur et normalisation du code source (comme tous les programmes proposés en exemple).
Une ligne de conduite concernant la logique, la structure, la syntaxe, le nommage des variables, des fonctions et des classes, ou même simplement l'aspect visuel (indentation, espaces, etc...), a été respectée afin d'obtenir le code source le plus lisible, fonctionnel et propre possible. Ceci n'est pas plus une réponse à tout ce que je peux constater dans la communauté des programmeurs actuellement, mais plus une volonté personnelle de bonnes pratiques en termes d'écriture des programmes. Simplicité de programmation avec MODULE :
En interne, le programme MODULE s'occupe de réaliser les tâches les plus laborieuses, ardues et complexes que requiert la programmation brute d'un microcontrôleur et des circuits intégrés périphériques. Ceci permet au développeur de réaliser des projets élaborés en un minimum de lignes de programmation, sans pour autant pâtir sur les performances ou brider le nombre de possibilités.
MODULE se veut accessible aux débutants, tout en permettant la réalisation d'applications professionnelles. Que peut-on faire avec MODULE ?
MODULE est modulaire (ce qui a donné le nom au projet), il n'a en soit pas de limite (logicielle ou matérielle), la seule est notre imagination. Sachez qu'à l'époque de la conquête spatiale, des ingénieurs et techniciens ont envoyés des fusées dans l'espace avec bien moins comme calculateur qu'un ATmega328P !
Avec le programme MODULE vous pouvez faire fonctionner des accéléromètres, gyroscopes, magnétomètres, baromètres, thermomètres, hygromètres, et même des caméras thermiques. Pour des applications robotiques et modélisme vous pouvez générer des signaux PWM et donc entre autres faire fonctionner des servo-moteurs et des contrôleurs de moteurs sans charbons, lire des signaux PWM permettant par exemple de récupérer les différentes voies d'un récepteur de modélisme, créer une interface entre l'utilisateur et l'automate programmable via des boutons, des potentiomètres, des afficheurs, et des buzzers. Il est possible de temporiser les actions et les événements à effectuer, de réaliser des calculs et diverses courbes et fonctions mathématiques, de générer de l'aléatoire à partir de bruit analogique, de filtrer des valeurs en temps réel, de créer des états multiples avec hystérésis, de gérer la veille du microcontrôleur, de communiquer en MIDI avec des instruments de musique standards du commerce, d'effectuer des communications type réseaux filaires et sans fil 2.4GHz entre plusieurs automates programmables, de sauvegarder des données en mémoire EEPROM une fois le montage coupé de l'alimentation électrique, et bien d'autres choses encore... Libre à vous de programmer d'autres fonctions dans MODULE si vous le souhaitez ! Photo ci-dessous, un exemple de projet réalisé avec le programme MODULE et l'automate programmable MODULABLE 32, équipé d'un ATmega1284P pour la partie radiocommande, et ATmega644P pour la partie quadri-hélicoptère (cependant ce prototype était initialement équipé d'un ATmega328P) : La partie matérielle associée au programme MODULE :
Les cartes électroniques, soit la partie matérielle proposée en téléchargement (dans les sections "Fabrications et diverses réalisations" et "Téléchargements" en page d'accueil de mon site Web), sont réalisées dans des contraintes et des critères normatifs stricts imposés notamment par les fiches techniques officielles des composants électroniques, et également de mon expérience personnelle concernant leurs implantations (ergonomie de positionnement et de brasure, etc...).
Les dessins de mes circuits imprimés sont réalisés sur papier, puis numériquement à l'aide du logiciel KiCad avec le système d'exploitation Linux, ceci via ma propre bibliothèque de composants dans des vues schématiques et PCB. Les plans de fabrication de mes circuits imprimés sont au format de fichiers Gerber (.gbl, .gbs, .gbo, .gbr, .gtl, .gts, .gto, .drl), car ce sont des fichiers normalisés utilisés par toute l'industrie de l'électronique pour la transmission de plans de production entre les différentes manufactures. Le format de fichiers Gerber est le standard directement pris en charge par toutes les usines de fabrication. Le choix des composants traversants ou montés en surface :
Dans mes circuits électroniques j'ai souhaité l'implantation de composants traversants plutôt que montés en surface (cms) :
Ceci est un choix arbitraire dans le but de privilégier la facilité de montage des éléments par des débutants notamment dans les "Fab lab" (pour "Fabrication laboratory", ou laboratoire de fabrication). En effet les composants étant plus volumineux, leurs brasure sur les PCB est moins minutieuse et peut être effectuée avec du matériel peu onéreux. Aussi, les composants se trouvent plus facilement dans la petite boutique locale d'électronique, ou via un recyclage des composants provenant d'appareils du commerce destinés à la casse (entre autres victimes de l'obsolescence programmée). Le démontage pour réparation est également plus aisé, ainsi que d'éventuels tests in-situ avec un multimètre. Ensuite, certains composants traversants ne trouvent logiquement pas d'équivalents montés en surface (certains condensateurs par exemple de par leurs capacité), et finalement la place prise sur le PCB est toute relative. En outre, ceci ne doit en aucun cas être un frein à votre créativité et à vos projets !