Ressources pour les projets étudiants
Généralités
L'idée de cette page est de centraliser un certain nombre de ressources, ainsi que de donner quelques conseils pour aider les étudiants qui réalisent des projets d'ingéniérie dans le cadre de leurs études (c'est orienté Fablab de l'Ense³ - plateforme Roboticube - mais utilisable dans d'autres contextes).
Risques
Électrique
La norme UTE C 18-510 définie les limites des domaines de tensions électriques comme suit :
- Très Basse Tension (TBT) : < 120VDC / < 50VAC
- Basse Tension (BT) : 120VDC - 1500VDC / 50VAC - 1000VAC
- Basse Tension A (BTA) : 120VDC - 750VDC / 50VAC - 500VAC
- Basse Tension B (BTB) : 750VDC - 1500VDC / 500VAC - 1000VAC
- Haute Tension (HT) : > 1500VDC / > 1000VAC
- Haute Tension A (HTA) : 1500VDC - 75kVDC / 1000VAC - 50kVAC
- Haute Tension B (HTB) : > 75kVDC / > 50kVAC
Très Basse Tension
La TBT est divisée en plusieurs catégories, suivant la façon dont elle est générée :
- Très Basse tension Fonctionnelle (TBTF)
- Très Basse tension de Sécurité (TBTS)
- Très Basse tension de Protection (TBTP)
Du point de vue de la sécurité :
- en TBTF, toutes les règles de la BT doivent être appliquées (idem en cas d'incertitude sur la nature ou la provenance)
- en TBTS et en TBTP, aucune précaution n’est à prendre pour les risques d'électrisation
Les alimentations TBT utilisées pour les projets doivent donc être de type TBTS.
Dans tous les cas, il convient d'être vigilent sur les risques de court-circuit, pouvant provoquer des brûlures, et potentiellement déclencher des incendies.
Basse Tension
L'utilisation de la BT requière des précautions particulières :
- il est absolument interdit de travailler sur des projets comportant des pièces nues sous tension ;
- une double isolation est obligatoire en tout point d'un circuit comportant de la basse tension ;
- tout projet travaillant sur la Basse Tension doit faire l'objet d'une analyse spéciale en coordination avec un Assistant de Prévention (AP).
Haute Tension
À faire vérifier !!!'
La seule HT utilisable dans le cadre de projets est celle issue de la BT ou TBT. C'est le cas par exemple des raquettes pour tuer les insectes, ou des clôtures pour bétail.
Ces systèmes sont généralement conçus autour de la décharge d'un condensateur, celui-ci libérant son énergie très rapidement. Pour vérifier si le dispositif est sans danger, il faut faire un calcul de l'énergie qu'il est capable de délivrer. TODO TODO TODO
Cas des batteries
Les batteries et accumulateurs font généralement partie du domaine TBT. Mais attention, ici, le risque n'est cependant pas nul.
En effet, une batterie de type Li-ion (ou LiPo) a une très faible résistance interne, et peut donc délivrer un courant très important en cas de court-circuit. Non seulement cela peut engendrer des brûlures, mais la batterie a de grandes chances de prendre feu !
Une batterie au plomb peut également être très dangereuse en cas de court-circuit.
Il faut donc impérativement utiliser un fusible en sortie immédiate des batteries.
Des accus de type Ni-mH sont beaucoup moins dangereux, du fait de leur résistance interne plus élevée.
Cas des panneaux photovoltaïques
Là, le risque réside dans le fait qu'un PV ne peut jamais être éteint : dès qu'il reçoit de la lumière, il génère un courant.
Il convient donc d'utiliser des connecteurs pour isoler les PV du circuit, lorsqu'on doit travailler sur celui-ci.
Mécanique
Chimique
Développement sur microcontrôleur
Présentation des principales plateformes (hardware et software) de développement sur microcontrôleurs.
Micropython
Micropython est une implémentation de Python3 adaptée aux microcontrôleurs.
Il a été écrit à l'origine par l'ingénieur australien Damien George, à l'occasion d'une campagne de financement participatif sur Kickstarter, en 2013. Cette campagne proposait une carte, la Pyboard, basée sur un microcontrôleur STM32F405 (ARM Cortex-M) de STMicroelectronics, et embarquant un interpréteur Micropython.
Au même titre qu'Arduino, Micropython supporte maintenant beaucoup de cartes, sous réserve que celles-ci disposent d'assez de RAM et de Flash.
Le langage Python étant interprété, il ne peut bien sûr pas égaler un code écrit et compilé en C++, mais la puissance des cartes modernes lui permet d'atteindre des vitesses d'exécution au moins aussi bonnes qu'un code en C++ tournant sur une carte Arduino UNO. Le langage Python étant plus simple à appréhender, et offrant plus de garde-fous que le C++, il permet un développement plus rapide. Un autre avantage est que tout le code réside sur le système de fichiers de la carte Micropython, ce qui facilite la maintenance du code, puisqu'il n'y a pas besoin de retrouver tout l'environnement de développement nécessaire pour compiler du code C++ pour faire des modifications (qui n'a pas pesté contre le changement d'API d'une bibliothèque ?). Ce point est particulièrement important pour les projets reconduits d'une année sur l'autre.
Arduino
Le terme Arduino regroupe plusieurs concepts :
- le nom d'une société ;
- des cartes électroniques ;
- un langage de programmation et des bibliothèques ;
- un logiciel (IDE) pour développer et communiquer avec les cartes.
C'est sans conteste Arduino qui a permis la démocratisation du développement sur microcontrôleurs, et le terme est presque devenu générique dans le cadre des projets DIY. La carte Mega 2560 a par exemple été le cerveau des imprimantes 3D pendant des années (et a contribué grandement au développement de cette technologie dans le cercle des makers).
Les cartes Arduino les plus connues, comme la UNO, la Nano, et la Mega sont basées sur des puces ATmega de la société Atmel (aujourd'hui rachetée par Microchip), dont les CPU utilisent un bus de 8 bits. Arduino propose maintenant des cartes utilisant d'autres puces, plus puissantes, mais si ces cartes sont généralement de très bonne facture, elles sont malheureusement assez chères par rapport à la concurrence.
Côté développement, l'environnement Arduino (IDE + bibliothèques) est devenu si populaire qu'il permet non seulement de programmer les cartes Arduino, mais également les cartes des autres constructeurs (sous réserve que ceux-ci fournissent les bibliothèques et compilateurs pour Arduino) ! Du coup, sauf utilisation de ressources spécifiques, il est relativement facile de faire tourner le même code sur plusieurs cartes, ou, du moins, de l'adapter avec un minimum d'efforts.
Le langage utilisé par Arduino est le C++.
PlatformIO / Visual Studio Code
PlatformIO est une alternative pour développer sur micro-contrôleur, toujours en C++, avec ou sans les bibliothèques Arduino. PlatformIO est prévu pour s'intégrer très facilement dans l'IDE de Microsoft, Visual Studio Code, mais peut s'utiliser également en ligne de commande, pilotable par Makefile.
BASIC
BASIC, ou Beginner's All-purpose Symbolic Instruction Code (Code d'Instruction Symbolique Multiusage du Débutant), est un langage créé dans les années 1960 pour combler le vide entre le développement en Code Machine ou Langage Assembleur (très bas niveau, nécessitant une connaissance approfondie de la machine), et le COBOL ou le FORTRAN, également complexes. C'est un langage interprété, très facile d'accès, qui a popularisé l'utilisation des micro-ordinateurs dans les années 80.
Un portage de MMBasic, lui même dérivé du MBASIC de Microsoft, a été fait pour les Raspberry Pi Pico 1 & 2. Dans l'esprit Arduino, il intègre tout ce qu'il faut pour accéder aux entrées/sorties, piloter des périphériques comme des écrans, générer du son, ou accéder aux GPIO et bus (I²C, SPI...) du RPi Pico. En outre, il dispose d'une excellente documentation. Cerise sur le gâteau, il intègre même un éditeur de code avec coloration syntaxique ; un simple émulateur de terminal type VT100 comme minicom (Linux) ou Tera Term (Windows) permet de développer, enregistrer, et exécuter des programmes. Il existe même une version permettant de connecter un écran VGA (et un clavier), ainsi qu'une version avec accès réseau !
Là encore, pour des projets simples, cela peut être une solution intéressante. Tout comme Micropython, le code source réside sur la carte elle-même, facilitant ainsi la maintenance et la poursuite des projets d'une année sur l'autre. Même 10 ans après, il sera toujours possible de modifier le code si besoin ;o)
Cartes à microcontrôleurs
Quelques cartes les plus populaires, couvrant une majorité de besoins. Une liste plus complète de cartes est donnée en annexe.
Raspberry Pi Pico
Contrairement aux cartes Raspberry Pi classiques, la Pico (et sa petite soeur Pico 2) n'utilise pas un OS (linux), mais se programme directement, comme une carte Arduino.
Elle est équipé du microcontrôleur RP2040, conçu par la fondation Rapsberry Pi, qui intègre un CPU Cortex M0+ épaulé par 2 PIO (Programmable Input Output). Ces PIO permettent d'accéder aux GPIO de manière ultra rapide, via un jeu d'instructions assembleur très simple d'emploi. La puissance de ces PIO ont fait de la RPi Pico une des cartes les plus populaires du moment, pour des applications habituellement réservées à des cartes beaucoup plus complexes (analyseur logique, sortie HDMI...).
En plus de l'environnement Arduino (et du SDK C++ de Raspberry Pi), elle supporte le développement en Micropython. Il existe même un portage du Basic Microsoft, PicoMite ;o)
À noter qu'il existe également la version W, intégrant une puce wifi (CYW43439).
Cerise sur la gâteau, la RPi Pico est vendue au prix imbattable de 4€50 !
Arduino UNO et Nano
Pour des petits projets, ces cartes restent très intéressantes, du fait de leur simplicité et de leur popularité. La UNO dispose en effet de nombreux shields, ces cartes enfichables ajoutant des fonctionnalités (wifi, drivers moteurs...), ou simplement facilitant le câblage. Quant à la Nano, très similaire à la UNO d'un point de vue fonctionalités, elle est par contre beaucoup plus petite, et c'est elle qui est généralement enfichée sur la carte principale.
Wemos D1 Mini / S2 Mini
Développés par la société Espressif, les microcontrôleurs ESP8266 et ESP32 ont la particularité d'intégrer une liaison Wifi, et même bluetooth pour l'ESP32.
Ces cartes sont donc particulièrement intéressantes pour des applications nécessitant une connexion à distance.
Les cartes à base d'ESP32 supportent également Micropython.
Robotique
Électronique
Matériel de labo
Prototypage
Breadboard
L'usage des breadboards doit se limiter à des tests simples, unitaires. Dès lors qu'un montage prend de l'ampleur, sans précaution, de nombreux problèmes peuvent apparaître, en particulier dans le domaine analogique.
Les grands fils de prototypage sont à éviter autant que possible : les connecteurs Dupont sont souvent de mauvaise qualité, et la longueur des fils peut engendrer des problèmes électriques.
Il vaut mieux privilégier les jumpers : il permettent des montages plus propres, sans risque qu'un fil se débranche et soit remis au mauvais endroit, conduisant à des courts-circuits (du vécu !).
Il existe des modules permettant d'alimenter les breadboard via les rails prévus à cet effet, en haut et/ou en bas, en 5V et/ou 3,3V.
Ne pas utiliser un montage sur breadboard pour tester un système complet in situ : il y a toutes les chances qu'un fil se débranche, empêchant le bon fonctionnement, voir créant un court-circuit → privilégier l'utilisation de perfboard
À noter qu'une machine pour couper/plier des jumpers de manière automatique est en cours de réalisation par une équipe d'étudiants de GI !
Perfboard
Les Perfboards sont en gros la version soudée des breadboard, et permettent de réaliser des montages plus durables. Elles sont une bonne étapes avant la réalisation éventuelle d'un PCB, mais peuvent tout à fait s'utiliser dans un montage final si le câblage est réalisé proprement. Elles sont par exemple très pratiques pour réaliser des rails d'alimentation, pour distribuer +5V, masse... aux divers modules.
Il est même possible d'utiliser Kicad pour réaliser le schéma sur perfboard : https://forum.arduino.cc/t/perfboard-circuit-design-with-kicad/1283999
Utilisation de shields et breakouts
Réalisation de PCB
Un PCB (Printed Circuit Board) permet de réaliser une carte électronique de façon fiable, puisque tous les composants sont sensés être soudés, les connexions réalisées vias de vrais connecteurs, etc...
Plutôt que d'attendre la fin du projet pour en réaliser un, il est conseillé d'en faire plusieurs, et ce dès le début, même si toutes les fonctionnalités ne sont pas implémentées. Cela a plusieurs avantages :
- se familiariser très tôt avec un logiciel de CAO électronique dans le cas d'une première utilisation ;
- se rendre compte des problèmes liés à la réalisation de PCB (pastilles trop petites, soudures inaccessibles...) ;
- vérifier que le design (tout ou partie) fonctionne sous cette forme.
Conseils pour un schéma propre
Tirage manuel
Le Fablab de l'ENSE³ peut réaliser des PCB, via une technique manuelle. Les contraintes (design rules) de réalisation sont les suivantes :
- largeur de pistes :
- GND : 80mils
- VCC : 50mils
- autres : 30 mils (mini 12mils)
- isolation : 20mils (mini 13mils)
- diamètre de perçage mini : 0,8mm (à vérifier)
Dans la mesure du possible :
- utiliser une taille de pastille la plus grande possible, pour éviter de les arracher au perçage, et pour faciliter le soudage ;
- éviter de router des pistes entre les pattes des circuits intégrés ;
- router en premier les pistes les plus courtes ;
- privilégier les pistes horizontales sur une face, et les verticales sur l'autre ;
- réaliser les marquages avec les couches cuivre -> respecter la largeur de piste mini pour le texte (cf ci-dessus).
- pour les double face, favoriser le passage d'une face à l'autre par les pattes des composants traversants pour limiter les vias (non métallisées, donc nécessitant d'être câblées manuellement). Attention cependant à certains composants (condensateurs, potentiomètres, connecteurs...) qui ne sont accessibles que d'un côté, et ne doivent donc être routés que sur la face soudure !
Si le PCB ne comporte que peu de pistes sur la face composants, il n'est pas utile de faire un double face ; quelques straps sur la face composants suffiront.
Qu'il soit simple ou double face, il est important d'identifier l'orientation de chaque face, afin d'éviter les problèmes de tirage miroir. L'identification doit se faire en utilisant du texte sur le layer des pistes de la face considérée, de telle sorte qu'il soit lisible lorsqu'on regarde la face une fois le PCB fini ! Cela veut donc dire écrire en miroir sur la face soudure.
Câblage
De nombreux projets souffrent d'un câblage bâclé, conduisant à de nombreux problèmes : montage non fonctionnel, détérioration du matériel, et perte de temps non négligeable.
Le câblage doit être pris en compte dès le début d'un projet. En particulier, il convient de bien réfléchir à la façon dont les différents modules vont être alimentés : il est souvent intéressant de réaliser des rails d'alimentations, en particulier pour les masses, généralement communes.
Voici quelques conseils de base :
- utiliser des fils de différentes couleurs :
- noir (ou bleu) pour les masses ;
- rouge pour les alimentations (attention à bien les identifier si plusieurs tensions sont utilisées !) ;
- autres couleurs pour les signaux.
- utiliser du fil multi brins ; le mono brin disponible au Fablab ne doit servir qu'à réaliser des jumpers provisoires pour breadboard, car il est très cassant et n'est pas fait pour être manipulé ;
- sertir des férules au bout des fils devant être connecter dans des borniers à vis ;
- sertir des connecteurs Dupont pour réaliser des prises ;
- regrouper les fils en toron¹ ;
- identifier les torons ;
- maintenir les torons à l'aide de colliers.
Lorsqu'un fil se débranche ou casse, bien réfléchir avant de le remettre en place, afin d'éviter les courts-circuit !
¹ il est très facile de réaliser des torons en torsadant plusieurs fils à l'aide d'une visseuse. Cette opération est plus simple à réaliser à deux, si les fils sont un peu longs. Attention, la longueur totale sera réduite par rapport à la longueur des fils seuls, du fait de la torsade.
Motorisation
Moteurs pas à pas
Moteurs brushless
Ces moteurs, couramment utilisés sur des drones ou des voitures, nécessitent un ESC (Electrical Speed Controller) pour les piloter. Le problème c'est que ces contrôleurs fonctionnent généralement en boucle ouverte, et ne sont donc pas du tout adaptés pour des applications nécessitant des démarrages doux avec fort couple, comme la motorisation de chariot ou d'Hoverboard. Dans ce cas, il faut impérativement utiliser un contrôleur travaillant en boucle fermée, via les capteurs à effet hall ou en quadrature, généralement disponibles dans les moteurs-roues.
Moteurs à balais
Énergie
Alimentations à découpage
- Vidéos très claires sur les mosfets, les pertes, etc...
Utilisation de batteries
Panneaux photovoltaïques & Éoliennes
USB-C
- Alimentation versatile via un chargeur USB-C - protocole PPS
Mécanique
Impression 3D
Découpe laser
Découpe jet d'eau
Thermique
Annexes
Rercherche documentaire
Documentations, Tutos, How-To
Général
- Analog Circuits - circuits analogiques de base, par Texas Instruments
Logiciels
- Onshape - TODO
- Thonny - TODO
- Arduino IDE - TODO
- Kicad - TODO
Programmation
- Critical Program Reading (1975) - 16mm Film - une vidéo datant de 1975, mais toujours d'actualité. À voir absolument !
- C++ Style Guide for Arduino projects
- Programmation efficace Arduino - techniques de programmation non bloquante (machines à états)
- The Finite State Machine
- Codeurs incrémentaux (à sorties en quadrature)
- Raspberry Pi Pico Tips and Tricks - couvre beaucoup de cas courants
- Cours et projets sur RP2040 - une mine d'infos !
- Web Serial Plotter
Batteries
Moteurs et contrôleurs DC
Moteurs et contrôleurs brushless
- How Brushless DC Motor Works? BLDC and ESC Explained - part 1
- Arduino Brushless Motor Control Tutorial | ESC | BLDC - part 2
- How to power and control brushless DC motors
- Using closed loop control in BLDC systems
Moteurs et drivers pas à pas
Servo moteurs
Affichages (LCD, Oled...)
- LCD tutorial - alphanumerique
- Arduino Touch Screen Tutorial | TFT LCD
Accéléromètres
- Arduino and MPU6050 Accelerometer and Gyroscope Tutorial
- How To Track Orientation with Arduino and ADXL345 Accelerometer
Encodeurs rotatifs
- How Rotary Encoder Works and How To Use It with Arduino
- Incremental encoders - Autre documentation très complète sur les encodeurs et leur utilisation en Micropython
Générateurs
- Turn pedals into power: A practical guide to human-powered energy
- Hydroelectric Generator Options, Testing A Real Hydro Generator - passionnante série de vidéos sur la mise au point d'un générateur sur une conduite forcée
Robotique
- Open Robotic Platform - système modulaire open source pour construction de robots
- Turn a Time-of-Flight sensor into a 3D scanner
I.A.
- ChatGPT - TODO
- Claude.ai - TODO
- Bonnes pratiques - TODO
Software
Outils de développement
- Spyder IDE - IDE pour développer en Python
- Thonny - IDE pour développer en Micropython
- IDE Arduino
Bibliothèques pour microcontrôleurs
- Arduino :
- Simple RPC - permet d'exporter des fonctions Arduino en tant que RPC (Remote Procedure Call)
- SimpleFSM - implémentation minimaliste de FSM pour Arduino
- Automaton − framework très complet de FSM pour Arduino (permet d'avoir un code simple, modulaire, et très lisible)
- Shellminator - terminal interactif avec commandes personnalisées (tutoriel)
- Micropython :
- Encoders - divers modules Micropython pour lire les codeurs incrémentaux
- Arduino Simple RPC - module Python permettant d'appeler les fonction Arduino exportées avec la bibliothèque Simple RPC ci-dessus
- SmartStepper - pilotage de moteur pas à pas pour RPi Pico
- L298N Motor driver - module pour piloter un L298N
- Peter Hinch github repo - une importante collections de librairies et exemples de code
- Awseome Micropython - liens vers de nombreuses librairies
- Divers :
- BreadboardOS - un mini OS pour le RPi Pico, basé sur le noyau FreeRTOS
Hardware
Cartes à microcontrôleur
Par famille de CPU :
- RP2040
- Raspbery Pi Pico / W
- Arduino Nano RP2040 Connect
- Pimoroni Yukon - carte modulaire pour la robotique
- AVR ATMega
- ESP8266
- STM32
- SAMD
- nRF
Contrôleurs moteurs
- Solo Motor Controllers - contrôleurs pour moteurs brushless fonctionnant en boucle fermée
- ODRIVE - contrôleur pour moteurs brushless
Level shifters
- Voltage Divider vs MOSFET vs Chip — Best Option? - différentes solutions pour convertir les tensions entre systèmes 3,3V vs 5V
Makers
- How To Mechatronics - projets et documentations de qualité dans divers domaines. À découvrir absolument !
Boutiques
Divers
- Wago Creators - designs autour du matériel Wago