Tournicayou (Photogrammétrie)
Construction d'un appareil photogramméphotogrammétrique dans le cadre de l'UE Atelier Fablab LU3SV062
Informations
ÉÉtudiants :ZoéZoé ALBENGA (zoealbenga@outlook.com)- Lucas
GORINIGorini
- Encadrants :
- Responsables de l'UE : Fabrice Minoletti et Pierre
ThéThéry - Responsable du projet :
Fabrice Minoletti etPierreThéThéry
- Responsables de l'UE : Fabrice Minoletti et Pierre
- Parcours : SV/ST : UE_FabLab : LU3ST062
- Date : S6
Contexte
La photogrammétrie est une technique de mesure qui consiste à déterminer la forme, les dimensions et la situation d'un objet dans l'espace à partir de plusieurs prises de vues photographiques de cet objet. La photogrammétrie répond au besoin de reconstruction numérique en 3D d'un objet, d'un bâtiment, d'un terrain. Elle est aujourd'hui une méthode de mesure 3D utilisée dans divers domaines : topographie, architecture, BTP, géologie, archéologie…
Objectifs
Notre objectif de réréalisation pour cette UE est la d'un socle pour la photogramméphotogrammétrie. Celui-ci aurait comme application dans un premier temps la réréalisation "d'image en 3D" pour certaines pierres ponces, puis àà usage plus large par la suite.
MatéMatériel
- Carte Arduino
Construction
ÉÉtape 1 :
ÉÉtape 2 :
ÉÉtape 3 :
ÉÉtape 4 :
ÉÉtape 5 :
ÉÉtape 6 :
ÉÉtape 7 :
Journal de bord
30/01/26
1è1ère SéSéance : Sujet PhotogramméPhotogrammétrie (SchéSchéma) + DéDécouverte de ARDUINO
PremièPremièresréréflexionsréréalisation sur la de ce supportààphotogramméphotogrammétrie.RéRéalisation de plusieurs dessins "idéidées" (voir photos).PremièPremière manipulation avec le logiciel ARDUINO, premier codage. Bien difficile....
Codage avec Arduino, led clignotant SOS en morse.
06/02/26
2è2ème SéSéance : Retour sur le support (SchéSchémas) + Mise en place des diffédifférentes éétapes
- Reprise de la structure du support de
photogramméphotogrammétrie --> bras tournant autour du support - Mise en place des
diffédifférenteséétapes :- Moteur + programmation
- Moule
àà Tarte - Arduino +
camécaméras + affichage ordiàà voir ? - Bras : support
camécaméras + Led- Bonus :
éécran + angles + focuscamécaméras
- Bonus :
13/02/2026
3è3ème SéSéance : Freecad + Arduino
FREECAD
Apprentissage des fonctions de base du logiciel Freecad. Plusieurs essaies infructueux de la conception de la pièpièce crantécrantée permettant le soutien du moteur autour de l'objet àà photographier.
VidéVidéos youtube visionnévisionnées pour le modèmodèle Freecad :
- https://www.youtube.com/watch?v=3wPDnRFfgEg
- https://www.youtube.com/@cadgab/playlistshttps://www.youtube.com/@cadgab/playlists
LE COULOMMIERS EST TERMINÉTERMINÉ (18/02) - Mauvaise dimension
Pour crécréer le coulommiers, qui fait office d'engrenage interne permettant le dédéplacement du bras, il faut crécréer deux corps diffédifférents sur FreeCad. Les corps sont créécréés sur le module Part design
- Un cercle de 600 mm de
diamèdiamètre et 200 mm de haut - Un engrenage
ààdédéveloppante de Dp = 495 mm, M = 2,5 mm, z = 198 et 200 mm de haut
Une fois les deux corps forméformés, il faut utiliser une boolébooléenne pour former le rouage final grâgrâce au module Part
Attention : Les valeurs inscrites sont les valeurs erronéerronées
ARDUINO
Familiarisation avec le logiciel Arduino et réréalisation d'un premier montage :
MatéMatériels :- Arduino Uno +
câcâble USB de liaison Arduino/Ordinateur CâCâbles de connexion- Step Motor 28 BYJ-48
- Arduino Uno +
SchéSchéma de connexion :
- Code :
- Ce code permet au moteur de
réréaliser une rotation dans le sens des aiguilles d'une montre, attendre 1 secondes (s), puis de faire une rotation dans le sens contraire des aiguilles d'une montre, puis de nouveau attendre 1 s.
- Ce code permet au moteur de
#include <Stepper.h>
double stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); // Pin inversion to make the library work
void setup() {
myStepper.setSpeed(10);
Serial.begin(9600);
}
void loop() {
// 1 rotation counterclockwise:
Serial.println("counterclockwise");
myStepper.step(stepsPerRevolution);
delay(1000);
// 1 rotation clockwise:
Serial.println("clockwise");
myStepper.step(-stepsPerRevolution);
delay(1000);
}
Une librairie Stepper.h existe.
-
SuccèSuccès de ce premier montage et codeassociéassocié. Manipulation du code nous permettant d'obtenir une rotation dans le sens des aiguilles d'une montre avecarrêarrêt de 1 s. (suppression de lapremièpremière partie de la void loop)- Rapide essaies de changement de vitesse =
ÉÉCHEC --> comprendre pourquoiàà la prochaineséséance.
--> Prochaine éétape : RéRéaliser le montage avec ajout d'un potentiomèpotentiomètre permettant de contrôcontrôler la vitesse de rotation ainsi que le sens (--> potentiomèpotentiomètre vers la droite= sens des aiguilles d'une montre ; potentiomèpotentiomètre àà gauche = sens inverse )
Photogrammétrie du MNHN
20/02/2026
4è4ème SéSéance : Freecad + Arduino
Partie Freecad :
ModéModélisation du rouage pour le moteur pas àà pas, et reprise de dimension du coulommiers. Pour calculer le nombre de dents de chaque rouage, externe (Moteur) comme interne (Coulommiers) nous avons suivi l'ééquation suivante :
Dp/M = z
Dp => Le diamèdiamètre primitif ; M => Module du rouage ; z => Nombre de dents
Pour que deux engrenages puissent fonctionner ensemble il faut respecter 3 conditions :
- Ils doivent avoir un module
éégal - Ils doivent avoir un angle de pression
éégal (par convention20°20°) - Leur
diamèdiamètre primitif doitêêtre tangent
Pour le dernier point, la distance entre le centre des rouages Dr = ((z1+z2)*M)/2
Pour le coulommiers :
La modémodélisation comporte deux corps.
- Un cercle de 300 mm de
diamèdiamètre et 100 mm de haut - Un engrenage
ààdédéveloppante de Dp = 250 mm, M = 2,5 mm, z = 100 et 100 mm de haut
Pour former le rouage interne, il faut faire la diffédifférence des deux corps grâgrâce àà la boolébooléenne dans le module Part. (c.f. https://www.youtube.com/watch?v=3wPDnRFfgEg)
Pour le rouage externe ce dernier doit êêtre fixéfixé sur la "tige" du moteur faisant 19 mm de long. Il faut creuser un cylindre de 5mm de diamèdiamètre au centre du rouage avec une corde de 3mm afin de respecter l'aspect de la tige.
La modémodélisation comporte deux corps.
- Un cylindre de 5mm de
diamèdiamètrecoupécoupé d'une corde de 3mm et faisant 19mm de haut - Un engrenage externe de Dp = 45 mm, M = 2,5 mm, z = 18 et 19 mm de haut
Impression 3D des pièpièces pour tests ultéultérieurs.
ARDUINO
Retour sur le montage et la réréalisation du circuit de la semaine dernièdernière = ÉÉCHEC. Nous n'avons pas trouver la raison pour laquelle la réréussite de la semaine passépassée n'éétait plus réréalisable. (Changement de moteur, vévérification et retour sur les explications du code, changement de code, vévérification du fonctionnement de la carte Arduino uno...)
RéRéalisation d'un autre montage avec le moteur Servo :
MatéMatériels :- Arduino Uno +
câcâble USB de liaison Arduino/Ordinateur CâCâbles de connexion- Step Motor MicroServo SG90
- Arduino Uno +
SchéSchéma de connexion :
- Code :
- Ce code permet au moteur de
réréaliser une rotationde 180°dans le sens des aiguilles d'une montre, attendre 1 secondes (s), puis de faire une rotationde 180°dans le sens contraire des aiguilles d'une montre, puis de nouveau attendre 1 s.
- Ce code permet au moteur de
#include <Servo.h> // on ajoute la bibliothèbibliothèque servo
Servo servoMoteur; //On crécrée un objet servo appeléappelé servoMoteur
void setup(){
Serial.begin(9600);
//On associe le servo àà la broche 2
servoMoteur.attach(2);
servoMoteur.write(0); // on initialise le servo sur l'angle 0
}
void loop(){
// tour de 0 àà 180º180º
for (int i = 0; i <= 180; i++){
servoMoteur.write(i);
Serial.print("Angle: ");
Serial.println(i);
delay(30);
}
// tour de 180 a 0º0º
for (int i = 179; i > 0; i--){
servoMoteur.write(i);
Serial.print("Angle: ");
Serial.println(i);
delay(30);
}
}
-
AprèAprès plusieursééchecs, et des changements de codes,succèsuccès de la manipulation. Notre moteur sedédéplace de l'angle 0àà l'angle 90, puisàà celui 180 avant de reveniràà 0 et de recommencer sa boucle.AprèAprès chaquedédéplacement celui-ci fait une pause de 1 s. Notre moteur avancedegrédegré pardegrédegré.- Modification de notre code pour
réréaliser un mouvement de20°20° en20°20° avec 1 s dedédélai entre chaquedédéplacement.
#include <Servo.h> // on ajoute la bibliothèque servo
Servo servoMoteur; //On crée un objet servo appelé servoMoteur
void setup(){
Serial.begin(9600);
//On associe le servo à la broche 2
servoMoteur.attach(2);
servoMoteur.write(0); // on initialise le servo sur l'angle 0
}
void loop(){
// de 0 à 180° par pas de 20°
for (int angle = 0; angle <= 180; angle += 20){
servoMoteur.write(angle); // positionne le servo
Serial.print("Angle: ");
Serial.println(angle); // affiche l'angle
delay(1000); // pause de 1 seconde
}
}--> Prochaine étape : Tester un code Arduino avec le moteur à utiliser !
27/02/2026
5ème Séance : Arduino !!!
Objectif de la séséance : Finaliser le code Arduinoarduino pour le moteur, tester les pièpièces 3D, conception du bras
06/03/2026
Une partieConception du moulesocle àmoteur tartesur Freecad. Les mesures sont encore à vérifier. Le socle est composé d'un assemblage Freecad de deux pièces. La première correspond au support même du moteur, et dispose de 4 trous permettant fixation par vis et un rouagecinquième ontplus étélarge impriméspermettant au bras du moteur de passer. (Le moteur est fixé par la surface où se situe le bras). L'autre pièce est un rectangle permettant l'insertion d'une roue à billes, servant au roulement du support moteur sur le coulommiers. Cette pièce possède un trou permettant le passage d'une tige maintenant la roue en impressionplace. La conception de cette tige en 3D est réalisée, mais reste à voir pour sa conception (photoImpression ci-dessous)3D, métal, autre ?). Le rectangle possède un creux en forme de puzzle servant à l'insertion du socle du bras, devant encore être modélisé.
Fichier la pièce décrite :
de 13/03/2026

