<?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>infoalive labs &#187; tips</title>
	<atom:link href="http://labs.infoalive.com/category/tips/feed" rel="self" type="application/rss+xml" />
	<link>http://labs.infoalive.com</link>
	<description>プロダクトの紹介とTipsのまとめサイト</description>
	<lastBuildDate>Fri, 04 Nov 2011 10:15:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>ストリートビューの[x]が押しにくい</title>
		<link>http://labs.infoalive.com/tips/301</link>
		<comments>http://labs.infoalive.com/tips/301#comments</comments>
		<pubDate>Wed, 09 Feb 2011 08:26:26 +0000</pubDate>
		<dc:creator>o2</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=301</guid>
		<description><![CDATA[iPad用の地図ページを作成していて思ったのですが、ストリートビューモードが使いにくいです。 [x](閉じる)が反応しない。。 仕方ないので地図の外にリンクを作りました。 &#60;script type="text/ja [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F301"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F301&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>iPad用の地図ページを作成していて思ったのですが、ストリートビューモードが使いにくいです。<br />
[x](閉じる)が反応しない。。<br />
仕方ないので地図の外にリンクを作りました。</p>
<p><code>&lt;script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"&gt;&lt;/script&gt;</code></p>
<p>&lt;script&gt;<br />
var LatLng = new google.maps.LatLng(35.3353548, 134.1196615);<br />
var map = new google.maps.Map(document.getElementById(&#8216;gmaps&#8217;), {<br />
zoom: 10,<br />
center: LatLng,<br />
});<br />
var panorama = map.getStreetView();<br />
google.maps.event.addListener(panorama, &#8220;visible_changed&#8221;, function () {<br />
if (panorama.getVisible()){<br />
$(&#8216;#StreetView&#8217;).show();<br />
} else {<br />
$(&#8216;#StreetView&#8217;).hide();<br />
}<br />
});</p>
<p>function StreetViewClose(){<br />
var panorama = map.getStreetView();<br />
panorama.setVisible();<br />
}<br />
&lt;/script&gt;<br />
&lt;div id=&#8221;StreetView&#8221;&gt;&lt;font size=+2&gt;&lt;a href=&#8221;javascript:StreetViewClose()&#8221;&gt;地図に戻る&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</p>
<g:plusone href="http://labs.infoalive.com/tips/301"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/301/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>twitter公式ウィジェットのtweet検索時に日本語のつぶやきのみ検索させる方法</title>
		<link>http://labs.infoalive.com/tips/288</link>
		<comments>http://labs.infoalive.com/tips/288#comments</comments>
		<pubDate>Thu, 06 Jan 2011 02:04:24 +0000</pubDate>
		<dc:creator>tanaka</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=288</guid>
		<description><![CDATA[twitterのサイト上では詳細検索オプションを使用することによって検索対象の言語や地域などを指定することが出来ます。 twitterをつぶやいているもののうち地域：日本周辺のつぶやきを抽出 twitter near:J [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F288"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F288&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>twitterのサイト上では詳細検索オプションを使用することによって検索対象の言語や地域などを指定することが出来ます。</p>
<p>twitterをつぶやいているもののうち地域：日本周辺のつぶやきを抽出</p>
<blockquote><p>twitter near:JP</p></blockquote>
<p>しかしこのキーワードを直接ウィジェットのsearchのパラメータとしてセットしても動作しません。</p>
<p>試行錯誤した結果、以下の方法で日本語tweetのみ抽出することが出来ました。</p>
<ul>
<li>widget.jsをダウンロード</li>
<li>テキストエディタでwidget.jsを開き以下の部分を検索
<ul>
<li>※可読性を上げるためにセミコロン; を ;\n など改行コード付きに置換した場合、291行目あたりになります</li>
</ul>
</li>
</ul>
<blockquote><p>this.url=this._base+this.format+&#8221;?q=&#8221;+this.search+&#8221;</p></blockquote>
<ul>
<li>検索した部分に対して &#8220;&amp;lang=ja&#8221; を追記</li>
</ul>
<blockquote><p>this.url=this._base+this.format+&#8221;?q=&#8221;+this.search+&#8221;&amp;lang=ja</p></blockquote>
<ul>
<li>編集したwidget.jsを自サイトにアップロード</li>
<li>jsファイルの読み込み先をhttp://widgets.twimg.com/j/2/widget.jsから先程アップロードしたURLに変更</li>
</ul>
<p>ちなみに、lang=jaではなくlocale=jaとした場合は日本国内でのつぶやきが対象となります。</p>
<g:plusone href="http://labs.infoalive.com/tips/288"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/288/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mbedについて語りました。</title>
		<link>http://labs.infoalive.com/tips/279</link>
		<comments>http://labs.infoalive.com/tips/279#comments</comments>
		<pubDate>Mon, 13 Dec 2010 08:04:32 +0000</pubDate>
		<dc:creator>o2</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[プレゼン]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=279</guid>
		<description><![CDATA[マイコンを語る View more presentations from otmb. ○ツインモーターはんだづけ完了、動作テスト ○wiiリモコンとmbedをBluetoothで接続し、ツインモーターを制御]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F279"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F279&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="width:425px" id="__ss_6138622"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/otmb/ss-6138622" title="マイコンを語る">マイコンを語る</a></strong><object id="__sse6138622" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=random-101213014841-phpapp02&#038;stripped_title=ss-6138622&#038;userName=otmb" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse6138622" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=random-101213014841-phpapp02&#038;stripped_title=ss-6138622&#038;userName=otmb" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/otmb">otmb</a>.</div>
</div>
<p>○ツインモーターはんだづけ完了、動作テスト<br />
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/S2rj54YU_cc?fs=1&amp;hl=ja_JP"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/S2rj54YU_cc?fs=1&amp;hl=ja_JP" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>○wiiリモコンとmbedをBluetoothで接続し、ツインモーターを制御<br />
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Lxlb-mBv3dU?fs=1&amp;hl=ja_JP"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Lxlb-mBv3dU?fs=1&amp;hl=ja_JP" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<g:plusone href="http://labs.infoalive.com/tips/279"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/279/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneでWebサイトの表示が小さい場合の対処法</title>
		<link>http://labs.infoalive.com/tips/201</link>
		<comments>http://labs.infoalive.com/tips/201#comments</comments>
		<pubDate>Thu, 22 Jul 2010 06:50:36 +0000</pubDate>
		<dc:creator>tanaka</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[スマートフォン]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=201</guid>
		<description><![CDATA[先日のiPhone自動文字縮小について記述しましたが、今回iPhone向けサイトを構築していて、シミュレータなどと比較すると非常に画像サイズが小さく、縮小されて表示されてしまうという現象となりました。 どうも、iPhon [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F201"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F201&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>先日のiPhone自動文字縮小について記述しましたが、今回iPhone向けサイトを構築していて、シミュレータなどと比較すると非常に画像サイズが小さく、縮小されて表示されてしまうという現象となりました。</p>
<p>どうも、iPhoneはデフォルト横幅960pixとしてレンダリングし、それをiPhoneの解像度にあわせて縮小表示するようです。</p>
<p>これを実際のpixelにあわせて表示させるためにはmetaタグにて viewportの指定を行う必要があります。</p>
<p>iPhone3 iPhone3GSの解像度ぴったりにあわせる場合には</p>
<p>&lt;meta name=&#8221;viewport&#8221; content=&#8221;width=320&#8243; /&gt;</p>
<p>と指定することによって、サイトを横幅320pixとしてレンダリングして表示されます。</p>
<p>これでも文字が小さいと感じる場合は前回のエントリの-webkit-text-size-adjust とあわせると良いでしょう。</p>
<g:plusone href="http://labs.infoalive.com/tips/201"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/201/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneでWebサイトを表示した場合の文字サイズの調整</title>
		<link>http://labs.infoalive.com/tips/197</link>
		<comments>http://labs.infoalive.com/tips/197#comments</comments>
		<pubDate>Thu, 08 Jul 2010 10:10:57 +0000</pubDate>
		<dc:creator>tanaka</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[スマートフォン]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=197</guid>
		<description><![CDATA[iPhoneのsafariではWebサイトを最適に表示するために文字サイズを自動調整する機能を持っています。 しかし、携帯向けのサイトと共通のHTMLで表示した場合に予想外にサイズが小さくなり文字が読みづらくなってしまう [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F197"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F197&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>iPhoneのsafariではWebサイトを最適に表示するために文字サイズを自動調整する機能を持っています。</p>
<p>しかし、携帯向けのサイトと共通のHTMLで表示した場合に予想外にサイズが小さくなり文字が読みづらくなってしまう場合があります。</p>
<p>この場合、-webkit-text-size-adjust という属性を設定し文字サイズの自動調整をOFFまたは倍率固定することで回避できます。</p>
<blockquote><p>例：</p>
<p>&lt;html style=&#8221;-webkit-text-size-adjust:none;&#8221;&gt;</p>
<p>↑自動調整をOFFにする</p>
<p>&lt;html style=&#8221;-webkit-text-size-adjust:150%;&#8221;&gt;</p>
<p>↑文字サイズを1.5倍にする</p></blockquote>
<g:plusone href="http://labs.infoalive.com/tips/197"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/197/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QステアをArduinoから操作</title>
		<link>http://labs.infoalive.com/tips/155</link>
		<comments>http://labs.infoalive.com/tips/155#comments</comments>
		<pubDate>Mon, 09 Nov 2009 01:57:45 +0000</pubDate>
		<dc:creator>o2</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Q STEER]]></category>
		<category><![CDATA[Qステア]]></category>
		<category><![CDATA[タカラトミー]]></category>
		<category><![CDATA[チョロQ]]></category>
		<category><![CDATA[ラジコン]]></category>
		<category><![CDATA[赤外線LED]]></category>
		<category><![CDATA[赤外線リモコン受信モジュール]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=155</guid>
		<description><![CDATA[今回は、タカラトミーのQ STEERをArduinoから操作するハックになります。 先週末、日本橋にある共立電子産業株式会社 3階のセンサー売り場にて赤外線のパーツ類を購入しました。 そんなわけで日曜大工エンジニアです。 [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F155"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F155&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>今回は、タカラトミーの<a href="http://www.takaratomy.co.jp/products/qsteer/" target="_blank">Q STEER</a>をArduinoから操作するハックになります。</p>
<p>先週末、日本橋にある<a href="http://www.kyohritsu.com/" target="_blank">共立電子産業株式会社</a> 3階のセンサー売り場にて赤外線のパーツ類を購入しました。</p>
<p>そんなわけで日曜大工エンジニアです。</p>
<p>○赤外線LED<br />
東芝製 TLN115A(大)　60円<br />
東芝製 TLN119(小)　80円</p>
<p>○赤外線リモコン受信モジュール<br />
EVERLIGHT製 IRM-3638N3　210円</p>
<table border="0">
<tbody>
<tr>
<td align="center" valign="top"><a href="http://labs.infoalive.com/wp-content/uploads/2009/11/398.jpg"><img class="alignnone size-thumbnail wp-image-152" title="赤外線LED" src="http://labs.infoalive.com/wp-content/uploads/2009/11/398-150x150.jpg" alt="赤外線LED" width="150" height="150" /></a></td>
<td align="center" valign="top"><a href="http://labs.infoalive.com/wp-content/uploads/2009/11/399.jpg"><img class="alignnone size-thumbnail wp-image-153" title="赤外線リモコン受信モジュール" src="http://labs.infoalive.com/wp-content/uploads/2009/11/399-150x150.jpg" alt="赤外線リモコン受信モジュール" width="150" height="150" /></a><br />
左からOUTPUT、GND、vcc(2.5-5.5V)</td>
<td align="center" valign="top"><a href="http://labs.infoalive.com/wp-content/uploads/2009/11/400.jpg"><img class="alignnone size-thumbnail wp-image-154" title="赤外線受信用回路" src="http://labs.infoalive.com/wp-content/uploads/2009/11/400-150x150.jpg" alt="赤外線受信用回路" width="150" height="150" /></a><br />
赤外線受信用回路</td>
</tr>
</tbody>
</table>
<p>赤外線解析用コードは、Arduinoのサイトから<a href="http://www.arduino.cc/playground/Code/InfraredReceivers">Infrared receiver modules</a>のコードを利用して解析しました。</p>
<p>○キャプチャ値<br />
データーの０と１が点灯、消灯の間隔。<br />
点灯時は常に点灯しているのではなく、ON、OFFを繰り返します。<br />
この繰り返しの間隔次第で変調信号として機能してます。<br />
今回は38khzの変調信号での利用となります。</p>
<p>&#8212;- ここから<br />
0    0<br />
1796    0<br />
1796    1<br />
2168    1<br />
2168    0<br />
2648    0<br />
2648    1<br />
3016    1<br />
&#8230;. 略<br />
157372    0<br />
158284    0<br />
158284    1<br />
&#8212;- ここまで<br />
<a href="http://abetuyo.net/blog/2007/05/q_1.html" target="_blank">Qステア赤外線解析のサイト</a>に書かれているのとほぼ同じ値が返ってきてます。</p>
<p>他には、1回の操作で２回同じ信号が送信されており、2回目の信号を送る間隔はch毎に異なっています。<br />
Ach 間隔 7516<br />
Bch 間隔 21860<br />
Cch 間隔 36212<br />
Dch 間隔 50568</p>
<p>チャネル毎に操作する場合は必要と考えれます。</p>
<p>○Ach の前進用サンプルコード<br />
キャプチャした値の点灯間隔をサンプルコードに設定<br />
<code><br />
#define LED 13<br />
unsigned long us = micros();</code></p>
<p>void setup(){</p>
<p style="padding-left: 30px;">pinMode(LED , OUTPUT);</p>
<p>}</p>
<p>void loop(){</p>
<p style="padding-left: 30px;">digitalWrite(LED, LOW);</p>
<p style="padding-left: 30px;">delay(1000);</p>
<p style="padding-left: 30px;">int testdata[] = {1796 ,372 ,480 ,368 ,480 ,368 ,480 ,368 ,480 ,372 ,480 ,364 ,912 ,7516 ,1744 ,396 ,480 ,372 ,476 ,368 ,484 ,364 ,484 ,364 ,484 ,368 ,912 ,93576 ,1792 ,372 ,452 ,400 ,480 ,368 ,476 ,368 ,480 ,372 ,480 ,368 ,908 ,7512 ,1772 ,368 ,480 ,372 ,476 ,368 ,480 ,368 ,484 ,364 ,484 ,368 ,908 ,15680 ,1800 ,368 ,456 ,392 ,480 ,368 ,912 };</p>
<p style="padding-left: 30px;">for (int cnt = 0; cnt &lt; 500; cnt++) {</p>
<p style="padding-left: 60px;">unsigned long len = testdata[cnt];</p>
<p style="padding-left: 60px;">if (len == 0) break;</p>
<p style="padding-left: 60px;">unsigned long us = micros();</p>
<p style="padding-left: 60px;">do {</p>
<p style="padding-left: 90px;">digitalWrite(LED, 1 &#8211; (cnt&amp;1)); // iが偶数なら赤外線ON、奇数なら0のOFFのまま</p>
<p style="padding-left: 90px;">delayMicroseconds(8);  // キャリア周波数38kHzでON/OFFするよう時間調整</p>
<p style="padding-left: 90px;">digitalWrite(LED, 0);</p>
<p style="padding-left: 90px;">delayMicroseconds(7);</p>
<p style="padding-left: 60px;">} while (long(us + len &#8211; micros()) &gt; 0);</p>
<p style="padding-left: 30px;">}</p>
<p>}</p>
<p>以上が今回のハックの内容となります。</p>
<p>前回と違い非常に安価にラジコンが製作出来ます。</p>
<p>また、赤外線は様々な用途での利用が考えれます。</p>
<p>今後も発想次第で色々作れそうです。</p>
<g:plusone href="http://labs.infoalive.com/tips/155"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/155/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>その後のラジコン</title>
		<link>http://labs.infoalive.com/tips/139</link>
		<comments>http://labs.infoalive.com/tips/139#comments</comments>
		<pubDate>Fri, 30 Oct 2009 08:20:22 +0000</pubDate>
		<dc:creator>o2</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[wii]]></category>
		<category><![CDATA[XBee]]></category>
		<category><![CDATA[ラジコン]]></category>
		<category><![CDATA[車]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=139</guid>
		<description><![CDATA[すっかりブログを書くのを忘れてました。 本日返信がついたので思い出した次第です。 あれから、ラジコンはサーバーに繋いだXBeeを介し、flashやjava applet から操作が可能となりました。 構成図はこんな感じで [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F139"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F139&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>すっかりブログを書くのを忘れてました。</p>
<p>本日返信がついたので思い出した次第です。</p>
<p>あれから、ラジコンはサーバーに繋いだXBeeを介し、flashやjava applet から操作が可能となりました。</p>
<p>構成図はこんな感じです。先日社内のプレゼンで使った資料の流用になります。</p>
<p><img class="alignnone size-full wp-image-141" title="ハード構成図" src="http://labs.infoalive.com/wp-content/uploads/2009/10/arduino1.PNG" alt="ハード構成図" width="535" height="401" /></p>
<p><img class="alignnone size-full wp-image-142" title="ネットワーク構成図" src="http://labs.infoalive.com/wp-content/uploads/2009/10/arduino2.PNG" alt="ネットワーク構成図" width="532" height="399" /></p>
<p>Flashから操作できる＝Wiiのブラウザからも操作が出来る！。。はずです。</p>
<p>カメラを搭載していないので遠隔から操作は出来ません。今後の課題ですね。</p>
<p>Linuxを搭載するように考えてましたが、消費電力が大きいのと、組み込みLinuxは高価なこともあり、搭載は諦めました。</p>
<p>今後は社内のサービスに何らかの形で技術提供できればと考えております。</p>
<g:plusone href="http://labs.infoalive.com/tips/139"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/139/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>会社で走らせました</title>
		<link>http://labs.infoalive.com/tips/127</link>
		<comments>http://labs.infoalive.com/tips/127#comments</comments>
		<pubDate>Mon, 28 Sep 2009 06:47:47 +0000</pubDate>
		<dc:creator>o2</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[TB6612FNG]]></category>
		<category><![CDATA[wii]]></category>
		<category><![CDATA[wrj4P5]]></category>
		<category><![CDATA[ラジコン]]></category>
		<category><![CDATA[車]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=127</guid>
		<description><![CDATA[今日は会社にラジコンを持ち込みました。 人生において会社のデスクにラジコン置く機会は幾つあるだろう。。 今回はLinux抜きでXBeeで通信するalpha版です。 beta版ではネットワークを通じサーバーを通じて操作。  [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F127"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F127&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>今日は会社にラジコンを持ち込みました。</p>
<p>人生において会社のデスクにラジコン置く機会は幾つあるだろう。。</p>
<p>今回はLinux抜きでXBeeで通信するalpha版です。</p>
<p>beta版ではネットワークを通じサーバーを通じて操作。</p>
<p>正式版ではお茶の間のWiiから操作を目指します(いつになることか</p>
<p>Linux版は現在調整中です。走行するには解決しないといけない問題が幾つかあります。</p>
<p>操縦はWiiリモコンのBlueToothをMacのBlueToothに繋いでます。</p>
<p>MacからラジコンへはXBeeでシリアル通信をしてます。</p>
<p>ラジコンの実装としては、Arduinoにラジコンのバッテリーを繋ぎ、5Vを制御用、VINをモーター用に電源を回しました。</p>
<p>今回、モータードライバー(TB6612FNG)を使い前進後進を可能にしました。</p>
<p>TB6612FNGはネットに解説ページが無くて配線に悩みましたが、解れば非常に扱いやすい子です。</p>
<p>では、会社で撮った動画をどうぞ！！※撮影禁止区域は映っていないはず。。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/amT7dliMJvQ&amp;hl=ja&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/amT7dliMJvQ&amp;hl=ja&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>趣味で作ったラジコンを会社に持ち込んだりする、こんな私のいるソリューション部ですが、現在人材募集中です。たぶん10月いっぱい。</p>
<p>注) ラジコンは作りません</p>
<p>我こそはと思う方はお問い合わせください。なお、WEB開発経験のある経験者でお願いします。</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px;">TB6612FNGり</div>
<g:plusone href="http://labs.infoalive.com/tips/127"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/127/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ネットワークラジコンをコントロール</title>
		<link>http://labs.infoalive.com/tips/109</link>
		<comments>http://labs.infoalive.com/tips/109#comments</comments>
		<pubDate>Tue, 15 Sep 2009 04:14:57 +0000</pubDate>
		<dc:creator>o2</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[avetanabt]]></category>
		<category><![CDATA[bluecove]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[RS-232]]></category>
		<category><![CDATA[serproxy]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wii]]></category>
		<category><![CDATA[WiiRemoteJ]]></category>
		<category><![CDATA[wrj4P5]]></category>
		<category><![CDATA[ラジアン]]></category>
		<category><![CDATA[ラジコン]]></category>
		<category><![CDATA[組み込み系]]></category>
		<category><![CDATA[車]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=109</guid>
		<description><![CDATA[昨晩Macからネットワークを経由し、ラジコン(組み込みLinuxに繋がったArduino)を操作できました。 ネットワークからArduinoを操作するのに、「Serial Proxy」を使いました。 「Serial Pr [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F109"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F109&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>昨晩Macからネットワークを経由し、ラジコン(組み込みLinuxに繋がったArduino)を操作できました。</p>
<p>ネットワークからArduinoを操作するのに、「Serial Proxy」を使いました。</p>
<p>「Serial Proxy」を使うことで、ストリームからシリアルの制御が可能となります。</p>
<p>Linuxへのインストールは簡単</p>
<ol>
<li>Arduino公式サイトのダウンロードページの一番下にある「Serial Proxy」のソース版をダウンロード<a href="http://www.arduino.cc/en/Main/Software" target="_blank">http://www.arduino.cc/en/Main/Software</a></li>
<li>make</li>
<li>serproxy.cfgを設定。comm_baud=9600、serial_device1=/dev/ttyUSB0に設定</li>
<li>./serproxy を実行</li>
</ol>
<p>あとはProcessingのコードをストリーム用に修正。</p>
<p>以下は実際に利用したWiiハンドルからネットワーク越しにラジコンを操作するコードです。</p>
<p># ハンドル周りに角度変更後の値から±5～10度の遊びを加えると操作しやすくなります（たぶん</p>
<p><code><br />
import lll.wrj4P5.*;<br />
import lll.Loc.*;<br />
import processing.net.*;</code></p>
<p>float i = 0.0;<br />
float angle = 0.0;<br />
int kakudo = 0;<br />
int old_kakudo = 0;</p>
<p>Wrj4P5 wii;<br />
LinkedList p = new LinkedList();<br />
Client client;</p>
<p>void setup() {</p>
<p style="padding-left: 30px;">size(300,300,P3D);</p>
<p style="padding-left: 30px;">wii=new Wrj4P5(this).connect();</p>
<p style="padding-left: 30px;">client = new Client(this, &#8220;10.0.2.2&#8243;, 5331);</p>
<p style="padding-left: 30px;">smooth();</p>
<p style="padding-left: 30px;">rectMode(CENTER);</p>
<p>}</p>
<p>void draw() {</p>
<p style="padding-left: 30px;">if (wii.isConnecting()) return;</p>
<p style="padding-left: 30px;">stroke(32);</p>
<p style="padding-left: 30px;">fill(255);</p>
<p style="padding-left: 30px;">ellipse(width/2, height/2, width/1.6, width/1.6);</p>
<p style="padding-left: 30px;">translate(width/2,height/2);</p>
<p style="padding-left: 30px;">rotate( atan2(wii.rimokon.sensed.y , wii.rimokon.sensed.x ) );</p>
<p style="padding-left: 30px;">fill(0);</p>
<p style="padding-left: 30px;">rect(0,0,width/2,height/7);</p>
<p style="padding-left: 30px;">angle = atan2(wii.rimokon.sensed.y , wii.rimokon.sensed.x ) * 180 / PI;</p>
<p style="padding-left: 30px;">if (angle &gt; 0) {</p>
<p style="padding-left: 60px;">kakudo = int(angle) -90;</p>
<p style="padding-left: 60px;">kakudo = 180 &#8211; kakudo;</p>
<p style="padding-left: 30px;">}</p>
<p style="padding-left: 30px;">if (angle &lt; 0) {</p>
<p style="padding-left: 60px;">kakudo = int(angle) * -1 -90;</p>
<p style="padding-left: 30px;">}</p>
<p style="padding-left: 30px;">kakudo = int(kakudo * 0.1) * 10;</p>
<p style="padding-left: 30px;">if (kakudo &gt;= 65 &amp;&amp; kakudo &lt;= 115) kakudo = 90;</p>
<p style="padding-left: 30px;">if (kakudo &gt;= 115 &amp;&amp; kakudo &lt;= 135) kakudo = 115;</p>
<p style="padding-left: 30px;">if (kakudo &gt;= 135) kakudo = 135;</p>
<p style="padding-left: 30px;">if (kakudo &gt;= 45 &amp;&amp; kakudo &lt;= 65) kakudo = 65;</p>
<p style="padding-left: 30px;">if (kakudo &lt;= 45) kakudo = 45;</p>
<p style="padding-left: 30px;">if (old_kakudo != kakudo){</p>
<p style="padding-left: 60px;">old_kakudo = kakudo;</p>
<p style="padding-left: 60px;">client.write(str(kakudo) + &#8220;s\n&#8221;);</p>
<p style="padding-left: 60px;">println(client.read());</p>
<p style="padding-left: 30px;">}</p>
<p>}</p>
<p>void buttonPressed(RimokonEvent evt,int rid){</p>
<p style="padding-left: 30px;">if (evt.wasPressed(evt.TWO)) {</p>
<p style="padding-left: 60px;">client.write(&#8220;255w\n&#8221;);</p>
<p style="padding-left: 30px;">}</p>
<p style="padding-left: 30px;">if (evt.wasPressed(evt.ONE)) {</p>
<p style="padding-left: 60px;">client.write(&#8220;150w\n&#8221;);</p>
<p style="padding-left: 30px;">}</p>
<p>}<br />
void buttonReleased(RimokonEvent evt,int rid){</p>
<p style="padding-left: 30px;">if (evt.wasReleased(evt.TWO)) {</p>
<p style="padding-left: 60px;">client.write(&#8220;0w\n&#8221;);</p>
<p style="padding-left: 30px;">}</p>
<p style="padding-left: 30px;">if (evt.wasReleased(evt.ONE)) {</p>
<p style="padding-left: 60px;">client.write(&#8220;0w\n&#8221;);</p>
<p style="padding-left: 30px;">}</p>
<p>}</p>
<p>以上です。</p>
<p>「Serial Proxy」を使うとFlashなどからもArduinoの操作が可能となります。何が出来るか想像するだけでご飯が３杯は食べれます。もっと？</p>
<p>Arduinoを始めてからここまで２週間かかりました。Amazonの商品発送が9/1なので間違いないです。</p>
<p>平日は仕事しながら家で開発してましたので結構疲れました。</p>
<p>次回はラジコンを操作している動画のアップを予定してます。 # Serial Proxyとの通信に不具合があるので調整中です。</p>
<p>おまけ：Processing 1.0.7 を利用することでMacの64bitでもwiiリモコンを操作できました。</p>
<g:plusone href="http://labs.infoalive.com/tips/109"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/109/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>wiiリモコンの制御</title>
		<link>http://labs.infoalive.com/tips/95</link>
		<comments>http://labs.infoalive.com/tips/95#comments</comments>
		<pubDate>Fri, 11 Sep 2009 05:18:42 +0000</pubDate>
		<dc:creator>o2</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[avetanabt]]></category>
		<category><![CDATA[bluecove]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wii]]></category>
		<category><![CDATA[WiiRemoteJ]]></category>
		<category><![CDATA[wrj4P5]]></category>
		<category><![CDATA[マイコン]]></category>
		<category><![CDATA[ラジアン]]></category>
		<category><![CDATA[ラジコン]]></category>
		<category><![CDATA[組み込み系]]></category>

		<guid isPermaLink="false">http://labs.infoalive.com/?p=95</guid>
		<description><![CDATA[昨夜組み込みLinuxのインストールも終え、もうすぐラジコンが完成します。 今日は、Wiiリモコンの制御について書きます。 wiiリモコンの制御にはProcessing 1.0.6を使いました。 ProcessingでW [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F95"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Flabs.infoalive.com%2Ftips%2F95&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>昨夜組み込みLinuxのインストールも終え、もうすぐラジコンが完成します。</p>
<p>今日は、Wiiリモコンの制御について書きます。</p>
<p>wiiリモコンの制御にはProcessing 1.0.6を使いました。</p>
<p>ProcessingでWiiリモコンを扱うにはライブラリの用意が必要です。</p>
<p>今回はwrj4P5.jar (alpha-011)を利用しますので以下を用意しました。</p>
<ul>
<li>Loc.jar (beta 005)</li>
<li>avetanabt-20070719.tgz or bluecove-2.1.0.jar</li>
<li>WiiRemoteJ v1.6.zip.gz</li>
</ul>
<p>avetanabtはLinuxで利用する以外は有料ですので、macやwindowsの方はbluecoveがおすすめです。</p>
<p>Linux用のbluecove-2.1.0は幾つかのライブラリが不足してますので、avetanabtがおすすめです。</p>
<p>私の環境では、Linux(ubuntu)とMacの両方にwrj4P5をインストールしました。</p>
<p>インストールに手間取った点を書きますと、</p>
<p>Macでは、wrj4P5を利用する際、Javaを64bit から 32bit に変更が必要でした。ここが解らず悩みました。</p>
<p>LinuxではaventaBTのインストールに若干手間取りました。</p>
<p>以下は参考までにインストールログです。<br />
<code><br />
$ mkdir ~/src/aventaBT<br />
$ cd ~/src/aventaBT<br />
$ wget "http://downloads.sourceforge.net/project/avetanabt/avetanabt/20070719/avetanabt-20070719.tgz?use_mirror=jaist"<br />
$ tar xvzf avetanabt-20070719.tgz<br />
$ sudo aptitude install autoconf2.13<br />
$ sudo aptitude install g++<br />
$ export JDK_HOME=/usr/lib/jvm/java-6-sun<br />
$ export BIN_DIR=/home/[user]/src/aventaBT/binaries<br />
$ ./install<br />
$ cp binaries/avetanaBT.jar ~/src/processing-1.0.6/libraries/wrj4P5/library<br />
</code></p>
<p>以上で、インストール出来たとしまして、ハンドルの制御コードは以下になります。</p>
<p><code><br />
import lll.wrj4P5.*;<br />
import lll.Loc.*;</code></p>
<p>float angle = 0.0;</p>
<p>Wrj4P5 wii;<br />
LinkedList p = new LinkedList();</p>
<p>void setup() {</p>
<p style="padding-left: 30px;">size(300,300,P3D);</p>
<p style="padding-left: 30px;">wii=new Wrj4P5(this).connect();</p>
<p style="padding-left: 30px;">smooth();</p>
<p style="padding-left: 30px;">rectMode(CENTER);</p>
<p>}</p>
<p>void draw() {</p>
<p style="padding-left: 30px;">if (wii.isConnecting()) return;</p>
<p style="padding-left: 30px;">stroke(32);</p>
<p style="padding-left: 30px;">fill(255);</p>
<p style="padding-left: 30px;">ellipse(width/2, height/2, width/1.6, width/1.6);</p>
<p style="padding-left: 30px;">translate(width/2,height/2);</p>
<p style="padding-left: 30px;">rotate( atan2(wii.rimokon.sensed.y , wii.rimokon.sensed.x ) );</p>
<p style="padding-left: 30px;">fill(0);</p>
<p style="padding-left: 30px;">rect(0,0,width/2,height/7);</p>
<p>}</p>
<p>wii リモコンはラジアン値を返しますので、角度を求める場合は以下の公式になります。</p>
<p>angle = atan2( y , x ) * 180 / PI;</p>
<p>角度を求めれたことでハンドルの制御も計算しやすくなりましたね。</p>
<p>これにシリアル通信のコードを加えることで、Arudinoの制御が出来ます。</p>
<p>今回は以上です。</p>
<g:plusone href="http://labs.infoalive.com/tips/95"></g:plusone>]]></content:encoded>
			<wfw:commentRss>http://labs.infoalive.com/tips/95/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

