Slowmoframe 2.0
Cadre avec effet de mouvements ralentis
Cadre avec effet de mouvements ralentis
Slowmoframe 2.0|1. Physique & Biologie|2. Programmation|3. Électronique & Électricité |4. Conception 3D|5. Suivi de projet
Avez-vous déjà rêvé de ralentir le temps ? De voir les battements d'ailes d'un colibri ou l'explosion d'une bulle d'eau se dérouler sous vos yeux au ralenti, sans utiliser de caméra ?
C'est exactement le défi fou du projet SlowMoFrame !
Le SlowMoFrame est un objet technologique et artistique fascinant. À l'intérieur d'un cadre en bois épuré, un objet (une plume, une fleur, une sculpture fine) se met à osciller à une vitesse vertigineuse. Pourtant, lorsque vous le regardez, l'objet semble danser dans les airs avec une lenteur hypnotique et une douceur irréelle.
Derrière cette apparente magie ne se cache aucun sortilège, mais un chef-d'œuvre de synchronisation combinant la biologie de l'œil humain, la mécanique, l'électronique et la programmation informatique. En réalisant ce projet, vous allez devenir les maîtres du temps et de l'illusion !
Physique & Biologie : Avant de brancher le moindre fil, vous devez comprendre comment triche le cerveau humain. Vous explorerez les phénomènes de persistance rétinienne, d'effet stroboscopique et de résonance mécanique pour comprendre comment transformer des vibrations ultra-rapides en un ralenti poétique.
Programmation : Le cœur du système est un microcontrôleur (un automate programmable) que vous allez devoir coder de manière ultra-optimisée. Oubliez les pauses classiques ! Vous apprendrez à programmer en mode "non-bloquant" à l'aide du temps système pour gérer simultanément, au millième de seconde près, le rythme des flashs lumineux et la danse des aimants.
Électronique & Électricité : Faire bouger un objet à 80 Hz demande de la puissance, bien plus que ce que votre carte programmable peut fournir seule. Vous allez étudier la circulation du courant électrique et découvrir le rôle crucial de composants spécifiques (transistors, diodes de roue libre, électroaimants en opposition de phase) pour propulser votre système en toute sécurité.
Conception 3D : Un bon ingénieur prend soin des détails. Vous allez concevoir et modéliser sur ordinateur les supports sur-mesure de vos composants (potentiomètres, écran, fixations des aimants). Vos pièces seront ensuite imprimées en 3D pour s'intégrer parfaitement dans le cadre final.
Suivi de projet : Parce qu'un projet ne réussit jamais du premier coup, vous tiendrez un suivi précis de vos recherches, de vos erreurs (le meilleur moyen d'apprendre !) et de vos réussices. C'est votre journal de bord de l'innovation.
Quand on regarde cette fleur osciller au ralenti sous nos yeux, on a l'impression que les lois de la physique sont complètement détraquées. Pourtant, tout s'explique grâce à un trio de choc : vos yeux, de la mécanique et un timing parfait !
Saviez-vous que vos yeux sont un peu "lents" ? Quand votre œil voit une image, il la garde en mémoire dans la rétine pendant environ 60 millisecondes (un tout petit seizième de seconde), même si l'image a déjà disparu !
Dans notre boîte, le ruban LED flashe très vite, plus de 60 fois par seconde (60 Hz). C'est tellement rapide que votre cerveau n'a pas le temps de voir les moments de noir entre deux flashs. Pour lui, la lumière est allumée en continu. C’est exactement le même principe que le cinéma ou les vidéos sur vos smartphones : une suite d'images fixes qui défilent très vite pour créer une impression de mouvement fluide !
C'est ici que les mathématiques entrent en scène. Imaginons que notre fleur batte la mesure à une vitesse de 80 fois par seconde (Fréquence de l'aimant = 80 Hz).
Le mode "Statue" : Si on règle le ruban LED pour qu'il flashe exactement à 80 Hz lui aussi, la lumière va s'allumer à chaque fois que la fleur passe précisément au même endroit. Votre œil va recevoir 80 fois par seconde la même image. Résultat ? La fleur semble totalement immobile, figée dans le temps !
Le mode "Ralenti" : Maintenant, trichons un tout petit peu. Réglons la LED à 80,5 Hz. La lumière flashe un tout petit peu plus vite que le rythme de la fleur. À chaque flash, la fleur aura un tout petit peu de retard par rapport au coup d'avant. En mettant bout à bout ces images légèrement décalées, votre cerveau recrée un mouvement artificiel très lent.
La formule du ralenti : Fréquence perçue = |Fréquence Aimant - Fréquence LED|
Si l'aimant est à 81 Hz et la LED à 80 Hz, l'écart est de 1. Vous verrez la fleur faire une oscillation complète tout en douceur en exactement 1 seconde.
Si vous essayez de régler les potentiomètres sur une fréquence très basse (par exemple 20 Hz) ou très haute (150 Hz), vous remarquerez que la fleur ne bouge presque plus. Pourquoi ?
Chaque objet élastique (comme la tige de notre fleur ou une règle en plastique fixée sur une table) possède une fréquence propre de résonance. C’est sa fréquence "fétiche".
Si vous poussez la fleur exactement à son rythme naturel, l'énergie des électroaimants est amplifiée au maximum. La fleur se met à danser avec une amplitude spectaculaire ! C'est le même principe que lorsque vous poussez quelqu'un sur une balançoire : si vous poussez au bon moment, la personne va de plus en plus haut sans effort.
Chaque objet possède sa propre fréquence de résonance, qui dépend de trois caractéristiques physiques majeures :
La Rigidité (ou élasticité) : C'est la capacité du matériau à revenir à sa place après avoir été déformé (le "ressort"). Plus un matériau est rigide (comme une règle en acier), plus il veut revenir vite : sa fréquence est haute. Plus il est mou (comme du plastique souple), plus il met du temps : sa fréquence est basse.
b : Plus l'objet est lourd, plus il a de l'inertie, c'est-à-dire du mal à démarrer et à s'arrêter. Ajouter une plume au sommet ralentit le mouvement naturel : la fréquence baisse.
La Géométrie (la longueur) : Plus la tige est longue, plus elle est facile à plier, et plus le voyage pour aller d'un côté à l'autre est long. La fréquence baisse.
Pour secouer notre fleur à un rythme d'enfer (80 fois par seconde !), un seul aimant ne suffirait pas. La tige n'aurait pas le temps de revenir à sa place.
C'est pour cela qu'on utilise deux électroaimants en opposition de phase (quand l'un s'allume, l'autre s'éteint). Pendant que l'aimant de gauche tire la fleur, celui de droite se repose. Une fraction de seconde plus tard, on inverse ! Ce travail d'équipe (appelé Push-Pull) permet de guider la fleur à gauche et à droite de manière ultra-précise, sans aucun temps mort.
C'est à cause de ce fameux effet stroboscopique que, dans les films, les roues des voitures ou les hélices des hélicoptères semblent parfois tourner à l'envers ou ne pas tourner du tout ! La caméra prend des images à un rythme très proche de la rotation de la roue.
Le cœur du système est un microcontrôleur (un automate programmable) que vous allez devoir coder de manière ultra-optimisée. Oubliez les pauses classiques ! Vous apprendrez à programmer en mode "non-bloquant" à l'aide du temps système pour gérer simultanément, au millième de seconde près, le rythme des flashs lumineux et la danse des aimants.
Pour réussir à tromper le cerveau humain, notre premier ingrédient est un stroboscope : une lumière capable de clignoter à un rythme ultra-précis. Aujourd'hui, votre mission est de créer le prototype de ce stroboscope et d'en contrôler la vitesse.
Le matériel : Une carte programmable, une DEL (broche D2), un potentiomètre (broche A0) et un écran LCD I2C.
L'objectif : Faire varier la fréquence de clignotement de la DEL entre 1 Hz (1 flash par seconde) et 10 Hz (10 flashs par seconde) en tournant le potentiomètre.
L'affichage : L'écran LCD doit afficher en temps réel la fréquence sous la forme : Freq: X Hz.
La contrainte technique : L'écran ne doit jamais scintiller ni clignoter. Il ne doit se mettre à jour que si vous tournez le bouton !
Avant de foncer, l'automate a besoin de ranger ses boîtes à outils (les variables).
Créez des CONSTANTES de texte (DEL et POTENTIOMETRE) pour mémoriser vos branchements (D2 et A0).
Créez les variables numériques nécessaires pour stocker : la valeur brute du potentiomètre (val_pot), la vitesse choisie (frequence_clignotement) et la durée de la pause (demi_periode).
Dans l'initialisation, réveillez votre écran LCD et demandez-lui d'afficher le texte fixe "Freq:" sur la première ligne. Pourquoi ici ? Parce qu'on ne l'écrira qu'une seule fois !
Dans la boucle infinie, la carte va répéter ces actions des milliers de fois par seconde :
Lire : Récupérez la valeur du potentiomètre (qui donne un nombre brut entre 0 et 1023).
Convertir : Utilisez un bloc de conversion (transformer_la_valeur) pour transformer ce nombre brut (0-1023) en une fréquence humaine compréhensible (entre 1 et 10 Hz).
Si vous demandez à l'écran d'afficher la fréquence en boucle à toute vitesse, il va clignoter et devenir illisible.
L'astuce : Créez une variable magique nommée ancienne_frequence (initialisée à -1).
Le test logique : Ajoutez une condition : SI la frequence_clignotement actuelle est différente (!=) de l' ancienne_frequence, ALORS seulement vous écrivez la nouvelle valeur et les lettres "Hz" sur l'écran.
N'oubliez pas de mettre à jour l'ancienne_frequence.
Pour que le code reste propre, créez une fonction nommée Clignoter qui prend en entrée la fréquence choisie.
Attention au piège de la division : Pour calculer le temps de pause en millisecondes, la formule est : demi_periode=1000/frequence×2
Pour que l'ordinateur soit ultra-précis et n'oublie pas les chiffres après la virgule, forcez le à faire un calcul scientifique en utilisant un nombre à virgule (1000.0 ou le bloc de conversion float).
Allumez la DEL, attendez la demi_periode, éteignez la DEL, attendez à nouveau.
L'unité de mesure Hz (Hertz) représente le nombre d'actions par seconde. Si votre DEL clignote à 1 Hz, elle s'allume 1 fois par seconde. Si elle clignote à 10 Hz, elle s'allume 10 fois par seconde. Vos yeux commencent déjà à avoir du mal à voir les coupures ! Dans la prochaine activité, on montera à 80 Hz... et c'est là que la magie du SlowMoFrame commencera !
Bravo ! Vous avez réussi à faire clignoter une première DEL à la fréquence de votre choix grâce à votre premier potentiomètre. Mais les choses sérieuses commencent maintenant.
Ajoutez un deuxième potentiomètre et une deuxième DEL sur votre maquette.
Modifiez votre code pour que chaque potentiomètre gère sa propre DEL, à des fréquences différentes.
ATTENTION BUG ! Si vous tentez de dupliquer votre bloc Clignoter ou d'enchaîner deux blocs de délai à la suite, vous allez vous heurter à un mur informatique : vos DEL vont clignoter l'une après l'autre, le système va devenir d'une lenteur terrible, et tourner les boutons ne changera les fréquences qu'après plusieurs secondes d'attente.
Pourquoi votre code bloque-t-il ? À cause du bloc "Délai_ms(x)".
Imaginez un cuisinier devant gérer deux tâches en même temps :
Cuire des pâtes pendant 10 minutes.
Surveiller des steaks à retourner toutes les 2 minutes.
Utiliser le bloc "Délai_ms(x)", c'est comme si le cuisinier lançait le chronomètre des pâtes, puis fermait les yeux et s'arrêtait de bouger pendant 10 minutes sans rien faire d'autre. Que se passe-t-il pour les steaks ? Ils brûlent !
C'est exactement ce que fait l'automate : lorsqu'un bloc Délai est appelé, la carte s'endort. Elle devient totalement "aveugle" et refuse de lire votre deuxième potentiomètre ou d'allumer votre deuxième DEL tant que le temps n'est pas écoulé.
Pour que notre carte puisse faire plusieurs choses en même temps, nous devons changer sa manière de réfléchir. Au lieu de lui dire "attends sans rien faire", nous allons lui apprendre à regarder sa montre en permanence tout en continuant à travailler.
Pour cela, nous allons utiliser une variable magique de Tinkergen : "Temps de fonctionnement du système". Cette variable est un chronomètre qui compte les millisecondes qui défilent depuis le démarrage de la carte.
Pour réussir à vous passer du bloc Délai, vous allez devoir utiliser et combiner ces 3 notions dans vos blocs :
Le temps (Variable : temps) : C'est l'heure actuelle donnée par le chronomètre du système.
La fréquence (Variable : fréquence) : C'est la vitesse choisie avec le potentiomètre. Elle permet de calculer la période (le temps d'attente nécessaire entre deux clignotements) grâce à la formule :
période = 1000/fréquence
L'instant précis (Variable : tick) : C'est le moment exact où la DEL a changé d'état pour la dernière fois.
Pour remplacer le bloc Délai, vous allez devoir utiliser une condition "Si ... Alors".
Posez-vous cette question pour construire votre bloc :
Comment traduire en langage informatique : "Si le temps actuel moins l'instant du dernier flash est plus grand que la période attendue, alors je change l'état de ma DEL et je note le nouvel instant précis" ?
À vos blocs ! Montrez que vous êtes plus malins que l'automate et que vous pouvez maîtriser le temps réel.
Pour faire danser notre objet à 80Hz, nous allons manipuler des composants gourmands en énergie. Une mauvaise connexion pourrait détruire la carte programmable (l'ESP32) ou provoquer des dysfonctionnements majeurs.
Suivez scrupuleusement ce guide de câblage pas à pas.
Règle d'or : Toute manipulation doit se faire avec l'alimentation GÉNÉRALE ÉTEINTE.
Même si notre système utilise plusieurs tensions différentes (12V, 5V et 3.3V), tous les composants doivent impérativement partager le même point de référence pour se comprendre.
Identifiez le gros bornier WAGO Noir dédié aux masses (GND).
Reliez les deux bornes noires GND de l'Alimentation générale à ce WAGO.
Connectez la broche GND du Shield Grove de l'ESP32 à ce même WAGO.
Les fils noirs de masse provenant des trois modules MOSFET, de l'Écran LCD et des deux potentiomètres doivent tous se rejoindre dans ce WAGO central.
Pourquoi ? Si les masses ne sont pas reliées entre elles, les signaux électriques envoyés par l'ESP32 n'auront aucun point de comparaison. Le système sera totalement instable.
Nous allons maintenant alimenter la partie informatique à l'aide d'une ligne électrique propre, isolée des moteurs.
Connectez le fil rouge 5V Logique du Shield Grove au bornier WAGO 5V Logique.
Reliez l'Écran LCD I2C à ce WAGO pour l'alimenter en 5V, puis branchez ses deux câbles de données (SDA/SCL) sur les broches correspondantes de l'ESP32.
Pour les potentiomètres, reliez leur broche d'alimentation au bornier WAGO 3.3V (généré par la carte ESP32). Branchez le fil de signal du potentiomètre 1 sur la broche analogique A0, et celui du potentiomètre 2 sur la broche A1.
Danger ! N'alimentez jamais les potentiomètres en 5V. Les entrées de l'ESP32 ne supportent que le 3.3V. Dépasser cette tension grillerait instantanément la carte.
Les aimants créent d'intenses perturbations magnétiques et électriques lors de leurs activations successives.
Reliez la sortie 5V de l'Alimentation générale au WAGO 5V Puissance.
Distribuez ce 5V de puissance vers la borne positive (fil rouge) de l'Électroaimant 1 et de l'Électroaimant 2.
Le bouclier de protection : Installez une diode de protection 1N4007 (appelée diode de roue libre) en parallèle, directement sur les bornes de chaque aimant.
Attention au sens : Le trait gris de la diode (la Cathode) doit être connecté du côté du fil rouge (+).
Reliez le fil négatif (noir) de chaque aimant à la borne de puissance de son module MOSFET respectif.
Connectez les broches de commande des MOSFET (fils de signal) aux sorties numériques D14 (pour l'aimant 1) et D27 (pour l'aimant 2) de l'ESP32.
Le ruban LED a besoin d'une tension plus élevée pour émettre des flashs blancs violents et instantanés.
Reliez la borne 12V de l'Alimentation générale directement à l'entrée positive (fil rouge) du Ruban LED.
Connectez le fil négatif du ruban LED à la borne de puissance du troisième module MOSFET (le MOSFET LED).
Branchez le fil de commande de ce MOSFET sur la broche numérique D12 de l'ESP32.
[ ] Les fils noirs de TOUS les composants sont connectés ensemble sur le WAGO des masses.
[ ] Les diodes 1N4007 sont fixées sur les aimants avec le trait gris pointé vers le +.
[ ] Le fil d'alimentation des potentiomètres part bien du WAGO 3.3V et non du 5V.
[ ] Aucun fil dénudé ne se touche.