<?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; Android</title>
	<atom:link href="http://www.robotfreak.de/blog/tag/android/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>IOIO-SHR Version 2</title>
		<link>http://www.robotfreak.de/blog/robotik/ioio-shr-version-2/684</link>
		<comments>http://www.robotfreak.de/blog/robotik/ioio-shr-version-2/684#comments</comments>
		<pubDate>Tue, 10 Jan 2012 19:57:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IOIO]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[ADB]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=684</guid>
		<description><![CDATA[Nach den ersten positiven Erfahrungen mit dem IOIO-Board und den ersten selbstgeschriebenen Android Apps gibt es auch einigen Verbesserungs Bedarf. In erster Linie st&#246;rten mich die gehackten Servos als Antrieb. Die laufen, mit dem Gewicht des Roboters von 800g, am Limit. Zeit f&#252;r eine Hardware Revision f&#252;r den IOIO-SHR v2. Hier sind erst mal ein [...]]]></description>
			<content:encoded><![CDATA[<p>Nach den ersten positiven Erfahrungen mit dem IOIO-Board und den ersten selbstgeschriebenen Android Apps gibt es auch einigen Verbesserungs Bedarf. In erster Linie st&#246;rten mich die gehackten Servos als Antrieb. Die laufen, mit dem Gewicht des Roboters von 800g, am Limit. Zeit f&#252;r eine Hardware Revision f&#252;r den IOIO-SHR v2.<br />
Hier sind erst mal ein paar Fotos von den ersten Tests.<br />
<a href="http://lh5.ggpht.com/-WOwXRsZFp0A/TwircugqGmI/AAAAAAAAEqg/twaCcqZdWvs/IMG_2371_2_3_tonemapped.tif.jpg" title="IMG_2371_2_3_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh5.ggpht.com/-WOwXRsZFp0A/TwircugqGmI/AAAAAAAAEqg/twaCcqZdWvs/s400/IMG_2371_2_3_tonemapped.tif.jpg" alt="IMG_2371_2_3_tonemapped.tif.jpg" title="IMG_2371_2_3_tonemapped.tif.jpg" class="alignnone" width="400" /></a><br />
<span id="more-684"></span></p>
<h3>Chassis</h3>
<p>Als Chassis kam eigentlich nur das Dagu Rover 5 Chassis in Frage. Von der Gr&#246;&#223;e und Ausstattung ideal. Meine Wahl viel, auf die 2WD Version mit Encodern und dem zugeh&#246;rigen Dagu Motor Treiber Board. Im Chassis ist gen&#252;gend Platz um ein 7.2V Batterie-Pack und die Verkabelung f&#252;r die Stromversorgung unterzubringen.<br />
Hinten am Chassis sind Anschl&#252;sse f&#252;r Netzteilbetrieb und Akku Ladebuchsen angebracht. Zudem der obligatorische Netzschalter. Damit wird zwischen Netz/Akkubetrieb und dem Laden des Akkus umgeschaltet. Damit erspart man sich das l&#228;stige Aufschrauben des Chassis um den Akku-Pack zu wechseln.</p>
<p><a href="http://lh4.ggpht.com/-cFBW80si4hA/TwirRq1RxqI/AAAAAAAAEqE/J4faOR03hLQ/IMG_2344_5_6_tonemapped.tif.jpg" title="IMG_2344_5_6_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/-cFBW80si4hA/TwirRq1RxqI/AAAAAAAAEqE/J4faOR03hLQ/s400/IMG_2344_5_6_tonemapped.tif.jpg" alt="IMG_2344_5_6_tonemapped.tif.jpg" title="IMG_2344_5_6_tonemapped.tif.jpg" class="alignnone" width="400" /></a> </p>
<h3>IOIO Tr&#228;gerboard</h3>
<p>Das IOIO-Baord sitzt nun auf einem eigenen Tr&#228;gerboard. Dort sind alle IOs des IOIO-Board auf 3pin Steckverbinder gef&#252;hrt. Diese haben die &#252;bliche Servo Verdrahtung (Signal, VCC, GND). Die Versorgungsspannung kann &#252;ber Jumper f&#252;r Gruppen von IOs festgelegt werden. 3.3V, 5V vom IOIO-Board oder 5..6V von einer externen Spannungsquelle (vornehmlich f&#252;r Servos).  Die Gr&#246;&#223;e des Boards stimmt mit dem Motor Treiber Board &#252;berein.<br />
<a href="http://lh3.ggpht.com/-A6ngnHXi1lY/TwirP9P30kI/AAAAAAAAEqA/gn7GU1XjijM/IMG_2338_39_40_tonemapped.tif.jpg" title="IMG_2338_39_40_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/-A6ngnHXi1lY/TwirP9P30kI/AAAAAAAAEqA/gn7GU1XjijM/s400/IMG_2338_39_40_tonemapped.tif.jpg" alt="IMG_2338_39_40_tonemapped.tif.jpg" title="IMG_2338_39_40_tonemapped.tif.jpg" class="alignnone" width="400" /></a> </p>
<h3>Front Sensoren</h3>
<p>Zu dem bereits in Version 1 verwendeten Dagu Compound Eye kam noch ein HC-SR04 Ultraschall Sensor hinzu. Dieser l&#228;&#223;t sich sehr leicht &#252;ber 2 digitale Pins anschliessen. Ein Trigger Pin und ein Echo Pin f&#252;r das empfangene Signal. Die L&#228;nge des Echo Impulses entspricht der Laufzeit des Ultraschall Impulses zum Objekt und zur&#252;ck. Beide Sensoren sind wie bei der Vorg&#228;ngerversion auf dem Lynxmotion Pan/Tilt Kopf befestigt. Derzeit werden die beiden Servos direkt vom IOIO-Board mit 5V versorgt.<br />
<a href="http://lh6.ggpht.com/-xPNk6OMf49c/TwirbIQlMRI/AAAAAAAAEqc/ZnlcnbP77xE/IMG_2368_69_70_tonemapped.tif.jpg" title="IMG_2368_69_70_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh6.ggpht.com/-xPNk6OMf49c/TwirbIQlMRI/AAAAAAAAEqc/ZnlcnbP77xE/s400/IMG_2368_69_70_tonemapped.tif.jpg" alt="IMG_2368_69_70_tonemapped.tif.jpg" title="IMG_2368_69_70_tonemapped.tif.jpg" class="alignnone" width="400" /></a> </p>
<h3>R&#252;ckansicht</h3>
<p>Die R&#252;ckansicht hat sich gegen&#252;ber dem Foto inzwischen ge&#228;ndert. Elektronik und Handyhalterung haben die Pl&#228;tze getauscht. Sonst w&#228;ren die Schrauben zum Chassis nicht mehr zug&#228;nglich.<br />
<a href="http://lh5.ggpht.com/-Hgc4ZGyo_S4/TwireO9wLII/AAAAAAAAEqk/1GkKKtT2QFk/IMG_2374_5_6_tonemapped.tif.jpg" title="IMG_2374_5_6_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh5.ggpht.com/-Hgc4ZGyo_S4/TwireO9wLII/AAAAAAAAEqk/1GkKKtT2QFk/s400/IMG_2374_5_6_tonemapped.tif.jpg" alt="IMG_2374_5_6_tonemapped.tif.jpg" title="IMG_2374_5_6_tonemapped.tif.jpg" class="alignnone" width="400" /></a> </p>
<h3>ToDo-Liste</h3>
<p>Inzwischen ist die Verdrahtung kompletiert jetzt fehlt nur noch die Programmierung. Die Umstellung der Programme von Version 1 sollte kein allzu gro&#223;en H&#252;rden darstellen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/ioio-shr-version-2/684/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IOIO-SHR &#8211; Java programmierbarer Roboter</title>
		<link>http://www.robotfreak.de/blog/robotik/ioio-shr-java-programmierbarer-roboter/672</link>
		<comments>http://www.robotfreak.de/blog/robotik/ioio-shr-java-programmierbarer-roboter/672#comments</comments>
		<pubDate>Mon, 02 Jan 2012 00:06:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[IOIO]]></category>
		<category><![CDATA[Robotik]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=672</guid>
		<description><![CDATA[IOIO-SHR (IOIO Start Here Robot) ist mein erster Roboter der in Java programmiert werden kann. Das Gehirn bildet ein Android Handy (Nexus One). Die Hardware wird von einem Sparkfun IOIO Board angesteuert. Das IOIO Board selbst muss nicht programmiert werden. Die IOIO Firmware gestattet einen bequemen Zugriff auf die 48 IOs &#252;ber die ADB Schnittstelle [...]]]></description>
			<content:encoded><![CDATA[<p>IOIO-SHR (IOIO Start Here Robot) ist mein erster Roboter der in Java programmiert werden kann. Das Gehirn bildet ein Android Handy (Nexus One). Die Hardware wird von einem <a href="http://www.sparkfun.com/products/10748" class="liexternal">Sparkfun IOIO Board</a> angesteuert. Das IOIO Board selbst muss nicht programmiert werden. Die IOIO Firmware gestattet einen bequemen Zugriff auf die 48 IOs &#252;ber die ADB Schnittstelle (Android Dedug Mode). Spezielle Peripherie wie I2C, SPI, PWM werden ebenso unterst&#252;tzt wie analoge Inputs und digitale IOs.</p>
<p><a href="http://lh3.ggpht.com/-5-pkRqqpGNE/Tvuoq00IWZI/AAAAAAAAEps/hVCkwfFMmS8/001_2_3_tonemapped.tif.jpg" title="001_2_3_tonemapped.tif.jpg" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/-5-pkRqqpGNE/Tvuoq00IWZI/AAAAAAAAEps/hVCkwfFMmS8/s500/001_2_3_tonemapped.tif.jpg" alt="001_2_3_tonemapped.tif.jpg" title="001_2_3_tonemapped.tif.jpg" class="alignnone" width="400" /></a> </p>
<p><span id="more-672"></span></p>
<h2>Hardware</h2>
<p>Das Chassis besteht aus einer 3mm dicken Polystyrol Platte. Zun&#228;chst wurde mit SketchUp eine Bohrschablone entworfen.<br />
<a href="http://lh5.ggpht.com/-fPPbe_U_9xo/Tu5f8OWSU3I/AAAAAAAAEnY/6fP0-r2egww/ioio-shr-chassis.jpg" title="IOIO-SHR chassis drill template" rel="lightbox" class="liimagelink"><img src="http://lh5.ggpht.com/-fPPbe_U_9xo/Tu5f8OWSU3I/AAAAAAAAEnY/6fP0-r2egww/s500/ioio-shr-chassis.jpg" alt="ioio-shr-chassis.jpg" title="IOIO-SHR chassis drill template" class="alignnone" width="400" /></a> </p>
<p>Der Antrieb besteht aus 2 gehackten Servos und Pololu R&#228;dern mit Servo Befestigung. Die Servos sind mit selbstgemachten Halterungen mit dem Chassis verbunden. Eine Deo Roller Kugel dient als St&#252;tzrad. Als Bumper Sensoren wurden zun&#228;chst Taster mit Kabelbinder Schleifen verwendet. Das erwies sich aber als zu unsicher. Die Kabelbinder fielen schon sehr bald ab.</p>
<p><a href="http://lh4.ggpht.com/-MURp82775HA/Tu5dMI5h3iI/AAAAAAAAEnI/mqOp3QiLQQc/090.JPG" title="IOIO-SHR upside down" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/-MURp82775HA/Tu5dMI5h3iI/AAAAAAAAEnI/mqOp3QiLQQc/s500/090.JPG" alt="090.JPG" title="IOIO-SHR upside down" class="alignnone" width="400" /></a> </p>
<p>Das IOIO Board ist mit Klettband mit dem Chassis verbunden ebenso das Breakout Board mit 3poligen Stiftleisten (GND, VCC, Signal) f&#252;r 16 IOs. Jeweils 8 davon k&#246;nnen &#252;ber Jumper mit der Batteriespannung bzw. mit 5V verbunden werden. Wegen der Servos wurde die Batteriespannung auf 6V mit 5xAA Zellen festgelegt. Das IOIO Board ist zwar ein 3V Board, aber viele IOs sind 5V tolerant ausgelegt. Lediglich bei den Analog Eing&#228;ngen muss man aufpassen, die funktionieren nur bis max. 3.3V.</p>
<p><a href="http://lh4.ggpht.com/-GQfatCsH_kA/Tu5dLeWcX4I/AAAAAAAAEnE/zvu04ObEHdE/098.JPG" title="IOIO Controller" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/-GQfatCsH_kA/Tu5dLeWcX4I/AAAAAAAAEnE/zvu04ObEHdE/s500/098.JPG" alt="098.JPG" title="IOIO Controller" class="alignnone" width="400" /></a> </p>
<p>Bis zu 16 analoge Eing&#228;nge k&#246;nnen am IOIO Board angeschlossen werden. Davon sind derzeit 10 belegt, 6 f&#252;r die Liniensensoren und 4 f&#252;r den Compound Eye Sensor. Das Compound Eye ist eine vereinfachte Art eines Insekten Facettenauges. 4&#215;2 Fototransistoren erlauben eine Richtungserkennung f&#252;r Objekte und Hindernisse. Auf einem Pan/Tilt Einheit montiert kann der Roboter damit Objekte verfolgen oder die Lage von Hindernisse erkennen. Auf dem Infratot Foto ist zu erkennen, dass die schwarzen Fototransistoren im Infrarot Bereich durchsichtig sind.</p>
<p><a href="http://lh4.ggpht.com/-28IBTK-W_h8/Tv2_06qrJrI/AAAAAAAAEp0/jMDPtPPLS9A/073.JPG" title="073.JPG" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/-28IBTK-W_h8/Tv2_06qrJrI/AAAAAAAAEp0/jMDPtPPLS9A/s500/073.JPG" alt="073.JPG" title="073.JPG" class="alignnone" width="400" /></a> </p>
<h2>Software</h2>
<p>Die Software basiert auf den Beispielen zur IOIO-Library. Auch ohne grosse Ahnung von Java gelang es mir damit recht einfach eigene Android Apps zu schreiben. Das <a href="http://www.sparkfun.com/tutorials/280" class="liexternal">Sparkfun IOIO Tutorial</a> zeigt alles notwendige um eigene Apps zu entwickeln. Im <a href="https://github.com/ytai/ioio/wiki" class="liexternal">IOIO Wiki</a> werden alle wichitigen Funktionen der IOIO-Library erl&#228;utert. Ebenso wichtige Tips &#252;ber den Anschluss der Hardware. Die Quellecodes zu den verschiedenen Apps befinden sich auf meiner <a href="http://code.google.com/p/robotfreak/" class="liexternal">Google Code Seite</a>.</p>
<p>Bei der Programmierung war es mir wichtig, dass der Roboter autonomes Verhalten zeigt. Der Bildschirm des Android Phones erm&#246;glicht zudem eine pr&#228;zise Echtzeit Anzeige der Sensoren und Aktoren und eine einfache manuelle Steuerung der Aktoren.</p>
<p><a href="http://lh3.ggpht.com/-06cCFGgxXWo/TvujjYIKluI/AAAAAAAAEpg/uqESj9D1ZOg/009.JPG" title="009.JPG" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/-06cCFGgxXWo/TvujjYIKluI/AAAAAAAAEpg/uqESj9D1ZOg/s500/009.JPG" alt="009.JPG" title="009.JPG" class="alignnone" width="400" /></a> </p>
<h2>Videos</h2>
<p>Das erste Video zeigt den IOI-SHR beim Ausweichen von Hindernissen (mehr oder weniger)<br />
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/IGkqdokwDXQ" frameborder="0" allowFullScreen="true"> </iframe></p>
<p>Das zweite Video zeigt den IOIO-SHR beim Linienfolgen<br />
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/7oPWN1_5u1E" frameborder="0" allowFullScreen="true"> </iframe></p>
<p>Im dritten Video zeigt der IOIO-SHR beim Verfolgen von Gegenst&#228;nden.<br />
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/8w-0x8YQ064" frameborder="0" allowFullScreen="true"> </iframe></p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://www.sparkfun.com/products/10748" class="liexternal">Sparkfun IOIO Board</a></li>
<li><a href="http://www.sparkfun.com/tutorials/280" class="liexternal">Sparkfun IOIO Tutorial</a></li>
<li><a href="https://github.com/ytai/ioio/wiki" class="liexternal">IOIO Wiki</a></li>
<li><a href="http://letsmakerobots.com/node/30351" class="liexternal">IOIO-SHR Thread auf letsmakerobots</a></li>
<li><a href="http://code.google.com/p/robotfreak/wiki/IoioShr" class="liexternal">IOIO-SHR Code auf Google Code</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/ioio-shr-java-programmierbarer-roboter/672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Open Accessory DIY Demo Kit</title>
		<link>http://www.robotfreak.de/blog/mikrocontroller/android-open-accessory-diy-demo-kit/603</link>
		<comments>http://www.robotfreak.de/blog/mikrocontroller/android-open-accessory-diy-demo-kit/603#comments</comments>
		<pubDate>Mon, 16 May 2011 20:25:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Mikrocontroller]]></category>
		<category><![CDATA[ADK]]></category>
		<category><![CDATA[Open Accessory]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=603</guid>
		<description><![CDATA[Auf der Google I/O 2011 Konferenz wurde das neue Android Open Accessory Development Kit (ADK) vorgestellt. Da die vorgestellten Entwickler Boards zu teuer bzw. nicht verf&#252;gbar sind, m&#246;chte ich hier zeigen wie man sich sein eigenes ADK Demo Board mit einem normalen Arduino Uno Board baut. Das ADK dient dazu, intelligentes Zubeh&#246;r an sein Android [...]]]></description>
			<content:encoded><![CDATA[<p>Auf der <a href="http://www.google.com/events/io/2011/index-live.html" class="liexternal">Google I/O 2011</a> Konferenz wurde das neue<a href="http://developer.android.com/guide/topics/usb/adk.html" class="liexternal"> Android Open Accessory Development Kit (ADK)</a> vorgestellt. Da die vorgestellten Entwickler Boards zu teuer bzw. nicht verf&#252;gbar sind, m&#246;chte ich hier zeigen wie man sich sein eigenes ADK Demo Board mit einem normalen Arduino Uno Board baut.<br />
<a href="http://lh4.ggpht.com/_9e10QjiGiuE/Tc2WzeeNmvI/AAAAAAAAD2w/g9j3y93YVwA/IMG_2071.JPG" title="IMG_2071.JPG" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/_9e10QjiGiuE/Tc2WzeeNmvI/AAAAAAAAD2w/g9j3y93YVwA/h400/IMG_2071.JPG" alt="IMG_2071.JPG" title="IMG_2071.JPG" class="alignnone" width="400" /></a><br />
<span id="more-603"></span><br />
Das ADK dient dazu, intelligentes Zubeh&#246;r an sein Android Handy anzuschliessen. Das kann z.B. eine Ladestation sein, die das Handy aufl&#228;dt und zudem beim Anschliessen ein besonderes Programm auf dem Handy startet.<br />
Damit das ganze funktioniert tauschen App und Zubeh&#246;r eine eindeutige Kennung aus damit die richtige App zum entsprechenden Zubeh&#246;r ge&#246;ffnet wird. Die Kommunikation l&#228;uft &#252;ber USB ab, wobei das Handy als USB client l&#228;uft und das Zubeh&#246;rteil als USB host.<br />
Das ADK wird nur von der neuesten Android Firmware unterst&#252;tzt, dies ist die v2..3.4 f&#252;r Handys und die v3.1 f&#252;r Tabletts. Deshalb l&#228;uft das ganze auch  nur auf wenigen Android Handys wie das Nexus One und das Nexus S. </p>
<p>Ich z&#228;hle zu den gl&#252;cklichen Nexus One Besitzern, allerdings mit einer Vodafone  Firmware der Version v2.1. So beschloss ich kurzerhand das Handy zu rooten um von der Vodafone Firmware wegzukommen zu einer aktuellen Google Firmware.  Das ging recht problemlos und innerhalb einer Stunde war die aktuelle Firmware auf meinem N1. Die Vorgehensweise zum Updaten kann man unter<a href="http://www.android-hilfe.de/nexus-one/59959-6-methoden-fuer-jeden-auf-die-stock-us-frg83d-upzudaten-alles-ohne-garantieverlust.html" class="liexternal"> Android-Hilfe.de</a>  nachlesen.</p>
<p>Die <a href="http://developer.android.com/guide/topics/usb/adk.html" class="liexternal">ADK Seite</a> beschreibt, was alles ben&#246;tigt wird um mit dem Accessory mode zu beginnen. Aus dem ADK package wurde die Android DemoKit App ohne &#196;nderungen &#252;bernommen. Anstelle des DemoKits wird ein selbstgebasteltes DemoKit verwendet, bestehend aus einem Arduino Uno, einem, <a href="http://www.sparkfun.com/products/9947" class="liexternal">Sparkfun USB Host</a> shield und ein selbstgebautes IO shield.</p>
<p>Achtung: Das Sparkfun Host shieldarbeitet nicht mit einem Ardunio Mega oder Mega2560 wegen der verschiedenen SPI pins. Man kann aber das USB host shield v2.0 von <a href="http://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino/" class="liexternal">Circuits@home</a>  f&#252;r alle Arduino boards verwenden.Das Board ist allerdings etwas teuerer (40$) als das Sparkfun Shield (25$).</p>
<p>Die Arduino Firmware wurde auf den Arduino Uno bzw. Mega durch <a href="http://romfont.com/" class="liexternal">Romfont alias Inopia</a> vorgenommen, dem Entwickler der <a href="http://code.google.com/p/microbridge/" class="liexternal">MicroBridge </a>(Android zu Arduino Bridge via ADB). Weil Romfont kein Handy mit v2.3.4 zur Verf&#252;gung hatte, bat er auf seinem Blog um <a href="http://romfont.com/2011/05/12/google%E2%80%99s-open-accessory-development-kit-on-standard-arduino-hardware/" class="liexternal">Unterst&#252;tzung</a> um die Firmware zu testen. Die Firmware funktionierte bei mir nach einigen kleineren Modifikationen.<br />
<a href="http://lh6.ggpht.com/_9e10QjiGiuE/Tc2WvlcezUI/AAAAAAAAD2g/kfMi8EnhVmM/IMG_2062.JPG" title="IMG_2062.JPG" rel="lightbox" class="liimagelink"><img src="http://lh6.ggpht.com/_9e10QjiGiuE/Tc2WvlcezUI/AAAAAAAAD2g/kfMi8EnhVmM/h400/IMG_2062.JPG" alt="IMG_2062.JPG" title="IMG_2062.JPG" class="alignnone" width="400" /></a> </p>
<p>Stapelbare Headers has been used on the USB Host shield, so the IO shield can be attached above. At twurden verwendet um das USB Host shield und das IO Shield auf dem Arduino zu stapeln. Im Moment steckt daran ein micro Servo, eine RGB LED, eine rote LED (anstelle eines Relais) und a Sharp GP2D12 Distanzsensor. Zudem wird noch eine externe Stromquelle ben&#246;tigt.</p>
<p><a href="http://lh4.ggpht.com/_9e10QjiGiuE/Tc2WxZ6hOTI/AAAAAAAAD2o/15LC_URU5Ws/IMG_2069.JPG" title="IMG_2069.JPG" rel="lightbox" class="liimagelink"><img src="http://lh4.ggpht.com/_9e10QjiGiuE/Tc2WxZ6hOTI/AAAAAAAAD2o/15LC_URU5Ws/h400/IMG_2069.JPG" alt="IMG_2069.JPG" title="IMG_2069.JPG" class="alignnone" width="400" /></a> </p>
<p><a href="http://lh3.ggpht.com/_9e10QjiGiuE/Tc2Wycg0uTI/AAAAAAAAD2s/ZbufrHpsBpw/IMG_2070.JPG" title="IMG_2070.JPG" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/_9e10QjiGiuE/Tc2Wycg0uTI/AAAAAAAAD2s/ZbufrHpsBpw/h400/IMG_2070.JPG" alt="IMG_2070.JPG" title="IMG_2070.JPG" class="alignnone" width="400" /></a> </p>
<h2>Videos</h2>
<p>Das Video zeigt einen ersten Test des  DIY DemoKit. Alles funktioniert ganz prima. Nach dem Einschalten des DemoKits geht das Handy in den Lade Modus. Schaltet man die Tastensperre aus, kommt die Abfrage ob man die App f&#252;r das erkannte Zubeh&#246;r starten will (das kann man auch durch Setzen des Hakens automatisieren). Dann startet die App. Zwischen den beiden Fenstern (Input und Output) kann man wechseln 7und sich die Werte der Eing&#228;nge anschauen oder die Ausg&#228;nge bedienen.</p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/BqD5-chWdDY" frameborder="0" allowFullScreen="true"> </iframe> </p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://developer.android.com/guide/topics/usb/adk.html" class="liexternal">Getting started with ADK</a></li>
<li><a href="http://romfont.com/" class="liexternal">Romfont&#8217;s Blog</a></li>
<li><a href="http://code.google.com/p/microbridge/" class="liexternal">MicroBridge Code</a></li>
<li><a href="http://letsmakerobots.com/node/26839" class="liexternal">mein Letsmakerobots Blog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/mikrocontroller/android-open-accessory-diy-demo-kit/603/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Android App Inventor</title>
		<link>http://www.robotfreak.de/blog/robotik/android-app-inventor/555</link>
		<comments>http://www.robotfreak.de/blog/robotik/android-app-inventor/555#comments</comments>
		<pubDate>Sun, 27 Mar 2011 20:50:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[MASHR]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[App Inventor]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Bluetooth]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=555</guid>
		<description><![CDATA[Bei der Entwicklung von MASHR gefiel mir die Idee, den Roboter &#252;ber das Android Handy fernsteuern zu k&#246;nnen. Die Cellbots Applikation ist echt genial. Leider ist es mit meinen Java Programmier K&#252;nsten nicht weit her um so ein Programm selbst zu schreiben. Allerdings geht es auch ohne Java und gro&#223;en Programmierkentnissen, dank Googles App Inventor. [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Entwicklung von <a href="/blog/?tag=mashr" class="liinternal">MASHR</a> gefiel mir die Idee, den Roboter &#252;ber das Android Handy fernsteuern zu k&#246;nnen. Die <a href="http://cellbots.com/" class="liexternal">Cellbots</a> Applikation ist echt genial. Leider ist es mit meinen Java Programmier K&#252;nsten nicht weit her um so ein Programm selbst zu schreiben. Allerdings geht es auch ohne Java und gro&#223;en Programmierkentnissen, dank <a href="http://appinventor.googlelabs.com/about/" class="liexternal">Googles App Inventor</a>.<br />
<a href="http://lh3.ggpht.com/_9e10QjiGiuE/TY9mpCXPBUI/AAAAAAAADtI/nlsRcyXG-m0/IMG_1545.JPG" title="IMG_1545.JPG" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/_9e10QjiGiuE/TY9mpCXPBUI/AAAAAAAADtI/nlsRcyXG-m0/h400/IMG_1545.JPG" alt="IMG_1545.JPG" title="IMG_1545.JPG" class="alignnone" width="400" /></a><br />
<span id="more-555"></span></p>
<h2>Installation</h2>
<p>Die Installation von App Inventor ist denkbar einfach. Man braucht nur einen Google Account und eine aktuelle Java 6 Version. Die <a href="http://appinventor.googlelabs.com/learn/setup/" class="liexternal">Installations Anleitung</a> zeigt die notwendigen Schritte f&#252;r Windows, MacOS und Linux.  </p>
<h2>Einleitung</h2>
<p>Entwickelt wird unter App Inventor direkt im Browser. Die Programme werden auch nicht lokal abgelegt sondern landen direkt in der Google cloud.  </p>
<p>Zun&#228;chst entwirft man die Oberfl&#228;che der Anwendung. Alles grafisch per Drag and drop. Wer mit Visual Studio oder anderen grafischen Programmier Tools arbeitert, wird sich schnell damit zurecht finden.</p>
<p>Die eigentliche Programmierung findet dann im Blocks Editor statt. Programmiert wird auch hier grafisch mit einer Art von Code Puzzle Bausteinen. Man zieht einfach die gew&#252;nschte Funktionen oder Variable auf den Bildschirm und editert deren Eigenschaftemn. Ein Main Progamm sucht man vergeblich. Alles ist Event gesteuert, z.B. l&#246;st der Druck einer Taste ein Buttonx.Click Event aus. </p>
<p>Es empfiehlt sich zumindest die <a href="http://appinventor.googlelabs.com/learn/tutorials/index.html" class="liexternal">Basis Tutorials</a> durchzuarbeiten, bevor man sich an eigene Programme wagt. </p>
<h2>Cellbot light</h2>
<p>Das erste selbgeschriebene App Inventor Programm ist  eine Cellbot Light Version. Es wird die bestehende Schnittstelle des Cellbot Codes verwendet um den Roboter &#252;ber die Bluetooth Schnittstelle steuern. Der Arduino Code bleibt unver&#228;ndert. Allerdings mu&#223;te ich nicht bei 0 anfangen. Eine bestehendes Beispiel, das <a href="http://ai.kittywolf.net/index.php/BlueTooth_Client_Connect" class="liexternal">Bluetooth Client Connect Example</a> von <a href="http://ai.kittywolf.net/index.php/Main_Page" class="liexternal">ShivalWolf</a> diente als Vorlage. App Inventor unterst&#252;tzt nur das Bluetooth SPP Profil, was hier vollkommen ausreicht.</p>
<h3>Programm Aufbau</h3>
<p>So sieht das Frontend Design im App Inventor aus. Connect Button zum Erstellen einer Bluetooth Verbindung. Ein steuerkreuz dient zur Roboter Steuerung. Die vewendeten Symbole stammen aus der freien <a href="http://openiconlibrary.sourceforge.net/" class="liexternal">Open Icon Library</a><br />
<a href="http://lh5.ggpht.com/_9e10QjiGiuE/TY89qitzDDI/AAAAAAAADl4/k8lI0fs02b8/RobotControl-app1.jpg" title="RobotControl-app1.jpg" rel="lightbox" class="liimagelink"><img src="http://lh5.ggpht.com/_9e10QjiGiuE/TY89qitzDDI/AAAAAAAADl4/k8lI0fs02b8/s150-c/RobotControl-app1.jpg" alt="RobotControl-app1.jpg" title="RobotControl-app1.jpg" class="alignnone" width="150" /></a> </p>
<p>Der Initialisierungs Code &#252;berpr&#252;ft, ob Bluetooth eingeschaltet ist und holt sich die letzten Verbindungs Infos aus einer Datenbank.<br />
<a href="http://lh3.ggpht.com/_9e10QjiGiuE/TY89rM6XZXI/AAAAAAAADl8/Ns6RN9Reklg/RobotControl-Initialize.jpg" title="RobotControl-Initialize.jpg" rel="lightbox" class="liimagelink"><img src="http://lh3.ggpht.com/_9e10QjiGiuE/TY89rM6XZXI/AAAAAAAADl8/Ns6RN9Reklg/s150-c/RobotControl-Initialize.jpg" alt="RobotControl-Initialize.jpg" title="RobotControl-Initialize.jpg" class="alignnone" width="150" /></a> </p>
<p>Die Liste der verf&#252;gbaren Bluetooth Devices. Das ausgew&#228;hlte Device wird in der Datenbank gespeichert.<br />
<a href="http://lh6.ggpht.com/_9e10QjiGiuE/TY89r7FTA-I/AAAAAAAADmU/5DS8WXzI6Iw/RobotControl-lstDevice.jpg" title="RobotControl-lstDevice.jpg" rel="lightbox" class="liimagelink"><img src="http://lh6.ggpht.com/_9e10QjiGiuE/TY89r7FTA-I/AAAAAAAADmU/5DS8WXzI6Iw/s150-c/RobotControl-lstDevice.jpg" alt="RobotControl-lstDevice.jpg" title="RobotControl-lstDevice.jpg" class="alignnone" width="150" /></a> </p>
<p>Der Code f&#252;r den Connect Buttton. Hier wird versucht, eine Verbindung zum ausgew&#228;hlten Bluetooth Device aufzunehmen. Besteht bereits eine Bluetooth Verbindung, kann diese durch den Button wieder geschlossen werden.<br />
<a href="http://lh6.ggpht.com/_9e10QjiGiuE/TY89sRaZljI/AAAAAAAADmI/qx03WIJ9BhQ/RobotControl-BtnConnect.jpg" title="RobotControl-BtnConnect.jpg" rel="lightbox" class="liimagelink"><img src="http://lh6.ggpht.com/_9e10QjiGiuE/TY89sRaZljI/AAAAAAAADmI/qx03WIJ9BhQ/s150-c/RobotControl-BtnConnect.jpg" alt="RobotControl-BtnConnect.jpg" title="RobotControl-BtnConnect.jpg" class="alignnone" width="150" /></a> </p>
<p>Die Control Buttons zur Roboter Steuerung senden den entsprechenden Befehl per Bluetooth zum Roboter. Das Protokoll ist recht simpel:</p>
<ul>
<li>&#8216;f&#8217; forward l&#228;&#223;t den Roboter f&#252;r 1s vorw&#228;rts fahren</li>
<li>&#8216;b&#8217; backward. R&#252;ckw&#228;rts fahren</li>
<li>&#8216;l&#8217; left. Links drehen</li>
<li>&#8216;r&#8217; right. Rechts drehen</li>
<li>&#8216;s&#8217; stop. Stoppt den Roboter</li>
</ul>
<p>Jeder Befehl wird durch einen Zeilenvorschub &#8216;\n&#8217; abgesschlossen.<br />
<a href="http://lh6.ggpht.com/_9e10QjiGiuE/TY89rgTMMcI/AAAAAAAADmQ/V5MZQDPX3zs/RobotControl-Buttons.jpg" title="RobotControl-Buttons.jpg" rel="lightbox" class="liimagelink"><img src="http://lh6.ggpht.com/_9e10QjiGiuE/TY89rgTMMcI/AAAAAAAADmQ/V5MZQDPX3zs/s150-c/RobotControl-Buttons.jpg" alt="RobotControl-Buttons.jpg" title="RobotControl-Buttons.jpg" class="alignnone" width="150" /></a> </p>
<p>Fehlermeldungs Ausgabe. Eventuell auftretende Fehler vom Bluetooth Interface werden hier abgefragt und auf dem User Screen ausgegeben.<br />
<a href="http://lh5.ggpht.com/_9e10QjiGiuE/TY89sgM74qI/AAAAAAAADmM/ScasBrcx8zM/RobotControl-ErrorOccured.jpg" title="RobotControl-ErrorOccured.jpg" rel="lightbox" class="liimagelink"><img src="http://lh5.ggpht.com/_9e10QjiGiuE/TY89sgM74qI/AAAAAAAADmM/ScasBrcx8zM/s150-c/RobotControl-ErrorOccured.jpg" alt="RobotControl-ErrorOccured.jpg" title="RobotControl-ErrorOccured.jpg" class="alignnone" width="150" /></a> </p>
<h3>Download</h3>
<p>Das Programm steht zum Download auf meiner <a href="http://robotfreak.googlecode.com/files/RobotControl.zip" class="lizip">Google Code Page</a> bereit. Zum Import einfach das Zip-File herunterladen und im App Inventor laden.</p>
<h2>Wie geht es weiter</h2>
<p>Das Senden &#252;ber Bluetooth ist recht einfach. Als n&#228;chstes steht der Bluetooth Empfang und die Darstellung der Sensor Daten an. Da es kein Event zum Bluettoth Empfang gibt, mu&#223; hier ein TImer verwendet werden, der zyklisch die Bluetooth  Daten einliest.</p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://appinventor.googlelabs.com/about/" class="liexternal">App Inventor</a></li>
<li><a href="http://groups.google.com/group/programming-with-app-inventor" class="liexternal">App Inventor Forum</a></li>
<li><a href="http://www.theairepository.info/" class="liexternal">the App Inventor Repository  &#8211; tAIR</a></li>
<li><a href="http://groups.google.com/group/theairepository" class="liexternal">tAIR Forum</a></li>
<li><a href="http://ai.kittywolf.net/index.php/Main_Page" class="liexternal">ai.kittywolf.net</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/android-app-inventor/555/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter und QR Codes</title>
		<link>http://www.robotfreak.de/blog/allgemein/twitter-und-qr-codes/371</link>
		<comments>http://www.robotfreak.de/blog/allgemein/twitter-und-qr-codes/371#comments</comments>
		<pubDate>Fri, 02 Jul 2010 12:48:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Cellbots]]></category>
		<category><![CDATA[QR code]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=371</guid>
		<description><![CDATA[Es gibt ein paar Erneuerungen im Blog. Alle neuen Artikel werden nun auch auf Twitter ver&#246;ffentlicht und QR Codes zu den Artikeln erleichtern das Auffinden von Artikel mit Smartphones. QR Codes Jeder Artikel erh&#228;lt automatisch einen QR Code. Damit erh&#228;lt man einen direkten Link zum entsprechenden Artikel. Das ist n&#252;tzlich, wenn man z.B. einen Artikel [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt ein paar Erneuerungen im Blog. Alle neuen Artikel werden nun auch auf <a href="http://twitter.com/RoboterFreak" class="liexternal">Twitter</a> ver&#246;ffentlicht und QR Codes zu den Artikeln erleichtern das Auffinden von Artikel mit Smartphones.<br />
<span id="more-371"></span></p>
<h2>QR Codes</h2>
<p>Jeder Artikel erh&#228;lt automatisch einen <a href="http://de.wikipedia.org/wiki/QR-Code" rel="nofollow" class="liwikipedia">QR Code</a>.  Damit erh&#228;lt man einen direkten Link zum entsprechenden Artikel. Das ist n&#252;tzlich, wenn man z.B. einen Artikel unterwegs von einem Smartphone lesen m&#246;chte.  Man kann Einfach den QR Code mit einem QR Code Reader App einscannen und den Link speichern.</p>
<h3>Android</h3>
<p>Bei <a href="http://www.android.com/" class="liexternal">Android</a> werden diese QR Codes sehr vielf&#228;ltig verwendet. Zum einen als Download Links zum Automatischen Installieren von Apps aus dem <a href="http://www.android.com/market/#app=com.epocrates" class="liexternal">Android market</a>. Als allgemeine URL&#8217;s, auch Kontakte lassen sich dar&#252;ber generieren und mit ein paar Klicks Scannen und ins Adressbuch &#252;bernehmen. Selbst kleine Texte (bis 4096 Zeichen) oder Scripts (z.B. f&#252;r Python) kann man in einem QR Code verstecken, <a href="http://code.google.com/p/android-scripting/" class="liexternal">ASE (Android Scripting Environment)</a> verwendet diese Methode. Man kann sich solche QR Codes einfach online erstellen lassen, z.B. bei <a href="http://zxing.appspot.com/generator/" class="liexternal">ZXing (zebra crossing)</a>. Einfach die gew&#252;nschte Inhaltsform (contact, text, URL, &#8230;) ausw&#228;hlen und das Formular ausf&#252;llen.</p>
<h3>Robotik</h3>
<p>F&#252;r die Robotik fallen mir auch ein paar Verwendungszwecke f&#252;r QR Codes ein. Mein n&#228;chstes Projekt wird ein <a href="http://www.cellbots.com/" class="liexternal">Cellbot</a> clone werden. QR Codes k&#246;nnte man z.B. dazu verwenden:</p>
<ul>
<li>dem Roboter Anweisungen geben, z.B. &#8216;Folge der Linie&#8217;, &#8216;Drehe 90° nach rechts&#8217;, &#8217;100cm vorw&#228;rts&#8217;, etc.</li>
<li>kleine Skripte laden und ausf&#252;hren lassen</li>
<li>Dem Roboter Hinweise geben, wie man eine Aufgabe l&#246;sen kann, z.B um den Weg aus einem Labyrinth zu finden</li>
<li>Positionsangaben, in welchem Raum er sich befindet</li>
</ul>
<h2>Twitter</h2>
<p>Neue Artikel aus dem RobotFreak Blog und Roboter News findet man ab jetzt auch auf <a href="http://twitter.com/RoboterFreak" class="liexternal">Twitter</a>. </p>
<h3>Robotik</h3>
<p>Evtl. gibt es sp&#228;ter vielleicht auch mal einen twitternden Roboter, mal sehen.<br />
Klingt zwar erst mal nicht so spannend, was soll ein Roboter schon gro&#223; twittern. Das seine Akkus bald leer sind, hmmm. Interessanter w&#228;re es vielleicht einen Schwarm von Roboter &#252;ber Twitter zu steuern, bzw. die Roboter steuern sich selbst. </p>
<p>Ist aber vielleicht auch keine so gute Idee, sonst &#252;bernehmen die Maschinen doch noch eines Tages die Welt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/allgemein/twitter-und-qr-codes/371/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

