MODELISATION SKECTUP
Une contribution de l'académie de créteilhttp://technologie.ac-creteil.fr/spip.php?article280 utilisant une solution du site hollandais de domoticX http://domoticx.com/virtual-3d-device-port-su08-22-doolhof-spel-adxl345/
Lien de téléchargement de SketchUp Make 2015 : https://drive.google.com/file/d/1jUkP6PPtO_1a1LjOLSWy-9lHEEydBBY5/view
Lien de téléchargement du progiciel: https://drive.google.com/file/d/11uuzSgtvbgI1yGg9DFHxXwvz4u90SdNC/view
Lien de téléchargement des modèles 3D (contenant le paramétrage de la simulation) : https://drive.google.com/file/d/106GbACPvAlPG4hk9GxltFxdz4OndO9mk/view
Lien de téléchargement des programmes Ardublocks : https://drive.google.com/file/d/1ydVEkSV2XVZ2UValyvONL1WugajEgDCa/view
Très intéressant pour
- apprendre à modeliser/simuler, valider une solution
- ne pas imprimer trop rapidement sur imprimante 3D (coût matière, temps de fabrication)
- étudier un système technique sans maquettes réelles (investigation)
- peut se coupler avec une démarche de projet
Exemple de code Ruby:
# code source de DomoticX # Communication entre le port série et Sketchyphysics.
# Que doit-il se passer au début de la simulation? onstart{ option_port = ["Port série:", "Débit:"] # Valeurs standard, vous pouvez les adapter à votre système valeurs_standard = ["COM8", "9600"] # Listes des débits en bauds dans la liste déroulante du menu liste_debit = ["", "4800|9600|14400|19200|28800|38400|57600|115200"] # Afficher la boite de dialogue pour le choix des paramètres serialsettings = UI.inputbox(option_port, valeurs_standard, liste_debit, "Paramètres du port série:") if serialsettings != FALSE # Supprimer les paramètres de la fenêtre et les lier à une variable. $comport = serialsettings[0] $baudrate = serialsettings[1].to_i begin # Ouverture du port série @serial = Serial.new($comport, $baudrate) rescue RubySerial::Exception => e # Fermeture du port série s'il est ouvert. @serial.close if @serial # Réinitialiser / arrêter la simulation. MSketchyPhysics3::SketchyPhysicsClient.physicsReset # Entrez un message indiquant que le port série n'est pas trouvé. UI.messagebox("Port série introuvable!") end else # Réinitialiser / arrêter la simulation. MSketchyPhysics3::SketchyPhysicsClient.physicsReset end }
# Que doit-on faire pendant la simulation? ontick{ # Fermeture de la fenêtre "Panneau de configuration" au démarrage de la simulation. MSketchyPhysics3.closeControlPanel if frame == 1 # Lire les données du port série. $serialdata = @serial.read(1024) x, y = $serialdata.split(",") # Convertir les valeurs en variables (chaînes). $x = 2 * (x.to_f) - 1 $y = y.to_f # Afficher les données sur la gauche (journal). logLine("Port série: " + $comport.to_s) logLine("Débit en baud: " + $baudrate.to_s) logLine("Données reçues: " + $serialdata.to_s) logLine("Sens :"+ $x.to_s) logLine("") logLine("") logLine("") logLine("") }
# Que doit-on faire si la simulation s'arrête onend{ # Fermez le port série s'il est ouvert. @serial.close if @serial }
Ce code est sensiblement le même pour chaque animation, il suffit de gérer les données reçues (les désérialiser avec la méthode split) et reconstituer les variables que l'on affectera aux joints, servomoteurs et moteurs (ici $x et $y).
Il également possible de détecter des collisions et de transmettre en liaison sérielle vers l'Arduino cette valeur de “capteur” virtuel.
Il est aussi possible d'ajouter un module bluetooth, de brancher l'arduino sur un port série et de commander à distance avec le smartphone le modèle 3D de Google Sketchup [2015 MAX!].
Un autre projet: utiliser un acceloromètre et piloter une maquette 3D: http://domoticx.com/virtual-3d-device-port-su15-22-accelerometer-adxl345/