Virtual 3D Device Port – SU15-22-Accelerometer (ADXL345)

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

In het vorige hoofdstuk heb je gezien hoe we een virtuele potmeter kunnen maken in google sketchup als je de basis onder de knie hebt, we gaan nu een stapje verder door een accelerometer (ADXL345) te koppelen met SketchUp waarbij 2 gegevens nodig zijn, te weten de X en Y coördinaten, ik heb er een “doolhof” spel van gemaakt.

Sluit de accelerometer aan volgens onderstaand schema:

arduino adxl345 schema

De Arduino programmeren

Het voorbeeld script genereert deze gegevens in STABIELE horizontale ligging:

ADXL345 Arduino monitor 01

En als je de module beweegt:

ADXL345 Arduino monitor 02

Wat moeten we doen?

1) We hebben in dit geval niets aan de Z coördinaat, dus die coderegels kunnen we eruit halen.
2) In stabiele horizontale ligging, staan de getallen niet op 0, hier moeten we dus een autocorrectie op doen, dit doen we door de allereerste coördinaten op te slaan en later van de gemeten waarde af te trekken.

3) We hebben getallen nodig van 0.00 tot 1.00, deze kunnen we MAPPEN via de Arduino code, de waarde om te MAPPEN kun je zelf uitlezen door de module 90 graden te kantelen aan de 4 zijden.

Ik heb het script omgebouwd tot deze variant, waar nodig de code aan je eigen situatie aanpassen!

Als we nu bovenstaande code opslaan in de Arduino en je opent de seriële monitor, dan zijn dit de gegevens bij stabiele horizontale ligging:

ADXL345 Arduino monitor aangepast 01

En als je de module beweegt:

ADXL345 Arduino monitor aangepast 02

Actie in SketchUp

Nu de Arduino haar data verzend via de seriële poort naar de computer toe, kunnen wij deze met een script voor SketchUp weer uitlezen, ik heb voor het testen een doolhofje gemaakt (onderaan te downloaden)

Voor het splijten van de seriële data (de waarden van X en Y), heb ik deze ruby code toegepast:

x, y = serialdata.split(",")

In het model vink je aan “scripted” en daar moet deze code worden geplaatst, er zijn commentaarregels toegevoegd:

Doolhof screen script invoegen - su15

De servo’s kunnen ingesteld worden met in de controllers de variabelen $x en $y:

Doolhof screen set x

Doolhof screen set y

De servo’s kunnen gekoppeld worden aan de “doolhof”:

Doolhof screen koppelen

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.

Nu zal het “doolhof” zich gaan bewegen, zoals je ook de accelerometer ADXL345 beweegt!

De gegevens X en Y worden aan de linkerkant weergegeven!

Hoe werkt het?

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

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

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