MODULE : Un système embarqué d'automates programmables


Partie logicielle/matérielle (licence : http://sylvainmahe.site/license.html)

Dsc08134.jpg

Contributeur·ice·s

Statut du projet

Fonctionnel

Statut de la publication

Publié

License

autre licence (préciser dans la description)

Inspiration

Fichiers source

Module.zip

Machines

Matériaux




Bonjour à toute l'association PING.

Je souhaite partager avec vous mon travail de bricoleur orienté mécatronique, notamment le projet "MODULE" que je réalise en amateur depuis 2014, en effet je pense que vous pouvez en trouver une utilité dans vos projets.


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, je vous propose les plans de fabrication de quelques 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 modulables (que vous pouvez connecter aux automates programmables) aux multiples fonctionnalités. Ci-dessous, l'automate programmable MODULABLE 20 équipé de 20 entrées/sorties, et l'automate programmable MODULABLE 32 équipé de 32 entrées/sorties :

Dsc08340.jpg
Dsc07989.jpg

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.

Je me suis toujours intéressé à l'électricité, mais l'électronique (avant ce projet) 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).

Dsc02345.jpg
Dsc02821.jpg

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, toujours 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 que je vous propose en téléchargement ou 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 R/C, 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) :

Dsc08421.jpg

L'électronique modulable associée au programme MODULE : Toute l'électronique (la partie matérielle) que je vous propose en téléchargement (dans les sections "Fabrications et diverses réalisations" et "Téléchargements" en page d'accueil) est réalisée avec les mêmes contraintes et critères de normalisation que la programmation (la partie logicielle), c'est-à-dire avec la plus grande rigueur et dans le soucis de prise en compte de ce qui pourrait être considéré comme des détails.

Je réalise les plans de mes circuits imprimés à l'aide du logiciel KiCad avec le système d'exploitation Linux, les fichiers originaux de mes projets KiCad ne sont pas disponibles en téléchargement (disponibles cependant sur demande), mais sachez que mes dessins sont réalisés à l'aide de ma propre bibliothèque de composants en vue schématique et PCB, bibliothèque construite de façon normée à partir des fiches techniques officielles des composants et également de mon expérience personnelle concernant leurs implantations (ergonomie de positionnement et de brasure, etc...).

Le reste de la conception n'est pas laissée au hasard (diamètres des perçages pour le passage des broches des composants, calculs des dimensions des pistes en fonction du courant, prise en compte des parasites, plans de masse, distances entre les composants, distances au bord des PCB, normalisation de la sérigraphie et du nommage, épaisseur des lettres, des tracés, positions et orientations des mots, etc...).

Dsc07971.jpg
Dsc07980.jpg

Les plans de fabrication de mes circuits imprimés sont tous disponibles 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 !


Ressources : Toutes les informations pour comprendre le projet MODULE :
Comprendre ce qu'est MODULE
Comment installer le programme MODULE
Comment programmer avec MODULE
Les outils complémentaires du projet MODULE

Exemples simples pour comprendre et débuter rapidement la programmation avec MODULE :
La documentation du programme MODULE