<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Robotfreak Blog &#187; Tutorial</title>
	<atom:link href="http://www.robotfreak.de/blog/tag/tutorial/feed" rel="self" type="application/rss+xml" />
	<link>http://www.robotfreak.de/blog</link>
	<description>Robotik, Elektronik, Arduino und mehr</description>
	<lastBuildDate>Mon, 23 Jan 2012 21:13:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>DIY Arduino / FEZ shield</title>
		<link>http://www.robotfreak.de/blog/allgemein/diy-arduino-fez-shield/694</link>
		<comments>http://www.robotfreak.de/blog/allgemein/diy-arduino-fez-shield/694#comments</comments>
		<pubDate>Sat, 21 Jan 2012 20:01:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[shield]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=694</guid>
		<description><![CDATA[Des &#246;fteren wurde ich gefragt, wie man selbst ein Arduino Shield herstellen kann und was dazu ben&#246;tigt wird. F&#252;r Roboter Projekte verwende ich diese selbstbebauten Shields sehr oft. Sie sind allerdings so universell, das man sie auch f&#252;r andere Zwecke verwenden kann. Aufgrund des selben Pinouts taugt diese L&#246;sung nicht nur f&#252;r Arduino, sondern auch [...]]]></description>
			<content:encoded><![CDATA[<p>Des &#246;fteren wurde ich gefragt, wie man selbst ein Arduino Shield herstellen kann und was dazu ben&#246;tigt wird. F&#252;r Roboter Projekte verwende ich diese selbstbebauten Shields sehr oft. Sie sind allerdings so universell, das man sie auch f&#252;r andere Zwecke verwenden kann. Aufgrund des selben Pinouts taugt diese L&#246;sung nicht nur f&#252;r Arduino, sondern auch f&#252;r die FEZ Reihe (Panda, Domino), Netduino und andere.<br />
<a href="http://lh3.ggpht.com/-GXIiFoCKXtY/TxnYxz2yXuI/AAAAAAAAErs/P9PHknPunKU/IMG_2429_30_31_tonemapped.tif.jpg" title="IMG_2429_30_31_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/-GXIiFoCKXtY/TxnYxz2yXuI/AAAAAAAAErs/P9PHknPunKU/s400/IMG_2429_30_31_tonemapped.tif.jpg" alt="IMG_2429_30_31_tonemapped.tif.jpg" title="IMG_2429_30_31_tonemapped.tif.jpg" class="alignnone" width="400" /></a><br />
<span id="more-694"></span></p>
<h3>Einleitung</h3>
<p>Das Shield sollte ein Steckbrett aufnehmen k&#246;nnen und f&#252;r jeden IO &#252;ber eigene Stromversorgungspins f&#252;r Sensoren und Aktoren wie LEDs und Servos verf&#252;gen. Zudem sollten man zwischen verschiedenen Stromversorgungen w&#228;hlen k&#246;nenn. Intern 3.3V und 5V sowie Vin vom Arduino board, zudem noch eine externe Stromversorgung z.B. f&#252;r Servos. &#220;ber Jumper solte w&#228;hlbar sein welche Stromversorgung in welcher Reihe anliegt. Die bei anderen k&#228;uflichen Shields &#252;blichen Steckbretter mit 17 Reihen zu 2&#215;5 Reihen sind mir etwas zu mickrig. Zudem ist kaum Platz f&#252;r die 3pin Steckverbinder. Deshalb kommt hier ein 23 reihiges Steckbrett mit 2&#215;5 Spalten und mit jeweils einer extra VCC und GND Reihe zum Einsatz. Daf&#252;r wird das Shield insgesamt breiter und ragt &#252;ber das Arduino Board hinaus. es kommen n&#228;mlich noch die 3reihigen Steckverbinder oben und unten dazu. </p>
<h3>St&#252;ckliste:</h3>
<p>1 St&#252;ck Lochraster ca 20 Reihen x 28 Spalten<br />
1 40polige Stiftleiste 40polig<br />
1 36polige Stiftleiste 36polig<br />
oder 3 40polige Stiftleisten 40polig<br />
1 2polige Schraubklemme 5,08mm Raster<br />
1 Set Arduino Stackable Headers, 2x8polig, 2x6polig (<a href="http://www.sparkfun.com/products/10007" class="liexternal">SparkFun</a>)<br />
1 Arduino Offset Header 8polig (<a href="http://www.sparkFun.com/products/9374" class="liexternal">Sparkfun</a>)<br />
1 St&#252;ck Silberdraht ca 30cm<br />
1 St&#252;ck isolierter roter Draht ca 10cm<br />
1 Steckbrett ca 23 Spalten </p>
<p>Etwas schwer zu beschaffen sind die Arduino Steckverbinder, sie erleichtern aber den Zusammenbau erheblich. Man bekommt diese bei Sparkfun bzw. den &#252;blichen SparkFun Distributoren. Man kann sich zwar die Arduino Header auch mit Buchsenleisten und Stiftleisten herstellen. Dummerweise ist die linke obere 8polige Buchsenleiste nicht im 2.54mm Raster sondern um 1,27mm versetzt. Hier hilft die Offset Leiste ungemein.<br />
Im unteren Bild ist links unten der Offset Steckverbinder zu sehen rechts daneben der normale Arduino Steckverbinder.</p>
<p><a href="http://lh4.ggpht.com/-zWztoCqeIlc/Txr8LQg4uKI/AAAAAAAAEtU/vzba4AoUtlk/IMG_2441_2_3_tonemapped.tif.jpg" title="IMG_2441_2_3_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/-zWztoCqeIlc/Txr8LQg4uKI/AAAAAAAAEtU/vzba4AoUtlk/s400/IMG_2441_2_3_tonemapped.tif.jpg" alt="IMG_2441_2_3_tonemapped.tif.jpg" title="IMG_2441_2_3_tonemapped.tif.jpg" class="alignnone" width="400" /></a> </p>
<h3>Aufbau</h3>
<ul>
<li>Die Lochraster Platine zuschneiden. 4 Reihen nach oben und unten freilassen f&#252;r die 3pin Steckverbinder</li>
<li>Vor dem Festl&#246;ten der Steckverbinder unbedingt &#252;berpr&#252;fen, ob der Pinabstand korrekt ist, die Steckverbinder lose durch die Lochrater Platine stecken und auf das Arduino Bard stecken. </li>
<li>Die Steckverbinder festl&#246;ten. Am besten nur jewiels am Anfang und Ende. Erst wenn man die Drahtverbindungen macht, sollte man die restlichen Steckverbinder Pins anl&#246;ten</li>
<li>Am besten mit der GND Verbindung anfangen. Dann die VCC Verbindungen. zum Schluss die einzelnen Signalleitungen verlegen.</li>
<li>Bevor man Spannung an das Shield anschliest, mit dem Ohmeter die Verbindungen pr&#252;fen (Durchgang und Kurzschluss). Dann das Shield alleine versorgen und an den Jumpern die Spannung pr&#252;fen, dann die Jumper in allen Varianten durchpr&#252;fen und die Spannung an den Steckverbindern pr&#252;fen. </li>
</ul>
<p>Der Fritzing Layout Plan sollte helfen die notwendigen Verbindungen zu finden. Die verwendeten Farben bedeuten:</p>
<ul>
<li>schwarz GND</li>
<li>rot VCC oder 5V</li>
<li>orange 3.3V </li>
<li>gelb Vin oder Vextern</li>
<li>blau Signal</li>
</ul>
<p><a href="http://lh4.ggpht.com/-6scMlN6CBf8/TxnaCjpoiNI/AAAAAAAAEsM/lDplDFZX8bo/ard.jpg" title="ard.jpg" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/-6scMlN6CBf8/TxnaCjpoiNI/AAAAAAAAEsM/lDplDFZX8bo/s400/ard.jpg" alt="ard.jpg" title="ard.jpg" class="alignnone" width="400" /></a> </p>
<h3>Verbesserungsvorschl&#228;ge</h3>
<p>Auf den Fotos ist zu erkennen das bei den unteren 3poligen Steckverbindern GND in der Mitte liegt und nicht aussen, wie bei den oberen Steckverbindern. Das habe ich mir bei anderen Kaufboards abgeschaut. Das kann aber leicht zu Verwirrungen f&#252;hren. Deshalb besser einheitliche Steckernormen verwenden. Im Schaltbild ist das schon so realisiert.<br />
Die Stromversorgung der beiden oberen 3poligen Steckverbinder k&#246;nnte man splitten und &#252;ber einen zus&#228;tzlichen Jumper mit 2 unterschiedlichen Spannungen betreiben.<br />
Derzeit ist die Schraubklemme mit Vin vom Arduino verbunden. Damit kann man zwar das Board &#252;ber die Schraubklemme mitversorgen. Aber man darf nicht gleichzeitig das Arduino Board &#252;ber die Powerbuchse und &#252;ber die Schraubklemme versorgen.<br />
Vin ist nicht verpolungssicher. Schliesst man die externe Stromversorgung falsch an, raucht das Board ab (und alles was darn h&#228;ngt).</p>
<p>Das komplette Shield mit Steckbrett auf einem FEZ Panda II board.<br />
<a href="http://lh6.ggpht.com/-7WtRu-w3cSk/TxnYzoXSXLI/AAAAAAAAEsA/wvR0x5KUJ4Y/IMG_2435_6_7_tonemapped.tif.jpg" title="IMG_2435_6_7_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh6.ggpht.com/-7WtRu-w3cSk/TxnYzoXSXLI/AAAAAAAAEsA/wvR0x5KUJ4Y/s400/IMG_2435_6_7_tonemapped.tif.jpg" alt="IMG_2435_6_7_tonemapped.tif.jpg" title="IMG_2435_6_7_tonemapped.tif.jpg" class="alignnone" width="400" /></a><br />
Hier noch ein Bild mit extern angeschlossenen Sensoren, Servos, serielles LCD. Auf dem Steckbrett ist ein Motor Treiber IC (L293D) zu sehen an dem 2 Getriebmotoren angeschlossen snd. Fertig ist der Testaufbau f&#252;r einen kleinen Roboter.<br />
<a href="http://lh3.ggpht.com/-z4gHLebJPcc/Txrx3v62bmI/AAAAAAAAEsg/rzygJZxxW4U/IMG_2438_39_40_tonemapped.tif.jpg" title="IMG_2438_39_40_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/-z4gHLebJPcc/Txrx3v62bmI/AAAAAAAAEsg/rzygJZxxW4U/s400/IMG_2438_39_40_tonemapped.tif.jpg" alt="IMG_2438_39_40_tonemapped.tif.jpg" title="IMG_2438_39_40_tonemapped.tif.jpg" class="alignnone" width="400" /></a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/allgemein/diy-arduino-fez-shield/694/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3D Roboter Modelle in Microsoft RDS importieren</title>
		<link>http://www.robotfreak.de/blog/robotik/3d-roboter-modelle-in-microsoft-rds-importieren/82</link>
		<comments>http://www.robotfreak.de/blog/robotik/3d-roboter-modelle-in-microsoft-rds-importieren/82#comments</comments>
		<pubDate>Fri, 20 Feb 2009 22:38:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MRDS]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Asuro]]></category>
		<category><![CDATA[Google SketchUp]]></category>
		<category><![CDATA[Microsoft Robotics Studio]]></category>
		<category><![CDATA[Simulation]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[VSE]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=82</guid>
		<description><![CDATA[Die Erstellung von 3D Roboter Modellen  wurde bereits im Google SketchUp Tutorial beschrieben. Heute geht es nun darum, wie man diese Modelle von SketchUp aus exportiert und in das Microsoft Robotics Developer Studio (MRDS) importiert, damit sie korrekt im MRDS Simulator (VSE) dargestellt werden. Was wird ben&#246;tigt? Microsoft Visual C# 2008 Express Edition Microsoft Robotics [...]]]></description>
			<content:encoded><![CDATA[<p>Die Erstellung von 3D Roboter Modellen  wurde bereits im <a href="http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52" class="liinternal">Google SketchUp Tutorial</a> beschrieben. Heute geht es nun darum, wie man diese Modelle von SketchUp aus exportiert und in das Microsoft Robotics Developer Studio (MRDS) importiert, damit sie korrekt im MRDS Simulator (VSE) dargestellt werden.</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3288812984/" class="flickr-image alignnone" title="RobotNo1 im VSE (visual mode)"><img src="http://farm4.static.flickr.com/3647/3288812984_08c8b322a6.jpg" alt="RobotNo1 im VSE (visual mode)" /></a></p>
<p><span id="more-82"></span></p>
<h2>Was wird ben&#246;tigt?</h2>
<ul>
<li><a href="http://www.microsoft.com/germany/express/product/visualcsharpexpress.aspx" class="liexternal">Microsoft Visual C# 2008 Express Edition</a></li>
<li><a href="http://go.microsoft.com/fwlink/?LinkID=134518" class="liexternal">Microsoft Robotics Developer Studio 2008 Express Edition</a></li>
<li><a href="http://sketchup.google.com/intl/de/" title="Google SketchUp" class="liexternal">Google SketchUp</a></li>
<li><a href="http://sketchuptips.blogspot.com/2009/01/wavefront-obj-exporter-with-materials.html" title="Wavefront obj Exporter script" class="liexternal">SketchUp Object Exporter Skript</a></li>
</ul>
<h2>Export aus Google SketchUp</h2>
<h3>Erste Fehlschl&#228;ge</h3>
<p>Es gabe einige Fehlschl&#228;ge bereits beim Export von Google SketchUp. Die kostenlose  Google SU Version bietet als Export Format nur das .kmz Format f&#252;r Google Earth Version 3 bzw. 4 an. F&#252;r die meisten Versuche wurde zudem noch <a href="http://www.blender.org" class="liexternal">Blender</a> ben&#246;tigt, da von SU aus &#252;ber ein drittes Format exportiert wurde, das dann zun&#228;chst in Blender importiert und anschlie&#223;end im .obj Format exportiert wurde.</p>
<p>1.Versuch mit dem <a href="http://sketchuptips.blogspot.com/2007/01/wavefront-obj-exporter.html" class="liexternal">obj_export SketchUp Plugin</a>. Das Modell ist viel zu gro&#223; und mu&#223; erst m&#252;hsam in Blender skaliert werden. Au&#223;erdem fehlen alle Farben und Texturen, da kein .mtl File erzeugt wird. <img src='http://www.robotfreak.de/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>2. Versuch mit dem <a href="http://www.katsbits.com/htm/tutorials/sketchup_converting_import_kmz_blender.htm" class="liexternal">Collada V1.4 Import von Blender</a>. Das Google Earth V4 Format ist nichts anderes als ein gezipptes Collada File. Also einfach .kmz File in .zip File umbenennen und das Archiv extrahieren. Dann von Blender aus Import (als Collada V1.4) das .dae File ausw&#228;hlen. Auch hier stimmen die Dimensionen nicht und das Modell mu&#223; etliche Male herunterskaliert werden.</p>
<p>3. Versuch. F&#252;r das Google Earth 3 Format gibt es das <a href="http://jmsoler.free.fr/didacticiel/blender/tutor/py_import_kml-kmz_en.htm" class="liexternal">kmz/kml Python Blender Plugin</a>. Der Import funktioniert zwar inklusive Texturen und korrekten Dimensionen des Modells. Aber beim Export von Blender, gehen dann bei komplexen Modellen viele Fl&#228;chen verloren.</p>
<h3>Der Durchbruch</h3>
<p>Der Durchbruch gelang erst mit dem <a href="http://sketchuptips.blogspot.com/2009/01/wavefront-obj-exporter-with-materials.html" class="liexternal">Object Export Skript</a> von Marten van der Honing . Damit klappt es endlich. Sowohl die Dimensionen des Modells und auch die Materialien werden korrekt exportiert. Vor allem aber wird kein Blender Programm mehr als Zwischenstufe ben&#246;tigt. Das spart Zeit und Nerven. Einzig die korrekte Ausrichtung der Modelle vor dem Export mu&#223; man beachten, dann klappt der Import ins MRDS ohne Probleme. <img src='http://www.robotfreak.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Chassis und R&#228;der getrennt exportieren</h3>
<p>Da sich in der Simulationsumgebung von MRDS die R&#228;der des Modells auch drehen sollen, m&#252;ssen die R&#228;der getrennt vom Chassis exportiert werden. Dabei gen&#252;gt es, ein einzelnes  Rad zu exportieren. Das MRDS f&#252;gt dann 2 R&#228;der bei einem 2-Rad Roboter ein. Das Chassis wird dann ohne R&#228;der exportiert. Vor dem Export m&#252;ssen die Modelle in SU korrekt  auf den 3 Achsen ausgerichtet werden. Das Chassis mu&#223; dazu folgenderma&#223;en ausgerichtet werden:</p>
<ul>
<li> durch den Mittelpunkt des Chassis geht die blaue Achse.</li>
<li>die  Front des Modells zeigt nach vorne</li>
<li>Das St&#252;tzrad ber&#252;hrt die gr&#252;ne Achse.</li>
</ul>
<p>So sollte das dann aussehen:</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3287996079/" class="flickr-image alignnone" title="RobotNo1 Chassis in Google SketchUp"><img src="http://farm4.static.flickr.com/3358/3287996079_b80aac2112.jpg" alt="RobotNo1 Chassis in Google SketchUp" /></a></p>
<p>F&#252;r die Antriebsr&#228;der gelten folgende Vorgaben:</p>
<ul>
<li>Der 0-Punkt liegt auf der Innenseite des Rades</li>
<li> Die rote Achse geht durch die Mitte des Rades</li>
<li>Die gr&#252;ne und blaue Achse ber&#252;hren die Innenseite des Rades.</li>
</ul>
<p>Ein Bild sagt mehr als 1000 Worte:</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3288812780/" class="flickr-image alignnone" title="RobotNo1 Rad in Google SketchUp"><img src="http://farm4.static.flickr.com/3516/3288812780_8b793bc6fa.jpg" alt="RobotNo1 Rad in Google SketchUp" /></a></p>
<p><strong>Hinweis:</strong> Es klappt nicht, wenn man die Achsen selbst an das Modell anpa&#223;t (mit dem <img class="alignnone size-full wp-image-102" title="achse1" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/achse1.jpg" alt="achse1" width="25" height="30" /> Symbol). Man mu&#223; schon das Modell selbst verschieben.</p>
<h3>Export Einstellungen</h3>
<p>Nachdem man das  <a href="http://sketchuptips.blogspot.com/2009/01/wavefront-obj-exporter-with-materials.html" class="liexternal">Object Export Skript</a>in das Google SU plugins Verzeichnis kopiert hat, findet man nach einem SU Neustart im Men&#252; unter Plugins den Eintrag Obj Exporter&#8230; Klickt man auf diesen Men&#252;punkt erscheint der folgende Dialog:</p>
<p><img class="alignnone size-medium wp-image-103" title="objexporterdialog" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/objexporterdialog-300x300.jpg" alt="objexporterdialog" width="300" height="300" /></p>
<p>Dort klickt man lediglich noch die beiden Optionen &#8216;Export front faces&#8217; und Export back faces&#8217; an und anschlie&#223;end den Export .obj File Button.  Bei komplexen Modellen dauert es schon ein Min&#252;tchen, bis das .obj File und .mtl File erzeugt werden.</p>
<h2>Import ins Microsoft Robotics Studio</h2>
<p>Der Import des 3D Modells geschieht &#252;ber das Kommandozeilen Tool obj2bos.exe. MRDS kann zwar auch das .obj Format direkt importieren, aus Performance Gr&#252;nden wird aber das hauseigene .bos Format empfohlen. Die zu importierenden Dateien, das .obj File und das .mtl File werden zun&#228;chst in den MRDS Unterordner store/media kopiert. Den obj2bos Konverter starte man vom DSS-Comand Prompt aus mit der folgenden Befehlszeile:</p>
<pre>obj2bos.exe /infile:.\store\media\RobotNo1Chassis.obj</pre>
<p>Das selbe wiederholt man f&#252;r das Rad:</p>
<pre>obj2bos.exe /infile:.\store\media\RobotNo1Wheel.obj</pre>
<h3>Anpassungen im Projekt</h3>
<p>Als Vorlage f&#252;r das Simulations Projekt wird das <a href="http://msdn.microsoft.com/de-de/magazine/cc546547.aspx" class="liexternal">MRDS Simulator Tutorial von Sara Morgan</a> aus dem MSDN Magazin verwendet. Urspr&#252;nglich wurde das Tutorial  f&#252;r den Boe-Bot von Parallax geschrieben. Ich habe es nur f&#252;r meinen RobotNo1 Roboter entsprechend dem Tutorial angepa&#223;t und neu aufgebaut. Auf das Tutorial werde ich hier nur kurz eingehen. 2 Dinge sind mir beim Nachbau aufgefallen:</p>
<p>1. Sobald man ein neues Projekt (Vorlage &#8216;DSS Service 2.0&#8242;) erstellt hat, sollte man als erstes unter Einstellungen den Referenz Pfad zum MRDS bin Ordner hinzuf&#252;gen und alle eigenen Projekte in einem neu erstellten Verzeichnis im MRDS Root Ordner ablegen. Bei Visual Studio Express kann man dan Pfad erst angeben, wenn man das Projekt speichert.</p>
<p><img class="alignnone size-full wp-image-105" title="projectpath" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/projectpath.jpg" alt="projectpath" width="563" height="386" /><span id="__caret">_</span></p>
<p>2. Man mu&#223; noch einige Referenzen (rechter Mausklick auf &#8216;References&#8217; im Solution Explorer) von Hand dem Projekt hinzuf&#252;gen, damit es sich korrekt &#252;bersetzen l&#228;&#223;t. Das folgende Bild zeigt dies:</p>
<p><img class="alignnone size-full wp-image-104" title="references" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/references.jpg" alt="references" width="371" height="407" /></p>
<p>Am Programmcode selbst wurden nur einige kleinere &#196;nderungen gemacht, damit das 3D-Modell des RobotNo1 den Boe-Bot ersetzt. Da der Simulator eine Physik Engine (Ageia PhysX) besitzt, m&#252;ssen im Programm zudem die physikalischen Gr&#246;&#223;en (Gewicht, Abmessungen, Postition der Antriebsr&#228;der und des St&#252;tzrades) an das eigene Modell angepasst werden.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">MASS <span style="color: #008000;">=</span> 0<span style="color: #008000;">.</span>454f<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//in kilograms  (around 1 pound)</span>
<span style="color: #008080; font-style: italic;">// the default settings approximate the BoeBot chassis</span>
CHASSIS_DIMENSIONS <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector3<span style="color: #008000;">&#40;</span>0<span style="color: #008000;">.</span>10f, <span style="color: #008080; font-style: italic;">//meters wide</span>
0<span style="color: #008000;">.</span>05f,  <span style="color: #008080; font-style: italic;">//meters high</span>
0<span style="color: #008000;">.</span>16f<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//meters long</span>
FRONT_WHEEL_MASS <span style="color: #008000;">=</span> 0<span style="color: #008000;">.</span>01f<span style="color: #008000;">;</span>
CHASSIS_CLEARANCE <span style="color: #008000;">=</span> 0<span style="color: #008000;">.</span>020f<span style="color: #008000;">;</span>
FRONT_WHEEL_RADIUS <span style="color: #008000;">=</span> 0<span style="color: #008000;">.</span>034f<span style="color: #008000;">;</span>
CASTER_WHEEL_RADIUS <span style="color: #008000;">=</span> 0<span style="color: #008000;">.</span>010f<span style="color: #008000;">;</span>
FRONT_WHEEL_WIDTH <span style="color: #008000;">=</span> 0<span style="color: #008000;">.</span>007f<span style="color: #008000;">;</span>
CASTER_WHEEL_WIDTH <span style="color: #008000;">=</span> 0<span style="color: #008000;">.</span>008f<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//not currently used, but dim is accurate</span>
FRONT_AXLE_DEPTH_OFFSET <span style="color: #008000;">=</span> <span style="color: #008000;">-</span>0<span style="color: #008000;">.</span>02f<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// distance of the axle from the center of robot</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">State</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;RobotNo1&quot;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">State</span><span style="color: #008000;">.</span><span style="color: #0000FF;">MassDensity</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Mass</span> <span style="color: #008000;">=</span> MASS<span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">State</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Pose</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> initialPos<span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">State</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Assets</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Mesh</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;RobotNo1Chassis.bos&quot;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">WheelMesh</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;RobotNo1Wheel.bos&quot;</span><span style="color: #008000;">;</span></pre></div></div>

<h3>Visual Studio und VSE</h3>
<p>Danach kann man das Programm im VisualStudio neu &#252;bersetzt und falls keine Fehler entdeckt wurden, gestartet werden. Nach einer kleinen Weile erscheinen dann zun&#228;chst die DSS Host Console, dann das Simple Dashboard und schlie&#223;lich die Simulation (VSE Visual Simulation Environment) selbst. Dort sollte dann unser Modell und ein W&#252;rfel erscheinen. Mit der Maus und den Cursor Tasten der Tastatur kann man die Position der Kamera ver&#228;ndern. Die Darstellung des Modells kann man im Men&#252;punkt &#8216;Render&#8217; umschalten zwischen:</p>
<ul>
<li>&#8216;Visual&#8217; di f&#252;r uns Menschen normale Sichtweise mit Textturen Licht und Schatten</li>
<li>&#8216;WireFrame&#8217;, die Darstellung der Modelle als Drahtgitter</li>
<li>&#8216;Physics&#8217;, so, wie es der Computer sieht. Simple K&#246;rper mit Masse und Schwerpunkt</li>
<li>&#8216;Combined. Die Kombination zwischen Visual und Physics. Damit kann man kontrollieren, wie genau das gezeichnete Modell mit den Einstellungen im Programm &#252;bereinstimmt.</li>
</ul>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3288812894/" class="flickr-image alignnone" title="RobotNo1 im VSE"><img src="http://farm4.static.flickr.com/3344/3288812894_661481a6ff.jpg" alt="RobotNo1 im VSE" /></a></p>
<h3>Dashboard</h3>
<p>Steuern l&#228;&#223;t sich unser Modell &#252;ber das Dashboard. Dazu mu&#223; man:</p>
<ul>
<li>Verbindung zum VSE aufnehmen durch Eingabe von &#8217;50001&#8242; im Port Editierfeld.</li>
<li>Doppelklick auf den Service &#8216;[SimulatedRobotNo1]&#8230;&#8217;</li>
<li>Klick auf &#8216;Drive&#8217;</li>
<li>jetzt sollte sich der Roboter durch klicken und Ziehen an der Kugel in alle Richtungen bewegen lassen</li>
</ul>
<p>Alle Dashboard Einstellungen nochmal im Bild:</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3287996883/" class="flickr-image alignnone" title="MRDS Dashboard"><img src="http://farm4.static.flickr.com/3383/3287996883_7a5b7cdd9a.jpg" alt="MRDS Dashboard" /></a></p>
<p>auch ein virtueller Asuro tummelt sich bereits im MRDS Simulator.</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3287995647/" class="flickr-image alignnone" title="Asuro im VSE"><img src="http://farm4.static.flickr.com/3265/3287995647_56bf3b7c1b.jpg" alt="Asuro im VSE" /></a></p>
<p>das vollst&#228;ndige Projekt gibt es <a href="http://robotfreak.googlecode.com/files/RobotFreak.zip" class="lizip">hier</a> zum download. Das .zip Archiv wird einfach in den MRDS Ordner entpackt. Im Unterordner RobotFreak gibt es die beiden Projekte SimulatedAsuro und SimulatedRobotNo1. Bevor man selbst versucht, die Projekte zu &#252;bersetzen, mu&#223; das &#8216;setup.cmd&#8217; Script vom DSS Command Prompt gestartet werden. Damit werden die absoluten Pfadangaben in den Projekten an die lokalen Einstellungen angepasst.</p>
<h2>Wie geht es weiter?</h2>
<p>Zun&#228;chst werde ich mich n&#228;her mit der visuellen Programmiersprache VPL befassen. Das verspricht doch schnellere Erfolge, anstelle den virtuellen Roboter in C# zu coden.  Mit VPL lassen sich recht einfach Roboter Verhaltensprogramme realisieren.</p>
<p>Derzeit sind die Modelle noch blind wie die Maulw&#252;rfe, d.h. sie verf&#252;gen noch nicht &#252;ber irgendwelche Sensoren. Die m&#252;ssen ebenso simuliert werden, damit der Roboter nicht st&#228;ndig gegen irgendwelche virtuellen Hindernisse st&#246;sst. <img src='http://www.robotfreak.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Das Endziel wird ein selbst gebauter Roboter sein, der sich &#252;ber MRDS steuern l&#228;&#223;t. Dazu mu&#223; auf dem Roboter selbst kein Windows laufen. Allerdings funktioniert so ein Roboter nur dann, wenn ein Windows PC mitl&#228;uft. Denn nur auf dem Windows PC l&#228;uft das eigentliche Steuerprogramm.</p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://msdn.microsoft.com/de-de/magazine/cc546547.aspx" class="liexternal">MRDS Simulator Tutorial von Sara Morgan</a></li>
<li><a href="http://robotfreak.googlecode.com/files/RobotFreak.zip" class="lizip">C# Projekte und SketchUp Files f&#252;r dieses Tutorials</a></li>
<li><a href="http://www.promrds.com" class="liexternal">ProMRDS </a>- das Standard Buch zum MRDS. Viele Tutorials und Programmierbeispiele online verf&#252;gbar</li>
<li><a href="http://social.msdn.microsoft.com/Forums/en-US/category/robotics/" class="liexternal">Microsoft Robotik Forum</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/3d-roboter-modelle-in-microsoft-rds-importieren/82/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google SketchUp Robotik Tutorial</title>
		<link>http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52</link>
		<comments>http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52#comments</comments>
		<pubDate>Tue, 27 Jan 2009 22:22:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Google SketchUp]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=52</guid>
		<description><![CDATA[Google SketchUp ist ein 3D Zeichenprogramm, das eigentlich f&#252;r Architektur Zwecke bestimmt ist  (z.B. f&#252;r die 3D-Geb&#228;ude von Google Earth). Man kann damit aber auch recht einfach Roboter Modelle zeichnen. Die Bedienung ist kinderleicht im Gegensatz zu manch  anderen Programmen wie. z.B. Blender. Die Standard Version von SketchUp kann kostenlos verwendet werden. Die Vorteile gegen&#252;ber [...]]]></description>
			<content:encoded><![CDATA[<p>Google SketchUp ist ein 3D Zeichenprogramm, das eigentlich f&#252;r Architektur Zwecke bestimmt ist  (z.B. f&#252;r die 3D-Geb&#228;ude von Google Earth). Man kann damit aber auch recht einfach Roboter Modelle zeichnen. Die Bedienung ist kinderleicht im Gegensatz zu manch  anderen Programmen wie. z.B. <a href="http://www.blender.org" class="liexternal">Blender</a>. Die Standard Version von SketchUp kann kostenlos verwendet werden. Die Vorteile gegen&#252;ber der kostenpflichtigen SketchUpPro Version k&#246;nnen dabei vernachl&#228;ssigt werden.</p>
<p><img class="alignnone size-full wp-image-69" title="differentialrobot2" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/differentialrobot2.jpg" alt="differentialrobot2" width="512" height="296" /></p>
<p><span id="more-52"></span></p>
<h2>Einf&#252;hrung</h2>
<p>Dieses Tutorial bezieht sich auf die deutsche Google SketchUp Version 6 f&#252;r Windows.  SketchUp oder auch kurz SU genannt gibt es zum Download unter <a href="http://sketchup.google.com/intl/de/" title="sketchup.google.com" class="liexternal">http://sketchup.google.com/intl/de/</a>. Neben der Windows Version gibt es auch eine Version f&#252;r Mac OS-X (10.4+). F&#252;r die ersten Schritte mit SU sind die <a href="http://sketchup.google.com/intl/de/training/videos.html" class="liexternal">Einf&#252;hrungs Videos</a> sehr zu empfehlen.  Dort sieht man, wie einfach es ist mit SU zu arbeiten und selbst kompliziert aussehende Formen im Handumdrehen zu erzeugen. Naja, ganz so einfach ist es zu Anfang sicher nicht aber &#220;bung macht den Meister. Als Grundeinstellung empfiehlt es sich, die Modelleinheiten gleich nach der Installation auf Dezimal in Millimeter umzustellen. Des weiteren ist zu empfehlen, unter dem Men&#252;punkt <code>Ansicht | Symbolleisten</code>, den gro&#223;en Funktionssatz einzuschalten.</p>
<h2>Komponenten</h2>
<p>Google SketchUp bietet die M&#246;glichkeit zum Erstellen von Komponenten. Komponenten sind Gruppierungen von Formen, die man als einzelne Datei speichern kann. Man kann sich so nach und nach eine Bibliothek von Bauteilen anlegen kann, die man dann in verschiedenen Projekten immer wieder verwenden kann. So f&#228;ngt man am besten auch beim Entwurf eines neuen Roboter Modells an, man beginnt Komponenten zu entwerfen. F&#252;r jedes Einzelteil eines Roboters eine Komponente, so z.B. f&#252;r die R&#228;der, Motoren, Chassis usw.</p>
<p><img class="alignnone size-thumbnail wp-image-70" title="motor-gm9" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/motor-gm9-150x150.jpg" alt="motor-gm9" width="150" height="150" /> <img class="alignnone size-thumbnail wp-image-71" title="encoderwheel" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/encoderwheel-150x150.jpg" alt="encoderwheel" width="150" height="150" /></p>
<h2>Ma&#223;stabstreu zeichnen</h2>
<p>Mit Google SketchUp kann man auch ma&#223;stabsgetreu zeichnen. Dazu sollte man am besten bereits w&#228;hrend der Installation von SketchUp den Default Ma&#223;stab von Architektur in Zoll auf Dezimal in Millimeter &#228;ndern. Ansonsten kann man dies auch jederzeit beim Entwurf im Hauptmen&#252; unter <code>Fenster | Modellinformationen | Einheiten</code> &#228;ndern. Beim Zeichnen einer Form (Rechtkreis, Kreis, Vieleck oder Linie) gibt man einfach den gew&#252;nschten  Wert und die Einheit mm an und dr&#252;ckt die Enter Taste. Schon springt die Form auf die gew&#252;nschte Gr&#246;&#223;e. Das Funktioniert auch bei vielen anderen Werkzeugen. Beim Zeichnen der ersten Form wird man sich vielleicht wundern, dass die Form so klein dargestellt wird. Aber das ist kein Problem. Einfach auf da Gesamtgr&#246;&#223;e aufzoomen <img class="alignnone size-full wp-image-67" title="zoom-gesamt1" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/zoom-gesamt1.jpg" alt="zoom-gesamt1" width="31" height="29" /> Icon geklickt, schon sieht man die Form in voller Gr&#246;&#223;e. Von Vorteil ist auch eine Maus mit Scrollrad, damit kann man jederzeit auf- bzw. abzoomen.</p>
<p>Zum ma&#223;genauen Zeichnen von Rechtecken klickt man auf das Rechteck Symbol <img class="alignnone size-full wp-image-59" title="rechteck" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/rechteck.jpg" alt="rechteck" width="28" height="31" /> gibt man die L&#228;nge und Breite des Rechtecks ein mit einem Semikolon ein. z.B. <code>50mm;80mm</code> gefolgt von der ENTER-Taste.<br />
F&#252;r Kreise klickt man auf das Kreis Symbol <img class="alignnone size-full wp-image-60" title="kreis" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/kreis.jpg" alt="kreis" width="27" height="30" /> gibt man den Radius ein. z.B. <code>1,5mm</code> gefolgt von der ENTER-Taste.<br />
F&#252;r Vielecke gibt man dem Klick auf das Vieleck Symbol <img class="alignnone size-full wp-image-58" title="vieleck" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/vieleck.jpg" alt="vieleck" width="27" height="29" /> die Anzahl der Ecken ein und dr&#252;ckt die ENTER Taste, danach positioniert man das Vieleck und kann dann den Radius eingeben.</p>
<p>Die Vorteile eines ma&#223;stabsgetreuen Modell liegen auf der Hand.</p>
<ul>
<li>Alle Komponenten passen ohne umst&#228;ndliche Skalierung sofort zusammen.</li>
<li>Man kann genaue Ausdrucke z.B. des Chassis machen und diese als Vorlage zum Bohren und Zus&#228;gen des Chassis verwenden.</li>
<li>Austausch von Komponenten mit anderen SketchUp Usern wird erleichtert</li>
<li>Die &#220;bernahme in andere 3D Programme funktioniert einfacher</li>
</ul>
<h2>Ma&#223;band</h2>
<p>Das Ma&#223;band  <img class="alignnone size-full wp-image-54" title="massband" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/massband.jpg" alt="massband" width="27" height="32" /> ist ein sehr hilfreiches Werkzeug. Zum einen kann man damit beliebige Abst&#228;nde innerhalb des Modells messen und bekommt den  genauen Wert in der Statusbar angezeigt. Zum anderen lassen sich damit auch Hilfslinien zeichnen, um z.B. die genaue Position einer Bohrung in einer Form festzulegen. Werden die Hilfslinien nicht mehr ben&#246;tigt, k&#246;nnen diese mit einem Klick auf <code>Bearbeiten | F&#252;hrungslinien l&#246;schen</code> gel&#246;scht werden.</p>
<h2>Drucken</h2>
<p>Was n&#252;tzt einem eine ma&#223;stabsgetreue Zeichnung, wenn man diese nicht auch ma&#223;stabsgetreu ausdrucken kann. Das klappt auch unter SU, allerdings muss man schon wissen wie. Zum Druck z.B. einer Bohrschablone f&#252;r das Chassis muss man dazu zun&#228;chst vor&#252;bergehend unter dem Men&#252;punkt Kamera  von Perspektive auf Parallele Projektion umschalten. Man will ja keine 3D Ansicht ausdrucken sondern eine 2D Draufsicht. Dann sollte man auf Gesamtgr&#246;&#223;e aufzoomen <img class="alignnone size-full wp-image-61" title="zoom-gesamt" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/zoom-gesamt.jpg" alt="zoom-gesamt" width="31" height="29" /> (der Ausdruck richtet sich n&#228;mlich nach der Ansicht). Dann &#246;ffnet man den Druck Dialog, entfernt den Haken vor <code>Druckformat | An Seite anpassen</code> und vor <code>Modell Erweiterungen verwenden</code> und stellt die Skalierung <code>in SketchUp</code> und <code>in der Ausgabe</code> jeweils auf 10 mm.<br />
<img class="alignnone size-full wp-image-55" title="druckeinstellungen1" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/druckeinstellungen1.jpg" alt="druckeinstellungen1" width="458" height="266" /></p>
<h2>Exportieren</h2>
<p>Die kostenlose Version von Google SketchUp erlaubt nur das Speichern im SketchUp internen Format .skp . Als Export in andere 3D Formate wird das Google Earth Format  .kmz angeboten. Das .kmz ist im Prinzip nichts anderes als gezipptes File im Collada Format. Wenn man das .kmz File in ein .zip File umbenennt kann man das Archiv &#246;ffnen und sieht die Einzel Files, aus denen es besteht.</p>
<p>&#220;ber die Import Funktion von Blender kann man Collada Files lesen (Collada V1.4) und z.B. in das .obj Format von Wavefront exportieren. Damit lie&#223;en sich die Roboter Modelle auch mit dem Microsoft Robotics Developer Studio MRDS verwenden. MRDS kann das .obf Format in das eigene .bos Format konvertieren. Damit k&#246;nnte man dann seinen virtuellen Roboter im MRDS Simulator testen. Aber das ist ein Thema f&#252;r ein weiteres Tutorial.</p>
<h2>3D-Warehouse</h2>
<p>Mit dem <a href="http://sketchup.google.com/3dwarehouse/" class="liexternal">3D-Warehouse</a> f&#252;r Google SketchUp steht eine riesige Online Bibliothek zur Verf&#252;gung. Viele User benutzen das 3D-Warehouse, um dort ihre Modelle hochzuladen und sie damit anderen Usern zur Verf&#252;gung zu stellen. Mit der gewohnten Google Suche findet man schnell die ein oder andere Komponente, die man gerade braucht. Auch ich habe dort meine <a href="http://sketchup.google.com/3dwarehouse/cldetails?mid=ba4e42ef4db63088c048bd5374389c59" class="liexternal">Roboter Kollektion</a> abgelegt.</p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://sketchup.google.com/intl/de/" title="sketchup.google.com" class="liexternal">http://sketchup.google.com/intl/de/</a></li>
<li><a href="http://sketchup.google.com/3dwarehouse" title="SketchUp 3D Warehaouse" class="liexternal">http://sketchup.google.com/3dwarehouse</a></li>
<li><a href="http://sketchup.google.com/3dwarehouse/cldetails?mid=ba4e42ef4db63088c048bd5374389c59" class="liexternal">Meine Robotik Modelle und Komponenten</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Arduino Einf&#252;hrung</title>
		<link>http://www.robotfreak.de/blog/mikrocontroller/arduino-einfuehrung/16</link>
		<comments>http://www.robotfreak.de/blog/mikrocontroller/arduino-einfuehrung/16#comments</comments>
		<pubDate>Thu, 11 Oct 2007 09:43:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[AVR]]></category>
		<category><![CDATA[Mikrocontroller]]></category>
		<category><![CDATA[Atmel]]></category>
		<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/mikrocontroller/arduino-einfuehrung/16</guid>
		<description><![CDATA[Wem der Einstieg in die Programmierung der Atmel AVR Controller mit den Datenbl&#228;ttern zu schwer f&#228;llt, f&#252;r den ist Arduino vielleicht genau das richtige. Arduino ist eine Open-Source- Plattform, basierend auf einem Microcontroller-Board und einer Entwicklungsumgebung mit einer API f&#252;r den Microcontroller. In diesem Zusammenhang wird oft auch der Begriff Physical Computing verwendet. Darunter versteht [...]]]></description>
			<content:encoded><![CDATA[<p>Wem der Einstieg in die Programmierung der Atmel AVR Controller mit den Datenbl&#228;ttern zu schwer f&#228;llt, f&#252;r den ist <a href="http://www.arduino.cc/" class="liexternal">Arduino</a> vielleicht genau das richtige. Arduino ist eine Open-Source- Plattform, basierend auf einem Microcontroller-Board und einer Entwicklungsumgebung mit einer API f&#252;r den Microcontroller. In diesem Zusammenhang wird oft auch der Begriff <a href="http://en.wikipedia.org/wiki/Physical_computing" rel="nofollow" class="liwikipedia">Physical Computing</a> verwendet. Darunter versteht im weitesten Sinne ein physikalisches System, das mit Hilfe von Hard- und Software mit der realen analogen Welt interagieren kann. Im Gegensatz zu anderen Kaufboards wie z.B. die BasicStamp Reihe sind die Arduino Boards viel g&#252;nstiger im Preis.</p>
<p><span id="more-16"></span></p>
<h2>Einleitung</h2>
<p>Der Name Arduino ist italienisch und bezieht sich nach offizieller Meinung auf <a href="http://de.wikipedia.org/wiki/Arduin_von_Ivrea" rel="nofollow" class="liwikipedia">Arduino von Ivrea</a> (955-1015), der Markgraf von Ivrea und sp&#228;ter K&#246;nig von Italien war. Nach inoffizieller Meinung ist der Name eher trivialer Natur, es ist einfach der Name einer hiesigen Studentenkneipe <img src='http://www.robotfreak.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Einiger der Arduino Entwickler arbeiten am Interaction Design Institute von Ivrea darunter Massimo Banzi und David Cuartielles.</p>
<h2>Hardware</h2>
<p>Die Arduino Hardware benutzt den Atmel AVR <span class="wikiword">ATmega8</span>/168 als Prozessor Plattform. Zur Kommunikation mit einem PC mit dem Arduino Board steht die serielle Schnittstelle des Atmel Prozessors zur Verf&#252;gung. Neuere Boards verf&#252;gen zudem &#252;ber einen USB-Seriell Wandler, <a href="http://de.wikipedia.org/wiki/Bluetooth" rel="nofollow" class="liwikipedia">Bluetooth</a> oder <a href="http://de.wikipedia.org/wiki/ZigBee" rel="nofollow" class="liwikipedia">ZigBee</a> Adapter.</p>
<p>Das Arduino Board kann man:</p>
<ul>
<li>fertig montiertes Board kaufen,</li>
<li>gefertigte Platine,  ohne Bauteile</li>
<li>das Board komplett selbst aufbauen.</li>
</ul>
<p>Folgende <a href="http://www.arduino.cc/en/Main/Boards" class="liexternal">Fertigboards</a> gibt es:</p>
<ul>
<li><a href="http://www.arduino.cc/en/Main/ArduinoBoardSerial" class="liexternal">Arduino Serial</a>, der Ur-Vater mit RS232 Anbindung</li>
<li>Arduino NG, <em>(Nuova Generazione</em>) mit USB Anbindung</li>
<li><a href="http://www.arduino.cc/en/Main/ArduinoBoardDiecimila" class="liexternal">Arduino Diecimila</a>, die neuste Generation mit USB Anbindung</li>
<li><a href="http://www.arduino.cc/en/Main/ArduinoBoardBluetooth" class="liexternal">Arduino BT</a> mit Bluetooth Anbindung</li>
<li><a href="http://www.arduino.cc/en/Main/ArduinoBoardMini" class="liexternal">Arduino Mini</a>,  24poliger  DIL Sockel &#228;hnlich der BasicStamp</li>
<p>Zudem gibt es noch einige Arduino Clones:</p>
<li><a href="http://www.freeduino.org/" class="liexternal">Freeduino Board</a>, ein Arduino Clone</li>
<li><a href="http://www.ladyada.net/make/boarduino/index.html" class="liexternal">Boarduino</a>, ein Arduino f&#252;r Steckbretter</li>
</ul>
<h3>Arduino Diecimila</h3>
<p><a href="http://www.flickr.com/photos/23913470@N00/1464017748/" title="diecimila" class="liimagelink"><img src="http://farm2.static.flickr.com/1187/1464017748_bb72eb89d1.jpg" alt="diecimila" /></a></p>
<p>Das Arduino Diecimila ist das neueste Arduino Board auf dem Markt. Der Name Diecimila ist italienisch und bedeuted &#252;bersetzt 10000. Das soll auf die Zahl von &#252;ber 10000 bisher verkauften Arduino Boards hindeuten. Die wichigtste Neuerung des Diecimila Boards ist die F&#228;higkeit das laufende Programm &#252;ber die Arduino IDE jederzeit abzubrechen und ein anderes Programm zu laden. Bei den anderen Boards mu&#223;te dazu immmer noch der Reset Schalter auf dem Board gedr&#252;ckt werden. F&#252;r &#228;ltere Boards ist allerdings ein Hardware Patch verf&#252;gbar, der dieses Feature nachbildet.</p>
<h3>Arduino-BT</h3>
<p><a href="http://www.flickr.com/photos/23913470@N00/1464017148/" title="arduino-bt" class="liimagelink"><img src="http://farm2.static.flickr.com/1384/1464017148_5726bc4459.jpg" alt="arduino-bt" /></a></p>
<p>Das Arduino Board mit Bluetooth Modem bluegiga WT11. Der Atmega168 Porzessor ist hier aus Platzgr&#252;nden ein SMD Typ. Ansonsten ist das Arduino-BT bis auf den Stromversorgungsstecker Pin kompatibel zu anderen Arduino Boards. Bei diesem Board ist darauf zu achten, dass die externe Stromversorgung h&#246;chstens 5,5V betragen darf.</p>
<h2>Software</h2>
<p>Der Microcontroller auf dem Board wird mit Hilfe der Arduino Programmiersprache programmiert. Diese basiert auf <a href="http://www.processing.org/" class="liexternal">Processing</a> mit der Syntax von C, bzw. C++. Als Entwicklungsumgebung steht die auf <a href="http://wiring.org.co/" class="liexternal">Wiring</a> basierende Arduino IDE zur Verf&#252;gung. Ein Arduino Projekt kann als Stand-Alone L&#246;sung arbeiten oder auch PC gesteuert. Dazu gibt es fertige Bibliotheken zur Anbindung des Arduino Boards an Flash, Processing, MaxMSP&#8230;</p>
<h3>Die Arduino API</h3>
<p>Die <a href="http://www.arduino.cc/en/Reference/HomePage" class="liexternal">Arduino API</a> besteht aus einer Reihe von High-Level Funktionen, die den Zugriff auf die AVR Hardware vereinfachen.&#220;ber zus&#228;tzlichen Bibliotheken l&#228;&#223;t sich die Funktionalit&#228;t erweitern (z.B. I2C, Schrittmotoransteuerung etc.).  Es gibt eine F&#252;lle von <a href="http://www.arduino.cc/en/Tutorial/HomePage" class="liexternal">Tutorials</a> und Beispielprogramme f&#252;r die Arduino Plattform. Im <a href="http://www.arduino.cc/playground/" class="liexternal">Arduino Playground</a> kann jeder angemeldete User seine eigenen Projekte vorstellen.</p>
<h3>Die Arduino IDE</h3>
<p><a href="http://www.robotfreak.de/blog/wp-content/uploads/2007/10/arduino-ide.jpg" title="Arduino IDE" rel="lightbox[16]" class="liimagelink"><img src="http://www.robotfreak.de/blog/wp-content/uploads/2007/10/arduino-ide.jpg" alt="Arduino IDE" /></a><br />
Mit der Arduino IDE kann man neue Sketche erstellen oder Beispiel Sketche laden. Auf Knopfdruck wird das Sketch kompiliert und falls fehlerfrei direkt auf das Arduino Board geladen. &#220;ber das eingebaute Terminalprogramm kann man sich die Ausgaben des Arduino Boards ansehen. Hinter der schicken Oberfl&#228;che steckt die AVR-GCC Compiler Suite. Nat&#252;rlich ist es auch m&#246;glich in die Sketche direkten AVR Code einzubinden.</p>
<h3>Arduino Programmierung</h3>
<p>Ein Arduino Programm im folgenden auch sketch genannt besteht im Grund aus den beiden Funktionen <code>setup()</code> und <code>loop()</code>.  Beide Funktionen werden zur Laufzeit vom Arduino Core Programm aufgerufen. Die Funktion <code>setup()</code> wird einmalig beim Programmstart aufgerufen. Sie enth&#228;lt den Code f&#252;r die Initialisierung der Hardware. Die <code>loop()</code> Funktion wird anschlie&#223;end zyklisch vom Arduino Core aufgerufen.</p>
<h3>Hello World f&#252;r Arduino</h3>
<p>Das folgende sketch l&#228;&#223;t eine LED am Digitalausgang 13 im Sekundentakt blinken.</p>
<p><code><br />
int ledPin = 13;<br />
void setup() {<br />
pinMode(ledPin, OUTPUT);<br />
}</code></p>
<p><code>void loop() {<br />
digitalWrite(ledPin, HIGH);<br />
delay(1000);<br />
digitalWrite(ledPin, LOW);<br />
delay(1000);<br />
}</code></p>
<h2>Arduino f&#252;r Robotik</h2>
<p>Arduino eignet sich durchaus f&#252;r kleinere Roboter-Projekte. Beispiele hierf&#252;r sind der <a href="http://www.windmeadow.com/node/45" class="liexternal">Wiimote controlled firefighting robot</a> und die Portierung f&#252;r den <a href="http://www.arduino.cc/playground/Learning/Asuro" class="liexternal">Asuro</a>. Auch zur Prototypen Entwicklung ist es aufgrund der einfachen Programmierung sehr gut geeignet. Ich arbeite zur Zeit auch an einem Arduino Roboter, &#252;ber den ich dann nat&#252;rlich auch hier berichten werde.</p>
<h2>Weblinks</h2>
<h3>Englisch</h3>
<ul>
<li><a href="http://arduino.cc/" class="liexternal">Arduino Homepage</a></li>
<li><a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl" class="liexternal">Arduino Forum</a></li>
<li><a href="http://www.arduino.cc/playground/" class="liexternal">Arduino Playground</a></li>
<li><a href="http://www.freeduino.org/" class="liexternal">http://www.freeduino.org/</a> &#8211; Arduino Index und FreeduinoBoard</li>
<li><a href="http://todbot.com/blog/category/arduino/" class="liexternal">todbot blog &gt;&gt; Arduino</a></li>
<li><a href="http://todbot.com/blog/spookyarduino/" class="liexternal">todbot blog &gt;&gt; Spooky Arduino, Tutorials</a></li>
<li><a href="http://itp.nyu.edu/physcomp/Labs/Labs" class="liexternal">ITP &#8211; Physical computing</a></li>
<li><a href="http://www.tigoe.net/pcomp/code/category/category/code/arduinowiring" class="liexternal">tigue.net &#8211; Arduino/Wiring, Beispiele</a></li>
<li><a href="http://www.grayfuse.com/blog/?p=15" class="liexternal">Jeff Gray Blog, Arduino Beispiele</a></li>
<li><a href="http://code.google.com/p/arduino/" class="liexternal">Arduino Sourcecode, SVN Repository</a></li>
<li><a href="http://www.windmeadow.com/node/45" class="liexternal">Wiimote controlled firefighting robot</a></li>
<li><a href="http://wiring.org.co/" class="liexternal">http://wiring.org.co/</a></li>
<li><a href="http://www.processing.org/" class="liexternal">http://www.processing.org/</a></li>
</ul>
<h3>Deutsch</h3>
<ul>
<li><a href="http://incom.org/code/projekte/projekt_anzeigen.php?4,98,0,0,0,102" class="liexternal">incom.org </a>- Arduino Bauanleitung</li>
</ul>
<h3>Bezugsquellen</h3>
<ul>
<li><a href="http://www.segor.de/" class="liexternal">Segor Elektronik</a></li>
<li><a href="http://www.watterott.com/" class="liexternal">Watterott</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/mikrocontroller/arduino-einfuehrung/16/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

