Bonjour
Dans cet article, je vais expliquer ce qu'est mon dernier projet MODULE℠, et vous montrer des exemples pour que vous puissiez tout comme moi réaliser des projets en électronique facilement.
J'ai programmé en html un blog qui regroupe ce concept global et qui sera agrémenté au fil du temps de nouveaux exemples et explications:
Comprendre ce qu'est MODULE℠###### Lien vers le Blog perso supprimé (charte)
MODULE℠ est une suite de classes écrites en C++ pur (sans bibliothèque additionnelle) dédié à la programmation du microcontrôleur ATmega328P, ce dernier monté ici sur l'une de mes cartes modulaires:
dsc02499.jpg
Le plan de mise en production de cette carte est disponible en téléchargement dans cet article ou sur mon blog.MODULE℠ est également une suite de cartes électroniques partie commande avec microcontrôleur, affichage avec afficheurs à dels (digits et matrice), et électronique de puissance.Dans les pages suivantes, j'appelle cette carte l'automate, ne soyez donc pas surpris si vous rencontrez ce terme.
Historique du projet MODULE℠:
Le projet MODULE℠ à débuté en Août 2014 et aura demandé jours pour jours 2 ans de travail.
Depuis longtemps je me suis intéressé à l'électricité, mais l'électronique (embarquée) avant ce projet m'est toujours apparu comme obscure et difficile à appréhender. En Août 2014, j'ai donc décidé d'apprendre avec la meilleure volonté l'électronique, parce que c'était un domaine que je ne connaissais (sans même encore parler de maîtriser ou de pratiquer) absolument pas.
Sans formation dans le domaine, il aura fallut acharnement pour ainsi progresser (par les échecs, les erreurs, mais aussi les réussites) en lisant pendant des mois 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.
La philosophie de MODULE℠:
MODULE℠ n'est pas programmé en surcouche d'une autre bibliothèque comme l'est la plupart des bibliothèques dont fait partie Arduino™, de fait, le code source C++ est dédié et optimisé pour le microcontrôleur ATmega328P afin d'obtenir le meilleur compromis en C++ en terme de rapidité et d'espace mémoire.
L'idée de MODULE℠ veut qu'aucun code C++ n'ait été recopié d'un livre ou d'internet, tout est une création personnelle unique, ceci dans le seul but de comprendre le fonctionnement des choses, d'optimiser, et de partager une création personnelle tout simplement.MODULE℠ est une bonne alternative à Arduino™ pour programmer plus efficacement l'ATmega328P.
Aucune bibliothèque couramment admise comme faisant partie du standard du langage C++ n'a été utilisée pour programmer MODULE℠, comme par exemple stdlib.h, stdio.h, ou encore math.h, toujours dans un soucis de compréhension du fonctionnement. Cela m'a permis de par exemple faire un peu de mathématiques (sans math.h) et de construire des fonctions comme sinus, cosinus, ou encore arc tangente que l'on retrouve souvent dans les calculatrices modernes.
MODULE℠ c'est aussi redonner tout l'intérêt pour ce petit microcontrôleur 8 bits qu'est l'ATmega328P, de plus en plus délaissé au profit de microcontrôleurs 32 bits au 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 MODULE℠.
Que peut-on faire avec MODULE℠?
MODULE℠ est comme son non l'indique modulaire, il n'a en soit pas de limite, 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 MODULE℠ vous pouvez faire fonctionner des gyroscopes, magnétomètres, baromètres, émetteurs/récepteurs 2.4Ghz, faire fonctionner des servos-moteurs et des esc, lire des pwm, créer une interface entre l'utilisateur et l'automate via des boutons, des potentiomètres, des afficheurs, des buzzers et divers haut-parleurs. Il est possible de gérer le temps, l'aléatoire, de filtrer des valeurs, de gérer la veille de l'automate, la communication entre plusieurs microcontrôleurs, ou encore de sauvegarder des valeurs dans la mémoire de l'ATmega328P.
Photo ci-dessous, un projet de quadri-hélicoptère réalisé avec MODULE℠:Libre à vous de programmer d'autres fonctions dans MODULE℠ si vous le souhaitez !
dsc01905.jpg
Comment installer MODULE℠
Installer MODULE℠ est un grand mot, en réalité MODULE℠ ne demande qu'à être téléchargé et décompressé dans le répertoire de votre choix:
Dans l'archive module.zip vous trouverez 2 principaux répertoires:###### lien supprimé: préférer les pièces jointes
- cpp, contenant la programmation C++ de MODULE℠.
- pcb, contenant les plans des cartes électroniques de MODULE℠.
Le répertoire module du dossier cpp contient toutes les classes du programme MODULE℠, ce qui comprend les fichiers d'en-tête (.h) que vous aurez à inclure dans vos projets si besoin, et les fichiers C++ (.cpp) dans lesquels on trouve les fonctions.
Le répertoire linux du dossier cpp contient les routines linux (bash .sh) pour compiler et envoyer votre programme dans l'automate (l'ATmega328P) via un programmateur. Il contient également un fichier main.cpp, c'est le plus important car c'est dans ce fichier que vous écrirez votre programme en langage C++.Vous pouvez modifier le contenu de ce répertoire si vous souhaitez modifier et améliorer MODULE℠ !
Même chose pour le répertoire windows du dossier cpp, à ceci prêt qu'il contient cette fois-ci les routines windows (bash .bat).
En fin, vous trouverez dans le répertoire pcb à la racine de l'archive les différents plans des cartes électroniques prêtes pour une mise en production par vos soins, ou par une usine de fabrication.
Comment programmer avec MODULE℠
Pour programmer avec MODULE℠, vous avez à disposition 25 classes organisées par fonctions. Toutes ses classes sont à la fois complètement indépendantes les unes des autres (au niveau du code source C++) et peuvent aussi fonctionner toutes ensembles sans problèmes d'interactions:
Gestion des entrées/sorties:
Gestion du temps:GpioRead.h
GpioWrite.h
AnalogRead.h
InterruptRead.h
PwmRead.h
PwmWrite.h
SoundWrite.h
Mathématiques, filtres, cycle d'hystérésis, génération de nombres aléatoires:Timer.h
Delay.h
Afficheurs à leds, gyroscopes, magnétomètres, baromètres, communication sans fil:Math.h
Iteration.h
Average.h
Filter.h
Hysteresis.h
Random.h
Communication filaire entre les différents automates:Max7219.h
Mpu6050.h
Bno055.h
Hmc5883L.h
Bmp180.h
Nrf24L01P.h
Sauvegarde de données dans la mémoire interne, gestion de la veille du microcontrôleur, outils de diagnostique:Network.h
Pour comprendre comment utiliser les classes de MODULE℠:Memory.h
Power.h
Tool.h
- Vous pouvez lire les exemples sur le blog (qui s'étofferont au fil du temps).
- Vous pouvez copier le code source des mes projets.
- Ou bien il est possible de regarder dans le répertoire module dans l'archive de MODULE℠ (téléchargeable dans cet article ou sur mon blog) le contenu des fichiers d'en-tête .h des classes correspondantes, ce qui vous donnera une bonne idée de comment utiliser les fonctions et variables si vous êtes déjà bien familiarisé à la programmation C++.
-----