Virtual 3D Device Port – SU15-20-Communicatie naar SU

Virtual-3D-Device-port-SU15-logo

Hieronder volgen een aantal stappen om de seriële data van een seriële poort (arduino) uit te lezen en deze om te zetten in een beweging in SketchUp SketchyPhysics.

Zoals we in de vorige hoofdstukken hebben gezien kunnen we een servo instellen op bijvoorbeeld 180 graden (-90 t/m +90), deze gaat bewegen (draaien) met een getal tussen 0.00 (0%) en 1.00 (100%)

De Arduino programmeren

Om de slider te emuleren kunnen we een script schrijven voor de Arduino dat van 0.00 naar 1.00 gaat in stapjes van 0.01:

1) Open de Arduino IDE en upload het bovenstaande script naar de Arduino, als je de seriële monitor opent krijg je deze output te zien:

Sketchyphysics - SU08 - 20 - Communicatie 01

Nu is het de kunst om deze gegevens in SketchUp SketchyPhysics te krijgen!

Seriële data laden in SketchUp SketchyPhysics

Nu de Arduino de getallen stuurt via de seriële poort moeten we deze opvangen in SketchUp SketchyPhysics, dit doen we met een Python script en de plugin PySerial, in onderstaand script heb ik commentaar regels toegevoegd:

LET OP: Vergeet niet de COM poort aan te passen aan je eigen situatie!

Waar moet dit script geplaatst worden?

1) Klik op de UI (User Interface) knop.
2) Klik op de balk.
3) Vink onderaan op ‘scripted’ om een script toe te voegen, daar plaats je bovenstaand script in.

Sketchyphysics - SU15 - 20 - Communicatie 02

De Servo instellen

Nu we de data inlezen in de (Ruby) variabele $serialdata, moet deze ook naar de servo gestuurd worden.

1) Klik op de servo.
2) Voer bij ‘Controller’ in [variabele].to_f ,in dit geval:  $serialdata.to_f

Sketchyphysics - SU08 - 20 - Communicatie 03

Alles in actie

1) Sluit de Arduino aan met bovenstaand Arduino script geladen (pas eventueel de COM poort aan in het Python script).
2) Druk op de “play” knop om de simulatie te starten.
3) Je krijgt een venster waar je je seriële instellingen kan opgeven, vul deze in aan de hand van jou situatie:

Sketchyphysics - SU15 - 20 - Communicatie 03

Nu zal de balk uit zichzelf gaan bewegen volgens de variabelen die via de seriële poort binnenkomen!

Het is nu gelukt om gegevens van de “buitenwereld” om te zetten in een Virtuele 3D beweging.

Je kan het controleren,  aan de linker zij kant worden de gegevens weergegeven:

Sketchyphysics - SU15 - 20 - Communicatie 04

Hoe werkt het?

Dit werkt nu via een seriele verbinding tussen de Arduino en de computer, de arduino stuurt getallen (FLOAT) tussen 0.00 en 1.00.
In Sketchup SketchyPhysics is:

0.00 de status van het object opgegeven bij de MIN waarde (bijvoorbeeld -90 graden)
1.00 de status van het object opgegeven bij de MAX waarde (bijvoorbeeld 90 graden)

Daaruit volgt dat tussen 0.00 en 1.00, 180 graden zit, omdat sketchup met stapjes van 0.01 werkt zijn er 100 stapjes dus 1,8 graden per stapje.