<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
  <channel>
    <title>日曜エレクトロニクス(日エレ)</title>
    <link>https://projectc3.seesaa.net/</link>
    <description>適当に書いてます。仕事はソフト屋やってます。趣味はハード&amp;ソフトです。幅広いエンジニアリングに詳しくなりたいなー。</description>
    <language>ja</language>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>適当に書いてます。仕事はソフト屋やってます。趣味はハード&amp;ソフトです。幅広いエンジニアリングに詳しくなりたいなー。</itunes:summary>
    <itunes:keywords>モバイル,電子工作,デジタルアンプ,FPGA,マイコン,BlackBerry,携帯電話,BeagleBoard,Xilinx,デジカメ,GF1,Android,iPhone,MacOSX</itunes:keywords>
    
    <itunes:author>いしいっち</itunes:author>
    <itunes:owner>    
       <itunes:name></itunes:name>
       <itunes:email></itunes:email>
    </itunes:owner>
        <itunes:explicit>no</itunes:explicit>
        <item>
      <link>https://projectc3.seesaa.net/article/451273817.html</link>
      <title>Surface Proをラップトップ化するキーボード買ってみました</title>
      <pubDate>Tue, 27 Jun 2017 22:52:48 +0900</pubDate>
            <description>超久々のブログ更新です。開発自体はずっとしてたんですが、ブログが更新できてなくて^^;さて、私は去年の春先からSurface Pro4を使用しています。# 当時かなり移動時間が必要な出張の予定があって、使ってたPCも古かったし、移動中に遊ぼうとエイっと購入したんですよね。# そしてその出張までにとどかなかったとゆう。。。^^;先日新しいSurface Proも発表されましたが、大した変化もないので、今のところこの機種を使っていこうかなと思ってます。さて、結構気に入っているSu..</description>
            <itunes:summary><![CDATA[
超久々のブログ更新です。開発自体はずっとしてたんですが、ブログが更新できてなくて^^;

さて、私は去年の春先からSurface Pro4を使用しています。
# 当時かなり移動時間が必要な出張の予定があって、使ってたPCも古かったし、移動中に遊ぼうとエイっと購入したんですよね。
# そしてその出張までにとどかなかったとゆう。。。^^;

先日新しいSurface Proも発表されましたが、大した変化もないので、今のところこの機種を使っていこうかなと思ってます。

さて、結構気に入っているSurfaceですが、やはりベンチみたいな、テーブルのないところで使用するのは難しいです。テーブルが無いと、タブレット本体部分(ノートPCでいうところの画面)を支えることができません。

<a href="http://projectc3.up.seesaa.net/image/IMG_20170627_221047.jpg" target="_blank"><img border="0" alt="IMG_20170627_221047.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_221047-thumbnail2.jpg" width="320" height="276"></a>

それもあって、モノタロウでヒンジを探して2枚のアルミ板を繋いで、画面が倒れないカバーっぽいものを考えたりしていたのですが、、、

まさに私が悩んでいたことを解決するような商品が発売されました! Brydge LLC社のBrydge 12.3キーボードです。
Brydge社はiPad用のキーボードとSurface用のキーボードを販売されているのですが、特徴はキーボード本体にヒンジがついていて、しっかりタブレットをホールドし、ノートPC的に使用できるようにしている事です。
まさに、こーゆーのが欲しかった!というわけで現物を見ずに、購入することにしました。

発注当時、日本で売ってないようでしたのでBrydge LLC社のサイトから注文しました。特に問題なく日本への発送はしてくれたのですが、、、なんと最初に届いたのがドイツ語版!
もちろん誤送です。

<a href="http://projectc3.up.seesaa.net/image/IMG_20170613_203918.jpg" target="_blank"><img border="0" alt="IMG_20170613_203918.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170613_203918-thumbnail2.jpg" width="180" height="320"></a>

届いて、取説がドイツ語だったので、あれ?って気づいて、返品しなければならずすぐに使えないので結構ショックでした^^;
Brydge社に連絡して、返品して2週間、やっと本日希望の英語版がとどいた。。。(*^_^*)

ちなみに今、このキーボードは日本でも売ってるようです。^^;
https://www.links.co.jp/item/brydge-12-3/

さてさて、使用した感じですが、まず画面が倒れないしっかりとしたヒンジで、いわゆるノートPC的に使用できます。これはかなり良いです。
キーの操作感も〇。
タッチパッドのサイズはSurface タイプカバーのよりは小さいですが、二本指でのスクロール等はスムーズに出来てて、悪くはありません。
<a href="http://projectc3.up.seesaa.net/image/IMG_20170627_211055.jpg" target="_blank"><img border="0" alt="IMG_20170627_211055.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_211055-thumbnail2.jpg" width="320" height="242"></a>

結論、買ってよかったです。明日たまたま出張なので、Brydgeキーボードを付けたSurface持って、移動中に活用しようとと思います! ^^

アマゾンにも出てました↓ ^^

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B01N13TX2J" target="_blank"><img src="https://images-fe.ssl-images-amazon.com/images/I/51VxiLDAlbL._SL160_.jpg" alt="Brydge Microsoft Surface Pro 3/4 (12.3 &#x30A4;&#x30F3;&#x30C1;) &#x7528; Bluetooth &#x30EF;&#x30A4;&#x30E4;&#x30EC;&#x30B9; &#x4E00;&#x4F53;&#x5316;&#x578B; &#x30A2;&#x30EB;&#x30DF;&#x30CB;&#x30A6;&#x30E0; &#x30AD;&#x30FC;&#x30DC;&#x30FC;&#x30C9; &#x30B1;&#x30FC;&#x30B9;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B01N13TX2J" target="_blank">Brydge Microsoft Surface Pro 3/4 (12.3 インチ) 用 Bluetooth ワイヤレス 一体化型 アルミニウム キーボード ケース</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 17.06.27BRYDGE (2017-05-26)売り上げランキング: 14,332<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B01N13TX2J" target="_blank">Amazon.co.jpで詳細を見る</a>



<a href="http://projectc3.up.seesaa.net/image/IMG_20170627_205230.jpg" target="_blank"><img border="0" alt="IMG_20170627_205230.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_205230-thumbnail2.jpg" width="320" height="180"></a>

<a href="http://projectc3.up.seesaa.net/image/IMG_20170627_205312.jpg" target="_blank"><img border="0" alt="IMG_20170627_205312.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_205312-thumbnail2.jpg" width="320" height="180"></a>
<a href="http://projectc3.up.seesaa.net/image/IMG_20170627_204504.jpg" target="_blank"><img border="0" alt="IMG_20170627_204504.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_204504-thumbnail2.jpg" width="180" height="320"></a>
<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
超久々のブログ更新です。開発自体はずっとしてたんですが、ブログが更新できてなくて^^;<br /><br />さて、私は去年の春先からSurface Pro4を使用しています。<br /># 当時かなり移動時間が必要な出張の予定があって、使ってたPCも古かったし、移動中に遊ぼうとエイっと購入したんですよね。<br /># そしてその出張までにとどかなかったとゆう。。。^^;<br /><br />先日新しいSurface Proも発表されましたが、大した変化もないので、今のところこの機種を使っていこうかなと思ってます。<br /><br />さて、結構気に入っているSurfaceですが、やはりベンチみたいな、テーブルのないところで使用するのは難しいです。テーブルが無いと、タブレット本体部分(ノートPCでいうところの画面)を支えることができません。<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20170627_221047.jpg" target="_blank"><img border="0" alt="IMG_20170627_221047.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_221047-thumbnail2.jpg" width="320" height="276" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20170627_221047-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />それもあって、モノタロウでヒンジを探して2枚のアルミ板を繋いで、画面が倒れないカバーっぽいものを考えたりしていたのですが、、、<br /><br />まさに私が悩んでいたことを解決するような商品が発売されました! Brydge LLC社のBrydge 12.3キーボードです。<br />Brydge社はiPad用のキーボードとSurface用のキーボードを販売されているのですが、特徴はキーボード本体にヒンジがついていて、しっかりタブレットをホールドし、ノートPC的に使用できるようにしている事です。<br />まさに、こーゆーのが欲しかった!というわけで現物を見ずに、購入することにしました。<br /><br />発注当時、日本で売ってないようでしたのでBrydge LLC社のサイトから注文しました。特に問題なく日本への発送はしてくれたのですが、、、なんと最初に届いたのがドイツ語版!<br />もちろん誤送です。<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20170613_203918.jpg" target="_blank"><img border="0" alt="IMG_20170613_203918.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170613_203918-thumbnail2.jpg" width="180" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20170613_203918-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />届いて、取説がドイツ語だったので、あれ?って気づいて、返品しなければならずすぐに使えないので結構ショックでした^^;<br />Brydge社に連絡して、返品して2週間、やっと本日希望の英語版がとどいた。。。(*^_^*)<br /><br />ちなみに今、このキーボードは日本でも売ってるようです。^^;<br /><a href="https://www.links.co.jp/item/brydge-12-3/" target="_blank">https://www.links.co.jp/item/brydge-12-3/</a><br /><br />さてさて、使用した感じですが、まず画面が倒れないしっかりとしたヒンジで、いわゆるノートPC的に使用できます。これはかなり良いです。<br />キーの操作感も〇。<br />タッチパッドのサイズはSurface タイプカバーのよりは小さいですが、二本指でのスクロール等はスムーズに出来てて、悪くはありません。<br /><a href="http://projectc3.up.seesaa.net/image/IMG_20170627_211055.jpg" target="_blank"><img border="0" alt="IMG_20170627_211055.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_211055-thumbnail2.jpg" width="320" height="242" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20170627_211055-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />結論、買ってよかったです。明日たまたま出張なので、Brydgeキーボードを付けたSurface持って、移動中に活用しようとと思います! ^^<br /><br />アマゾンにも出てました↓ ^^<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B01N13TX2J" name="amazletlink" target="_blank"><img src="https://images-fe.ssl-images-amazon.com/images/I/51VxiLDAlbL._SL160_.jpg" alt="Brydge Microsoft Surface Pro 3/4 (12.3 インチ) 用 Bluetooth ワイヤレス 一体化型 アルミニウム キーボード ケース" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B01N13TX2J" name="amazletlink" target="_blank">Brydge Microsoft Surface Pro 3/4 (12.3 インチ) 用 Bluetooth ワイヤレス 一体化型 アルミニウム キーボード ケース</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 17.06.27</div></div><div class="amazlet-detail">BRYDGE (2017-05-26)<br />売り上げランキング: 14,332<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B01N13TX2J" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20170627_205230.jpg" target="_blank"><img border="0" alt="IMG_20170627_205230.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_205230-thumbnail2.jpg" width="320" height="180" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20170627_205230-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20170627_205312.jpg" target="_blank"><img border="0" alt="IMG_20170627_205312.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_205312-thumbnail2.jpg" width="320" height="180" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20170627_205312-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20170627_204504.jpg" target="_blank"><img border="0" alt="IMG_20170627_204504.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20170627_204504-thumbnail2.jpg" width="180" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20170627_204504-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/451273817</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_221047.jpg" length="142779" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_221047.jpg" length="142779" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170613_203918.jpg" length="80580" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170613_203918.jpg" length="80580" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_211055.jpg" length="164405" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_211055.jpg" length="164405" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_205230.jpg" length="77861" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_205230.jpg" length="77861" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_205312.jpg" length="84422" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_205312.jpg" length="84422" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_204504.jpg" length="45063" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20170627_204504.jpg" length="45063" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/426595069.html</link>
      <title>二年とちょっと更新止まってました! 再開します! ^^</title>
      <pubDate>Wed, 23 Sep 2015 23:43:20 +0900</pubDate>
            <description>いやー、ちょっと長めに更新が止まってました^^;ちょっと忙しかったり、なんだかんだで。。。そろそろ再開しまーす!というだけのポストでした^^;;;</description>
            <itunes:summary><![CDATA[
いやー、ちょっと長めに更新が止まってました^^;
ちょっと忙しかったり、なんだかんだで。。。

そろそろ再開しまーす!

というだけのポストでした^^;;;
<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
いやー、ちょっと長めに更新が止まってました^^;<br />ちょっと忙しかったり、なんだかんだで。。。<br /><br />そろそろ再開しまーす!<br /><br />というだけのポストでした^^;;;<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/426595069</guid>
                </item>
        <item>
      <link>https://projectc3.seesaa.net/article/366244240.html</link>
      <title>Arduino Due+DueVGAライブラリでFONTX2形式日本語を画面表示するモジュールを作成</title>
      <pubDate>Thu, 13 Jun 2013 23:58:44 +0900</pubDate>
            <description>Arduino Dueボードを使用して、VGAモニターやコンポジットビデオ出力に対して出力を行うDueVGAライブラリを実験します。また、DueVGAとの組み合わせで日本語表示を自在に行うライブラリをを作成してみました。本記事はその実験をしてみた記録になります。Arduino Dueは、その他のArduinoとは異なり、ATMEL社のARM Cortex-M3コアのマイコンボードで、高速な処理速度と、大容量ROM/RAMを搭載しています。このArduino Dueには、映像出..</description>
            <itunes:summary><![CDATA[
Arduino Dueボードを使用して、VGAモニターやコンポジットビデオ出力に対して出力を行うDueVGAライブラリを実験します。また、DueVGAとの組み合わせで日本語表示を自在に行うライブラリをを作成してみました。本記事はその実験をしてみた記録になります。

<a href="http://projectc3.up.seesaa.net/image/IMG_20130613_234551resized.jpg" target="_blank"><img border="0" alt="IMG_20130613_234551resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130613_234551resized-thumbnail2.jpg" width="320" height="240"></a>

Arduino Dueは、その他のArduinoとは異なり、ATMEL社のARM Cortex-M3コアのマイコンボードで、高速な処理速度と、大容量ROM/RAMを搭載しています。
このArduino Dueには、映像出力は搭載していないのですが、DueVGAというライブラリを使用することで、VGAモノクロ、VGAカラー、コンポジットビデオ出力NTSC/PALを
出力する事ができます。

https://github.com/stimmer/DueVGA/

モノクロVGAは、白黒2値出力ですが、800×600の解像度まで対応します。カラーVGAは、320×240です。
また、コンポジットビデオ出力の場合、NTSCは320×200、PALは320×240となります。
出力信号はDMACやシリアルI/Oその他ATSAM3Xの持つハード機能を巧みに組み合わせて作成されてるようです。

今回は、VGA出力のモノクロとカラーを試してみたいと思います。モノクロの場合、VGAコネクタ1個、100Ω抵抗一本、各種線材を以下の図のように接続するだけで、簡単に
モニター出力を得ることができます。
<a href="http://projectc3.up.seesaa.net/image/DueVGA_Connection.png" target="_blank"><img border="0" alt="DueVGA_Connection.png" src="http://projectc3.up.seesaa.net/image/DueVGA_Connection-thumbnail2.png" width="320" height="151"></a>

カラーVGAの場合は、以下のように接続します(README.txtより引用)
全て繋ぐのが面倒であれば、R、G、Bのそれぞれ1本だけ、一番抵抗値の小さいものを繋げば8色カラーになります。

For VGA colour:
---------------
Upload File-&gt;Examples-&gt;VGA-&gt;HelloWorldColour
Connect Due to monitor as follows:

Due pin 34 -&gt; 820R resistor -&gt; VGA pin 3 (blue)
Due pin 35 -&gt; 390R resistor -&gt; VGA pin 3 (blue)

Due pin 36 -&gt; 2k2 resistor -&gt; VGA pin 2 (green)
Due pin 37 -&gt; 1k resistor -&gt; VGA pin 2 (green)
Due pin 38 -&gt; 470R resistor -&gt; VGA pin 2 (green)

Due pin 39 -&gt; 2k2 resistor -&gt; VGA pin 1 (red)
Due pin 40 -&gt; 1k resistor -&gt; VGA pin 1 (red)
Due pin 41 -&gt; 470R resistor -&gt; VGA pin 1(red)

Due pin 42 -&gt; VGA pin 14 (VSync)
Due pin 43 -&gt; VGA pin 13 (HSync)

Due pin GND -&gt; VGA pins 5,6,7,8,10


コンポジットビデオ出力の場合、以下のように接続します。実は、僕もNTSC出力を試したのですが、手持ちのモニターではNTSCの色情報をきちんと認識
しなかったのでテストはあまりしていません。


For NTSC/PAL:
-------------
Upload File-&gt;Examples-&gt;VGA-&gt;DrawingTestNTSC (or DrawingTestPAL)
Connect Due to TV as follows:

Due pin 36 -&gt; 3k3  resistor -&gt; Video In
Due pin 37 -&gt; 1k6  resistor -&gt; Video In
Due pin 38 -&gt; 820R resistor -&gt; Video In
Due pin 39 -&gt; 390R resistor -&gt; Video In
Due pin 40 -&gt; 200R resistor -&gt; Video In
Due pin 41 -&gt; 100R resistor -&gt; Video In

Due pin GND -&gt; Video GND



このDue VGAライブラリではプリミティブな描画機能(線描画や塗りつぶし矩形、アスキーコードのキャラ描画など)を持つAPIを提供してくれていて、以下のようなスケッチを
実行するだけで簡単に画面描画出来ます。
ここに、日本語文字列表示のライブラリを追加してみることにしました!

日本語文字の表示は、僕が昔書いていた、本サイトの前身?であるProject C3というところで取り上げた、「H8とノリタケ伊勢電子(株)のドットマトリクスVFDで、ビットマップ描画と漢字を取り扱う」
という記事のコードを掘り起こしました。
http://hp.vector.co.jp/authors/VA007110/technicalworkshop/vfd_bitmap_japanese/index.html

ここでは、FONTX2形式を使用します。FONTX2形式についても、昔僕が書いていたサイトのリンクを置くことで省略します^^;
http://hp.vector.co.jp/authors/VA007110/technicalworkshop/fontxstudy/index.html
# しかしもう8年前なのか〜。。。

このライブラリを使用して文字列描画を行うライブラリが、Arduinoライブラリ「DrawFont」という、今回作成したライブラリです。
FONTX2形式は、上記のURLにも記した通り、シフトJISエンコーディングのデータ形式です。Arduino IDEのソースコードは、UTF-8です。
従ってUTF-8からShift-JISへの変換をしなければいけません。

調べると、日本語の表現範囲であれば、UTF-8をUTF-16にすることで2バイトにおさまります。このUTF16とJISとの変換表の改良版というのを、以下のURLで公開されていましたので、頂きました。
 http://hp.vector.co.jp/authors/VA010341/unicode/
この変換表の約7000文字分のデータを効率よく省資源マイコンで活用するには、圧縮したり、ハッシュテーブル化するなど、工夫はいろいろ出来そうですが、今回は、Arduino DueがROM 512KBもあり、16×16のフォント(210Kバイト程度)を入れてもまだまだ空きは一杯あるので、完全にベタの変換配列を用意しました!
(と、かっこ良く言ってみましたが、工夫を何もしてないだけです。。。笑)

変換表から、配列への出力は、以下に貼りつけたRubyスクリプト「convert_utftable.rb」で行なってます(後述のgithubリポジトリ内にも入れてあります)。


convert_utftable.rb

# table converter
# coded by Yasuhiro ISHII,6/13/2013

file = "JIS_X_0208.txt"

table = Hash::new

f = File::open(file,"r")
while (l = f.gets)
  if l =~ /^0x([0-9A-F]{4}).0x([0-9A-F]{4})\r\n$/ then
    code_jis = $1.hex
    code_utf16 = $2.hex
    table[code_utf16] = code_jis
  end
end

f.close

(0..65535).each { |utf16|
  if table.has_key?(utf16) == true then
    printf("\t0x%04X,\t\t// 0x%04X\n",table[utf16],utf16)
  else
    printf("\t0x0000,\t\t// 0x%04X (dummy)\n",utf16)
  end
}


と、いうわけで、以下のようなスケッチで直接日本語表示をVGAモニターに行えるようになりました。
ライブラリは以下のgithubで公開しています。Arduino 1.5.2+Due VGAライブラリの組み合わせで動作確認済みです。

Arduinoライブラリ DrawLibのソースコード全体は、以下に置いています。
https://github.com/yishii/Arduino_FONTX2Lib_DrawFont

ライブラリ内に、8*16のASCIIフォントと、16*16の漢字フォントを盛り込んでいます。
ASCIIフォントは、以下のサイトにある、IPAフォントをベースとしたものを利用させて頂きました。
また、漢字については、16x16の東雲フォントを盛り込んでいます。

以下、Arduinoスケッチ例です。Arduinoライブラリディレクトリに、Due VGAライブラリと、先ほど説明したDrawFontライブラリを入れておけば、ビルド出来ます。

ちなみに、Arduino Dueは2つのUSBポートを搭載しています。(Programming PortとNative USB Port)
本スケッチのサイズは大きいので、Native USB Portを使用したほうが遥かに高速に書き換えできます!


#include &lt;stdio.h&gt;
#include &lt;VGA.h&gt;
#include &lt;DrawFont.h&gt;

#define LINE_CONV(x) (x*16)
void setup() {
  VGA.begin(800,600);
  Serial.begin(9600);
  drawFontInit();

  drawFontString_UTF8((unsigned char*)"Arduino VGAライブラリと、自作日本語フォントライブラリのテスト",0,LINE_CONV(2),1,0,false);
  drawFontString_UTF8((unsigned char*)"=============================================================",0,LINE_CONV(3),1,0,false);

  drawFontString_UTF8((unsigned char*)"本日は晴天なり!!!  E-mail : ishii.yasuhiro@gmail.com",0,LINE_CONV(6),1,0,false);
  drawFontString_UTF8((unsigned char*)"日本語の漢字データは、FONTX2形式でROM内に保持しています。",0,LINE_CONV(7),1,0,false);
  drawFontString_UTF8((unsigned char*)"Arduino IDEのUTF-8を変換して表示しています。",0,LINE_CONV(8),1,0,false);
}

void loop() {
  char string[64];
  static int i;
  
  sprintf(string,"カウント値 = %04d    ",i++);
  drawFontString_UTF8((unsigned char*)string,0,LINE_CONV(15),1,0,true);
  
}


ではではー!

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009JXQUB2/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41y3uGrPRUL._SL160_.jpg" alt="Arduino Due" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009JXQUB2/ishiiyasu-22/ref=nosim/" target="_blank">Arduino Due</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.06.13GHEO SA 売り上げランキング: 21,078<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009JXQUB2/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/450154970X/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51mOW-5nUVL._SL160_.jpg" alt="&#x30E6;&#x30CB;&#x30B3;&#x30FC;&#x30C9;&#x6226;&#x8A18; &#x2500;&#x6587;&#x5B57;&#x7B26;&#x53F7;&#x306E;&#x56FD;&#x969B;&#x6A19;&#x6E96;&#x5316;&#x30D0;&#x30C8;&#x30EB;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/450154970X/ishiiyasu-22/ref=nosim/" target="_blank">ユニコード戦記 ─文字符号の国際標準化バトル</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.06.13小林龍生 東京電機大学出版局 売り上げランキング: 214,956<a href="http://www.amazon.co.jp/exec/obidos/ASIN/450154970X/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>
<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
Arduino Dueボードを使用して、VGAモニターやコンポジットビデオ出力に対して出力を行うDueVGAライブラリを実験します。また、DueVGAとの組み合わせで日本語表示を自在に行うライブラリをを作成してみました。本記事はその実験をしてみた記録になります。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130613_234551resized.jpg" target="_blank"><img border="0" alt="IMG_20130613_234551resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130613_234551resized-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130613_234551resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
Arduino Dueは、その他のArduinoとは異なり、ATMEL社のARM Cortex-M3コアのマイコンボードで、高速な処理速度と、大容量ROM/RAMを搭載しています。<br>
このArduino Dueには、映像出力は搭載していないのですが、DueVGAというライブラリを使用することで、VGAモノクロ、VGAカラー、コンポジットビデオ出力NTSC/PALを
出力する事ができます。<br>
<br>
<a href="https://github.com/stimmer/DueVGA/" target="_blank">https://github.com/stimmer/DueVGA/</a><br>
<br>
モノクロVGAは、白黒2値出力ですが、800×600の解像度まで対応します。カラーVGAは、320×240です。<br>
また、コンポジットビデオ出力の場合、NTSCは320×200、PALは320×240となります。<br>
出力信号はDMACやシリアルI/Oその他ATSAM3Xの持つハード機能を巧みに組み合わせて作成されてるようです。<br>
<br>
今回は、VGA出力のモノクロとカラーを試してみたいと思います。モノクロの場合、VGAコネクタ1個、100Ω抵抗一本、各種線材を以下の図のように接続するだけで、簡単に<br>
モニター出力を得ることができます。<br>
<a href="http://projectc3.up.seesaa.net/image/DueVGA_Connection.png" target="_blank"><img border="0" alt="DueVGA_Connection.png" src="http://projectc3.up.seesaa.net/image/DueVGA_Connection-thumbnail2.png" width="320" height="151" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/DueVGA_Connection-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a>
<br>
カラーVGAの場合は、以下のように接続します(README.txtより引用)<br>
全て繋ぐのが面倒であれば、R、G、Bのそれぞれ1本だけ、一番抵抗値の小さいものを繋げば8色カラーになります。<br>
<pre>
For VGA colour:
---------------
Upload File->Examples->VGA->HelloWorldColour
Connect Due to monitor as follows:

Due pin 34 -> 820R resistor -> VGA pin 3 (blue)
Due pin 35 -> 390R resistor -> VGA pin 3 (blue)

Due pin 36 -> 2k2 resistor -> VGA pin 2 (green)
Due pin 37 -> 1k resistor -> VGA pin 2 (green)
Due pin 38 -> 470R resistor -> VGA pin 2 (green)

Due pin 39 -> 2k2 resistor -> VGA pin 1 (red)
Due pin 40 -> 1k resistor -> VGA pin 1 (red)
Due pin 41 -> 470R resistor -> VGA pin 1(red)

Due pin 42 -> VGA pin 14 (VSync)
Due pin 43 -> VGA pin 13 (HSync)

Due pin GND -> VGA pins 5,6,7,8,10
</pre>
<br>
コンポジットビデオ出力の場合、以下のように接続します。実は、僕もNTSC出力を試したのですが、手持ちのモニターではNTSCの色情報をきちんと認識<br>
しなかったのでテストはあまりしていません。<br>
<br>
<pre>
For NTSC/PAL:
-------------
Upload File->Examples->VGA->DrawingTestNTSC (or DrawingTestPAL)
Connect Due to TV as follows:

Due pin 36 -> 3k3  resistor -> Video In
Due pin 37 -> 1k6  resistor -> Video In
Due pin 38 -> 820R resistor -> Video In
Due pin 39 -> 390R resistor -> Video In
Due pin 40 -> 200R resistor -> Video In
Due pin 41 -> 100R resistor -> Video In

Due pin GND -> Video GND

</pre>
<br>
このDue VGAライブラリではプリミティブな描画機能(線描画や塗りつぶし矩形、アスキーコードのキャラ描画など)を持つAPIを提供してくれていて、以下のようなスケッチを<br>
実行するだけで簡単に画面描画出来ます。<br>
ここに、日本語文字列表示のライブラリを追加してみることにしました!<br>
<br>
日本語文字の表示は、僕が昔書いていた、本サイトの前身?であるProject C3というところで取り上げた、「H8とノリタケ伊勢電子(株)のドットマトリクスVFDで、ビットマップ描画と漢字を取り扱う」<br>
という記事のコードを掘り起こしました。<br>
<a href="http://hp.vector.co.jp/authors/VA007110/technicalworkshop/vfd_bitmap_japanese/index.html" target="_blank">http://hp.vector.co.jp/authors/VA007110/technicalworkshop/vfd_bitmap_japanese/index.html</a><br>
<br>
ここでは、FONTX2形式を使用します。FONTX2形式についても、昔僕が書いていたサイトのリンクを置くことで省略します^^;<br>
<a href="http://hp.vector.co.jp/authors/VA007110/technicalworkshop/fontxstudy/index.html" target="_blank">http://hp.vector.co.jp/authors/VA007110/technicalworkshop/fontxstudy/index.html</a><br>
# しかしもう8年前なのか〜。。。<br>
<br>
このライブラリを使用して文字列描画を行うライブラリが、Arduinoライブラリ「DrawFont」という、今回作成したライブラリです。<br>
FONTX2形式は、上記のURLにも記した通り、シフトJISエンコーディングのデータ形式です。Arduino IDEのソースコードは、UTF-8です。<br>
従ってUTF-8からShift-JISへの変換をしなければいけません。<br>
<br>
調べると、日本語の表現範囲であれば、UTF-8をUTF-16にすることで2バイトにおさまります。このUTF16とJISとの変換表の改良版というのを、以下のURLで公開されていましたので、頂きました。<br>
 <a href="http://hp.vector.co.jp/authors/VA010341/unicode/" target="_blank">http://hp.vector.co.jp/authors/VA010341/unicode/</a><br>
この変換表の約7000文字分のデータを効率よく省資源マイコンで活用するには、圧縮したり、ハッシュテーブル化するなど、工夫はいろいろ出来そうですが、今回は、Arduino DueがROM 512KBもあり、16×16のフォント(210Kバイト程度)を入れてもまだまだ空きは一杯あるので、完全にベタの変換配列を用意しました!<br>
(と、かっこ良く言ってみましたが、工夫を何もしてないだけです。。。笑)
<br>
変換表から、配列への出力は、以下に貼りつけたRubyスクリプト「convert_utftable.rb」で行なってます(後述のgithubリポジトリ内にも入れてあります)。<br>
<br>
<br>
<ins>convert_utftable.rb</ins><br>
<pre name="code" class="ruby">
# table converter
# coded by Yasuhiro ISHII,6/13/2013

file = "JIS_X_0208.txt"

table = Hash::new

f = File::open(file,"r")
while (l = f.gets)
  if l =~ /^0x([0-9A-F]{4}).0x([0-9A-F]{4})\r\n$/ then
    code_jis = $1.hex
    code_utf16 = $2.hex
    table[code_utf16] = code_jis
  end
end

f.close

(0..65535).each { |utf16|
  if table.has_key?(utf16) == true then
    printf("\t0x%04X,\t\t// 0x%04X\n",table[utf16],utf16)
  else
    printf("\t0x0000,\t\t// 0x%04X (dummy)\n",utf16)
  end
}
</pre>
<br>
と、いうわけで、以下のようなスケッチで直接日本語表示をVGAモニターに行えるようになりました。<br>
ライブラリは以下のgithubで公開しています。Arduino 1.5.2+Due VGAライブラリの組み合わせで動作確認済みです。<br>
<br>
Arduinoライブラリ DrawLibのソースコード全体は、以下に置いています。<br>
<span style="font-size:large;"><a href="https://github.com/yishii/Arduino_FONTX2Lib_DrawFont" target="_blank">https://github.com/yishii/Arduino_FONTX2Lib_DrawFont</a><br>
</span><br>
ライブラリ内に、8*16のASCIIフォントと、16*16の漢字フォントを盛り込んでいます。<br>
ASCIIフォントは、以下のサイトにある、IPAフォントをベースとしたものを利用させて頂きました。<br>
また、漢字については、16x16の東雲フォントを盛り込んでいます。<br>
<br>
以下、Arduinoスケッチ例です。Arduinoライブラリディレクトリに、Due VGAライブラリと、先ほど説明したDrawFontライブラリを入れておけば、ビルド出来ます。<br>
<br>
ちなみに、Arduino Dueは2つのUSBポートを搭載しています。(Programming PortとNative USB Port)<br>
本スケッチのサイズは大きいので、Native USB Portを使用したほうが遥かに高速に書き換えできます!<br>
<br>
<pre name="code" class="cpp">
#include &lt;stdio.h&gt;
#include &lt;VGA.h&gt;
#include &lt;DrawFont.h&gt;

#define LINE_CONV(x) (x*16)
void setup() {
  VGA.begin(800,600);
  Serial.begin(9600);
  drawFontInit();

  drawFontString_UTF8((unsigned char*)"Arduino VGAライブラリと、自作日本語フォントライブラリのテスト",0,LINE_CONV(2),1,0,false);
  drawFontString_UTF8((unsigned char*)"=============================================================",0,LINE_CONV(3),1,0,false);

  drawFontString_UTF8((unsigned char*)"本日は晴天なり!!!  E-mail : ishii.yasuhiro@gmail.com",0,LINE_CONV(6),1,0,false);
  drawFontString_UTF8((unsigned char*)"日本語の漢字データは、FONTX2形式でROM内に保持しています。",0,LINE_CONV(7),1,0,false);
  drawFontString_UTF8((unsigned char*)"Arduino IDEのUTF-8を変換して表示しています。",0,LINE_CONV(8),1,0,false);
}

void loop() {
  char string[64];
  static int i;
  
  sprintf(string,"カウント値 = %04d    ",i++);
  drawFontString_UTF8((unsigned char*)string,0,LINE_CONV(15),1,0,true);
  
}
</pre>

ではではー!

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009JXQUB2/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41y3uGrPRUL._SL160_.jpg" alt="Arduino Due" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009JXQUB2/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Arduino Due</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.06.13</div></div><div class="amazlet-detail">GHEO SA <br />売り上げランキング: 21,078<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009JXQUB2/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/450154970X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51mOW-5nUVL._SL160_.jpg" alt="ユニコード戦記 ─文字符号の国際標準化バトル" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/450154970X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">ユニコード戦記 ─文字符号の国際標準化バトル</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.06.13</div></div><div class="amazlet-detail">小林龍生 <br />東京電機大学出版局 <br />売り上げランキング: 214,956<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/450154970X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>電子工作</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/366244240</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130613_234551resized.jpg" length="64299" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130613_234551resized.jpg" length="64299" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/DueVGA_Connection.png" length="129628" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/DueVGA_Connection.png" length="129628" type="image/png" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/365783126.html</link>
      <title>RaspberryPiを使って太陽電池の充電状態をXivelyにアップロードする機器を作る</title>
      <pubDate>Sun, 09 Jun 2013 19:18:48 +0900</pubDate>
            <description>先日、.NET Micro Frameworkの勉強会の準備会というのが梅田でありまして、参加させて頂きました。その時、参加されていた林田さんと吉田さんから、Xivelyというネットサービスを教えてもらいました。Xivelyというのは、過去CosmやPathubeと呼ばれていたネットサービスで、センサーなどからのデータをアップする事が出来るものです。林田さんの資料の言葉を借りますと、「Xively はセンサデータを公開し合うユーチューブを意識したサービスとしてスタートした経緯..</description>
            <itunes:summary><![CDATA[
先日、.NET Micro Frameworkの勉強会の準備会というのが梅田でありまして、参加させて頂きました。

その時、参加されていた林田さんと吉田さんから、Xivelyというネットサービスを教えてもらいました。
Xivelyというのは、過去CosmやPathubeと呼ばれていたネットサービスで、センサーなどからのデータをアップする事が出来るものです。林田さんの資料の言葉を借りますと、「Xively はセンサデータを公開し合うユーチューブを意識したサービスとしてスタートした経緯がある。そのデータ投稿管理が良く出来てるので、簡易なM2Mクラウドとして利用する。」との事です。

Xivelyへのアップロードは、Xively側で各種環境向けにライブラリを公開してくれていて、それを利用することで手軽に実施出来ます。
2013年6月9日時点では、Android、Arduino、mBed、C、ElecricImp、Java、JavaScript、Objective-C、Python、Rubyに対応したライブラリが公開されているようです。

<a href="http://projectc3.up.seesaa.net/image/xivelyLib.png" target="_blank"><img border="0" alt="xivelyLib.png" src="http://projectc3.up.seesaa.net/image/xivelyLib-thumbnail2.png" width="306" height="320"></a>


今回は、ベランダに設置した以下のような太陽電池を使って、バッテリーを充電し、それをモニタリングしてみたいと思います。

<a href="http://projectc3.up.seesaa.net/image/solar.jpg" target="_blank"><img border="0" alt="solar.jpg" src="http://projectc3.up.seesaa.net/image/solar-thumbnail2.jpg" width="320" height="306"></a>

そこで、Raspberry Piで簡単な製作を行なってみました。本記事はその取り組みの紹介になります。

今回、僕はRaspberryPiで太陽電池から鉛シール蓄電池へ充電を行い、そのバッテリー電圧をモニターしてXivelyにアップロードしてみることにします。

測定に使用するモジュールはストロベリーリナックスで販売されている、「INA226 I2Cディジタル電流・電圧・電力計モジュール」を使用します。これは、I2C接続で電圧と電流をモニターできるものです。
<img border="0" alt="ina226.jpg" src="http://strawberry-linux.com/images/ina226.jpg" width="300">


このモジュールは以前本ブログの「Raspberry PiのI2Cを利用して簡易電流・電圧計を作る」で取り上げたものです。
http://projectc3.seesaa.net/article/350916175.html

システム構成はこんな感じです。
<a href="http://projectc3.up.seesaa.net/image/xively_solar_blockdiagram.png" target="_blank"><img border="0" alt="xively_solar_blockdiagram.png" src="http://projectc3.up.seesaa.net/image/xively_solar_blockdiagram.png" width="640"></a>


Raspberry Pi側のソフトはCで作成しました。XivelyのライブラリはC用のものをそのまま使用しています。
Cのライブラリの実装は、普通のPOSIX環境で実行できるもののようで、実際にMacOSX上と、Raspberry Pi上で試しましたところ、そのままアッサリ問題なく動いてくれました。
制御はシンプルに、2秒ごとにバッテリー電圧と充電電流をI2C経由で取得し、Xively側にアップロードします。
ソースコードはこちらです。
https://github.com/yishii/rpi_solar_charger_with_xively

上記リポジトリ内に、Xivelyのアップロードに使用するライブラリ(libxively.a)のソースも含んでいます。src直下でmakeすると、libxively.aとメインプログラムのビルドをまとめて行います。

(なお、conf_xively.hにXivelyで使用するキー(API KEYやFEED ID等)に関する情報を設定するようにしています)

こんな感じで確認できます。(電流の系は接続してないので0のままです^^;)
<a href="http://projectc3.up.seesaa.net/image/xively_SS.png" target="_blank"><img border="0" alt="xively_SS.png" src="http://projectc3.up.seesaa.net/image/xively_SS-thumbnail2.png"></a>

実際のXivelyのURL : https://xively.com/feeds/2077712670


<a href="http://projectc3.up.seesaa.net/image/IMG_20130609_181657resized.jpg" target="_blank"><img border="0" alt="IMG_20130609_181657resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130609_181657resized-thumbnail2.jpg" width="240" height="320"></a>

と、いうわけで、Raspberry Piを使用することで、とてもお手軽に測定データをアップして共有する事ができます。今回は有線LAN接続していますが、USB-3Gドングルを接続するなどすると、外に設置した(ex.ビニールハウスに設置して、温度をアップするとか)機器のデータのアップロードも非常に簡単に行えますし、結構楽しそうですね。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51IYHYasekL._SL160_.jpg" alt="Raspberry Pi Type B 512MB" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Pi Type B 512MB</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.06.09RS Components Ltd 売り上げランキング: 457<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Pi&#x30E6;&#x30FC;&#x30B6;&#x30FC;&#x30AC;&#x30A4;&#x30C9;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Piユーザーガイド</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.06.09Eben Upton Gareth Halfacree インプレスジャパン 売り上げランキング: 2,358<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008HYV3ZC/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51SBF86%2B8RL._SL160_.jpg" alt="50W&#x3000;&#x5358;&#x7D50;&#x6676;&#x30BD;&#x30FC;&#x30E9;&#x30FC;&#x30D1;&#x30CD;&#x30EB;&#x3000;&#x592A;&#x967D;&#x5149;&#x30D1;&#x30CD;&#x30EB;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008HYV3ZC/ishiiyasu-22/ref=nosim/" target="_blank">50W　単結晶ソーラーパネル　太陽光パネル</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.06.09POWERTEC 売り上げランキング: 3,194<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008HYV3ZC/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/479803763X/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/613nb0Lb93L._SL160_.jpg" alt="&#x56F3;&#x89E3;&#x5165;&#x9580;&#x3088;&#x304F;&#x308F;&#x304B;&#x308B;&#x6700;&#x65B0;&#x592A;&#x967D;&#x96FB;&#x6C60;&#x306E;&#x57FA;&#x672C;&#x3068;&#x4ED5;&#x7D44;&#x307F; (How&#x2010;nual Visual Guide Book)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/479803763X/ishiiyasu-22/ref=nosim/" target="_blank">図解入門よくわかる最新太陽電池の基本と仕組み (How‐nual Visual Guide Book)</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.06.09東京理科大学総合研究機構太陽光発電研究部門 秀和システム 売り上げランキング: 193,610<a href="http://www.amazon.co.jp/exec/obidos/ASIN/479803763X/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>
<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
先日、.NET Micro Frameworkの勉強会の準備会というのが梅田でありまして、参加させて頂きました。<br>
<br>
その時、参加されていた林田さんと吉田さんから、Xivelyというネットサービスを教えてもらいました。<br>
Xivelyというのは、過去CosmやPathubeと呼ばれていたネットサービスで、センサーなどからのデータをアップする事が出来るものです。林田さんの資料の言葉を借りますと、「Xively はセンサデータを公開し合うユーチューブを意識したサービスとしてスタートした経緯がある。そのデータ投稿管理が良く出来てるので、簡易なM2Mクラウドとして利用する。」との事です。<br>
<br>
Xivelyへのアップロードは、Xively側で各種環境向けにライブラリを公開してくれていて、それを利用することで手軽に実施出来ます。<br>
2013年6月9日時点では、Android、Arduino、mBed、C、ElecricImp、Java、JavaScript、Objective-C、Python、Rubyに対応したライブラリが公開されているようです。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/xivelyLib.png" target="_blank"><img border="0" alt="xivelyLib.png" src="http://projectc3.up.seesaa.net/image/xivelyLib-thumbnail2.png" width="306" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/xivelyLib-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a>
<br>

今回は、ベランダに設置した以下のような太陽電池を使って、バッテリーを充電し、それをモニタリングしてみたいと思います。
<br>
<a href="http://projectc3.up.seesaa.net/image/solar.jpg" target="_blank"><img border="0" alt="solar.jpg" src="http://projectc3.up.seesaa.net/image/solar-thumbnail2.jpg" width="320" height="306" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/solar-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
そこで、Raspberry Piで簡単な製作を行なってみました。本記事はその取り組みの紹介になります。
<br>
今回、僕はRaspberryPiで太陽電池から鉛シール蓄電池へ充電を行い、そのバッテリー電圧をモニターしてXivelyにアップロードしてみることにします。<br>
<br>
測定に使用するモジュールはストロベリーリナックスで販売されている、「INA226 I2Cディジタル電流・電圧・電力計モジュール」を使用します。これは、I2C接続で電圧と電流をモニターできるものです。<br>
<img border="0" alt="ina226.jpg" src="http://strawberry-linux.com/images/ina226.jpg" width=300>
<br>
<br>
このモジュールは以前本ブログの「Raspberry PiのI2Cを利用して簡易電流・電圧計を作る」で取り上げたものです。<br>
<a href="http://projectc3.seesaa.net/article/350916175.html" target="_blank">http://projectc3.seesaa.net/article/350916175.html</a><br>
<br>
システム構成はこんな感じです。<br>
<a href="http://projectc3.up.seesaa.net/image/xively_solar_blockdiagram.png" target="_blank"><img border="0" alt="xively_solar_blockdiagram.png" src="http://projectc3.up.seesaa.net/image/xively_solar_blockdiagram.png" width="640" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/xively_solar_blockdiagram.png.html'; return false;" style="cursor:pointer;" /></a>
<br>
<br>
Raspberry Pi側のソフトはCで作成しました。XivelyのライブラリはC用のものをそのまま使用しています。<br>
Cのライブラリの実装は、普通のPOSIX環境で実行できるもののようで、実際にMacOSX上と、Raspberry Pi上で試しましたところ、そのままアッサリ問題なく動いてくれました。<br>
制御はシンプルに、2秒ごとにバッテリー電圧と充電電流をI2C経由で取得し、Xively側にアップロードします。<br>
<span style="font-size:large;">ソースコードはこちらです。</span><br>
<span style="font-size:large;"><a href="https://github.com/yishii/rpi_solar_charger_with_xively" target="_blank">https://github.com/yishii/rpi_solar_charger_with_xively</a></span><br>
<br>
上記リポジトリ内に、Xivelyのアップロードに使用するライブラリ(libxively.a)のソースも含んでいます。src直下でmakeすると、libxively.aとメインプログラムのビルドをまとめて行います。<br>
<br>
(なお、conf_xively.hにXivelyで使用するキー(API KEYやFEED ID等)に関する情報を設定するようにしています)<br>
<br>
こんな感じで確認できます。(電流の系は接続してないので0のままです^^;)
<a href="http://projectc3.up.seesaa.net/image/xively_SS.png" target="_blank"><img border="0" alt="xively_SS.png" src="http://projectc3.up.seesaa.net/image/xively_SS-thumbnail2.png" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/xively_SS-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a>
<br>
<span style="font-size:large;">実際のXivelyのURL : <a href="https://xively.com/feeds/2077712670" target="_blank">https://xively.com/feeds/2077712670</a></span>
<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130609_181657resized.jpg" target="_blank"><img border="0" alt="IMG_20130609_181657resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130609_181657resized-thumbnail2.jpg" width="240" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130609_181657resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
と、いうわけで、Raspberry Piを使用することで、とてもお手軽に測定データをアップして共有する事ができます。今回は有線LAN接続していますが、USB-3Gドングルを接続するなどすると、外に設置した(ex.ビニールハウスに設置して、温度をアップするとか)機器のデータのアップロードも非常に簡単に行えますし、結構楽しそうですね。<br>
<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51IYHYasekL._SL160_.jpg" alt="Raspberry Pi Type B 512MB" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Pi Type B 512MB</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.06.09</div></div><div class="amazlet-detail">RS Components Ltd <br />売り上げランキング: 457<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Piユーザーガイド" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Piユーザーガイド</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.06.09</div></div><div class="amazlet-detail">Eben Upton Gareth Halfacree <br />インプレスジャパン <br />売り上げランキング: 2,358<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008HYV3ZC/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51SBF86%2B8RL._SL160_.jpg" alt="50W　単結晶ソーラーパネル　太陽光パネル" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008HYV3ZC/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">50W　単結晶ソーラーパネル　太陽光パネル</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.06.09</div></div><div class="amazlet-detail">POWERTEC <br />売り上げランキング: 3,194<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008HYV3ZC/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/479803763X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/613nb0Lb93L._SL160_.jpg" alt="図解入門よくわかる最新太陽電池の基本と仕組み (How‐nual Visual Guide Book)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/479803763X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">図解入門よくわかる最新太陽電池の基本と仕組み (How‐nual Visual Guide Book)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.06.09</div></div><div class="amazlet-detail">東京理科大学総合研究機構太陽光発電研究部門 <br />秀和システム <br />売り上げランキング: 193,610<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/479803763X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Raspberry Pi</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/365783126</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/xivelyLib.png" length="155275" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/xivelyLib.png" length="155275" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/solar.jpg" length="133350" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/solar.jpg" length="133350" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/xively_solar_blockdiagram.png" length="336421" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/xively_solar_blockdiagram.png" length="336421" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/xively_SS.png" length="83128" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/xively_SS.png" length="83128" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130609_181657resized.jpg" length="47313" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130609_181657resized.jpg" length="47313" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/360810445.html</link>
      <title>Raspberry Pi+GPSで現在地図+ストリートビューを表示する車載機器を作ってみる</title>
      <pubDate>Sun, 12 May 2013 12:03:59 +0900</pubDate>
            <description>GWで実家に帰省してて時間もあるというわけで、Raspberry Piで、非Xで、Raspberry Piならではのアプリケーションを実現したい、と思っていたら、Raspbian &quot;wheezy&quot;の/opt/vc/以下にRaspberry Piのハードを活用できる各種サンプルコードが入っていました。主に、OpenMAXを叩いてどうこう、みたいなのが多いようです。このコードをベースに、VideoCoreのハードを叩いて何か作ろう、と思いました。さて、そのネタとして、たまたま僕が..</description>
            <itunes:summary><![CDATA[
GWで実家に帰省してて時間もあるというわけで、Raspberry Piで、非Xで、Raspberry Piならではのアプリケーションを実現したい、と思っていたら、Raspbian "wheezy"の/opt/vc/以下にRaspberry Piのハードを活用できる各種サンプルコードが入っていました。主に、OpenMAXを叩いてどうこう、みたいなのが多いようです。

このコードをベースに、VideoCoreのハードを叩いて何か作ろう、と思いました。

さて、そのネタとして、たまたま僕が普段乗っている軽トラには非常に地図データが古いカロッツェリアのカーナビを搭載してまして、最近はスマホでナビしている関係で全然活用してませんでした。
このナビにはコンポジットビデオ入力がついているので、そこにRaspberry Piを接続し、たまたま手元にあったGPSモジュール(ストロベリー・リナックスで販売しているもの)を使用して、現在地のGoogle MapとStreet View表示するシステム MapTracer を作ってみることにしました。

/opt/vc以下にハードのデコーダーを使用してデコードのみ行なっているとおもわれるサンプルコード(hello_jpeg)があったので、これを参考にハードでコードしてフレームバッファ展開しようと思いましたが、結局ソフトデコードで全然問題なさそうでしたので、結局/opt/vc以下のコードベースのハードデコードは使ってません。


軽トラに取り付けた様子

<a href="http://projectc3.up.seesaa.net/image/IMG_20130504_183859resized.jpg" target="_blank"><img border="0" alt="IMG_20130504_183859resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130504_183859resized-thumbnail2.jpg" width="316" height="320"></a>
雨降ってます。笑
<a href="http://projectc3.up.seesaa.net/image/IMG_20130504_182919resized.jpg" target="_blank"><img border="0" alt="IMG_20130504_182919resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130504_182919resized-thumbnail2.jpg" width="320" height="240"></a>

<a href="http://projectc3.up.seesaa.net/image/IMG_20130504_182913resized.jpg" target="_blank"><img border="0" alt="IMG_20130504_182913resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130504_182913resized-thumbnail2.jpg" width="320" height="240"></a>

なんかー、若干(?)設置イメージがあやしいです。笑




MapTracerの構成

構成は以下のようにしました。
<a href="http://projectc3.up.seesaa.net/image/maptracer_image.png" target="_blank"><img border="0" alt="maptracer_image.png" src="http://projectc3.up.seesaa.net/image/maptracer_image.png" width="500"></a>

<a href="http://projectc3.up.seesaa.net/image/maptracer_stack.png" target="_blank"><img border="0" alt="maptracer_stack.png" src="http://projectc3.up.seesaa.net/image/maptracer_stack.png"></a>

GPSからのデータはRS-232Cで受信します。RS-232C-USB変換ケーブルを使用しました。Raspberry Piのピンヘッダ上のUART(/dev/ttyAMA0)でも通信出来るでしょう。
このGPSのデータ形式は多くのGPSモジュールで採用されているNMEA0183のタイプですので、オープンソースのNMEA Libraryを使用させていただき、パースすることにします。

http://nmea.sourceforge.net/

パースした結果の位置情報から、地図のデータを取得するのに、Google APIの「Static Maps API」と「Street View Image API」を使用します。Google APIは以下のサイトに入って有効にしておきます。
https://code.google.com/apis/console/

<a href="http://projectc3.up.seesaa.net/image/enable_api_map_and_stview.png" target="_blank"><img border="0" alt="enable_api_map_and_stview.png" src="http://projectc3.up.seesaa.net/image/enable_api_map_and_stview.png"></a>

APIを使用したアクセスにはAPIキーが必要なのですが、それは上記Google APIのサイト内「API Access」にて取得できます。

APIのやりとりにhttpのリクエスト・レスポンスを使用します。その動作の実現にlibcurlを使用します。

GUIの描画及びキーイベント等のハンドリングにはSDL(Simple DirectMedia Layer)を使用します。
SDLの構造はこんな感じです(WikipediaのSDLライブラリの項目より)
<a href="http://projectc3.up.seesaa.net/image/sdl_architecture.png" target="_blank"><img border="0" alt="sdl_architecture.png" src="http://projectc3.up.seesaa.net/image/sdl_architecture-thumbnail2.png" width="320" height="269"></a>
SDLを使用して作成したコードは複数のプラットフォーム間で一定の互換性を持って使用できるようです。今回Linuxの非Xで構築しようとしていましたが、同じバイナリをXから起動するとマルチウィンドウでそのままうまく動作してくれました。
今回は静止画データを扱うので、SDLとその補助ライブラリであります「SDL_image」を使用しました。


実行環境の整備と、ソースダウンロード+ビルド方法

今回使用するRaspberry PiのディストリビューションはRaspbian "wheezy"の2013/2/9のもの(2013-02-09-wheezy-raspbian.zip)です。
これをRaspberry Piで起動し、SDL、libcurl等のセットアップを行っていきます。


$ sudo apt-get update
$ sudo apt-get install curl libcurl4-openssl-dev libsdl-dev

ついでに、今回使用するイーモバイルの3Gドングル D31HW用にwvdialとusb-modeswitchもインストールします。

$ sudo apt-get install usb-modeswitch
ここでudevのキックするか再起動する
$ sudo apt-get install wvdial
★ここでGPSモジュールがボードに繋がっていると、wvdialが実施する初期設定から戻ってこなくなので注意。


また、SDL_Imageの共有ライブラリのシンボリックリンクを貼っておきます(何故か張ってなかったので)。

$ cd /usr/lib/arm-linux-gnueabihf/
$ sudo ln -s libSDL_image-1.2.so.0 libSDL_image.so


MapTracerのコード(+NMEA Library)はgithubに上げてあります。
https://github.com/yishii/MapTracer


ソースコードを取得される場合には、

$ git clone https://github.com/yishii/MapTracer.git

とします。(RPiでも、gitがセットアップしてあれば(sudo apt-get install git)そのまま取得出来ます)

ここで、handle_googleapi_key.hに取得したAPI KEYを設定して下さい。


#ifndef __HANDLE_GOOGLEAPI_KEY_H__
#define __HANDLE_GOOGLEAPI_KEY_H__

#define GOOGLE_API_KEY "SET_YOUR_OWN_API_KEY_TO_HERE!" // ★ここにAPIキーをセットする!

#endif


ビルドは、

$ cd ./src
$ make

とするだけです。ビルドに成功すると、「maptracer」というプロセスが生成されています。




起動と操作方法

いくつかのオプションで動作を指定出来ます。-p オプションは必須です。

maptracer [option]
-p [tty_device] : GPSを接続したポートを指定する。例)-p /dev/ttyUSB2
-c : コンポジット出力対応に画面解像度を落とす
-d : デモモード(GPSが何を言おうと大阪駅前を指す)


また、操作ですが、キーボードで行います。

[1] : Google Mapモードへ
[2] : Google Street Viewモードへ
[0] : アプリ終了

出来れば、画面の左右にストリートビューとマップを同時表示する画面作ったほうがよかったですね。そういえば。。


<a href="http://projectc3.up.seesaa.net/image/IMG_20130512_202227.jpg" target="_blank"><img border="0" alt="IMG_20130512_202227.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130512_202227-thumbnail2.jpg" width="320" height="240"></a>

GPSと3Gドングルのデバイス名の固定化

今回使用したイーモバイルの3Gドングル D31HWは/dev/ttyUSB*として認識します。
GPSモジュールはUSBシリアル変換ケーブル(PL2303を使用したもの)を使用したのですが、これも/dev/ttyUSB*として認識します。
認識した順序でデバイス名が割り振られるので、番号が変化するのは固定的にデバイス名を指定して起動したい場合には不都合です。
そこで、3Gドングルは/dev/ttyUSB_3G、GPSモジュール(PL2303のUSB)は/dev/ttyUSB_GPSとして認識するようにしてみます。
ここでudevルールファイルを設定します。以下のようなファイルを用意しました。
これを例えば「/etc/udev/rules.d/45-local.rules」というファイル名として保存します。


# udev rules
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", NAME="ttyUSB_GPS"
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="143a", ATTRS{devnum}=="5", SYMLINK="ttyUSB_3G"


Raspberry Pi電源投入後自動で3G接続しアプリ起動するようにする

/etc/rc.localの最後の方に以下のように記載しました。maptracerのパス等はカスタマイズして下さい。


/usr/bin/wvdial &
sleep 20
/home/pi/MapTracer/src/maptracer -p /dev/ttyUSB_GPS




作ってみて

地図はきちんと追従してくれて楽しいです。特に、ストリートビューが楽しいかも、って思いました。ただ、自分が運転してると危なっかしくて画面見てられません。笑

助手席で見たいです。(出来れば)
また、GPSモジュールですが、今回使用したものは1Hz出力のものです。10Hz出力のものだとかなり細かく動いてもっと楽しいかもしれません。


ギモン


Raspberry PiのHDMI出力での使用時には問題ないのですが、コンポジット出力時はSDL_SetVideoMode関数の第二引数(画面の高さ)を400程度にしておかないとAPI内で落ちてしまうようでした。ひとまずコンポジット出力の時は400にするようにしています。別にコンポジット出力の解像度にバインドされている
と思ってなかったのですが、そういうもんなのでしょーか?

コードの引用

bool gui_open(bool cvbs,bool no_gui)
{
    if (SDL_Init(SDL_INIT_VIDEO) &lt; 0){
        printf("SDL_Init failed (%s)\n",SDL_GetError());
        return false;
    }
    cvbs_resolution = cvbs;
    no_gui_mode = no_gui;

    SDL_VideoInfo* vinfo = SDL_GetVideoInfo();

    if(cvbs_resolution == false){
      screen = SDL_SetVideoMode(600,
                                600,
                                16,
                                SDL_HWSURFACE);
    } else {
      screen = SDL_SetVideoMode(600,
                                400, // ★ここ
                                16,
                                SDL_HWSURFACE);
    }




<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CFEP64O/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/417VHg%2BJVEL._SL160_.jpg" alt="GROVE - GPS" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CFEP64O/ishiiyasu-22/ref=nosim/" target="_blank">GROVE - GPS</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.05.12スイッチサイエンス <a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CFEP64O/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Pi&#x30E6;&#x30FC;&#x30B6;&#x30FC;&#x30AC;&#x30A4;&#x30C9;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Piユーザーガイド</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.05.12Eben Upton Gareth Halfacree インプレスジャパン 売り上げランキング: 1,150<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51IYHYasekL._SL160_.jpg" alt="Raspberry Pi Type B 512MB" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Pi Type B 512MB</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.05.12RS Components Ltd 売り上げランキング: 1,093<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>



<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
GWで実家に帰省してて時間もあるというわけで、Raspberry Piで、非Xで、Raspberry Piならではのアプリケーションを実現したい、と思っていたら、Raspbian "wheezy"の/opt/vc/以下にRaspberry Piのハードを活用できる各種サンプルコードが入っていました。主に、OpenMAXを叩いてどうこう、みたいなのが多いようです。<br>
<br>
このコードをベースに、VideoCoreのハードを叩いて何か作ろう、と思いました。<br>
<br>
さて、そのネタとして、たまたま僕が普段乗っている軽トラには非常に地図データが古いカロッツェリアのカーナビを搭載してまして、最近はスマホでナビしている関係で全然活用してませんでした。<br>
このナビにはコンポジットビデオ入力がついているので、そこにRaspberry Piを接続し、たまたま手元にあったGPSモジュール(ストロベリー・リナックスで販売しているもの)を使用して、現在地のGoogle MapとStreet View表示するシステム MapTracer を作ってみることにしました。<br>
<br>
/opt/vc以下にハードのデコーダーを使用してデコードのみ行なっているとおもわれるサンプルコード(hello_jpeg)があったので、これを参考にハードでコードしてフレームバッファ展開しようと思いましたが、結局ソフトデコードで全然問題なさそうでしたので、結局/opt/vc以下のコードベースのハードデコードは使ってません。<br>
<br>
<br>
<span style="font-size:large;">軽トラに取り付けた様子</span><br>
<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130504_183859resized.jpg" target="_blank"><img border="0" alt="IMG_20130504_183859resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130504_183859resized-thumbnail2.jpg" width="316" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130504_183859resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
雨降ってます。笑<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130504_182919resized.jpg" target="_blank"><img border="0" alt="IMG_20130504_182919resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130504_182919resized-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130504_182919resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130504_182913resized.jpg" target="_blank"><img border="0" alt="IMG_20130504_182913resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130504_182913resized-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130504_182913resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
なんかー、若干(?)設置イメージがあやしいです。笑<br>

<br>


<span style="font-size:large;">MapTracerの構成</span><br>

構成は以下のようにしました。<br>
<a href="http://projectc3.up.seesaa.net/image/maptracer_image.png" target="_blank"><img border="0" alt="maptracer_image.png" src="http://projectc3.up.seesaa.net/image/maptracer_image.png" width="500" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/maptracer_image.png.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
<a href="http://projectc3.up.seesaa.net/image/maptracer_stack.png" target="_blank"><img border="0" alt="maptracer_stack.png" src="http://projectc3.up.seesaa.net/image/maptracer_stack.png" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/maptracer_stack.png.html'; return false;" style="cursor:pointer;" /></a>
<br>
GPSからのデータはRS-232Cで受信します。RS-232C-USB変換ケーブルを使用しました。Raspberry Piのピンヘッダ上のUART(/dev/ttyAMA0)でも通信出来るでしょう。<br>
このGPSのデータ形式は多くのGPSモジュールで採用されているNMEA0183のタイプですので、オープンソースのNMEA Libraryを使用させていただき、パースすることにします。<br>
<br>
<a href="http://nmea.sourceforge.net/" target="_blank">http://nmea.sourceforge.net/</a><br>
<br>
パースした結果の位置情報から、地図のデータを取得するのに、Google APIの「Static Maps API」と「Street View Image API」を使用します。Google APIは以下のサイトに入って有効にしておきます。<br>
<a href="https://code.google.com/apis/console/" target="_blank">https://code.google.com/apis/console/</a><br>
<br>
<a href="http://projectc3.up.seesaa.net/image/enable_api_map_and_stview.png" target="_blank"><img border="0" alt="enable_api_map_and_stview.png" src="http://projectc3.up.seesaa.net/image/enable_api_map_and_stview.png" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/enable_api_map_and_stview.png.html'; return false;" style="cursor:pointer;" /></a>
<br>
APIを使用したアクセスにはAPIキーが必要なのですが、それは上記Google APIのサイト内「API Access」にて取得できます。<br>
<br>
APIのやりとりにhttpのリクエスト・レスポンスを使用します。その動作の実現にlibcurlを使用します。<br>
<br>
GUIの描画及びキーイベント等のハンドリングにはSDL(Simple DirectMedia Layer)を使用します。<br>
SDLの構造はこんな感じです(WikipediaのSDLライブラリの項目より)<br>
<a href="http://projectc3.up.seesaa.net/image/sdl_architecture.png" target="_blank"><img border="0" alt="sdl_architecture.png" src="http://projectc3.up.seesaa.net/image/sdl_architecture-thumbnail2.png" width="320" height="269" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/sdl_architecture-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br>
SDLを使用して作成したコードは複数のプラットフォーム間で一定の互換性を持って使用できるようです。今回Linuxの非Xで構築しようとしていましたが、同じバイナリをXから起動するとマルチウィンドウでそのままうまく動作してくれました。<br>
<br>今回は静止画データを扱うので、SDLとその補助ライブラリであります「SDL_image」を使用しました。<br>
<br>

<span style="font-size:large;">実行環境の整備と、ソースダウンロード+ビルド方法</span><br>
<br>
今回使用するRaspberry PiのディストリビューションはRaspbian "wheezy"の2013/2/9のもの(2013-02-09-wheezy-raspbian.zip)です。<br>
これをRaspberry Piで起動し、SDL、libcurl等のセットアップを行っていきます。<br>

<blockquote>
$ sudo apt-get update<br>
$ sudo apt-get install curl libcurl4-openssl-dev libsdl-dev<br>
</blockquote>
ついでに、今回使用するイーモバイルの3Gドングル D31HW用にwvdialとusb-modeswitchもインストールします。<br>
<blockquote>
$ sudo apt-get install usb-modeswitch<br>
ここでudevのキックするか再起動する<br>
$ sudo apt-get install wvdial<br>
★ここでGPSモジュールがボードに繋がっていると、wvdialが実施する初期設定から戻ってこなくなので注意。<br>
</blockquote>

また、SDL_Imageの共有ライブラリのシンボリックリンクを貼っておきます(何故か張ってなかったので)。<br>
<blockquote>
$ cd /usr/lib/arm-linux-gnueabihf/<br>
$ sudo ln -s libSDL_image-1.2.so.0 libSDL_image.so
</blockquote>
<br>
MapTracerのコード(+NMEA Library)はgithubに上げてあります。<br>
<span style="font-size:large;"><a href="https://github.com/yishii/MapTracer" target="_blank">https://github.com/yishii/MapTracer</a></span><br>

<br>
ソースコードを取得される場合には、<br>
<blockquote>
$ git clone <a href="https://github.com/yishii/MapTracer.git" target="_blank">https://github.com/yishii/MapTracer.git</a><br>
</blockquote>
とします。(RPiでも、gitがセットアップしてあれば(sudo apt-get install git)そのまま取得出来ます)<br>
<br>
ここで、handle_googleapi_key.hに取得したAPI KEYを設定して下さい。<br>
<br>
<pre name="code" class="cpp">
#ifndef __HANDLE_GOOGLEAPI_KEY_H__
#define __HANDLE_GOOGLEAPI_KEY_H__

#define GOOGLE_API_KEY "SET_YOUR_OWN_API_KEY_TO_HERE!" // ★ここにAPIキーをセットする!

#endif
</pre>

<br>ビルドは、<br>
<blockquote>
$ cd ./src<br>
$ make<br>
</blockquote>
とするだけです。ビルドに成功すると、「maptracer」というプロセスが生成されています。

<br>
<br>

<span style="font-size:large;">起動と操作方法</span>
<br>
いくつかのオプションで動作を指定出来ます。-p <tty_device>オプションは必須です。<br>
<blockquote>
maptracer [option]<br>
-p [tty_device] : GPSを接続したポートを指定する。例)-p /dev/ttyUSB2<br>
-c : コンポジット出力対応に画面解像度を落とす<br>
-d : デモモード(GPSが何を言おうと大阪駅前を指す)<br>
</blockquote>
<br>
また、操作ですが、キーボードで行います。<br>
<blockquote>
[1] : Google Mapモードへ<br>
[2] : Google Street Viewモードへ<br>
[0] : アプリ終了<br>
</blockquote>
出来れば、画面の左右にストリートビューとマップを同時表示する画面作ったほうがよかったですね。そういえば。。<br>
<br>

<a href="http://projectc3.up.seesaa.net/image/IMG_20130512_202227.jpg" target="_blank"><img border="0" alt="IMG_20130512_202227.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130512_202227-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130512_202227-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
<span style="font-size:large;">GPSと3Gドングルのデバイス名の固定化</span>
<br>
今回使用したイーモバイルの3Gドングル D31HWは/dev/ttyUSB*として認識します。<br>
GPSモジュールはUSBシリアル変換ケーブル(PL2303を使用したもの)を使用したのですが、これも/dev/ttyUSB*として認識します。<br>
認識した順序でデバイス名が割り振られるので、番号が変化するのは固定的にデバイス名を指定して起動したい場合には不都合です。<br>
そこで、3Gドングルは/dev/ttyUSB_3G、GPSモジュール(PL2303のUSB)は/dev/ttyUSB_GPSとして認識するようにしてみます。<br>
ここでudevルールファイルを設定します。以下のようなファイルを用意しました。<br>
これを例えば「/etc/udev/rules.d/45-local.rules」というファイル名として保存します。<br>

<pre name="code" class="cpp">
# udev rules
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", NAME="ttyUSB_GPS"
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="143a", ATTRS{devnum}=="5", SYMLINK="ttyUSB_3G"
</pre>

<span style="font-size:large;">Raspberry Pi電源投入後自動で3G接続しアプリ起動するようにする</span>
<br>
/etc/rc.localの最後の方に以下のように記載しました。maptracerのパス等はカスタマイズして下さい。<br>

<pre name="code" class="cpp">
/usr/bin/wvdial &
sleep 20
/home/pi/MapTracer/src/maptracer -p /dev/ttyUSB_GPS
</pre>

<br>
<br>
<span style="font-size:large;">作ってみて</span>
<br>
地図はきちんと追従してくれて楽しいです。特に、ストリートビューが楽しいかも、って思いました。ただ、自分が運転してると危なっかしくて画面見てられません。笑<br>
<br>
助手席で見たいです。(出来れば)<br>
また、GPSモジュールですが、今回使用したものは1Hz出力のものです。10Hz出力のものだとかなり細かく動いてもっと楽しいかもしれません。<br>
<br>

<span style="font-size:large;">ギモン</span>
<br>

Raspberry PiのHDMI出力での使用時には問題ないのですが、コンポジット出力時はSDL_SetVideoMode関数の第二引数(画面の高さ)を400程度にしておかないとAPI内で落ちてしまうようでした。ひとまずコンポジット出力の時は400にするようにしています。別にコンポジット出力の解像度にバインドされている
と思ってなかったのですが、そういうもんなのでしょーか?<br>
<br>
コードの引用<br>
<pre name="code" class="cpp">
bool gui_open(bool cvbs,bool no_gui)
{
    if (SDL_Init(SDL_INIT_VIDEO) < 0){
        printf("SDL_Init failed (%s)\n",SDL_GetError());
        return false;
    }
    cvbs_resolution = cvbs;
    no_gui_mode = no_gui;

    SDL_VideoInfo* vinfo = SDL_GetVideoInfo();

    if(cvbs_resolution == false){
      screen = SDL_SetVideoMode(600,
                                600,
                                16,
                                SDL_HWSURFACE);
    } else {
      screen = SDL_SetVideoMode(600,
                                400, // ★ここ
                                16,
                                SDL_HWSURFACE);
    }
</pre>



<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CFEP64O/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/417VHg%2BJVEL._SL160_.jpg" alt="GROVE - GPS" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CFEP64O/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">GROVE - GPS</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.05.12</div></div><div class="amazlet-detail">スイッチサイエンス <br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CFEP64O/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Piユーザーガイド" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Piユーザーガイド</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.05.12</div></div><div class="amazlet-detail">Eben Upton Gareth Halfacree <br />インプレスジャパン <br />売り上げランキング: 1,150<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51IYHYasekL._SL160_.jpg" alt="Raspberry Pi Type B 512MB" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Pi Type B 512MB</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.05.12</div></div><div class="amazlet-detail">RS Components Ltd <br />売り上げランキング: 1,093<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>



<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Raspberry Pi</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/360810445</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130504_183859resized.jpg" length="37808" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130504_183859resized.jpg" length="37808" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130504_182919resized.jpg" length="54286" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130504_182919resized.jpg" length="54286" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130504_182913resized.jpg" length="60765" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130504_182913resized.jpg" length="60765" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/maptracer_image.png" length="405083" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/maptracer_image.png" length="405083" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/maptracer_stack.png" length="61090" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/maptracer_stack.png" length="61090" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/enable_api_map_and_stview.png" length="69453" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/enable_api_map_and_stview.png" length="69453" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/sdl_architecture.png" length="65716" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/sdl_architecture.png" length="65716" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130512_202227.jpg" length="259893" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130512_202227.jpg" length="259893" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/357559302.html</link>
      <title>Raspberry PiでI/O拡張&amp;Arduinoシールドを使おう〜firmata+Ruby編</title>
      <pubDate>Sun, 28 Apr 2013 04:16:22 +0900</pubDate>
            <description>Raspberry Piでいろいろと制御を楽しむ時に、よりたくさんのI/Oを叩きたいとか、サーボを手軽に動かしたくなる場合があるかもしれません。また、Arduinoシールドを既に持っている場合、これを活用したいという場合もあるでしょう。Raspberry PiはそれほどはI/Oが充実していませんしね〜。以下は回路図のピンヘッダのところ。回路図にありますように、SPI、I2Cが出てるので、ポートエキスパンダを接続するという手は使えます。ポートエキスパンダは、例えばこんなのとか。..</description>
            <itunes:summary><![CDATA[
Raspberry Piでいろいろと制御を楽しむ時に、よりたくさんのI/Oを叩きたいとか、サーボを手軽に動かしたくなる場合があるかもしれません。また、Arduinoシールドを既に持っている場合、これを活用したいという場合もあるでしょう。
Raspberry PiはそれほどはI/Oが充実していませんしね〜。以下は回路図のピンヘッダのところ。
<a href="http://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" target="_blank"><img border="0" alt="RPi_PIN_sch.png" src="http://projectc3.up.seesaa.net/image/RPi_PIN_sch-thumbnail2.png" width="320" height="271"></a>
回路図にありますように、SPI、I2Cが出てるので、ポートエキスパンダを接続するという手は使えます。
ポートエキスパンダは、例えばこんなのとか。
http://akizukidenshi.com/catalog/g/gI-03708/

とはいえPWMやりたい、とかAD値を取りたいとか、なんてことを手軽な工作で実現するには手間がかかりそうです。


本記事では、上記を解決するアプローチの１つとして、firmataのスケッチを書き込んだArduinoマイコンボードをRaspberry PiのUSBポートに接続し、Raspberry Pi側からArduinoを手足のように使って制御を行なってみる内容になっています。
そんなわけで、ArduinoシールドもRaspberry Piから制御できるようになります。いろいろお持ちの方は資産活用できるかもしれませんね

firmataは、元々PC用のJavaベースの開発環境Processingで、PCに接続したArduinoマイコンボードを制御してフィジカルコンピューティングするものです(と理解してます)。

そこで、firmataのプロトコル http://firmata.org/wiki/Protocol をRaspberryPi側に喋らせる事で、Raspberry Piで手軽にArduinoマイコンボードを制御できるようにする準備をしていきたいと思います。今回、Raspberry Pi側で使用する言語はRubyにしました。これでRaspberry Pi上のスクリプト言語で、お手軽にスケッチ相当のコードを書いて、フィジカルコンピューティング出来ますね!(たぶん)

<a href="http://projectc3.up.seesaa.net/image/IMG_20130428_030933resized.jpg" target="_blank"><img border="0" alt="IMG_20130428_030933resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130428_030933resized-thumbnail2.jpg" width="320" height="240"></a>

さて、今回はArduinoマイコンボードとして最もスタンダードなものの１つである、Arduino Unoを使用しました。
最近スイッチサイエンスさんではこのボード、永久保証されてるようで話題になりました。
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/5127o7CglFL._SL160_.jpg" alt="&#x3010;&#x6C38;&#x4E45;&#x4FDD;&#x8A3C;&#x4ED8;&#x304D;&#x3011;Arduino Uno" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/ishiiyasu-22/ref=nosim/" target="_blank">【永久保証付き】Arduino Uno</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.27スイッチサイエンス 売り上げランキング: 3,309<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

Arduinoマイコンボード側の準備


では、これに、Standard Firmataのスケッチを焼きこんでおきましょう。サンプルに用意されています。
<a href="http://projectc3.up.seesaa.net/image/ss_firmata.png" target="_blank"><img border="0" alt="ss_firmata.png" src="http://projectc3.up.seesaa.net/image/ss_firmata-thumbnail2.png" width="320" height="237"></a>

Raspberry Pi側の準備
Raspberry Pi側のディストリビューションはRaspbian Wheezyを使用します。その他のLinuxディストリビューションでも多分実施可能かとは思います。Arduno Unoを認識させる為には、USB CDC ACMデバイスを認識できるようにする必要がありますが、Raspbian Wheezyでは標準で認識するようになってます。

●Rubyのセットアップ
今回はRubyとRubyでシリアルポートを制御するruby-serialportを使用します。また、ruby-serialportをセットアップするのにRubygemを使用しますので、以下のようにセットアップするとOKです。


$ sudo apt-get install ruby
$ sudo apt-get install ruby-dev
$ sudo apt-get install rubygems
$ sudo gem install ruby-serialport


ruby-devは、gemでモジュールをインストールする際に必要になる関係でセットアップしています。

では、ライブラリを準備します。

patcoll氏のruby-firmataをベースに、現在のfirmataで使用できるように改造し、改変や機能追加したものを私のgithubで公開しています。

当初そのまま使えるかなと思ってたのですが、ruby-firmataの開発が2年ほど止まっているようで、その間のfirmataの拡張などもあったためでしょうか、そのままでは動作させられませんでした。
改変版は以下にあります。
https://github.com/yishii/ruby-firmata 
これを取得します。
下記のようにgitで取得出来ますし、gitを使わない場合、「<a href="http://projectc3.up.seesaa.net/image/zip_icon_github.png" target="_blank"><img border="0" alt="zip_icon_github.png" src="http://projectc3.up.seesaa.net/image/zip_icon_github-thumbnail2.png" width="75" height="34"></a>」アイコンをクリックするとZip形式でダウンロード出来ます。

git clone https://github.com/yishii/ruby-firmata

それではサンプルコードを用意します。以下のコードは、上述のリポジトリ内にあります、test.rbとなってます。runメソッドにクラスを渡すとsetupとloopを呼び出すArduino IDEライクなスタイルです。直接Arduinoクラスメソッド呼び出しでの制御もできますので、お好みで。

digital_readやanalog_readメソッドの値は、firmataではレポートが定期的(または変化があった時)にArduino側から送られてきますので、それをパースした結果を返します。本ライブラリでいえば、Arduino::parseを呼び出した内部でArduinoからのレポートを解釈し、内部で記録します。

コードを見ていただくとおわかりになるかと思いますが、内容としては、デジタルピン2番をリードしてデジタルピン13番のHigh/Lowを制御するのと、アナログピン0番をリードしてデジタルピン9番に接続したサーボモーターを制御させています。


require './lib/arduino'

class Test
  def initialize(arduino)
    @arduino = arduino
  end

  def setup
    @arduino.set_report_interval(100) # アナログ値のレポート間隔 = 100[ms] 短かくし過ぎた場合通信量が大きくなるので注意
    @arduino.pin_mode(Arduino::DIGITAL2 , Arduino::INPUT)
    @arduino.pin_mode(Arduino::DIGITAL3 , Arduino::INPUT)
    @arduino.pin_mode(Arduino::DIGITAL13, Arduino::OUTPUT)
    @arduino.pin_mode(Arduino::DIGITAL9 , Arduino::SERVO)
    @arduino.pin_mode(Arduino::ANALOG0  , Arduino::ANALOG)
    @arduino.report # デジタル・アナログのレポート開始
  end

  def loop
    @arduino.parse # レポートを受信して解釈する

    # デジタルピン2番のLOW/HIGHでデジタルピン13番を制御
    if (@arduino.digital_read(Arduino::DIGITAL2) == 0)
      @arduino.digital_write(Arduino::DIGITAL13,0)
    else
      @arduino.digital_write(Arduino::DIGITAL13,1)
    end

    # アナログピン0番の入力値を用いてデジタルピン9番のサーボを回転させる
    val = @arduino.analog_read(Arduino::ANALOG0)
    @arduino.servo_write(Arduino::DIGITAL9,val &gt;&gt; 2)
   end

end

arduino = Arduino.new("/dev/ttyACM0")
arduino.run(Test)




/dev/ttyACM0は、Arduino Unoのシリアルポートのデバイススペシャルファイルです。これを介してRaspberry PiからArduino Unoにアクセスします。

テストに使用したのは、ジョイスティックシールド+サーボモーター+LEDです。
<a href="http://projectc3.up.seesaa.net/image/IMG_20130428_030941resized.jpg" target="_blank"><img border="0" alt="IMG_20130428_030941resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130428_030941resized-thumbnail2.jpg" width="320" height="240"></a>

<a href="http://projectc3.up.seesaa.net/image/IMG_20130428_030852resized.jpg" target="_blank"><img border="0" alt="IMG_20130428_030852resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130428_030852resized-thumbnail2.jpg" width="240" height="320"></a>

使用してるところの動画撮りましたのでどーぞ!
<a href="http://www.youtube.com/watch?v=kCBxGZ9DPo4&amp;feature=youtube_gdata&amp;external_video_config=width%3D480%26height%3D320">Raspberry PiのI/Oをfirmataで拡張してみる</a>


firmataを使用すれば、手軽にRaspberry PiでI/O制御の拡張と、既存Arduinoシールド資産が活用できるので、よかったら是非どうぞー!

ちなみに、今回使用したライブラリはArduino::parseメソッドを呼び出して1バイトずつデータを解釈させるのですが、できれば受信は別スレッドで行わせたほうが扱いやすいように思います。その内また更新して本ブログに掲載させていただこうかなーと思います。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Pi&#x30E6;&#x30FC;&#x30B6;&#x30FC;&#x30AC;&#x30A4;&#x30C9;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Piユーザーガイド</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.28Eben Upton Gareth Halfacree インプレスジャパン 売り上げランキング: 1,952<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00BPWK7KU/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51oJ16nYXXL._SL160_.jpg" alt="Interface (&#x30A4;&#x30F3;&#x30BF;&#x30FC;&#x30D5;&#x30A7;&#x30FC;&#x30B9;) &#x5897;&#x520A; &#x304A;&#x624B;&#x8EFD;ARM&#x30B3;&#x30F3;&#x30D4;&#x30E5;&#x30FC;&#x30BF; &#x30E9;&#x30BA;&#x30D9;&#x30EA;&#x30FC;&#x30D1;&#x30A4;&#x3067;I/O 2013&#x5E74; 04&#x6708;&#x53F7; [&#x96D1;&#x8A8C;]" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00BPWK7KU/ishiiyasu-22/ref=nosim/" target="_blank">Interface (インターフェース) 増刊 お手軽ARMコンピュータ ラズベリーパイでI/O 2013年 04月号 [雑誌]</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.28CQ出版 (2013-03-29)<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00BPWK7KU/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51IYHYasekL._SL160_.jpg" alt="Raspberry Pi Type B 512MB" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Pi Type B 512MB</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.28RS Components Ltd 売り上げランキング: 1,915<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>



<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
Raspberry Piでいろいろと制御を楽しむ時に、よりたくさんのI/Oを叩きたいとか、サーボを手軽に動かしたくなる場合があるかもしれません。また、Arduinoシールドを既に持っている場合、これを活用したいという場合もあるでしょう。<br>
Raspberry PiはそれほどはI/Oが充実していませんしね〜。<br>以下は回路図のピンヘッダのところ。<br>
<a href="http://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" target="_blank"><img border="0" alt="RPi_PIN_sch.png" src="http://projectc3.up.seesaa.net/image/RPi_PIN_sch-thumbnail2.png" width="320" height="271" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/RPi_PIN_sch-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br>
回路図にありますように、SPI、I2Cが出てるので、ポートエキスパンダを接続するという手は使えます。<br>
ポートエキスパンダは、例えばこんなのとか。<br>
<a href="http://akizukidenshi.com/catalog/g/gI-03708/" target="_blank">http://akizukidenshi.com/catalog/g/gI-03708/</a><br>
<br>
とはいえPWMやりたい、とかAD値を取りたいとか、なんてことを手軽な工作で実現するには手間がかかりそうです。<br>
<br>
<br>
本記事では、上記を解決するアプローチの１つとして、firmataのスケッチを書き込んだArduinoマイコンボードをRaspberry PiのUSBポートに接続し、Raspberry Pi側からArduinoを手足のように使って制御を行なってみる内容になっています。<br>
そんなわけで、ArduinoシールドもRaspberry Piから制御できるようになります。いろいろお持ちの方は資産活用できるかもしれませんね<br>
<br>
firmataは、元々PC用のJavaベースの開発環境Processingで、PCに接続したArduinoマイコンボードを制御してフィジカルコンピューティングするものです(と理解してます)。<br>
<br>
そこで、firmataのプロトコル <a href="http://firmata.org/wiki/Protocol" target="_blank">http://firmata.org/wiki/Protocol</a> をRaspberryPi側に喋らせる事で、Raspberry Piで手軽にArduinoマイコンボードを制御できるようにする準備をしていきたいと思います。<br>今回、Raspberry Pi側で使用する言語はRubyにしました。これでRaspberry Pi上のスクリプト言語で、お手軽にスケッチ相当のコードを書いて、フィジカルコンピューティング出来ますね!(たぶん)<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130428_030933resized.jpg" target="_blank"><img border="0" alt="IMG_20130428_030933resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130428_030933resized-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130428_030933resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
さて、今回はArduinoマイコンボードとして最もスタンダードなものの１つである、Arduino Unoを使用しました。<br>
最近スイッチサイエンスさんではこのボード、永久保証されてるようで話題になりました。<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/5127o7CglFL._SL160_.jpg" alt="【永久保証付き】Arduino Uno" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">【永久保証付き】Arduino Uno</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.27</div></div><div class="amazlet-detail">スイッチサイエンス <br />売り上げランキング: 3,309<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<br>
<span style="font-size:large;">Arduinoマイコンボード側の準備<br>
</span>
<br>
では、これに、Standard Firmataのスケッチを焼きこんでおきましょう。サンプルに用意されています。<br>
<a href="http://projectc3.up.seesaa.net/image/ss_firmata.png" target="_blank"><img border="0" alt="ss_firmata.png" src="http://projectc3.up.seesaa.net/image/ss_firmata-thumbnail2.png" width="320" height="237" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/ss_firmata-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
<span style="font-size:large;">Raspberry Pi側の準備</span><br>
Raspberry Pi側のディストリビューションはRaspbian Wheezyを使用します。その他のLinuxディストリビューションでも多分実施可能かとは思います。Arduno Unoを認識させる為には、USB CDC ACMデバイスを認識できるようにする必要がありますが、Raspbian Wheezyでは標準で認識するようになってます。<br>
<br>
●Rubyのセットアップ<br>
今回はRubyとRubyでシリアルポートを制御するruby-serialportを使用します。また、ruby-serialportをセットアップするのにRubygemを使用しますので、以下のようにセットアップするとOKです。<br>
<br>
<blockquote>
$ sudo apt-get install ruby<br>
$ sudo apt-get install ruby-dev<br>
$ sudo apt-get install rubygems<br>
$ sudo gem install ruby-serialport<br>
</blockquote>
<br>
ruby-devは、gemでモジュールをインストールする際に必要になる関係でセットアップしています。<br>
<br>
では、ライブラリを準備します。<br>
<br>
patcoll氏のruby-firmataをベースに、現在のfirmataで使用できるように改造し、改変や機能追加したものを私のgithubで公開しています。<br>
<br>
当初そのまま使えるかなと思ってたのですが、ruby-firmataの開発が2年ほど止まっているようで、その間のfirmataの拡張などもあったためでしょうか、そのままでは動作させられませんでした。<br>
改変版は以下にあります。<br>
<a href="https://github.com/yishii/ruby-firmata" target="_blank">https://github.com/yishii/ruby-firmata</a> <br>
これを取得します。<br>
下記のようにgitで取得出来ますし、gitを使わない場合、「<a href="http://projectc3.up.seesaa.net/image/zip_icon_github.png" target="_blank"><img border="0" alt="zip_icon_github.png" src="http://projectc3.up.seesaa.net/image/zip_icon_github-thumbnail2.png" width="75" height="34" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/zip_icon_github-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a>」アイコンをクリックするとZip形式でダウンロード出来ます。<br>
<blockquote>
git clone <a href="https://github.com/yishii/ruby-firmata" target="_blank">https://github.com/yishii/ruby-firmata</a>
</blockquote>
それではサンプルコードを用意します。以下のコードは、上述のリポジトリ内にあります、test.rbとなってます。<br>runメソッドにクラスを渡すとsetupとloopを呼び出すArduino IDEライクなスタイルです。直接Arduinoクラスメソッド呼び出しでの制御もできますので、お好みで。<br>
<br>
digital_readやanalog_readメソッドの値は、firmataではレポートが定期的(または変化があった時)にArduino側から送られてきますので、それをパースした結果を返します。本ライブラリでいえば、Arduino::parseを呼び出した内部でArduinoからのレポートを解釈し、内部で記録します。<br>
<br>
コードを見ていただくとおわかりになるかと思いますが、内容としては、デジタルピン2番をリードしてデジタルピン13番のHigh/Lowを制御するのと、アナログピン0番をリードしてデジタルピン9番に接続したサーボモーターを制御させています。<br>
<br>
<pre name="code" class="ruby">
require './lib/arduino'

class Test
  def initialize(arduino)
    @arduino = arduino
  end

  def setup
    @arduino.set_report_interval(100) # アナログ値のレポート間隔 = 100[ms] 短かくし過ぎた場合通信量が大きくなるので注意
    @arduino.pin_mode(Arduino::DIGITAL2 , Arduino::INPUT)
    @arduino.pin_mode(Arduino::DIGITAL3 , Arduino::INPUT)
    @arduino.pin_mode(Arduino::DIGITAL13, Arduino::OUTPUT)
    @arduino.pin_mode(Arduino::DIGITAL9 , Arduino::SERVO)
    @arduino.pin_mode(Arduino::ANALOG0  , Arduino::ANALOG)
    @arduino.report # デジタル・アナログのレポート開始
  end

  def loop
    @arduino.parse # レポートを受信して解釈する

    # デジタルピン2番のLOW/HIGHでデジタルピン13番を制御
    if (@arduino.digital_read(Arduino::DIGITAL2) == 0)
      @arduino.digital_write(Arduino::DIGITAL13,0)
    else
      @arduino.digital_write(Arduino::DIGITAL13,1)
    end

    # アナログピン0番の入力値を用いてデジタルピン9番のサーボを回転させる
    val = @arduino.analog_read(Arduino::ANALOG0)
    @arduino.servo_write(Arduino::DIGITAL9,val >> 2)
   end

end

arduino = Arduino.new("/dev/ttyACM0")
arduino.run(Test)

</pre>
<br>
<br>
/dev/ttyACM0は、Arduino Unoのシリアルポートのデバイススペシャルファイルです。これを介してRaspberry PiからArduino Unoにアクセスします。<br>
<br>
テストに使用したのは、ジョイスティックシールド+サーボモーター+LEDです。<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130428_030941resized.jpg" target="_blank"><img border="0" alt="IMG_20130428_030941resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130428_030941resized-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130428_030941resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130428_030852resized.jpg" target="_blank"><img border="0" alt="IMG_20130428_030852resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130428_030852resized-thumbnail2.jpg" width="240" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130428_030852resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
使用してるところの動画撮りましたのでどーぞ!<br>
<script type="text/javascript">extVideoConfig = {"width":"480","height":"320","url":"http://www.youtube.com/watch?v=kCBxGZ9DPo4&feature=youtube_gdata"};</script><script type="text/javascript" src="https://blog.seesaa.jp/contents/js/external_video.js"></script>
<br>
<br>
firmataを使用すれば、手軽にRaspberry PiでI/O制御の拡張と、既存Arduinoシールド資産が活用できるので、よかったら是非どうぞー!<br>
<br>
ちなみに、今回使用したライブラリはArduino::parseメソッドを呼び出して1バイトずつデータを解釈させるのですが、できれば受信は別スレッドで行わせたほうが扱いやすいように思います。その内また更新して本ブログに掲載させていただこうかなーと思います。<br>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Piユーザーガイド" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Piユーザーガイド</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.28</div></div><div class="amazlet-detail">Eben Upton Gareth Halfacree <br />インプレスジャパン <br />売り上げランキング: 1,952<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00BPWK7KU/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51oJ16nYXXL._SL160_.jpg" alt="Interface (インターフェース) 増刊 お手軽ARMコンピュータ ラズベリーパイでI/O 2013年 04月号 [雑誌]" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00BPWK7KU/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Interface (インターフェース) 増刊 お手軽ARMコンピュータ ラズベリーパイでI/O 2013年 04月号 [雑誌]</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.28</div></div><div class="amazlet-detail"><br />CQ出版 (2013-03-29)<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00BPWK7KU/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>


<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51IYHYasekL._SL160_.jpg" alt="Raspberry Pi Type B 512MB" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Pi Type B 512MB</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.28</div></div><div class="amazlet-detail">RS Components Ltd <br />売り上げランキング: 1,915<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CBWMXVE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>



<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Raspberry Pi</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/357559302</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" length="78074" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" length="78074" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130428_030933resized.jpg" length="43927" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130428_030933resized.jpg" length="43927" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/ss_firmata.png" length="199096" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/ss_firmata.png" length="199096" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/zip_icon_github.png" length="14929" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/zip_icon_github.png" length="14929" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130428_030941resized.jpg" length="50561" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130428_030941resized.jpg" length="50561" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130428_030852resized.jpg" length="34940" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130428_030852resized.jpg" length="34940" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/355913199.html</link>
      <title>Raspberry PiでSPIシリアルで有機ELにフレームバッファを表示する実験してみた</title>
      <pubDate>Wed, 17 Apr 2013 23:13:44 +0900</pubDate>
            <description>Raspberry Piでちょこちょこ遊んでおります石井です。先日、本ブログにRaspberry PiのI2Cを使用する実験で簡易電圧電流計を作ってみたというのを書かせて頂きました。http://projectc3.seesaa.net/article/350916175.htmlこんどはSPIシリアルを試そうと思いまして、何か制御対象物ないかなーとマイ積み基板BOXを漁っていたところ、出てきたのがaitendoで1年前に買ってた数百円程度で買える有機ELモジュールです。この..</description>
            <itunes:summary><![CDATA[
Raspberry Piでちょこちょこ遊んでおります石井です。

先日、本ブログにRaspberry PiのI2Cを使用する実験で簡易電圧電流計を作ってみたというのを書かせて頂きました。http://projectc3.seesaa.net/article/350916175.html


こんどはSPIシリアルを試そうと思いまして、何か制御対象物ないかなーとマイ積み基板BOXを漁っていたところ、出てきたのがaitendoで1年前に買ってた数百円程度で買える有機ELモジュールです。このモジュールはバスインターフェース(6800タイプ or 8080タイプ)と、SPIに対応してるということなんですね。で、取り出しました。

今回使用したモジュールの、aitendoのサイトでの商品情報へのリンクはこちら。
http://www.aitendo.com/product/2099 <a href="http://projectc3.up.seesaa.net/image/ai_oled1.gif" target="_blank"><img border="0" alt="ai_oled1.gif" src="http://projectc3.up.seesaa.net/image/ai_oled1-thumbnail2.gif" width="250" height="200"></a>
http://www.aitendo.com/product/2484 <a href="http://projectc3.up.seesaa.net/image/ai_oled2.gif" target="_blank"><img border="0" alt="ai_oled2.gif" src="http://projectc3.up.seesaa.net/image/ai_oled2-thumbnail2.gif" width="250" height="200"></a>

上記リンクの内、上のはSPIシリアル専用の回路になっていて、下のはバスのピンも全部出されてます。とはいえ今回はSPIで使用するのでどちらでも適用可能です。僕は、下のタイプを手持ちしていたのでそれを使ってます。

接続はこんなイメージ。
<a href="http://projectc3.up.seesaa.net/image/oled_overview.png" target="_blank"><img border="0" alt="oled_overview.png" src="http://projectc3.up.seesaa.net/image/oled_overview-thumbnail2.png" width="301" height="320"></a>

試したところ、とりあえずSPIからの制御自体はできたので、表示データを用意すべく昔の資産を掘り起こして簡易的な描画ライブラリを考えましたが、LinuxのコンソールやXの描画に使用されているフレームバッファ(/dev/fb0)をそのまま展開してしまえば、と思い、今回はそうしてみました。


動作させた状態の動画を作りました。良かったらどーーぞー!
<a href="http://www.youtube.com/watch?v=4IDmZ_tyw_M&amp;feature=youtube_gdata&amp;external_video_config=width%3D480%26height%3D320">Raspberry PiでOLED(有機EL)を制御してみる</a>

従って、以下の様にフレームバッファをSPI経由で有機LEDモジュールに周期的に領域コピーするような構成にします。

<a href="http://projectc3.up.seesaa.net/image/oled_block.png" target="_blank"><img border="0" alt="oled_block.png" src="http://projectc3.up.seesaa.net/image/oled_block.png" width="640" height="176"></a>

結線は、以下のようにしてみました。有機ELモジュールのRS端子(D/C#端子)は、SPIで有機ELモジュールに対して通信している内容がコマンドなのか、データなのかを通知する為の信号です。
コマンドをやりとりする場合はLowにし、それ以外の時はHighに制御する為、Raspberry PiのGPIO_GEN0ピン(汎用入出力端子)を使用しています。

<a href="http://projectc3.up.seesaa.net/image/oled_connection.png" target="_blank"><img border="0" alt="oled_connection.png" src="http://projectc3.up.seesaa.net/image/oled_connection-thumbnail2.png" width="320" height="163"></a>

ディストリビューションはRaspbian "wheezy"を使用します。デフォルトではSPIシリアルはローダブルモジュールになっており、自動でロードされません。
以下のサイトに書いてあるような方法を参考にSPIのデバドラが叩けるようにしました。
http://www.pwv.co.jp/~take/TakeWiki/index.php?raspberrypi%2FSPI%E3%82%92%E8%A9%A6%E3%81%99

本記事のソースコードはgithubにて公開させていただいております。
https://github.com/yishii/RaspberryPi_SPI_OLED

Raspberry Pi環境でセルフビルドもできますし、PC上で、Ubuntu+Sourcery g++によるクロス環境でもビルド出来ました。src/Makefileに記載してますので、ご覧になってください。

有機ELモジュールはSPIモードで使用するため、変換基板ピンヘッダコネクタ部の3番、4番(BS1、BS2)は共にGNDに落としておきます。以下のように変換基板にすすメッキ線で配線しました。

<a href="http://projectc3.up.seesaa.net/image/oled_jumper.jpg" target="_blank"><img border="0" alt="oled_jumper.jpg" src="http://projectc3.up.seesaa.net/image/oled_jumper-thumbnail2.jpg" width="320" height="150"></a>

実際に結線したイメージはこちら。
<a href="http://projectc3.up.seesaa.net/image/P1130476resized.jpg" target="_blank"><img border="0" alt="P1130476resized.jpg" src="http://projectc3.up.seesaa.net/image/P1130476resized-thumbnail2.jpg" width="320" height="214"></a>

フレームバッファを展開するプログラムを作成し、実行すると、テキストもグラフィックも結構クッキリで、いい感じ。

<a href="http://projectc3.up.seesaa.net/image/oled_text.jpg" target="_blank"><img border="0" alt="oled_text.jpg" src="http://projectc3.up.seesaa.net/image/oled_text-thumbnail2.jpg" width="320" height="237"></a>
<a href="http://projectc3.up.seesaa.net/image/oled_bitmap.jpg" target="_blank"><img border="0" alt="oled_bitmap.jpg" src="http://projectc3.up.seesaa.net/image/oled_bitmap-thumbnail2.jpg" width="320" height="242"></a>
<a href="http://projectc3.up.seesaa.net/image/ss.jpg" target="_blank"><img border="0" alt="ss.jpg" src="http://projectc3.up.seesaa.net/image/ss-thumbnail2.jpg" width="320" height="176"></a>


それでは、コードを見ていきましょう。SPIの初期化です。有機ELコントローラの仕様書を参照すると、SPIのクロックは最高4[MHz]の規定ですが、高速に画面更新してみようということで、おためしで8[MHz]に設定しています。
一見問題なく使えているように見えますが、メーカーの仕様を超えた使い方であるので、商品等に組み込むソフトの制御などでは当然NGでしょうし、想定外の不具合の発生やデバイス寿命短縮などになるかもしれません。


void oled_main(void)
{
    int fd;
    int result;
    uint8_t mode = SPI_MODE_0;
    uint8_t bits = 8;
    //uint32_t speed = 4000000;
    uint32_t speed = 8000000; // on the spec,SCLK max freq=4[MHz]
    uint16_t delay;

    fd = open("/dev/spidev0.0",O_RDWR);
    if(fd == -1){
	printf("Device open error\n");
	return;
    }

    /*
      set SPI read/write mode
    */
    result = ioctl(fd,SPI_IOC_WR_MODE,&mode);
    if(result &lt; 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }
    result = ioctl(fd,SPI_IOC_RD_MODE,&mode);
    if(result &lt; 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }

    result = ioctl(fd,SPI_IOC_WR_BITS_PER_WORD,&bits);
    if(result &lt; 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }
    result = ioctl(fd,SPI_IOC_RD_BITS_PER_WORD,&bits);
    if(result &lt; 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }

    result = ioctl(fd,SPI_IOC_WR_MAX_SPEED_HZ,&speed);
    if(result &lt; 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }
    result = ioctl(fd,SPI_IOC_RD_MAX_SPEED_HZ,&speed);
    if(result &lt; 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }


フレームバッファは、以下のように/dev/fb0のデバイスをマップしてアクセスしています。


bool fb_init(void)
{
    int fb_fd;
    struct fb_var_screeninfo vinfo;

    fb_fd = open("/dev/fb0",O_RDWR);
    if(fb_fd &lt; 0){
	printf("framebuffer open error\n");
	return(false);
    }

    if(ioctl(fb_fd,FBIOGET_VSCREENINFO,&vinfo)){
	printf("screen information retrieve error\n");
	return(false);
    }
    printf("%dx%d,%dbpp\n",vinfo.xres,vinfo.yres,vinfo.bits_per_pixel);

    screen_size_x = vinfo.xres;
    screen_size_y = vinfo.yres;
    screen_bpp = vinfo.bits_per_pixel;
  
    if(vinfo.bits_per_pixel != 16){
	printf("This color mode is not supported.\nOnly 16bpp is supported currently\n");
	return(false);
    }

    fb_mem = (volatile unsigned char*)mmap(
	NULL,
	(vinfo.xres*vinfo.yres*vinfo.bits_per_pixel) &gt;&gt; 3,
	PROT_READ|PROT_WRITE,
	MAP_SHARED,
	fb_fd,
	0);

    if(fb_mem == NULL){
	printf("framebuffer mapping error\n");
	return(false);
    }

    return(true);
}


シリアル通信でイメージデータと制御コマンドとを切り分けるのにRSという信号を使用しますが、これはGPIO17番を使用します。実装のgpiolib.cご覧ください。

このように結構いい感じにカラーのイメージ展開が出来ました!


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51CkpiAOJWL._SL160_.jpg" alt="Raspberry Pi Model B (512MB)&#x672C;&#x4F53;&#x306E;&#x307F;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Pi Model B (512MB)本体のみ</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.17kalron 売り上げランキング: 16,048<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Pi&#x30E6;&#x30FC;&#x30B6;&#x30FC;&#x30AC;&#x30A4;&#x30C9;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Piユーザーガイド</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.17Eben Upton Gareth Halfacree インプレスジャパン 売り上げランキング: 1,492<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>
<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
Raspberry Piでちょこちょこ遊んでおります石井です。<br>
<br>
先日、本ブログにRaspberry PiのI2Cを使用する実験で簡易電圧電流計を作ってみたというのを書かせて頂きました。<br><a href="http://projectc3.seesaa.net/article/350916175.html" target="_blank">http://projectc3.seesaa.net/article/350916175.html</a>
<br>
<br>
こんどはSPIシリアルを試そうと思いまして、何か制御対象物ないかなーとマイ積み基板BOXを漁っていたところ、出てきたのがaitendoで1年前に買ってた数百円程度で買える有機ELモジュールです。このモジュールはバスインターフェース(6800タイプ or 8080タイプ)と、SPIに対応してるということなんですね。で、取り出しました。<br>
<br>
今回使用したモジュールの、aitendoのサイトでの商品情報へのリンクはこちら。<br>
<a href="http://www.aitendo.com/product/2099" target="_blank">http://www.aitendo.com/product/2099</a> <a href="http://projectc3.up.seesaa.net/image/ai_oled1.gif" target="_blank"><img border="0" alt="ai_oled1.gif" src="http://projectc3.up.seesaa.net/image/ai_oled1-thumbnail2.gif" width="250" height="200" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/ai_oled1-thumbnail2.gif.html'; return false;" style="cursor:pointer;" /></a><br>
<a href="http://www.aitendo.com/product/2484" target="_blank">http://www.aitendo.com/product/2484</a> <a href="http://projectc3.up.seesaa.net/image/ai_oled2.gif" target="_blank"><img border="0" alt="ai_oled2.gif" src="http://projectc3.up.seesaa.net/image/ai_oled2-thumbnail2.gif" width="250" height="200" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/ai_oled2-thumbnail2.gif.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
上記リンクの内、上のはSPIシリアル専用の回路になっていて、下のはバスのピンも全部出されてます。とはいえ今回はSPIで使用するのでどちらでも適用可能です。僕は、下のタイプを手持ちしていたのでそれを使ってます。<br>
<br>
接続はこんなイメージ。<br>
<a href="http://projectc3.up.seesaa.net/image/oled_overview.png" target="_blank"><img border="0" alt="oled_overview.png" src="http://projectc3.up.seesaa.net/image/oled_overview-thumbnail2.png" width="301" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/oled_overview-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
試したところ、とりあえずSPIからの制御自体はできたので、表示データを用意すべく昔の資産を掘り起こして簡易的な描画ライブラリを考えましたが、LinuxのコンソールやXの描画に使用されているフレームバッファ(/dev/fb0)をそのまま展開してしまえば、と思い、今回はそうしてみました。<br>
<br>
<br>
<span style="font-size:large;"><span style="font-size:large;">動作させた状態の動画を作りました。良かったらどーーぞー!</span></span><br>
<script type="text/javascript">extVideoConfig = {"width":"480","height":"320","url":"http://www.youtube.com/watch?feature=youtube_gdata&v=4IDmZ_tyw_M"};</script><script type="text/javascript" src="https://blog.seesaa.jp/contents/js/external_video.js"></script>
<br>
従って、以下の様にフレームバッファをSPI経由で有機LEDモジュールに周期的に領域コピーするような構成にします。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/oled_block.png" target="_blank"><img border="0" alt="oled_block.png" src="http://projectc3.up.seesaa.net/image/oled_block.png" width="640" height="176" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/oled_block.png.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
結線は、以下のようにしてみました。有機ELモジュールのRS端子(D/C#端子)は、SPIで有機ELモジュールに対して通信している内容がコマンドなのか、データなのかを通知する為の信号です。<br>
コマンドをやりとりする場合はLowにし、それ以外の時はHighに制御する為、Raspberry PiのGPIO_GEN0ピン(汎用入出力端子)を使用しています。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/oled_connection.png" target="_blank"><img border="0" alt="oled_connection.png" src="http://projectc3.up.seesaa.net/image/oled_connection-thumbnail2.png" width="320" height="163" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/oled_connection-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
ディストリビューションはRaspbian "wheezy"を使用します。デフォルトではSPIシリアルはローダブルモジュールになっており、自動でロードされません。<br>
以下のサイトに書いてあるような方法を参考にSPIのデバドラが叩けるようにしました。<br>
<a href="http://www.pwv.co.jp/~take/TakeWiki/index.php?raspberrypi%2FSPI%E3%82%92%E8%A9%A6%E3%81%99" target="_blank">http://www.pwv.co.jp/~take/TakeWiki/index.php?raspberrypi%2FSPI%E3%82%92%E8%A9%A6%E3%81%99</a><br>
<br>
<span style="font-size:large;"><span style="font-size:large;"><span style="font-size:large;">本記事のソースコードはgithubにて公開させていただいております。<br>
<a href="https://github.com/yishii/RaspberryPi_SPI_OLED" target="_blank">https://github.com/yishii/RaspberryPi_SPI_OLED</a><br></span></span></span>
<br>
Raspberry Pi環境でセルフビルドもできますし、PC上で、Ubuntu+Sourcery g++によるクロス環境でもビルド出来ました。src/Makefileに記載してますので、ご覧になってください。<br>
<br>
有機ELモジュールはSPIモードで使用するため、変換基板ピンヘッダコネクタ部の3番、4番(BS1、BS2)は共にGNDに落としておきます。以下のように変換基板にすすメッキ線で配線しました。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/oled_jumper.jpg" target="_blank"><img border="0" alt="oled_jumper.jpg" src="http://projectc3.up.seesaa.net/image/oled_jumper-thumbnail2.jpg" width="320" height="150" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/oled_jumper-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
実際に結線したイメージはこちら。<br>
<a href="http://projectc3.up.seesaa.net/image/P1130476resized.jpg" target="_blank"><img border="0" alt="P1130476resized.jpg" src="http://projectc3.up.seesaa.net/image/P1130476resized-thumbnail2.jpg" width="320" height="214" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/P1130476resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
フレームバッファを展開するプログラムを作成し、実行すると、テキストもグラフィックも結構クッキリで、いい感じ。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/oled_text.jpg" target="_blank"><img border="0" alt="oled_text.jpg" src="http://projectc3.up.seesaa.net/image/oled_text-thumbnail2.jpg" width="320" height="237" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/oled_text-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<a href="http://projectc3.up.seesaa.net/image/oled_bitmap.jpg" target="_blank"><img border="0" alt="oled_bitmap.jpg" src="http://projectc3.up.seesaa.net/image/oled_bitmap-thumbnail2.jpg" width="320" height="242" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/oled_bitmap-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<a href="http://projectc3.up.seesaa.net/image/ss.jpg" target="_blank"><img border="0" alt="ss.jpg" src="http://projectc3.up.seesaa.net/image/ss-thumbnail2.jpg" width="320" height="176" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/ss-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>


それでは、コードを見ていきましょう。SPIの初期化です。有機ELコントローラの仕様書を参照すると、SPIのクロックは最高4[MHz]の規定ですが、高速に画面更新してみようということで、おためしで8[MHz]に設定しています。<br>
一見問題なく使えているように見えますが、メーカーの仕様を超えた使い方であるので、商品等に組み込むソフトの制御などでは当然NGでしょうし、想定外の不具合の発生やデバイス寿命短縮などになるかもしれません。<br>

<pre name="code" class="cpp">
void oled_main(void)
{
    int fd;
    int result;
    uint8_t mode = SPI_MODE_0;
    uint8_t bits = 8;
    //uint32_t speed = 4000000;
    uint32_t speed = 8000000; // on the spec,SCLK max freq=4[MHz]
    uint16_t delay;

    fd = open("/dev/spidev0.0",O_RDWR);
    if(fd == -1){
	printf("Device open error\n");
	return;
    }

    /*
      set SPI read/write mode
    */
    result = ioctl(fd,SPI_IOC_WR_MODE,&mode);
    if(result < 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }
    result = ioctl(fd,SPI_IOC_RD_MODE,&mode);
    if(result < 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }

    result = ioctl(fd,SPI_IOC_WR_BITS_PER_WORD,&bits);
    if(result < 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }
    result = ioctl(fd,SPI_IOC_RD_BITS_PER_WORD,&bits);
    if(result < 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }

    result = ioctl(fd,SPI_IOC_WR_MAX_SPEED_HZ,&speed);
    if(result < 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }
    result = ioctl(fd,SPI_IOC_RD_MAX_SPEED_HZ,&speed);
    if(result < 0){
	printf("error(L%d)\n",__LINE__);
	return;
    }
</pre>
<br>
フレームバッファは、以下のように/dev/fb0のデバイスをマップしてアクセスしています。<br>
<br>
<pre name="code" class="cpp">
bool fb_init(void)
{
    int fb_fd;
    struct fb_var_screeninfo vinfo;

    fb_fd = open("/dev/fb0",O_RDWR);
    if(fb_fd < 0){
	printf("framebuffer open error\n");
	return(false);
    }

    if(ioctl(fb_fd,FBIOGET_VSCREENINFO,&vinfo)){
	printf("screen information retrieve error\n");
	return(false);
    }
    printf("%dx%d,%dbpp\n",vinfo.xres,vinfo.yres,vinfo.bits_per_pixel);

    screen_size_x = vinfo.xres;
    screen_size_y = vinfo.yres;
    screen_bpp = vinfo.bits_per_pixel;
  
    if(vinfo.bits_per_pixel != 16){
	printf("This color mode is not supported.\nOnly 16bpp is supported currently\n");
	return(false);
    }

    fb_mem = (volatile unsigned char*)mmap(
	NULL,
	(vinfo.xres*vinfo.yres*vinfo.bits_per_pixel) >> 3,
	PROT_READ|PROT_WRITE,
	MAP_SHARED,
	fb_fd,
	0);

    if(fb_mem == NULL){
	printf("framebuffer mapping error\n");
	return(false);
    }

    return(true);
}
</pre>
<br>
シリアル通信でイメージデータと制御コマンドとを切り分けるのにRSという信号を使用しますが、これはGPIO17番を使用します。実装のgpiolib.cご覧ください。<br>
<br>
このように結構いい感じにカラーのイメージ展開が出来ました!<br>
<br>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51CkpiAOJWL._SL160_.jpg" alt="Raspberry Pi Model B (512MB)本体のみ" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Pi Model B (512MB)本体のみ</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.17</div></div><div class="amazlet-detail">kalron <br />売り上げランキング: 16,048<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<hr>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Piユーザーガイド" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Piユーザーガイド</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.17</div></div><div class="amazlet-detail">Eben Upton Gareth Halfacree <br />インプレスジャパン <br />売り上げランキング: 1,492<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>電子工作</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/355913199</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/ai_oled1.gif" length="25311" type="image/gif" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/ai_oled1.gif" length="25311" type="image/gif" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/ai_oled2.gif" length="26588" type="image/gif" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/ai_oled2.gif" length="26588" type="image/gif" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_overview.png" length="53208" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_overview.png" length="53208" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_block.png" length="64802" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_block.png" length="64802" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_connection.png" length="232224" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_connection.png" length="232224" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_jumper.jpg" length="86305" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_jumper.jpg" length="86305" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/P1130476resized.jpg" length="43070" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/P1130476resized.jpg" length="43070" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_text.jpg" length="143658" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_text.jpg" length="143658" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_bitmap.jpg" length="114267" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/oled_bitmap.jpg" length="114267" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/ss.jpg" length="285262" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/ss.jpg" length="285262" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/354302852.html</link>
      <title>FPGAボードDE0とKYANITEを使ってHDMIモニターに画像を表示して遊んでみた</title>
      <pubDate>Sun, 07 Apr 2013 13:33:38 +0900</pubDate>
            <description>4月になり、ここ関西エリアの気候もどんどん暖かく、過ごしやすくなって来ました。今はまさに、桜満開といった感じですが、今週末は雨風きつくて、多少散ってしまうかもしれませんね。さて、先日、NT京都という、ニコニコ技術部展示会イベントが京都市は西院にあります、春日幼稚園・春日神社境内で開催されてまして、今回僕は初めて見学させていただきました。(去年もほぼ同じ時期にあったんですよね。都合が付かなくて参加できなかったのですが)きっと、普通の神社なので会場としてはそれほど広くないんでしょ..</description>
            <itunes:summary><![CDATA[
4月になり、ここ関西エリアの気候もどんどん暖かく、過ごしやすくなって来ました。今はまさに、桜満開といった感じですが、今週末は雨風きつくて、多少散ってしまうかもしれませんね。

さて、先日、NT京都という、ニコニコ技術部展示会イベントが京都市は西院にあります、春日幼稚園・春日神社境内で開催されてまして、今回僕は初めて見学させていただきました。
(去年もほぼ同じ時期にあったんですよね。都合が付かなくて参加できなかったのですが)

きっと、普通の神社なので会場としてはそれほど広くないんでしょーと勝手に予想してたのですがそれは間違いで、かなり広い面積に幅広い展示物が並んでまして、Make: meeting(Makers faire)っぽい感じ
もしました。すごく楽しかったです。



さて、このイベントではクリエイターの方々の作品も買うことが出来るようで、僕は長船氏(@s_osafune)作のDE0及びDE0-nanoボード用の拡張基板 KYANITE(カイヤナイト、でいいんですよね)を買ってみました。イベントでは、完成品もありましたが、自分で作ってみたいと思ってキット品を購入しました。

DE0及びDE0-nanoは、ALTERAのCycloneIII(-nanoはCycloneIV) FPGAと周辺回路を搭載したリーズナブルな(1万円前後?)ボードです。台湾Terasic社の製品です。(写真はDE0の端子側)
<a href="http://projectc3.up.seesaa.net/image/IMG_20130407_125837.jpg" target="_blank"><img border="0" alt="IMG_20130407_125837.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_125837-thumbnail2.jpg" width="320" height="240"></a>


僕はDE0は購入したのが1年4ヶ月くらい前で、作ったのはDE0ラジコンだけです。
http://projectc3.seesaa.net/article/248752693.html
この記事が2012年1月27日で、それくらいの時期からずーーーーっと戸棚に入ったままになってました。(反省。。。)
(今年は積み基板削減を目指しています!。笑)
※僕はFPGAでは上記ラジコンを作ったことがある程度ですので、記事中に間違ったことがあれば是非ご指摘下さいマセ。



さてさて、KYANITEは、DE0ボードに、HDMI出力、アナログ音声出力、USBホストポート、マイクロSDカードスロット、LANを提供してくれるボードです。
KYANITEボード自体は受動部品で構成され、制御は全てFPGA側に作りこむということのようで、HDMIやDVI出力の無い、本DE0(-nano)ハードに長船氏の手によりHDMI出力回路をFPGA上に作りこまれ、デモプロジェクトとして公開されています。
凄いですね〜!!

鈴木氏(@kskue)のブログで、DE0-nanoとKYANITEとの組み合わせで動作させる記事を書かれています。
[FPGA][DE0] DE0/DE0-nano拡張基板で.bmpファイルをHDMI出力 http://d.hatena.ne.jp/ksksue/20130403/1364984675

さて、KYANITE基板に部品を実装してみました。

<a href="http://projectc3.up.seesaa.net/image/IMG_20130406_205822resized.jpg" target="_blank"><img border="0" alt="IMG_20130406_205822resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130406_205822resized-thumbnail2.jpg" width="320" height="240"></a>

部品のほとんどは1608(ミリ表記)のチップ部品なので、チップ部品慣れしてない方は予めいらない基板で練習してからやると良いでしょう。


こんな感じで完成しました。LANポートはWIZnetのもの(別売)を搭載させるのですが、手持ちが無いので今は実装していません。
<a href="http://projectc3.up.seesaa.net/image/IMG_20130407_122704resized.jpg" target="_blank"><img border="0" alt="IMG_20130407_122704resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_122704resized-thumbnail2.jpg" width="240" height="320"></a><a href="http://projectc3.up.seesaa.net/image/IMG_20130407_122757resized.jpg" target="_blank"><img border="0" alt="IMG_20130407_122757resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_122757resized-thumbnail2.jpg" width="240" height="320"></a>



デモプロジェクト関連は長船氏が公開されています。URLは鈴木氏のブログ記事にも記載ありますが、引用すると、以下です。

DE0用デモプロジェクト https://t.co/uz4mRicSzm
DE0-nano用デモプロジェクト https://t.co/JcZD4q8mBc


まずはQuartusIIにプロジェクトを読み込みます。僕は、QuartusII 32bit Version 12.1 Build 243 01/31/2013 SJ Web Editionを使用しました。そしたら、Fitter (Place & Route)で「Internal Error: Sub-system: VPR20KMAIN」なんてのを吐くので、Google先生に
お伺いして、以下のALTERAのサポートページにあるような、quartus.iniをプロジェクトのトップディレクトリに置いたら回避出来ました。
http://www.altera.co.jp/support/kdb/solutions/rd12222009_898.html

NiosII側ではSDカードにbmpファイルを置いて展開させたいと思います。サンプルのbmp_testは、RGB555のベタのイメージをSDカードの/de0/test_vga.binに用意し、それを展開するようになってるようです。
一方、DE0-nanoのデモプロジェクトにはBMP形式をオープンしてビットマップに貼り付けるloadbmp関数というのがあったので、そのまま貰ってきて利用し、DE0側のbmp_test側で使用するようにしました。
以下はbmp_testのmain関数内のファイルをメモリーに読み出す箇所で、★部のようにしました。

#if 0
		if((fp = fopen("mmcfs:/de0/test_vga.bin","rb"))!= NULL) {
			fread(pFrameBuffer, 1, 1024*480*2, fp);
			fclose(fp);

			alt_dcache_flush(pFrameBuffer, 1024*480*2);
		} else {
			printf("[!] File not found.\n");
		}
#else // ★★以下が追加部分
		loadbmp("mmcfs:/de0/sample.bmp",pFrameBuffer);
#endif

SDカードは、本デモプロジェクトではKYANITE側ではなく、DE0側のフルサイズのSDカードスロットを使用します。

春なのに非常に秋らしい写真を表示してみました。笑
<a href="http://projectc3.up.seesaa.net/image/IMG_20130407_104549resized.jpg" target="_blank"><img border="0" alt="IMG_20130407_104549resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_104549resized-thumbnail2.jpg" width="320" height="240"></a> 


ビットマップを表示する以外にも、本デモプロジェクトには、長船氏によるプリミティブな描画ライブラリ関数がたっぷり入っていて(nd_egl.h参照)、綺麗なGUIをFPGAからいろいろ描画することも出来そうです。
また是非試してみたいです。


というわけでこのKYANITEボードを使えば楽しくDE0と共に遊べそうです。Androidとも繋いでみたりしたいな。。と思いますが、また次回・・・


一年前に鈴木氏に教えてもらった本の紹介です。
QuartusIIでNiosIIを使用したプロジェクトをいじるのには、以下の本「FPGA ボードで学ぶ組込みシステム開発入門」が役立つと思います。
もしQuartusII初めて使うなら是非見てみてはいかがでしょうか!

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774148393/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51FECfMF4nL._SL160_.jpg" alt="FPGA &#x30DC;&#x30FC;&#x30C9;&#x3067;&#x5B66;&#x3076;&#x7D44;&#x8FBC;&#x307F;&#x30B7;&#x30B9;&#x30C6;&#x30E0;&#x958B;&#x767A;&#x5165;&#x9580;&#x3000;&#xFF5E;Altera&#x7DE8;&#xFF5E;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774148393/ishiiyasu-22/ref=nosim/" target="_blank">FPGA ボードで学ぶ組込みシステム開発入門　～Altera編～</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.07小林 優 技術評論社 売り上げランキング: 39,623<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774148393/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081OZIEU/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41x3xPwgBJL._SL160_.jpg" alt="WIZ820io" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081OZIEU/ishiiyasu-22/ref=nosim/" target="_blank">WIZ820io</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.07スイッチサイエンス 売り上げランキング: 101,278<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081OZIEU/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>



<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478983137X/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51QO3wFFB4L._SL160_.jpg" alt="&#x8D85;&#x5165;&#x9580;&#xFF01;FPGA&#x30B9;&#x30BF;&#x30FC;&#x30BF;&#x30FB;&#x30AD;&#x30C3;&#x30C8;DE0&#x3067;&#x59CB;&#x3081;&#x308B;Verilog HDL: &#x3059;&#x3050;&#x59CB;&#x3081;&#x3089;&#x308C;&#x308B;!USB&#x5BFE;&#x5FDC;&#x30FB;&#x66F8;&#x304D;&#x8FBC;&#x307F;&#x5668;&#x4E0D;&#x8981;&#x30FB;&#x5927;&#x5BB9;&#x91CF;FPGA&#x642D;&#x8F09;! (&#x30C8;&#x30E9;&#x30A4;&#x30A2;&#x30EB;&#x30B7;&#x30EA;&#x30FC;&#x30BA;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478983137X/ishiiyasu-22/ref=nosim/" target="_blank">超入門！FPGAスタータ・キットDE0で始めるVerilog HDL: すぐ始められる!USB対応・書き込み器不要・大容量FPGA搭載! (トライアルシリーズ)</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.07芹井 滋喜 CQ出版 売り上げランキング: 124,430<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478983137X/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0077F0CVI/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CIWyK2ujL._SL160_.jpg" alt="Terasic USB Blaster(1-TB1) ALTERA USB Blaster&#x4E92;&#x63DB;&#x54C1;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0077F0CVI/ishiiyasu-22/ref=nosim/" target="_blank">Terasic USB Blaster(1-TB1) ALTERA USB Blaster互換品</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.04.07HuMANDATA LTD. 売り上げランキング: 41,593<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0077F0CVI/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>



<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
4月になり、ここ関西エリアの気候もどんどん暖かく、過ごしやすくなって来ました。今はまさに、桜満開といった感じですが、今週末は雨風きつくて、多少散ってしまうかもしれませんね。<br>
<br>
さて、先日、NT京都という、ニコニコ技術部展示会イベントが京都市は西院にあります、春日幼稚園・春日神社境内で開催されてまして、今回僕は初めて見学させていただきました。<br>
(去年もほぼ同じ時期にあったんですよね。都合が付かなくて参加できなかったのですが)<br>
<br>
きっと、普通の神社なので会場としてはそれほど広くないんでしょーと勝手に予想してたのですがそれは間違いで、かなり広い面積に幅広い展示物が並んでまして、Make: meeting(Makers faire)っぽい感じ<br>
もしました。すごく楽しかったです。<br>
<br>
<hr>
<br>
さて、このイベントではクリエイターの方々の作品も買うことが出来るようで、僕は長船氏(@s_osafune)作のDE0及びDE0-nanoボード用の拡張基板 KYANITE(カイヤナイト、でいいんですよね)を買ってみました。イベントでは、完成品もありましたが、自分で作ってみたいと思ってキット品を購入しました。<br>
<br>
DE0及びDE0-nanoは、ALTERAのCycloneIII(-nanoはCycloneIV) FPGAと周辺回路を搭載したリーズナブルな(1万円前後?)ボードです。台湾Terasic社の製品です。(写真はDE0の端子側)<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130407_125837.jpg" target="_blank"><img border="0" alt="IMG_20130407_125837.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_125837-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130407_125837-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<br>
僕はDE0は購入したのが1年4ヶ月くらい前で、作ったのはDE0ラジコンだけです。<br>
<a href="http://projectc3.seesaa.net/article/248752693.html" target="_blank">http://projectc3.seesaa.net/article/248752693.html</a><br>
この記事が2012年1月27日で、それくらいの時期からずーーーーっと戸棚に入ったままになってました。(反省。。。)<br>
(今年は積み基板削減を目指しています!。笑)<br>
※僕はFPGAでは上記ラジコンを作ったことがある程度ですので、記事中に間違ったことがあれば是非ご指摘下さいマセ。<br>
<br>
<hr>
<br>
さてさて、KYANITEは、DE0ボードに、HDMI出力、アナログ音声出力、USBホストポート、マイクロSDカードスロット、LANを提供してくれるボードです。<br>
KYANITEボード自体は受動部品で構成され、制御は全てFPGA側に作りこむということのようで、HDMIやDVI出力の無い、本DE0(-nano)ハードに長船氏の手によりHDMI出力回路をFPGA上に作りこまれ、デモプロジェクトとして公開されています。<br>
凄いですね〜!!<br>
<br>
鈴木氏(@kskue)のブログで、DE0-nanoとKYANITEとの組み合わせで動作させる記事を書かれています。<br>
[FPGA][DE0] DE0/DE0-nano拡張基板で.bmpファイルをHDMI出力 <a href="http://d.hatena.ne.jp/ksksue/20130403/1364984675" target="_blank">http://d.hatena.ne.jp/ksksue/20130403/1364984675</a><br>
<br>
さて、KYANITE基板に部品を実装してみました。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130406_205822resized.jpg" target="_blank"><img border="0" alt="IMG_20130406_205822resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130406_205822resized-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130406_205822resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
部品のほとんどは1608(ミリ表記)のチップ部品なので、チップ部品慣れしてない方は予めいらない基板で練習してからやると良いでしょう。<br>
<br>

こんな感じで完成しました。LANポートはWIZnetのもの(別売)を搭載させるのですが、手持ちが無いので今は実装していません。<br>
<a href="http://projectc3.up.seesaa.net/image/IMG_20130407_122704resized.jpg" target="_blank"><img border="0" alt="IMG_20130407_122704resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_122704resized-thumbnail2.jpg" width="240" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130407_122704resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><a href="http://projectc3.up.seesaa.net/image/IMG_20130407_122757resized.jpg" target="_blank"><img border="0" alt="IMG_20130407_122757resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_122757resized-thumbnail2.jpg" width="240" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130407_122757resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>

<br>
デモプロジェクト関連は長船氏が公開されています。URLは鈴木氏のブログ記事にも記載ありますが、引用すると、以下です。<br>
<blockquote>
DE0用デモプロジェクト <a href="https://t.co/uz4mRicSzm" target="_blank">https://t.co/uz4mRicSzm</a><br>
DE0-nano用デモプロジェクト <a href="https://t.co/JcZD4q8mBc" target="_blank">https://t.co/JcZD4q8mBc</a><br>
</blockquote>
<br>
まずはQuartusIIにプロジェクトを読み込みます。僕は、<span style="color:#FF00FF;">QuartusII 32bit Version 12.1 Build 243 01/31/2013 SJ Web Edition</span>を使用しました。そしたら、<span style="color:#FF0098;">Fitter (Place & Route)</span>で「Internal Error: Sub-system: VPR20KMAIN」なんてのを吐くので、Google先生に
お伺いして、以下のALTERAのサポートページにあるような、quartus.iniをプロジェクトのトップディレクトリに置いたら回避出来ました。<br>
<a href="http://www.altera.co.jp/support/kdb/solutions/rd12222009_898.html" target="_blank">http://www.altera.co.jp/support/kdb/solutions/rd12222009_898.html</a><br>
<br>
NiosII側ではSDカードにbmpファイルを置いて展開させたいと思います。サンプルのbmp_testは、RGB555のベタのイメージをSDカードの/de0/test_vga.binに用意し、それを展開するようになってるようです。<br>
一方、DE0-nanoのデモプロジェクトにはBMP形式をオープンしてビットマップに貼り付けるloadbmp関数というのがあったので、そのまま貰ってきて利用し、DE0側のbmp_test側で使用するようにしました。<br>
以下はbmp_testのmain関数内のファイルをメモリーに読み出す箇所で、★部のようにしました。<br>
<pre name="code" class="cpp">
#if 0
		if((fp = fopen("mmcfs:/de0/test_vga.bin","rb"))!= NULL) {
			fread(pFrameBuffer, 1, 1024*480*2, fp);
			fclose(fp);

			alt_dcache_flush(pFrameBuffer, 1024*480*2);
		} else {
			printf("[!] File not found.\n");
		}
#else // ★★以下が追加部分
		loadbmp("mmcfs:/de0/sample.bmp",pFrameBuffer);
#endif
</pre>
SDカードは、本デモプロジェクトではKYANITE側ではなく、DE0側のフルサイズのSDカードスロットを使用します。<br>
<br>
春なのに非常に秋らしい写真を表示してみました。笑
<a href="http://projectc3.up.seesaa.net/image/IMG_20130407_104549resized.jpg" target="_blank"><img border="0" alt="IMG_20130407_104549resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130407_104549resized-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130407_104549resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a> 
<br>
<br>
ビットマップを表示する以外にも、本デモプロジェクトには、長船氏によるプリミティブな描画ライブラリ関数がたっぷり入っていて(nd_egl.h参照)、綺麗なGUIをFPGAからいろいろ描画することも出来そうです。<br>
また是非試してみたいです。<br>
<br>
<br>
というわけでこのKYANITEボードを使えば楽しくDE0と共に遊べそうです。Androidとも繋いでみたりしたいな。。と思いますが、また次回・・・<br>
<br>
<br>
一年前に鈴木氏に教えてもらった本の紹介です。<br>
QuartusIIでNiosIIを使用したプロジェクトをいじるのには、以下の本「FPGA ボードで学ぶ組込みシステム開発入門」が役立つと思います。<br>
もしQuartusII初めて使うなら是非見てみてはいかがでしょうか!
<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774148393/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51FECfMF4nL._SL160_.jpg" alt="FPGA ボードで学ぶ組込みシステム開発入門　～Altera編～" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774148393/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">FPGA ボードで学ぶ組込みシステム開発入門　～Altera編～</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.07</div></div><div class="amazlet-detail">小林 優 <br />技術評論社 <br />売り上げランキング: 39,623<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774148393/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<hr>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081OZIEU/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41x3xPwgBJL._SL160_.jpg" alt="WIZ820io" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081OZIEU/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">WIZ820io</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.07</div></div><div class="amazlet-detail">スイッチサイエンス <br />売り上げランキング: 101,278<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081OZIEU/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<hr>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478983137X/ishiiyasu-22/ref=nosim/" naしme="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51QO3wFFB4L._SL160_.jpg" alt="超入門！FPGAスタータ・キットDE0で始めるVerilog HDL: すぐ始められる!USB対応・書き込み器不要・大容量FPGA搭載! (トライアルシリーズ)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478983137X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">超入門！FPGAスタータ・キットDE0で始めるVerilog HDL: すぐ始められる!USB対応・書き込み器不要・大容量FPGA搭載! (トライアルシリーズ)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.07</div></div><div class="amazlet-detail">芹井 滋喜 <br />CQ出版 <br />売り上げランキング: 124,430<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478983137X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0077F0CVI/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CIWyK2ujL._SL160_.jpg" alt="Terasic USB Blaster(1-TB1) ALTERA USB Blaster互換品" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0077F0CVI/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Terasic USB Blaster(1-TB1) ALTERA USB Blaster互換品</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.04.07</div></div><div class="amazlet-detail">HuMANDATA LTD. <br />売り上げランキング: 41,593<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0077F0CVI/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>



<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>電子工作</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/354302852</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_125837.jpg" length="428678" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_125837.jpg" length="428678" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130406_205822resized.jpg" length="50731" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130406_205822resized.jpg" length="50731" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_122704resized.jpg" length="60846" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_122704resized.jpg" length="60846" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_122757resized.jpg" length="49179" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_122757resized.jpg" length="49179" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_104549resized.jpg" length="65350" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130407_104549resized.jpg" length="65350" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/350916175.html</link>
      <title>Raspberry PiのI2Cを利用して簡易電流・電圧計を作る</title>
      <pubDate>Sun, 24 Mar 2013 01:26:11 +0900</pubDate>
            <description>Raspberry Pi Model B Revision 2.0 (512MB)本体のみposted with amazlet at 13.03.24kalron 売り上げランキング: 3,803Amazon.co.jpで詳細を見るRaspberry Piを利用して、いろいろつくりたいと思ってるんですが、なかなか手を付けられずにおります。^^;I2C接続のLCDと電圧・電流測定モジュールを買って積み基板にしていたもので、それをRaspberry Piから叩いて電流・電圧測定..</description>
            <itunes:summary><![CDATA[
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51CkpiAOJWL._SL160_.jpg" alt="Raspberry Pi Model B Revision 2.0 (512MB)&#x672C;&#x4F53;&#x306E;&#x307F;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Pi Model B Revision 2.0 (512MB)本体のみ</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.03.24kalron 売り上げランキング: 3,803<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>



Raspberry Piを利用して、いろいろつくりたいと思ってるんですが、なかなか手を付けられずにおります。^^;

I2C接続のLCDと電圧・電流測定モジュールを買って積み基板にしていたもので、それをRaspberry Piから叩いて電流・電圧測定ができるちょっとしたテスターっぽいものを作ってみることにしました。

こんな感じで繋ぎました。

<a href="http://projectc3.up.seesaa.net/image/13640542883170.jpg" target="_blank"><img border="0" alt="13640542883170.jpg" src="http://projectc3.up.seesaa.net/image/13640542883170-thumbnail2.jpg" width="320" height="240"></a>

<a href="http://projectc3.up.seesaa.net/image/13640893838590.jpg" target="_blank"><img border="0" alt="13640893838590.jpg" src="http://projectc3.up.seesaa.net/image/13640893838590-thumbnail2.jpg" width="240" height="320"></a>

LCDは、1.5mmピッチで、2.54mmピッチにはそのままささらないのと、外付けのコンデンサを3つ必要としていたため、秋月の小基板(http://akizukidenshi.com/catalog/g/gP-02516/)を中継基板にすることにしました。

<a href="http://projectc3.up.seesaa.net/image/13640894087831.jpg" target="_blank"><img border="0" alt="13640894087831.jpg" src="http://projectc3.up.seesaa.net/image/13640894087831-thumbnail2.jpg" width="320" height="240"></a>

<a href="http://projectc3.up.seesaa.net/image/13640894331072.jpg" target="_blank"><img border="0" alt="13640894331072.jpg" src="http://projectc3.up.seesaa.net/image/13640894331072-thumbnail2.jpg" width="320" height="240"></a>


電圧・電流測定モジュールは、Strawberry-linuxの以下のものを使用しました。
http://strawberry-linux.com/catalog/items?code=12031

LCDも同様、Strawberry-linuxの以下のものを使用しました。
http://strawberry-linux.com/catalog/items?code=27031

Raspbian wheezyはそのままではi2cのデバドラ(ローダブルモジュール)が登録されません。以下のサイトの通りに設定すれば使えます。
http://d.hatena.ne.jp/NeoCat/20120926/1348684357

で繋いで作ったようすはこちら:


<a href="http://projectc3.up.seesaa.net/image/13640548219151.jpg" target="_blank"><img border="0" alt="13640548219151.jpg" src="http://projectc3.up.seesaa.net/image/13640548219151-thumbnail2.jpg" width="320" height="240"></a>


i2cへのお試しでのアクセスは、i2c-toolsを使用するとかなり簡単便利です。Raspbian "wheezy"では、「sudo apt-get install i2c-tools」だけでセットアップ出来ます。
試しにデバイスをI2Cに接続の後、i2cdetectというコマンドで接続状況を確認してみましょう。

# i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e -- 
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

上記結果は、I2C-1のスレーブアドレス3Ehと40hにデバイスが見えている事をあらわしています。
スレーブアドレスは同一I2Cバス上のデバイスの中で重複することがないようにしてください(デバイス上にスレーブアドレスを変更する為のジャンパーなどがあったりするので、そういったものを使用して変更します。固定で変更出来ない場合もありますが)


I2C LCDへの書き込みは、/dev/i2c-1をopenし、そのfdにwriteするだけで制御出来ます。
コードのlcd_のプレフィックスの関数を御覧ください。

電流・電圧測定モジュールのデータの読み込みは、ina_getValue関数を御覧ください。やりとりは、ioctl I2C_RDWRを使用します。コードの該当部は以下。既にデバイスがopenされた状態で使用します。フルのソースコードはgithubにアップしています(後述)。



#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;linux/i2c.h&gt;
#include &lt;linux/i2c-dev.h&gt;
#include &lt;unistd.h&gt;

#define I2C_SLAVEADDR_INA 0x40

static int ina_getValue(int fd,int addr,int* val)
{
  struct i2c_rdwr_ioctl_data data;
  struct i2c_msg msg[2];
  int result;
  unsigned char buff[2] = { 0 };
  unsigned char buff2[2] = { 0 };

  memset((void*)&data,0,sizeof(struct i2c_rdwr_ioctl_data));
  memset((void*)msg,0,sizeof(msg));

  buff[0] = addr;

  msg[0].addr = I2C_SLAVEADDR_INA;
  msg[0].flags = 0;
  msg[0].len = 1;
  msg[0].buf = buff;

  msg[1].addr = msg[0].addr;
  msg[1].flags = I2C_M_RD;
  msg[1].len = 2;
  msg[1].buf = buff2;

  data.msgs = msg;
  data.nmsgs = 2;

  result = ioctl(fd,I2C_RDWR,&data);

  *val = buff2[0]&lt;&lt;8 | buff2[1];

  return(0);
}




ソースは以下にアップしました!です。
https://github.com/yishii/raspberrypi_i2c_simple_v_i_meter/


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Pi&#x30E6;&#x30FC;&#x30B6;&#x30FC;&#x30AC;&#x30A4;&#x30C9;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Raspberry Piユーザーガイド</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.03.24Eben Upton Gareth Halfacree インプレスジャパン 売り上げランキング: 4,169<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51CkpiAOJWL._SL160_.jpg" alt="Raspberry Pi Model B Revision 2.0 (512MB)本体のみ" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Pi Model B Revision 2.0 (512MB)本体のみ</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.03.24</div></div><div class="amazlet-detail">kalron <br />売り上げランキング: 3,803<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00AJEFHKK/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<br>
<br>

Raspberry Piを利用して、いろいろつくりたいと思ってるんですが、なかなか手を付けられずにおります。^^;<br>
<br>
I2C接続のLCDと電圧・電流測定モジュールを買って積み基板にしていたもので、それをRaspberry Piから叩いて電流・電圧測定ができるちょっとしたテスターっぽいものを作ってみることにしました。<br>
<br>
こんな感じで繋ぎました。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/13640542883170.jpg" target="_blank"><img border="0" alt="13640542883170.jpg" src="http://projectc3.up.seesaa.net/image/13640542883170-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/13640542883170-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<a href="http://projectc3.up.seesaa.net/image/13640893838590.jpg" target="_blank"><img border="0" alt="13640893838590.jpg" src="http://projectc3.up.seesaa.net/image/13640893838590-thumbnail2.jpg" width="240" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/13640893838590-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
LCDは、1.5mmピッチで、2.54mmピッチにはそのままささらないのと、外付けのコンデンサを3つ必要としていたため、秋月の小基板(<a href="http://akizukidenshi.com/catalog/g/gP-02516/)" target="_blank">http://akizukidenshi.com/catalog/g/gP-02516/)</a>を中継基板にすることにしました。<br>

<a href="http://projectc3.up.seesaa.net/image/13640894087831.jpg" target="_blank"><img border="0" alt="13640894087831.jpg" src="http://projectc3.up.seesaa.net/image/13640894087831-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/13640894087831-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<a href="http://projectc3.up.seesaa.net/image/13640894331072.jpg" target="_blank"><img border="0" alt="13640894331072.jpg" src="http://projectc3.up.seesaa.net/image/13640894331072-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/13640894331072-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>

電圧・電流測定モジュールは、Strawberry-linuxの以下のものを使用しました。<br>
<a href="http://strawberry-linux.com/catalog/items?code=12031" target="_blank">http://strawberry-linux.com/catalog/items?code=12031</a><br>
<br>
LCDも同様、Strawberry-linuxの以下のものを使用しました。<br>
<a href="http://strawberry-linux.com/catalog/items?code=27031" target="_blank">http://strawberry-linux.com/catalog/items?code=27031</a><br>
<br>
Raspbian wheezyはそのままではi2cのデバドラ(ローダブルモジュール)が登録されません。以下のサイトの通りに設定すれば使えます。<br>
<a href="http://d.hatena.ne.jp/NeoCat/20120926/1348684357" target="_blank">http://d.hatena.ne.jp/NeoCat/20120926/1348684357</a><br>
<br>
で繋いで作ったようすはこちら:<br>
<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/13640548219151.jpg" target="_blank"><img border="0" alt="13640548219151.jpg" src="http://projectc3.up.seesaa.net/image/13640548219151-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/13640548219151-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<br>
i2cへのお試しでのアクセスは、i2c-toolsを使用するとかなり簡単便利です。Raspbian "wheezy"では、「sudo apt-get install i2c-tools」だけでセットアップ出来ます。<br>
試しにデバイスをI2Cに接続の後、i2cdetectというコマンドで接続状況を確認してみましょう。<br>
<pre>
# i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e -- 
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --
</pre>
上記結果は、I2C-1のスレーブアドレス3Ehと40hにデバイスが見えている事をあらわしています。<br>
スレーブアドレスは同一I2Cバス上のデバイスの中で重複することがないようにしてください(デバイス上にスレーブアドレスを変更する為のジャンパーなどがあったりするので、そういったものを使用して変更します。固定で変更出来ない場合もありますが)<br>
<br>
<br>
I2C LCDへの書き込みは、/dev/i2c-1をopenし、そのfdにwriteするだけで制御出来ます。
コードのlcd_のプレフィックスの関数を御覧ください。<br>
<br>
電流・電圧測定モジュールのデータの読み込みは、ina_getValue関数を御覧ください。やりとりは、ioctl I2C_RDWRを使用します。コードの該当部は以下。既にデバイスがopenされた状態で使用します。フルのソースコードはgithubにアップしています(後述)。<br>
<br>

<pre name="code" class="cpp">
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;linux/i2c.h&gt;
#include &lt;linux/i2c-dev.h&gt;
#include &lt;unistd.h&gt;

#define I2C_SLAVEADDR_INA 0x40

static int ina_getValue(int fd,int addr,int* val)
{
  struct i2c_rdwr_ioctl_data data;
  struct i2c_msg msg[2];
  int result;
  unsigned char buff[2] = { 0 };
  unsigned char buff2[2] = { 0 };

  memset((void*)&data,0,sizeof(struct i2c_rdwr_ioctl_data));
  memset((void*)msg,0,sizeof(msg));

  buff[0] = addr;

  msg[0].addr = I2C_SLAVEADDR_INA;
  msg[0].flags = 0;
  msg[0].len = 1;
  msg[0].buf = buff;

  msg[1].addr = msg[0].addr;
  msg[1].flags = I2C_M_RD;
  msg[1].len = 2;
  msg[1].buf = buff2;

  data.msgs = msg;
  data.nmsgs = 2;

  result = ioctl(fd,I2C_RDWR,&data);

  *val = buff2[0]<<8 | buff2[1];

  return(0);
}
</pre>


<br>
ソースは以下にアップしました!です。<br>
<a href="https://github.com/yishii/raspberrypi_i2c_simple_v_i_meter/" target="_blank">https://github.com/yishii/raspberrypi_i2c_simple_v_i_meter/</a><br>
<br>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61Wq4Znh1dL._SL160_.jpg" alt="Raspberry Piユーザーガイド" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Raspberry Piユーザーガイド</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.03.24</div></div><div class="amazlet-detail">Eben Upton Gareth Halfacree <br />インプレスジャパン <br />売り上げランキング: 4,169<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333747/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>電子工作</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/350916175</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/13640542883170.jpg" length="77943" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640542883170.jpg" length="77943" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640893838590.jpg" length="154456" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640893838590.jpg" length="154456" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640894087831.jpg" length="214627" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640894087831.jpg" length="214627" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640894331072.jpg" length="176528" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640894331072.jpg" length="176528" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640548219151.jpg" length="220201" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13640548219151.jpg" length="220201" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/342870435.html</link>
      <title>シンガポールでデータ通信用にSIMを買って使ってみた</title>
      <pubDate>Wed, 06 Mar 2013 00:07:05 +0900</pubDate>
            <description>先日シンガポールに行ってまいりました。今までも行ったことはありましたが、現地でSIMカードを購入したのは今回が初めてで、メモを残しておこうと思います。用意したのは、SIMロックフリーのAndroidケータイ電話 Samsung Nexus Sと、イーモバイルのポケットWi-Fi GP02です。ドコモの最近のスマホは購入後SIMロック解除できるらしいので、そういうのでも出来るのかも?(わかりませんけど)さて、買ったSIMカードはSingTel(シンガポール・テレコム)のプリペイ..</description>
            <itunes:summary><![CDATA[
先日シンガポールに行ってまいりました。今までも行ったことはありましたが、現地でSIMカードを購入したのは今回が初めてで、メモを残しておこうと思います。

用意したのは、SIMロックフリーのAndroidケータイ電話 Samsung Nexus Sと、イーモバイルのポケットWi-Fi GP02です。ドコモの最近のスマホは購入後SIMロック解除できるらしいので、そういうのでも出来るのかも?(わかりませんけど)

さて、買ったSIMカードはSingTel(シンガポール・テレコム)のプリペイドSIMカードです。シンガポールのチャンギ空港内に換金所(銀行)がいくつかあり、そこでSIMを取り扱っているところがあります(SingTelと書かれています)。
3日間データ通信し放題でS$15(1200円くらい?)というプラン(3 Days Unlimited Data Pack)がありましたので、それを使うことにします。
http://info.singtel.com/personal/phones-plans/mobile/prepaid/mobile-data

S$28のカードを買いましたが、データ通信したいだけならS$20のとかでOKでしょう(多分)。

手持ちのNexus Sに挿入した様子。

<a href="http://projectc3.up.seesaa.net/image/IMG_20130223_125530resized.jpg" target="_blank"><img border="0" alt="IMG_20130223_125530resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130223_125530resized-thumbnail2.jpg" width="320" height="314"></a>

さて、SIMを挿入したら、データ通信のプランを有効にします。ここでは、727050番にSMSでメッセージ「3」を送信します。

<a href="http://projectc3.up.seesaa.net/image/singtel_step1.png" target="_blank"><img border="0" alt="singtel_step1.png" src="http://projectc3.up.seesaa.net/image/singtel_step1-thumbnail2.png" width="192" height="320"></a>

すぐに返事のSMSが届きますので、ここでは、Subscribe to Data bundle for Notebook/Tabletのを選択する為、「2」を返信します。

<a href="http://projectc3.up.seesaa.net/image/singtel_step2.png" target="_blank"><img border="0" alt="singtel_step2.png" src="http://projectc3.up.seesaa.net/image/singtel_step2-thumbnail2.png" width="192" height="320"></a>

今度は、プランを選択するメッセージが送られてきます。3日分のデータ通信使い放題の3 days Unlimited Data Planを選択しますので、「4」と返信します。

<a href="http://projectc3.up.seesaa.net/image/singtel_step3.png" target="_blank"><img border="0" alt="singtel_step3.png" src="http://projectc3.up.seesaa.net/image/singtel_step3-thumbnail2.png" width="192" height="320"></a>

確認のメッセージが出ますので、問題なければ「1」を返信します。

<a href="http://projectc3.up.seesaa.net/image/singtel_step4.png" target="_blank"><img border="0" alt="singtel_step4.png" src="http://projectc3.up.seesaa.net/image/singtel_step4-thumbnail2.png" width="192" height="320"></a>

選択した結果と、有効期限などの情報が届いて手続き終了です。

<a href="http://projectc3.up.seesaa.net/image/singtel_step5.png" target="_blank"><img border="0" alt="singtel_step5.png" src="http://projectc3.up.seesaa.net/image/singtel_step5-thumbnail2.png" width="192" height="320"></a>

次は、データ通信を行うためのAPNの設定です。SIMカードを買った時の説明書通り設定します。一応スクリーンショットを貼りますね。

<a href="http://projectc3.up.seesaa.net/image/singtel_ss_1.png" target="_blank"><img border="0" alt="singtel_ss_1.png" src="http://projectc3.up.seesaa.net/image/singtel_ss_1-thumbnail2.png" width="192" height="320"></a>

<a href="http://projectc3.up.seesaa.net/image/singtel_ss_2.png" target="_blank"><img border="0" alt="singtel_ss_2.png" src="http://projectc3.up.seesaa.net/image/singtel_ss_2-thumbnail2.png" width="192" height="320"></a>

アクティベーション作業は終了しました。
これで晴れてデータ通信ができるようになりました!Nexus Sはテザリング機能がついているので、ノートPC等でも普通にデータ通信が出来ました。

さて、たまたま日本から持ってきたイーモバイルのポケットWi-FiはSIMロックフリーということで、ここにアクティベーションされたSIMを入れてみます。

<a href="http://projectc3.up.seesaa.net/image/IMG_20130223_222110resized.jpg" target="_blank"><img border="0" alt="IMG_20130223_222110resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130223_222110resized-thumbnail2.jpg" width="240" height="320"></a>

こちらはAPNが自動で設定された為か、特になにもする事なくデータ通信を開始できました。下り2Mbpsくらい出てて、あまり日本で通信しているのと違和感なく使えました!

シンガポールでデータ通信される場合、よかったらどーぞ。
手順は2013年2月末のものになります。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005G9WNJG/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31jNll2MI7L._SL160_.jpg" alt="EMOBILE Pocket WiFi GP02" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005G9WNJG/ishiiyasu-22/ref=nosim/" target="_blank">EMOBILE Pocket WiFi GP02</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.03.05イーモバイル 売り上げランキング: 27,869<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005G9WNJG/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jpで詳細を見る</a>

<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
先日シンガポールに行ってまいりました。今までも行ったことはありましたが、現地でSIMカードを購入したのは今回が初めてで、メモを残しておこうと思います。<br /><br />用意したのは、SIMロックフリーのAndroidケータイ電話 Samsung Nexus Sと、イーモバイルのポケットWi-Fi GP02です。ドコモの最近のスマホは購入後SIMロック解除できるらしいので、そういうのでも出来るのかも?(わかりませんけど)<br /><br />さて、買ったSIMカードはSingTel(シンガポール・テレコム)のプリペイドSIMカードです。シンガポールのチャンギ空港内に換金所(銀行)がいくつかあり、そこでSIMを取り扱っているところがあります(SingTelと書かれています)。<br />3日間データ通信し放題でS$15(1200円くらい?)というプラン(3 Days Unlimited Data Pack)がありましたので、それを使うことにします。<br /><a href="http://info.singtel.com/personal/phones-plans/mobile/prepaid/mobile-data" target="_blank">http://info.singtel.com/personal/phones-plans/mobile/prepaid/mobile-data</a><br /><br />S$28のカードを買いましたが、データ通信したいだけならS$20のとかでOKでしょう(多分)。<br /><br />手持ちのNexus Sに挿入した様子。<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130223_125530resized.jpg" target="_blank"><img border="0" alt="IMG_20130223_125530resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130223_125530resized-thumbnail2.jpg" width="320" height="314" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130223_125530resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />さて、SIMを挿入したら、データ通信のプランを有効にします。ここでは、727050番にSMSでメッセージ「3」を送信します。<br /><br /><a href="http://projectc3.up.seesaa.net/image/singtel_step1.png" target="_blank"><img border="0" alt="singtel_step1.png" src="http://projectc3.up.seesaa.net/image/singtel_step1-thumbnail2.png" width="192" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/singtel_step1-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />すぐに返事のSMSが届きますので、ここでは、Subscribe to Data bundle for Notebook/Tabletのを選択する為、「2」を返信します。<br /><br /><a href="http://projectc3.up.seesaa.net/image/singtel_step2.png" target="_blank"><img border="0" alt="singtel_step2.png" src="http://projectc3.up.seesaa.net/image/singtel_step2-thumbnail2.png" width="192" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/singtel_step2-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />今度は、プランを選択するメッセージが送られてきます。3日分のデータ通信使い放題の3 days Unlimited Data Planを選択しますので、「4」と返信します。<br /><br /><a href="http://projectc3.up.seesaa.net/image/singtel_step3.png" target="_blank"><img border="0" alt="singtel_step3.png" src="http://projectc3.up.seesaa.net/image/singtel_step3-thumbnail2.png" width="192" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/singtel_step3-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />確認のメッセージが出ますので、問題なければ「1」を返信します。<br /><br /><a href="http://projectc3.up.seesaa.net/image/singtel_step4.png" target="_blank"><img border="0" alt="singtel_step4.png" src="http://projectc3.up.seesaa.net/image/singtel_step4-thumbnail2.png" width="192" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/singtel_step4-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />選択した結果と、有効期限などの情報が届いて手続き終了です。<br /><br /><a href="http://projectc3.up.seesaa.net/image/singtel_step5.png" target="_blank"><img border="0" alt="singtel_step5.png" src="http://projectc3.up.seesaa.net/image/singtel_step5-thumbnail2.png" width="192" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/singtel_step5-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />次は、データ通信を行うためのAPNの設定です。SIMカードを買った時の説明書通り設定します。一応スクリーンショットを貼りますね。<br /><br /><a href="http://projectc3.up.seesaa.net/image/singtel_ss_1.png" target="_blank"><img border="0" alt="singtel_ss_1.png" src="http://projectc3.up.seesaa.net/image/singtel_ss_1-thumbnail2.png" width="192" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/singtel_ss_1-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br /><a href="http://projectc3.up.seesaa.net/image/singtel_ss_2.png" target="_blank"><img border="0" alt="singtel_ss_2.png" src="http://projectc3.up.seesaa.net/image/singtel_ss_2-thumbnail2.png" width="192" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/singtel_ss_2-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />アクティベーション作業は終了しました。<br />これで晴れてデータ通信ができるようになりました!Nexus Sはテザリング機能がついているので、ノートPC等でも普通にデータ通信が出来ました。<br /><br />さて、たまたま日本から持ってきたイーモバイルのポケットWi-FiはSIMロックフリーということで、ここにアクティベーションされたSIMを入れてみます。<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130223_222110resized.jpg" target="_blank"><img border="0" alt="IMG_20130223_222110resized.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130223_222110resized-thumbnail2.jpg" width="240" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130223_222110resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />こちらはAPNが自動で設定された為か、特になにもする事なくデータ通信を開始できました。下り2Mbpsくらい出てて、あまり日本で通信しているのと違和感なく使えました!<br /><br />シンガポールでデータ通信される場合、よかったらどーぞ。<br />手順は2013年2月末のものになります。<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005G9WNJG/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31jNll2MI7L._SL160_.jpg" alt="EMOBILE Pocket WiFi GP02" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005G9WNJG/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">EMOBILE Pocket WiFi GP02</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.03.05</div></div><div class="amazlet-detail">イーモバイル <br />売り上げランキング: 27,869<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005G9WNJG/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/342870435</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130223_125530resized.jpg" length="38719" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130223_125530resized.jpg" length="38719" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step1.png" length="53181" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step1.png" length="53181" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step2.png" length="80235" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step2.png" length="80235" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step3.png" length="99906" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step3.png" length="99906" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step4.png" length="78583" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step4.png" length="78583" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step5.png" length="77908" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_step5.png" length="77908" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_ss_1.png" length="61635" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_ss_1.png" length="61635" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_ss_2.png" length="69955" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/singtel_ss_2.png" length="69955" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130223_222110resized.jpg" length="25060" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130223_222110resized.jpg" length="25060" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/316575195.html</link>
      <title>Arduino Due+自作JTAGアダプタでスケッチのソースレベルデバッグしてみた</title>
      <pubDate>Sun, 27 Jan 2013 23:34:08 +0900</pubDate>
            <description>こんにちは。はやくArduino Dueで遊びたいのですがなんだかんだと他にやりたい事やらやらなければならない事やらあり、あまり時間がさけてなくて、遅々として進まない状況が続いています。●JTAGアダプタを製作してみたところで、ツイッターにたまに書いていたのですが、年末のお休みを利用して、Kamiki氏の回路 http://www.koka-in.org/~kensyu/handicraft/diary/20080926.htmlねむいさんの回路 http://nemuisa..</description>
            <itunes:summary><![CDATA[
こんにちは。はやくArduino Dueで遊びたいのですがなんだかんだと他にやりたい事やらやらなければならない事やらあり、あまり時間がさけてなくて、遅々として進まない状況が続いています。

●JTAGアダプタを製作してみた



ところで、ツイッターにたまに書いていたのですが、年末のお休みを利用して、
Kamiki氏の回路 http://www.koka-in.org/~kensyu/handicraft/diary/20080926.html
ねむいさんの回路 http://nemuisan.blog.bai.ne.jp/?eid=155027
を参考に自分なりにJTAGのデバッグ回路を作っていたので、まずはこれを使ってみることにしました。
メインチップはFT2232Dです。

作成してみた回路図はこちら。Eagleで書いています。部品は秋月とチップワンストップで買えるものにしています。
<a href="http://projectc3.up.seesaa.net/image/jtag_sch.png" target="_blank"><img border="0" alt="jtag_sch.png" src="http://projectc3.up.seesaa.net/image/jtag_sch-thumbnail2.png" width="320" height="201"></a>

上記回路図のpdf版も置いときますね。
<a href="http://projectc3.up.seesaa.net/image/FT2232_JTAG_ADAPTER_20130127.pdf">FT2232_JTAG_ADAPTER_20130127.pdf</a>
いつものFusion PCBと、佐々木さんに教えていただいたDFRobotの2社にお試しで発注してみました。(安いのでお試し可能だったもので...)基板が必要以上の枚数(23枚)になって処分に困ってます。笑
あ、ねむいさんの作例同様、EEPROMを搭載し、Amontec JTAGkey相当のデバイスとして認識されるようにしています。DFRobotとFusionとでの比較(というほどのもんではありませんが)はまた別記事にまとめます。

・・・あ、そういえばこの基板、フリスクサイズに入れる予定だったの、忘れてた。

DFRobotから届いた基板はこちら。
<a href="http://projectc3.up.seesaa.net/image/P1130029resized.jpg" target="_blank"><img border="0" alt="P1130029resized.jpg" src="http://projectc3.up.seesaa.net/image/P1130029resized-thumbnail2.jpg" width="320" height="214"></a>

実装した後のボード。
<a href="http://projectc3.up.seesaa.net/image/P1130027resized.jpg" target="_blank"><img border="0" alt="P1130027resized.jpg" src="http://projectc3.up.seesaa.net/image/P1130027resized-thumbnail2.jpg" width="320" height="214"></a>

またこの話しはおいおい記事にさせていただくとして、Arduino Dueのデバッグについて書いていきます!

●Arduino Dueのデバッグポートについて


Arduino Dueのデバッグポートは以下のようになっています。

<a href="http://projectc3.up.seesaa.net/image/arduino_due_debugport.jpg" target="_blank"><img border="0" alt="arduino_due_debugport.jpg" src="http://projectc3.up.seesaa.net/image/arduino_due_debugport-thumbnail2.jpg" width="320" height="154"></a>
初めから、SWD(Serial Wire Debug)もJTAGもピンヘッダが実装されています。SWDはJTAGよりも少ないピンでデバッグ機能を提供します(SWDには、JTAGのバウンダリスキャン相当の機能提供はありません。まぁデバッガ繋ぎたいだけなのでそのような機能、特に必要でもありませんが)。
本ボードでは、10ピンの1.27mmピッチピンヘッダにJTAGが、そして4ピンの2.54mmピッチピンヘッダにSWDが出ています。今回はこのJTAG側を使用しています。
(後ほど、SWDを使用したデバッグも上記のデバッガ(+SWDアダプタ)でお試ししてみたいと思っています)

さて、JTAGデバッグに使用する1.27mmピッチピンヘッダですが、ストロベリー・リナックスで販売している、OlimexのARM-JTAG-20-10(630円)が便利です。シンプルな構成のピッチ変換基板です。
http://strawberry-linux.com/catalog/items?code=15079

<img src="http://strawberry-linux.com/images/ARM-JTAG-20-10.jpg" />

このARM-JTAG-20-10と、JTAGアダプタの3.3V、GND、TMS、TCK、TDI、TDOを適当な線材で接続すればOKです。
<a href="http://projectc3.up.seesaa.net/image/jtag_connection.jpg" target="_blank"><img border="0" alt="jtag_connection.jpg" src="http://projectc3.up.seesaa.net/image/jtag_connection-thumbnail2.jpg" width="320" height="159"></a>

なお、Arduino Dueのデバッグ端子(だけじゃないけど)については武蔵野電波さんのピンアウトダイアグラムが便利です。
http://www.musashinodenpa.com/arduino/lib/Duepinout.pdf

●開発環境の整備


今回も、過去記事のSTM32F4-Discoveryで取り上げましたOpenOCDを使用します。過去記事ではLinux環境(Ubuntu 10.04LTS 64bit)でOpenOCDを使用していたので、自前ビルドのものを使用しましたが、今回はWindows8+Cygwin環境で使用しているので、「ねむいさんのぶろぐ」においてあるバイナリファイルをそのまま使用させて頂きました。
もちろんLinux環境からも使用出来ると思います(試してないけど)。

OpenOCDは、各デバッグI/Fやターゲットボード別にスクリプト言語 Tclで記述された処理を使用してデバッグします。Arduino Dueは「ATSAM3X8E」を使用しています。以下のように指定して起動すれば、ATSAM3X8E向け環境になるかなと思います。

Cygwinでの実行例。DOSプロンプトならWindows流のパス指定にしてください。

# ./openocd.exe -s ./tcl -f ./tcl/interface/jtagkey.cfg -f ./tcl/target/at91sam3ax_8x.cfg


OpenOCDでは、デフォルトはGDBServerのポートは3333、telnetインターフェースが4444になっています。
なので、TeraTerm等で4444番ポートに接続するだけで、OpenOCDの持つ各種コマンドインターフェースを利用できます。

例えば、上記の通りのコマンドライン指定でOpenOCDを起動してみます。OpenOCDを起動した時のログは以下のようになりました。


ishii_000@Win7tab /cygdrive/c/local/ocd
$ ./openocd.exe -s ./tcl -f ./tcl/interface/jtagkey.cfg -f ./tcl/target/at91sam3ax_8x.cfg
Open On-Chip Debugger 0.7.0-dev-00134-g48e01a4-dirty (2013-01-03-11:34)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
adapter speed: 500 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
cortex_m3 reset_config sysresetreq
Info : clock speed 500 kHz
Info : JTAG tap: sam3.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Info : sam3.cpu: hardware has 6 breakpoints, 4 watchpoints


# 今気づいたけど僕のマシン名「WIN7TAB」だった。Win8タブレットなんたけど。あーあ。orz

次に、OpenOCDのAT91SAM3 INFOコマンドを実行してみます。(OpenOCDでは一部のターゲット向けにスペシャルコマンドがあるので)


&gt; at91sam3 info
    CKGR_MOR: [0x400e0420] -&gt; 0x00000000
            MOSCXTEN:     0 [0x0000] (main xtal enabled: NO)
            MOSCXTBY:     0 [0x0000] (main osc bypass: NO)
            MOSCRCEN:     0 [0x0000] (onchip RC-OSC enabled: NO)
             MOSCRCF:     0 [0x0000] (onchip RC-OSC freq: 4 MHz)
            MOSCXTST:     0 [0x0000] (startup clks, time= 0.000000 uSecs)
             MOSCSEL:     0 [0x0000] (mainosc source: internal RC)
               CFDEN:     0 [0x0000] (clock failure enabled: NO)
   CKGR_MCFR: [0x400e0424] -&gt; 0x00000000
            MAINFRDY:     0 [0x0000] (main ready: NO)
               MAINF:     0 [0x0000] (0.000 Mhz (32.768khz slowclk)
  CKGR_PLLAR: [0x400e0428] -&gt; 0x00000000
                DIVA:     0 [0x0000]
                MULA:     0 [0x0000]
        PLLA Freq: (Disabled,mula = 0)
   CKGR_UCKR: [0x400e041c] -&gt; 0x00000000
    PMC_FSMR: [0x400e0470] -&gt; 0x00000000
    PMC_FSPR: [0x400e0474] -&gt; 0x00000000
     PMC_IMR: [0x400e046c] -&gt; 0x00000000
    PMC_MCKR: [0x400e0430] -&gt; 0x00000000
                 CSS:     0 [0x0000] slowclk (0.033 Mhz)
                PRES:     0 [0x0000] (selected clock)
                Result CPU Freq: 0.033
    PMC_PCK0: [0x400e0440] -&gt; 0x000001ff
    PMC_PCK1: [0x400e0444] -&gt; 0x000001ff
    PMC_PCK2: [0x400e0448] -&gt; 0x000001ff
    PMC_PCSR: [0x400e0418] -&gt; 0x00000000
    PMC_SCSR: [0x400e0408] -&gt; 0x00000000
      PMC_SR: [0x400e0468] -&gt; 0x00000000
 CHIPID_CIDR: [0x400e0740] -&gt; 0x285e0a60
             Version:     0 [0x0000]
               EPROC:     3 [0x0003] cortex-m3
             NVPSIZE:    10 [0x000a] 512K bytes
            NVPSIZE2:     0 [0x0000] none
            SRAMSIZE:    14 [0x000e] 96K Bytes
                ARCH:   133 [0x0085] ATSAM3XxE Series (144-pin version)
              NVPTYP:     2 [0x0002] embedded flash memory
               EXTID:     0 [0x0000] (exists: NO)
CHIPID_CIDR2: [0x400e0940] -&gt; 0x285e0a60
             Version:     0 [0x0000]
               EPROC:     3 [0x0003] cortex-m3
             NVPSIZE:    10 [0x000a] 512K bytes
            NVPSIZE2:     0 [0x0000] none
            SRAMSIZE:    14 [0x000e] 96K Bytes
                ARCH:   133 [0x0085] ATSAM3XxE Series (144-pin version)
              NVPTYP:     2 [0x0002] embedded flash memory
               EXTID:     0 [0x0000] (exists: NO)
 CHIPID_EXID: [0x400e0744] -&gt; 0x00000000
CHIPID_EXID2: [0x400e0944] -&gt; 0x00000000
   rc-osc: 0.000 MHz
  mainosc: 0.000 MHz
     plla: 0.000 MHz
 cpu-freq: 0.033 MHz
mclk-freq: 0.033 MHz
 UniqueId: 0x52323120 0x36303437 0x30303420 0x35313034


デバイスの諸元がいろいろ読み取れたみたいです。

●Arduinoスケッチを実機に書き込んで、ソースコードレベルデバッグを使用する



上述の通り、OpenOCDにはデフォルトポート番号3333でGDBサーバーとして振舞います。
ARM用のGDBクライアントが必要なのですが、実はArduino IDE内のARM用ツールチェイン(Sourcery g++ Liteのようです)にもgdbがちゃんと入ってます。だからこれを利用すればOKだと思います。
Windows版の場合のパスは、「arduino\hardware\tools\g++_arm_none_eabi\bin\arm-none-eabi-gdb.exe」です。

今回は、僕がたまたま自分のPCに別途インストールしてたSourcery g++ Lite(ARM EABI)があったんでそれ使いました(パス通してたんで。みたいな理由です^^;)。

gdbのフロントエンドには、InsightやEclipse+CDT、DDDなどいろいろありますが、定番の１つ、Emacsを使用してみました。その他環境でも別に差なく使用出来ると思います。。


1. ArduinoのスケッチをコンパイルしてArduino Dueマイコンボードに書き込む


Arduino Dueボード上についてる橙色のLED(デジタルピン13番)を500[ms]毎に明るい→暗い→明るい→暗いを繰り返す適当なサンプルコードを作りました。
loop関数が呼ばれる度、変数flagの値が0(false)と1(true)交互に変化します。

●BlinkPWM.ino

void setup()
{
}

boolean flag = false;

void loop()
{
  
  if(flag){
    analogWrite(13,40); // 暗い
  } else {
    analogWrite(13,255); // 明るい
  }
  
  flag = !flag;

  delay(500); // 500[ms]待つ
}


コンパイルすると、テンポラリディレクトリにバイナリを含むビルド関連生成物が吐き出されます。Arduino IDEの「ファイル」→「環境設定」の「より詳細な情報を表示する : コンパイル」のチェックボックスにはチェックを入れておきます。
(生成物のテンポラリ出力先のパスを確認する為)
スケッチビルドのログを見てみます。適当に最後のobjcopyしている行をコピーしたのが以下です。


C:\local\arduino/hardware/tools/g++_arm_none_eabi/bin/arm-none-eabi-objcopy -O binary c:\temp\build2226462045159247312.tmp/BlinkPWM.cpp.elf c:\temp\build2226462045159247312.tmp/BlinkPWM.cpp.bin 

上記では生成先は「c:\temp\build2226462045159247312.tmp」となったようです。

あ、、ところでデバッグする時はgccにデバッグオプション(-g)を付加しておく必要がありますが、Arduino IDEでは何故かデフォルト「-g」付きになっていますので、そのままでOKです(これは、AVRマイコン向けのビルド時も同じ)。

Arduino IDEで.ino(または.pde)のスケッチをビルドした後、ビルドエラーが出た時に該当行を抽出する時にデバッグ情報を使ってるのかなと思ってます。違ったらスミマセン。



んで、上記で調べた生成先のディレクトリ内のファイルはこんな感じでした。


C:\temp\build2226462045159247312.tmp&gt;dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は DACD-C207 です

 C:\temp\build2226462045159247312.tmp のディレクトリ

2013/01/27  17:40    &lt;DIR&gt;          .
2013/01/27  17:40    &lt;DIR&gt;          ..
2013/01/27  17:39               252 BlinkPWM.cpp
2013/01/27  17:40            27,064 BlinkPWM.cpp.bin
2013/01/27  17:40           233,014 BlinkPWM.cpp.elf
2013/01/27  17:40           366,790 BlinkPWM.cpp.map
2013/01/27  17:39             4,456 BlinkPWM.cpp.o
2013/01/27  17:40            26,664 CDC.cpp.o
2013/01/27  17:40           417,598 core.a
2013/01/27  17:39             5,716 cortex_handlers.c.o
2013/01/27  17:39             2,272 cxxabi-compat.cpp.o
2013/01/27  17:40            23,664 HID.cpp.o
2013/01/27  17:39             2,064 hooks.c.o
2013/01/27  17:39               910 iar_calls_sam3.c.o
2013/01/27  17:40            14,620 IPAddress.cpp.o
2013/01/27  17:39             6,100 itoa.c.o
2013/01/27  17:40             4,676 main.cpp.o
2013/01/27  17:40            32,940 Print.cpp.o
2013/01/27  17:40             6,208 Reset.cpp.o
2013/01/27  17:40             4,780 RingBuffer.cpp.o
2013/01/27  17:40            25,008 Stream.cpp.o
2013/01/27  17:39             9,460 syscalls_sam3.c.o
2013/01/27  17:40            24,076 UARTClass.cpp.o
2013/01/27  17:40            24,568 USARTClass.cpp.o
2013/01/27  17:40            34,048 USBCore.cpp.o
2013/01/27  17:40            21,328 variant.cpp.o
2013/01/27  17:39            15,624 WInterrupts.c.o
2013/01/27  17:39             6,516 wiring.c.o
2013/01/27  17:39            22,836 wiring_analog.c.o
2013/01/27  17:39            10,040 wiring_digital.c.o
2013/01/27  17:40             9,112 wiring_pulse.cpp.o
2013/01/27  17:39             5,620 wiring_shift.c.o
2013/01/27  17:40             5,964 WMath.cpp.o
2013/01/27  17:40            63,628 WString.cpp.o
              32 個のファイル           1,457,616 バイト
               2 個のディレクトリ  17,473,040,384 バイトの空き領域

C:\temp\build2226462045159247312.tmp&gt;



objdumpでソースコード付きの逆アセンブル表示ができますので、試してみます。

&gt; arm-none-eabi-objdump -Sdl C:\temp\build2226462045159247312.tmp\BlinkPWM.cpp.elf


結果の内、メインのスケッチあたりの一部抜粋をしてみます。



00080198 :
setup():
C:\local\arduino/BlinkPWM.ino:3
void setup()
{
}
   80198:	4770      	bx	lr
	...

0008019c :
loop():
C:\local\arduino/BlinkPWM.ino:8

boolean flag = false;

void loop()
{
   8019c:	b510      	push	{r4, lr}
C:\local\arduino/BlinkPWM.ino:10
  
  if(flag){
   8019e:	4b0b      	ldr	r3, [pc, #44]	; (801cc )
   801a0:	781b      	ldrb	r3, [r3, #0]
   801a2:	b113      	cbz	r3, 801aa 
C:\local\arduino/BlinkPWM.ino:11
    analogWrite(13,40);
   801a4:	200d      	movs	r0, #13
   801a6:	2128      	movs	r1, #40	; 0x28
   801a8:	e001      	b.n	801ae 

   
みてみると、スケッチのBlinkPWM.inoのパスがC:\local\arduinoになっています。
これは僕のPCのArduino IDEインストール先です。
とはいえ、BlinkPWM.inoを保存してるパスはそこじゃありません。今回は、
手っ取り早く本パスにスケッチをコピっちゃいます。笑
&gt;&nbsp;copy (path-to-store-sketch)BlinkPWM.ino C:\local\arduino

2. OpenOCDを起動する

Cygwinから起動してみました。別に素のDOSプロンプトでもいけるかと思います。

# ./openocd.exe -s ./tcl -f ./tcl/interface/jtagkey.cfg -f ./tcl/target/at91sam3ax_8x.cfg



3. Emacsを起動する

Windowsマシンにまだエディタをインストールしてなかったので、gnupack(emacs+cygwin)というパッケージをインストールしてみました。
http://sourceforge.jp/projects/gnupack/releases/
取り敢えず起動するなら、展開してemacs.exeを実行するだけです。

4. gdbを開始

Emacsから、「M-x gdb」としてGDBのモードを起動します。プロンプトが出ますので以下のように入力します。

Run gdb (like this): arm-none-eabi-gdb -i=mi C:\temp\build2226462045159247312.tmp\BlinkPWM.cpp.elf


5. ブレーク貼ってステップ実行してみる

loop関数とdelay関数にブレーク貼るなら、「b loop」と「b delay」など。
「p flag」とすれば、変数の値を確認できます。
ここではloopでブレークかかる度、flagの値が0と1、交互に切り替わる様子が確認できます。
ARMのレジスタを見るなら「i reg」とすればひと通り出ます。

スクリーンショットを撮ってみました。
左側がgdbのコマンド、右側がデバッグ中のソースコード(BlinkPWM.ino)です。loop関数のif文のところについてる赤いマーカーは、loop関数にブレークを張ったよって意味です。
結構視覚的にわかりやすいです。左側は、loopで止めた状態でARMのレジスタを表示してます。
もちろん、ArduinoのAPIの内部動作に至るまでステップ実行できるのでこまかく追いかけたい場合有効かなと思います。
<a href="http://projectc3.up.seesaa.net/image/emacs_ss.jpg" target="_blank"><img border="0" alt="emacs_ss.jpg" src="http://projectc3.up.seesaa.net/image/emacs_ss-thumbnail2.jpg" width="320" height="179"></a>



ところで、Arduinoはスレッド実行環境じゃないのにgdbがスレッド環境と誤判別したのか、
RMT ERROR : failed to get thread list.ウォーニングを吐きます。
まぁ動作に影響なさそうなので放っているのですが・・・設定とかできちんと回避できるんでしょうか。ご存知のかた、是非お教え下さい!

ではー!これから普通にDueを使います!笑

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836495/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/5149mQTzR2L._SL160_.jpg" alt="ARM Cortex&#x2010;M3&#x30B7;&#x30B9;&#x30C6;&#x30E0;&#x958B;&#x767A;&#x30AC;&#x30A4;&#x30C9;&#x2015;&#x6700;&#x65B0;&#x30A2;&#x30FC;&#x30AD;&#x30C6;&#x30AF;&#x30C1;&#x30E3;&#x306E;&#x7406;&#x89E3;&#x304B;&#x3089;&#x30BD;&#x30D5;&#x30C8;&#x30A6;&#x30A7;&#x30A2;&#x958B;&#x767A;&#x307E;&#x3067;&#x3092;&#x8A73;&#x89E3; (Design Wave Advance)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836495/ishiiyasu-22/ref=nosim/" target="_blank">ARM Cortex‐M3システム開発ガイド―最新アーキテクチャの理解からソフトウェア開発までを詳解 (Design Wave Advance)</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.27Joseph Yiu CQ出版 売り上げランキング: 126,976<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836495/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51n%2BN1DB8oL._SL160_.jpg" alt="ARM&#x3067;OS&#x8D85;&#x5165;&#x9580; (ARM&#x30DE;&#x30A4;&#x30B3;&#x30F3;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" target="_blank">ARMでOS超入門 (ARMマイコン)</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.27桑野 雅彦  岡田 好一 共著 CQ出版 売り上げランキング: 151,899<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478984823X/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61jLewoEiUL._SL160_.jpg" alt="&#x8D85;&#x5165;&#x9580;! &#x4ED8;&#x5C5E;ARM&#x30DE;&#x30A4;&#x30B3;&#x30F3;&#x3067;&#x59CB;&#x3081;&#x308B;&#x30ED;&#x30DC;&#x30C3;&#x30C8;&#x88FD;&#x4F5C;: &#x969C;&#x5BB3;&#x7269;&#x3092;&#x907F;&#x3051;&#x306A;&#x304C;&#x3089;&#x524D;&#x9032;!&#x30B9;&#x30AF;&#x30EA;&#x30D7;&#x30C8;&#x8A00;&#x8A9E;&#x3067;&#x7C21;&#x5358;&#x64CD;&#x7E26;!&#x30AB;&#x30E1;&#x30E9;&#x753B;&#x50CF;&#x51E6;&#x7406;! (&#x30C8;&#x30E9;&#x30A4;&#x30A2;&#x30EB;&#x30B7;&#x30EA;&#x30FC;&#x30BA;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478984823X/ishiiyasu-22/ref=nosim/" target="_blank">超入門! 付属ARMマイコンで始めるロボット製作: 障害物を避けながら前進!スクリプト言語で簡単操縦!カメラ画像処理! (トライアルシリーズ)</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.27千葉工業大学 林原 靖男/神奈川工科大学 兵頭 和人 CQ出版 売り上げランキング: 255,565<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478984823X/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a><a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
こんにちは。はやくArduino Dueで遊びたいのですがなんだかんだと他にやりたい事やらやらなければならない事やらあり、あまり時間がさけてなくて、遅々として進まない状況が続いています。<br>
<br>
<span style="font-size:large;"><span style="font-size:large;">●JTAGアダプタを製作してみた
</span></span>
<br>
<br>
ところで、ツイッターにたまに書いていたのですが、年末のお休みを利用して、<br>
Kamiki氏の回路 <a href="http://www.koka-in.org/~kensyu/handicraft/diary/20080926.html" target="_blank">http://www.koka-in.org/~kensyu/handicraft/diary/20080926.html</a><br>
ねむいさんの回路 <a href="http://nemuisan.blog.bai.ne.jp/?eid=155027" target="_blank">http://nemuisan.blog.bai.ne.jp/?eid=155027</a><br>
を参考に自分なりにJTAGのデバッグ回路を作っていたので、まずはこれを使ってみることにしました。<br>
メインチップはFT2232Dです。<br>
<br>
作成してみた回路図はこちら。Eagleで書いています。部品は秋月とチップワンストップで買えるものにしています。<br>
<a href="http://projectc3.up.seesaa.net/image/jtag_sch.png" target="_blank"><img border="0" alt="jtag_sch.png" src="http://projectc3.up.seesaa.net/image/jtag_sch-thumbnail2.png" width="320" height="201" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/jtag_sch-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
上記回路図のpdf版も置いときますね。<br>
<a href="http://projectc3.up.seesaa.net/image/FT2232_JTAG_ADAPTER_20130127.pdf">FT2232_JTAG_ADAPTER_20130127.pdf</a><br>
いつものFusion PCBと、佐々木さんに教えていただいたDFRobotの2社にお試しで発注してみました。(安いのでお試し可能だったもので...)基板が必要以上の枚数(23枚)になって処分に困ってます。笑<br>
あ、ねむいさんの作例同様、EEPROMを搭載し、Amontec JTAGkey相当のデバイスとして認識されるようにしています。DFRobotとFusionとでの比較(というほどのもんではありませんが)はまた別記事にまとめます。<br>
<br>
・・・あ、そういえばこの基板、フリスクサイズに入れる予定だったの、忘れてた。<br>
<br>
DFRobotから届いた基板はこちら。<br>
<a href="http://projectc3.up.seesaa.net/image/P1130029resized.jpg" target="_blank"><img border="0" alt="P1130029resized.jpg" src="http://projectc3.up.seesaa.net/image/P1130029resized-thumbnail2.jpg" width="320" height="214" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/P1130029resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
実装した後のボード。<br>
<a href="http://projectc3.up.seesaa.net/image/P1130027resized.jpg" target="_blank"><img border="0" alt="P1130027resized.jpg" src="http://projectc3.up.seesaa.net/image/P1130027resized-thumbnail2.jpg" width="320" height="214" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/P1130027resized-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
またこの話しはおいおい記事にさせていただくとして、Arduino Dueのデバッグについて書いていきます!<br>
<br>
<span style="font-size:large;">●Arduino Dueのデバッグポートについて
</span>
<br><br>
Arduino Dueのデバッグポートは以下のようになっています。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/arduino_due_debugport.jpg" target="_blank"><img border="0" alt="arduino_due_debugport.jpg" src="http://projectc3.up.seesaa.net/image/arduino_due_debugport-thumbnail2.jpg" width="320" height="154" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/arduino_due_debugport-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
初めから、SWD(Serial Wire Debug)もJTAGもピンヘッダが実装されています。SWDはJTAGよりも少ないピンでデバッグ機能を提供します(SWDには、JTAGのバウンダリスキャン相当の機能提供はありません。まぁデバッガ繋ぎたいだけなのでそのような機能、特に必要でもありませんが)。<br>
本ボードでは、10ピンの1.27mmピッチピンヘッダにJTAGが、そして4ピンの2.54mmピッチピンヘッダにSWDが出ています。今回はこのJTAG側を使用しています。<br>
(後ほど、SWDを使用したデバッグも上記のデバッガ(+SWDアダプタ)でお試ししてみたいと思っています)<br>
<br>
さて、JTAGデバッグに使用する1.27mmピッチピンヘッダですが、ストロベリー・リナックスで販売している、OlimexのARM-JTAG-20-10(630円)が便利です。シンプルな構成のピッチ変換基板です。<br>
<a href="http://strawberry-linux.com/catalog/items?code=15079" target="_blank">http://strawberry-linux.com/catalog/items?code=15079</a><br>
<br>
<img src="http://strawberry-linux.com/images/ARM-JTAG-20-10.jpg"/><br>
<br>
このARM-JTAG-20-10と、JTAGアダプタの3.3V、GND、TMS、TCK、TDI、TDOを適当な線材で接続すればOKです。<br>
<a href="http://projectc3.up.seesaa.net/image/jtag_connection.jpg" target="_blank"><img border="0" alt="jtag_connection.jpg" src="http://projectc3.up.seesaa.net/image/jtag_connection-thumbnail2.jpg" width="320" height="159" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/jtag_connection-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
なお、Arduino Dueのデバッグ端子(だけじゃないけど)については武蔵野電波さんのピンアウトダイアグラムが便利です。<br>
<a href="http://www.musashinodenpa.com/arduino/lib/Duepinout.pdf" target="_blank">http://www.musashinodenpa.com/arduino/lib/Duepinout.pdf</a><br>
<br>
<span style="font-size:large;">●開発環境の整備</span>
<br>
<br>
今回も、過去記事のSTM32F4-Discoveryで取り上げましたOpenOCDを使用します。過去記事ではLinux環境(Ubuntu 10.04LTS 64bit)でOpenOCDを使用していたので、自前ビルドのものを使用しましたが、今回はWindows8+Cygwin環境で使用しているので、「ねむいさんのぶろぐ」においてあるバイナリファイルをそのまま使用させて頂きました。<br>
もちろんLinux環境からも使用出来ると思います(試してないけど)。<br>
<br>
OpenOCDは、各デバッグI/Fやターゲットボード別にスクリプト言語 Tclで記述された処理を使用してデバッグします。Arduino Dueは「ATSAM3X8E」を使用しています。以下のように指定して起動すれば、ATSAM3X8E向け環境になるかなと思います。<br>
<br>
Cygwinでの実行例。DOSプロンプトならWindows流のパス指定にしてください。<br>
<pre><span style="color:#000000;background-color:#BBFFBB">
# ./openocd.exe -s ./tcl -f ./tcl/interface/jtagkey.cfg -f ./tcl/target/at91sam3ax_8x.cfg
</span></pre>
<br>
OpenOCDでは、デフォルトはGDBServerのポートは3333、telnetインターフェースが4444になっています。<br>
なので、TeraTerm等で4444番ポートに接続するだけで、OpenOCDの持つ各種コマンドインターフェースを利用できます。<br>
<br>
例えば、上記の通りのコマンドライン指定でOpenOCDを起動してみます。OpenOCDを起動した時のログは以下のようになりました。<br>
<br>
<pre><span style="color:#00AA00;">
ishii_000@Win7tab /cygdrive/c/local/ocd
$ ./openocd.exe -s ./tcl -f ./tcl/interface/jtagkey.cfg -f ./tcl/target/at91sam3ax_8x.cfg
Open On-Chip Debugger 0.7.0-dev-00134-g48e01a4-dirty (2013-01-03-11:34)
Licensed under GNU GPL v2
For bug reports, read
        <a href="http://openocd.sourceforge.net/doc/doxygen/bugs.html" target="_blank">http://openocd.sourceforge.net/doc/doxygen/bugs.html</a>
Info : only one transport option; autoselect 'jtag'
adapter speed: 500 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
cortex_m3 reset_config sysresetreq
Info : clock speed 500 kHz
Info : JTAG tap: sam3.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Info : sam3.cpu: hardware has 6 breakpoints, 4 watchpoints
</span></pre>
<br>
# 今気づいたけど僕のマシン名「WIN7TAB」だった。Win8タブレットなんたけど。あーあ。orz<br>
<br>
次に、OpenOCDのAT91SAM3 INFOコマンドを実行してみます。(OpenOCDでは一部のターゲット向けにスペシャルコマンドがあるので)<br>
<br>
<pre><span style="color:#AA0000;">
> at91sam3 info
    CKGR_MOR: [0x400e0420] -> 0x00000000
            MOSCXTEN:     0 [0x0000] (main xtal enabled: NO)
            MOSCXTBY:     0 [0x0000] (main osc bypass: NO)
            MOSCRCEN:     0 [0x0000] (onchip RC-OSC enabled: NO)
             MOSCRCF:     0 [0x0000] (onchip RC-OSC freq: 4 MHz)
            MOSCXTST:     0 [0x0000] (startup clks, time= 0.000000 uSecs)
             MOSCSEL:     0 [0x0000] (mainosc source: internal RC)
               CFDEN:     0 [0x0000] (clock failure enabled: NO)
   CKGR_MCFR: [0x400e0424] -> 0x00000000
            MAINFRDY:     0 [0x0000] (main ready: NO)
               MAINF:     0 [0x0000] (0.000 Mhz (32.768khz slowclk)
  CKGR_PLLAR: [0x400e0428] -> 0x00000000
                DIVA:     0 [0x0000]
                MULA:     0 [0x0000]
        PLLA Freq: (Disabled,mula = 0)
   CKGR_UCKR: [0x400e041c] -> 0x00000000
    PMC_FSMR: [0x400e0470] -> 0x00000000
    PMC_FSPR: [0x400e0474] -> 0x00000000
     PMC_IMR: [0x400e046c] -> 0x00000000
    PMC_MCKR: [0x400e0430] -> 0x00000000
                 CSS:     0 [0x0000] slowclk (0.033 Mhz)
                PRES:     0 [0x0000] (selected clock)
                Result CPU Freq: 0.033
    PMC_PCK0: [0x400e0440] -> 0x000001ff
    PMC_PCK1: [0x400e0444] -> 0x000001ff
    PMC_PCK2: [0x400e0448] -> 0x000001ff
    PMC_PCSR: [0x400e0418] -> 0x00000000
    PMC_SCSR: [0x400e0408] -> 0x00000000
      PMC_SR: [0x400e0468] -> 0x00000000
 CHIPID_CIDR: [0x400e0740] -> 0x285e0a60
             Version:     0 [0x0000]
               EPROC:     3 [0x0003] cortex-m3
             NVPSIZE:    10 [0x000a] 512K bytes
            NVPSIZE2:     0 [0x0000] none
            SRAMSIZE:    14 [0x000e] 96K Bytes
                ARCH:   133 [0x0085] ATSAM3XxE Series (144-pin version)
              NVPTYP:     2 [0x0002] embedded flash memory
               EXTID:     0 [0x0000] (exists: NO)
CHIPID_CIDR2: [0x400e0940] -> 0x285e0a60
             Version:     0 [0x0000]
               EPROC:     3 [0x0003] cortex-m3
             NVPSIZE:    10 [0x000a] 512K bytes
            NVPSIZE2:     0 [0x0000] none
            SRAMSIZE:    14 [0x000e] 96K Bytes
                ARCH:   133 [0x0085] ATSAM3XxE Series (144-pin version)
              NVPTYP:     2 [0x0002] embedded flash memory
               EXTID:     0 [0x0000] (exists: NO)
 CHIPID_EXID: [0x400e0744] -> 0x00000000
CHIPID_EXID2: [0x400e0944] -> 0x00000000
   rc-osc: 0.000 MHz
  mainosc: 0.000 MHz
     plla: 0.000 MHz
 cpu-freq: 0.033 MHz
mclk-freq: 0.033 MHz
 UniqueId: 0x52323120 0x36303437 0x30303420 0x35313034
</span></pre>
<br>
デバイスの諸元がいろいろ読み取れたみたいです。<br>
<br>
<span style="font-size:large;">●Arduinoスケッチを実機に書き込んで、ソースコードレベルデバッグを使用する
</span>
<br>
<br>
上述の通り、OpenOCDにはデフォルトポート番号3333でGDBサーバーとして振舞います。<br>
ARM用のGDBクライアントが必要なのですが、実はArduino IDE内のARM用ツールチェイン(Sourcery g++ Liteのようです)にもgdbがちゃんと入ってます。だからこれを利用すればOKだと思います。<br>
Windows版の場合のパスは、「arduino\hardware\tools\g++_arm_none_eabi\bin\arm-none-eabi-gdb.exe」です。<br>
<br>
今回は、僕がたまたま自分のPCに別途インストールしてたSourcery g++ Lite(ARM EABI)があったんでそれ使いました(パス通してたんで。みたいな理由です^^;)。<br>
<br>
gdbのフロントエンドには、InsightやEclipse+CDT、DDDなどいろいろありますが、定番の１つ、Emacsを使用してみました。その他環境でも別に差なく使用出来ると思います。。<br>
<br>
<br>
<strong>1. ArduinoのスケッチをコンパイルしてArduino Dueマイコンボードに書き込む
</strong><br>
<br>
Arduino Dueボード上についてる橙色のLED(デジタルピン13番)を500[ms]毎に明るい→暗い→明るい→暗いを繰り返す適当なサンプルコードを作りました。<br>
loop関数が呼ばれる度、変数flagの値が0(false)と1(true)交互に変化します。<br>
<br>
●BlinkPWM.ino<br>
<pre name="code" class="cpp">
void setup()
{
}

boolean flag = false;

void loop()
{
  
  if(flag){
    analogWrite(13,40); // 暗い
  } else {
    analogWrite(13,255); // 明るい
  }
  
  flag = !flag;

  delay(500); // 500[ms]待つ
}
</pre>
<br>
コンパイルすると、テンポラリディレクトリにバイナリを含むビルド関連生成物が吐き出されます。Arduino IDEの「ファイル」→「環境設定」の「より詳細な情報を表示する : コンパイル」のチェックボックスにはチェックを入れておきます。<br>
(生成物のテンポラリ出力先のパスを確認する為)<br>
スケッチビルドのログを見てみます。適当に最後のobjcopyしている行をコピーしたのが以下です。<br>
<br>
<pre>
C:\local\arduino/hardware/tools/g++_arm_none_eabi/bin/arm-none-eabi-objcopy -O binary c:\temp\build2226462045159247312.tmp/BlinkPWM.cpp.elf c:\temp\build2226462045159247312.tmp/BlinkPWM.cpp.bin 
</pre>
上記では生成先は「c:\temp\build2226462045159247312.tmp」となったようです。<br>
<br>
あ、、ところでデバッグする時はgccにデバッグオプション(-g)を付加しておく必要がありますが、Arduino IDEでは何故かデフォルト「-g」付きになっていますので、そのままでOKです(これは、AVRマイコン向けのビルド時も同じ)。<br>
<blockquote>
Arduino IDEで.ino(または.pde)のスケッチをビルドした後、ビルドエラーが出た時に該当行を抽出する時にデバッグ情報を使ってるのかなと思ってます。違ったらスミマセン。<br>
</blockquote>
<br>
<br>
んで、上記で調べた生成先のディレクトリ内のファイルはこんな感じでした。<br>
<pre><span style="color:#FF0000;">
<blockquote>
C:\temp\build2226462045159247312.tmp&gt;dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は DACD-C207 です

 C:\temp\build2226462045159247312.tmp のディレクトリ

2013/01/27  17:40    &lt;DIR&gt;          .
2013/01/27  17:40    &lt;DIR&gt;          ..
2013/01/27  17:39               252 BlinkPWM.cpp
2013/01/27  17:40            27,064 BlinkPWM.cpp.bin
2013/01/27  17:40           233,014 BlinkPWM.cpp.elf
2013/01/27  17:40           366,790 BlinkPWM.cpp.map
2013/01/27  17:39             4,456 BlinkPWM.cpp.o
2013/01/27  17:40            26,664 CDC.cpp.o
2013/01/27  17:40           417,598 core.a
2013/01/27  17:39             5,716 cortex_handlers.c.o
2013/01/27  17:39             2,272 cxxabi-compat.cpp.o
2013/01/27  17:40            23,664 HID.cpp.o
2013/01/27  17:39             2,064 hooks.c.o
2013/01/27  17:39               910 iar_calls_sam3.c.o
2013/01/27  17:40            14,620 IPAddress.cpp.o
2013/01/27  17:39             6,100 itoa.c.o
2013/01/27  17:40             4,676 main.cpp.o
2013/01/27  17:40            32,940 Print.cpp.o
2013/01/27  17:40             6,208 Reset.cpp.o
2013/01/27  17:40             4,780 RingBuffer.cpp.o
2013/01/27  17:40            25,008 Stream.cpp.o
2013/01/27  17:39             9,460 syscalls_sam3.c.o
2013/01/27  17:40            24,076 UARTClass.cpp.o
2013/01/27  17:40            24,568 USARTClass.cpp.o
2013/01/27  17:40            34,048 USBCore.cpp.o
2013/01/27  17:40            21,328 variant.cpp.o
2013/01/27  17:39            15,624 WInterrupts.c.o
2013/01/27  17:39             6,516 wiring.c.o
2013/01/27  17:39            22,836 wiring_analog.c.o
2013/01/27  17:39            10,040 wiring_digital.c.o
2013/01/27  17:40             9,112 wiring_pulse.cpp.o
2013/01/27  17:39             5,620 wiring_shift.c.o
2013/01/27  17:40             5,964 WMath.cpp.o
2013/01/27  17:40            63,628 WString.cpp.o
              32 個のファイル           1,457,616 バイト
               2 個のディレクトリ  17,473,040,384 バイトの空き領域

C:\temp\build2226462045159247312.tmp&gt;
</blockquote>
</span></pre>
<br>
objdumpでソースコード付きの逆アセンブル表示ができますので、試してみます。<br>
<pre><span style="color:#000000;background-color:#BBFFBB">
> arm-none-eabi-objdump -Sdl C:\temp\build2226462045159247312.tmp\BlinkPWM.cpp.elf
</span></pre>
<br>
結果の内、メインのスケッチあたりの一部抜粋をしてみます。<br>

<pre><span style="color:#FF0000">

00080198 <setup>:
setup():
C:\local\arduino/BlinkPWM.ino:3
void setup()
{
}
   80198:	4770      	bx	lr
	...

0008019c <loop>:
loop():
C:\local\arduino/BlinkPWM.ino:8

boolean flag = false;

void loop()
{
   8019c:	b510      	push	{r4, lr}
C:\local\arduino/BlinkPWM.ino:10
  
  if(flag){
   8019e:	4b0b      	ldr	r3, [pc, #44]	; (801cc <loop+0x30>)
   801a0:	781b      	ldrb	r3, [r3, #0]
   801a2:	b113      	cbz	r3, 801aa <loop+0xe>
C:\local\arduino/BlinkPWM.ino:11
    analogWrite(13,40);
   801a4:	200d      	movs	r0, #13
   801a6:	2128      	movs	r1, #40	; 0x28
   801a8:	e001      	b.n	801ae <loop+0x12>
</span></pre>
   
みてみると、スケッチのBlinkPWM.inoのパスがC:\local\arduinoになっています。<br>
これは僕のPCのArduino IDEインストール先です。<br>
とはいえ、BlinkPWM.inoを保存してるパスはそこじゃありません。今回は、<br>
手っ取り早く本パスにスケッチをコピっちゃいます。笑<br>
&gt;&nbsp;copy (path-to-store-sketch)BlinkPWM.ino C:\local\arduino<br>
<br>
<strong>2. OpenOCDを起動する</strong>
<br>
Cygwinから起動してみました。別に素のDOSプロンプトでもいけるかと思います。<br>
<pre><span style="color:#000000;background-color:#BBFFBB">
# ./openocd.exe -s ./tcl -f ./tcl/interface/jtagkey.cfg -f ./tcl/target/at91sam3ax_8x.cfg
</span></pre>
<br>

<strong>3. Emacsを起動する</strong>
<br>
Windowsマシンにまだエディタをインストールしてなかったので、gnupack(emacs+cygwin)というパッケージをインストールしてみました。<br>
<a href="http://sourceforge.jp/projects/gnupack/releases/" target="_blank">http://sourceforge.jp/projects/gnupack/releases/</a><br>
取り敢えず起動するなら、展開してemacs.exeを実行するだけです。<br>
<br>
<strong>4. gdbを開始</strong>
<br>
Emacsから、「M-x gdb」としてGDBのモードを起動します。プロンプトが出ますので以下のように入力します。<br>
<pre><span style="color:#000000;background-color:#BBFFBB">
Run gdb (like this): arm-none-eabi-gdb -i=mi C:\temp\build2226462045159247312.tmp\BlinkPWM.cpp.elf
</span></pre>
<br>
<strong>5. ブレーク貼ってステップ実行してみる</strong>
<br>
loop関数とdelay関数にブレーク貼るなら、「b loop」と「b delay」など。<br>
「p flag」とすれば、変数の値を確認できます。<br>
ここではloopでブレークかかる度、flagの値が0と1、交互に切り替わる様子が確認できます。<br>
ARMのレジスタを見るなら「i reg」とすればひと通り出ます。<br>
<br>
スクリーンショットを撮ってみました。<br>
左側がgdbのコマンド、右側がデバッグ中のソースコード(BlinkPWM.ino)です。loop関数のif文のところについてる赤いマーカーは、loop関数にブレークを張ったよって意味です。<br>
結構視覚的にわかりやすいです。左側は、loopで止めた状態でARMのレジスタを表示してます。<br>
もちろん、ArduinoのAPIの内部動作に至るまでステップ実行できるのでこまかく追いかけたい場合有効かなと思います。<br>
<a href="http://projectc3.up.seesaa.net/image/emacs_ss.jpg" target="_blank"><img border="0" alt="emacs_ss.jpg" src="http://projectc3.up.seesaa.net/image/emacs_ss-thumbnail2.jpg" width="320" height="179" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/emacs_ss-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<br>
<br>
ところで、Arduinoはスレッド実行環境じゃないのにgdbがスレッド環境と誤判別したのか、<br>
RMT ERROR : failed to get thread list.ウォーニングを吐きます。<br>
まぁ動作に影響なさそうなので放っているのですが・・・設定とかできちんと回避できるんでしょうか。ご存知のかた、是非お教え下さい!<br>
<br>
ではー!これから普通にDueを使います!笑<br>
<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836495/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/5149mQTzR2L._SL160_.jpg" alt="ARM Cortex‐M3システム開発ガイド―最新アーキテクチャの理解からソフトウェア開発までを詳解 (Design Wave Advance)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836495/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">ARM Cortex‐M3システム開発ガイド―最新アーキテクチャの理解からソフトウェア開発までを詳解 (Design Wave Advance)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.27</div></div><div class="amazlet-detail">Joseph Yiu <br />CQ出版 <br />売り上げランキング: 126,976<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836495/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51n%2BN1DB8oL._SL160_.jpg" alt="ARMでOS超入門 (ARMマイコン)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">ARMでOS超入門 (ARMマイコン)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.27</div></div><div class="amazlet-detail">桑野 雅彦  岡田 好一 共著 <br />CQ出版 <br />売り上げランキング: 151,899<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478984823X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61jLewoEiUL._SL160_.jpg" alt="超入門! 付属ARMマイコンで始めるロボット製作: 障害物を避けながら前進!スクリプト言語で簡単操縦!カメラ画像処理! (トライアルシリーズ)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478984823X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">超入門! 付属ARMマイコンで始めるロボット製作: 障害物を避けながら前進!スクリプト言語で簡単操縦!カメラ画像処理! (トライアルシリーズ)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.27</div></div><div class="amazlet-detail">千葉工業大学 林原 靖男/神奈川工科大学 兵頭 和人 <br />CQ出版 <br />売り上げランキング: 255,565<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478984823X/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>電子工作</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/316575195</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/jtag_sch.png" length="166465" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/jtag_sch.png" length="166465" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/FT2232_JTAG_ADAPTER_20130127.pdf" length="48592" type="application/pdf" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/P1130029resized.jpg" length="47483" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/P1130029resized.jpg" length="47483" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/P1130027resized.jpg" length="60628" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/P1130027resized.jpg" length="60628" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/arduino_due_debugport.jpg" length="112932" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/arduino_due_debugport.jpg" length="112932" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/jtag_connection.jpg" length="41088" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/jtag_connection.jpg" length="41088" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/emacs_ss.jpg" length="239120" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/emacs_ss.jpg" length="239120" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/313451164.html</link>
      <title>あけましておめでとうございます &amp; Arduino Dueゲット!</title>
      <pubDate>Tue, 15 Jan 2013 01:55:39 +0900</pubDate>
            <description>あけまして、おめでとうございます。本年もよろしくお願い致します!最近は、積み基板を極力増やさないために、どうせ使用しないとわかる基板購入は控えようと思ったりしています。(部屋にある基板が大変な分量になってまして、しかも既に古いみたいなものばかりになりつつあり)逆に言えば買うからには、ちゃんと使っていくぞという気持ちもありまして。まぁ、なんだかんだ多少積むでしょうけど。。。^^;それはそれとして、僕もArduinoマイコンボードに手を染めてから既に2年経とうとしてるようで、時間..</description>
            <itunes:summary><![CDATA[
あけまして、おめでとうございます。
本年もよろしくお願い致します!

最近は、積み基板を極力増やさないために、どうせ使用しないとわかる基板購入は控えようと思ったりしています。(部屋にある基板が大変な分量になってまして、しかも既に古いみたいなものばかりになりつつあり)
逆に言えば買うからには、ちゃんと使っていくぞという気持ちもありまして。まぁ、なんだかんだ多少積むでしょうけど。。。^^;

それはそれとして、僕もArduinoマイコンボードに手を染めてから既に2年経とうとしてるようで、時間の経つのってはやいです。その間にArduinoのボードもいくつか買いましたが、とうとうAVRマイコンではない純正のArduinoボードの「Arduino Due」を先日ゲットしました〜!わーい!もちろん使う気満々ですよ!
<a href="http://projectc3.up.seesaa.net/image/IMG_20130106_191210resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_191210resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_191210resized_-thumbnail2.jpg" width="320" height="240"></a>

このボードはまだなかなか入手困難なところではあるようなのですが、デジキー(http://www.digikey.jp/)では買えるそうで、アンドロイドの会の吉田さんから声かけいただきまして、購入に便乗させていただき、年末にボードがゲット出来ました。
このボード、おおまかなハード構成としては、Google I/O 2012で公開されたADK2012のメインボードに近いと思います(僕も持ってないので、公開されている情報から、たぶん・・・)。

Arduino Dueのボード外観は、Arduino Megaに似ています。というわけで、過去の僕が購入したArduinoボードと並べて写真取ってみました。
左から、Arduino Due、Arduino Mega ADK、Arduino Leonardo、Arduino Uno、Arduino Duemilanove(互換ボード)です。

<a href="http://projectc3.up.seesaa.net/image/IMG_20130106_225155resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_225155resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_225155resized_-thumbnail2.jpg" width="320" height="240"></a>

ArduinoマイコンボードってUSB-Bコネクタがフルサイズのものが多かったんですよね。一方、僕個人としては、フルサイズのコネクタを使った機器を最近あまり使ってない。だから、ケーブルもあまり持ってない。持ってても樹脂がかなり硬化してたり。
そんな中、Arduino LeonardoからのMicroUSBコネクタ採用は結構うれしかったです。

Arduinoマイコンボードの多くにはUSBポートが搭載されていまして、おおまかには以下の種類に大別できそうです。
(1)メインマイコンとUSBシリアル変換チップ(FTDI)の構成 : Arduino Duemilanove等
(2)メインマイコンとUSBシリアル変換チップ(AVRマイコン)の構成 : Arduino Uno、Arduino Mega、Arduino Mega ADK等
(3)メインマイコンだけの構成(メインマイコン搭載USB) : Arduino Leonardo


Dueは、上記の(2)と(3)の特徴を併せ持っています。更に、メインマイコン(ATSAM3X8E)はUSB On-the-Go(USBホスト&デバイス)を搭載している為、USBデバイス側のインターフェースを搭載した機器と接続することも出来ます。

<a href="http://projectc3.up.seesaa.net/image/BOARD_SIDE.jpg" target="_blank"><img border="0" alt="BOARD_SIDE.jpg" src="http://projectc3.up.seesaa.net/image/BOARD_SIDE-thumbnail2.jpg" width="320" height="92"></a>

上記はArduino DueのUSBコネクタがある側の写真です。左側が「NATIVE USB」、右側が「PROGRAMMING」となっていて、左側はメインマイコンであるATSAM3X8Eに接続されている側になります。

コネクタの形状を見ると、左側がMicroUSB-ABコネクタになっています。ここにUSBホスト変換ケーブルを接続することで、外部のUSBデバイスとやりとりする事に使用出来ます。コネクタ形状はMicroUSB-ABですが、USB-Aとの変換コネクタはMicroUSB-AでもBでも、使用できるようです。

例えば、これとか(Micro-BとUSB-A変換ケーブル)。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CaxAN5dgL._SL160_.jpg" alt="iBUFFALO USB(microB to A)&#x5909;&#x63DB;&#x30A2;&#x30C0;&#x30D7;&#x30BF;&#x30FC; &#x30D6;&#x30E9;&#x30C3;&#x30AF; BSMPC11C01BK" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" target="_blank">iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.14バッファロー (2011-11-01)売り上げランキング: 115<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

もちろん、以下のようなMicroUSB-AからUSB-A変換ケーブルも使用出来ます。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005C8S0R0/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41armZsRg6L._SL160_.jpg" alt="ELECOM USB2.0&#x30B1;&#x30FC;&#x30D6;&#x30EB; microA-A&#x30E1;&#x30B9;&#x30BF;&#x30A4;&#x30D7; &#x5EF6;&#x9577; 0.15m &#x30D6;&#x30E9;&#x30C3;&#x30AF; U2C-EMA015BK" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005C8S0R0/ishiiyasu-22/ref=nosim/" target="_blank">ELECOM USB2.0ケーブル microA-Aメスタイプ 延長 0.15m ブラック U2C-EMA015BK</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.14エレコム (2011-07-21)売り上げランキング: 4,504<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005C8S0R0/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

さて、今までのArduinoとArduino Dueがどう違うのか?というのは気になる点です。

まず大きく異なるのはメインCPUコアが異なることです。これまでのArduinoマイコンボードで使用されていたのはATMEL社のAVRという同社独自RISCコアでした。クロックは16[MHz]や8[MHz]など。
Dueで使用されているメインチップは同じくATMEL社のデバイスであるものの、CPUコアは32ビットのARM Cortex-M3です。CPUクロックは84[MHz]。96[KB]のRAMと512[KB]のFlash ROMを搭載します。
軽く比較しても、パフォーマンスは高くなっているはずでしょう。

その他、2chのDACやCAN BUSなど、いろいろ今までのArduinoよりもI/Fが増えていますが、これは少しずつ使っていきたいと思います。

開発環境 Arduino IDEは1.5でDueがサポートされ、ライブラリもいろいろ強化されています。タスク管理ライブラリのSchedulerクラスやAudioクラスなど。

ところで、デバッグ端子はAVRコアの頃はお馴染みの6ピンインターフェースでしたが、Dueでは、ARMコアになり、SWDとJTAGの端子が搭載されました。SWDはDIPピッチピンヘッダで、JTAGは1.27mmピッチピンヘッダです。
JTAGを使用してみようと思って、OLIMEXの変換アダプタをStrawberry-linuxで購入(630円)しましたが、
http://strawberry-linux.com/catalog/items?code=15079
なんとSWDコネクタと物理的に干渉して刺さりません!!なんだよーーー!!

刺さらないの図。(わかりにくいですけど)

<a href="http://projectc3.up.seesaa.net/image/IMG_20130106_181533resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_181533resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_181533resized_-thumbnail2.jpg" width="320" height="240"></a>

そこで、DIPピッチのSWDのピンヘッダ(下の写真の赤く囲った部分)を一旦外して、樹脂を少し削ったものに実装しなおしてみます。

<a href="http://projectc3.up.seesaa.net/image/kakotta.jpeg" target="_blank"><img border="0" alt="kakotta.jpeg" src="http://projectc3.up.seesaa.net/image/kakotta-thumbnail2.jpeg" width="320" height="240"></a>

この基板はスルーホール基板で部品を外すのは、面倒です。下手なことをするとスルーホールを壊してしまいます。従ってハンダごてであまりいじらずサクッと外したいところです。本業でハンダ付けしてる方々はバキュームポンプが付いたコテでサクッと外すでしょうが、個人で遊んでる僕にはそのような機材もなく・・・と思ったら、和歌山のたろサさんが素敵なアイテムを紹介してくれました。それは、「はんだシュッ太郎」という機械です。

従来のはんだすいとり機と、ハンダゴテが融合した商品で、バキュームポンプが付いた専用機ほどではないにせよ、かなり手軽にハンダを溶かして吸い取ってくれます。しかもかなりリーズナブルなお値段(4千円台)です。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003B3DC9E/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31KrKF0wSUL._SL160_.jpg" alt="&#x306F;&#x3093;&#x3060;&#x30B7;&#x30E5;&#x30C3;&#x592A;&#x90CE;&#xFF08;&#x306F;&#x3093;&#x3060;&#x5438;&#x53D6;&#x5668;&#xFF09; HSK-100" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003B3DC9E/ishiiyasu-22/ref=nosim/" target="_blank">はんだシュッ太郎（はんだ吸取器） HSK-100</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.14サンハヤト 売り上げランキング: 7,262<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003B3DC9E/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

これ、僕も買ってみました。使ったら、ピンヘッダあっさり外れました。まぁ、ピンヘッダは普通のコテでも比較的苦労なく外せる部類の部品ですけどね。コテ先はこんな感じです。

<a href="http://projectc3.up.seesaa.net/image/IMG_20130106_181844resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_181844resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_181844resized_-thumbnail2.jpg" width="320" height="240"></a>

<a href="http://projectc3.up.seesaa.net/image/IMG_20130106_181730resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_181730resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_181730resized_-thumbnail2.jpg" width="320" height="240"></a>

外した後は、秋月で買ってたストックのピンヘッダを差し込みます。その前に、ピンヘッダの端の樹脂をニッパで切り取っておきます(写真のように)。

で、晴れて接続できるようになりましたー!
<a href="http://projectc3.up.seesaa.net/image/IMG_20130106_183511resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_183511resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_183511resized_-thumbnail2.jpg" width="320" height="240"></a>

というわけで、Arduinoを浅く触っている状況ですけど、これからいろいろ記事に出来たらとおもいます。本年もよろしくお願い致します!

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008V5PZC4/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51AE1mjOjjL._SL160_.jpg" alt="Arduino Leonardo(+Headers)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008V5PZC4/ishiiyasu-22/ref=nosim/" target="_blank">Arduino Leonardo(+Headers)</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.17GHEO SA 売り上げランキング: 43,094<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008V5PZC4/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836827/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51M3X5RXPML._SL160_.jpg" alt="JTAG&#x30C6;&#x30B9;&#x30C8;&#x306E;&#x57FA;&#x790E;&#x3068;&#x5FDC;&#x7528;&#x2015;&#x65B0;&#x6642;&#x4EE3;&#x306E;&#x96FB;&#x5B50;&#x56DE;&#x8DEF;&#x57FA;&#x677F;&#x306E;&#x30C6;&#x30B9;&#x30C8;&#x624B;&#x6CD5;&#x3068;&#x3055;&#x307E;&#x3056;&#x307E;&#x306A;&#x5FDC;&#x7528;&#x4E8B;&#x4F8B; (&#x30A8;&#x30C3;&#x30BB;&#x30F3;&#x30B9;&#x30FB;&#x30B7;&#x30EA;&#x30FC;&#x30BA;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836827/ishiiyasu-22/ref=nosim/" target="_blank">JTAGテストの基礎と応用―新時代の電子回路基板のテスト手法とさまざまな応用事例 (エッセンス・シリーズ)</a>posted with <a href="http://www.amazlet.com/" target="_blank">amazlet</a> at 13.01.17坂巻 佳寿美 CQ出版 売り上げランキング: 631,125<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836827/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>


<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
あけまして、おめでとうございます。<br />本年もよろしくお願い致します!<br /><br />最近は、積み基板を極力増やさないために、どうせ使用しないとわかる基板購入は控えようと思ったりしています。(部屋にある基板が大変な分量になってまして、しかも既に古いみたいなものばかりになりつつあり)<br />逆に言えば買うからには、ちゃんと使っていくぞという気持ちもありまして。まぁ、なんだかんだ多少積むでしょうけど。。。^^;<br /><br />それはそれとして、僕もArduinoマイコンボードに手を染めてから既に2年経とうとしてるようで、時間の経つのってはやいです。その間にArduinoのボードもいくつか買いましたが、とうとうAVRマイコンではない純正のArduinoボードの「Arduino Due」を先日ゲットしました〜!わーい!もちろん使う気満々ですよ!<br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130106_191210resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_191210resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_191210resized_-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130106_191210resized_-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />このボードはまだなかなか入手困難なところではあるようなのですが、デジキー(<a href="http://www.digikey.jp/)" target="_blank">http://www.digikey.jp/)</a>では買えるそうで、アンドロイドの会の吉田さんから声かけいただきまして、購入に便乗させていただき、年末にボードがゲット出来ました。<br />このボード、おおまかなハード構成としては、Google I/O 2012で公開されたADK2012のメインボードに近いと思います(僕も持ってないので、公開されている情報から、たぶん・・・)。<br /><br />Arduino Dueのボード外観は、Arduino Megaに似ています。というわけで、過去の僕が購入したArduinoボードと並べて写真取ってみました。<br />左から、Arduino Due、Arduino Mega ADK、Arduino Leonardo、Arduino Uno、Arduino Duemilanove(互換ボード)です。<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130106_225155resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_225155resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_225155resized_-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130106_225155resized_-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />ArduinoマイコンボードってUSB-Bコネクタがフルサイズのものが多かったんですよね。一方、僕個人としては、フルサイズのコネクタを使った機器を最近あまり使ってない。だから、ケーブルもあまり持ってない。持ってても樹脂がかなり硬化してたり。<br />そんな中、Arduino LeonardoからのMicroUSBコネクタ採用は結構うれしかったです。<br /><br />Arduinoマイコンボードの多くにはUSBポートが搭載されていまして、おおまかには以下の種類に大別できそうです。<br />(1)メインマイコンとUSBシリアル変換チップ(FTDI)の構成 : Arduino Duemilanove等<br />(2)メインマイコンとUSBシリアル変換チップ(AVRマイコン)の構成 : Arduino Uno、Arduino Mega、Arduino Mega ADK等<br />(3)メインマイコンだけの構成(メインマイコン搭載USB) : Arduino Leonardo<br /><br /><br />Dueは、上記の(2)と(3)の特徴を併せ持っています。更に、メインマイコン(ATSAM3X8E)はUSB On-the-Go(USBホスト&デバイス)を搭載している為、USBデバイス側のインターフェースを搭載した機器と接続することも出来ます。<br /><br /><a href="http://projectc3.up.seesaa.net/image/BOARD_SIDE.jpg" target="_blank"><img border="0" alt="BOARD_SIDE.jpg" src="http://projectc3.up.seesaa.net/image/BOARD_SIDE-thumbnail2.jpg" width="320" height="92" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/BOARD_SIDE-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />上記はArduino DueのUSBコネクタがある側の写真です。左側が「NATIVE USB」、右側が「PROGRAMMING」となっていて、左側はメインマイコンであるATSAM3X8Eに接続されている側になります。<br /><br />コネクタの形状を見ると、左側がMicroUSB-ABコネクタになっています。ここにUSBホスト変換ケーブルを接続することで、外部のUSBデバイスとやりとりする事に使用出来ます。コネクタ形状はMicroUSB-ABですが、USB-Aとの変換コネクタはMicroUSB-AでもBでも、使用できるようです。<br /><br />例えば、これとか(Micro-BとUSB-A変換ケーブル)。<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CaxAN5dgL._SL160_.jpg" alt="iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.14</div></div><div class="amazlet-detail">バッファロー (2011-11-01)<br />売り上げランキング: 115<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br />もちろん、以下のようなMicroUSB-AからUSB-A変換ケーブルも使用出来ます。<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005C8S0R0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41armZsRg6L._SL160_.jpg" alt="ELECOM USB2.0ケーブル microA-Aメスタイプ 延長 0.15m ブラック U2C-EMA015BK" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005C8S0R0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">ELECOM USB2.0ケーブル microA-Aメスタイプ 延長 0.15m ブラック U2C-EMA015BK</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.14</div></div><div class="amazlet-detail">エレコム (2011-07-21)<br />売り上げランキング: 4,504<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005C8S0R0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br />さて、今までのArduinoとArduino Dueがどう違うのか?というのは気になる点です。<br /><br />まず大きく異なるのはメインCPUコアが異なることです。これまでのArduinoマイコンボードで使用されていたのはATMEL社のAVRという同社独自RISCコアでした。クロックは16[MHz]や8[MHz]など。<br />Dueで使用されているメインチップは同じくATMEL社のデバイスであるものの、CPUコアは32ビットのARM Cortex-M3です。CPUクロックは84[MHz]。96[KB]のRAMと512[KB]のFlash ROMを搭載します。<br />軽く比較しても、パフォーマンスは高くなっているはずでしょう。<br /><br />その他、2chのDACやCAN BUSなど、いろいろ今までのArduinoよりもI/Fが増えていますが、これは少しずつ使っていきたいと思います。<br /><br />開発環境 Arduino IDEは1.5でDueがサポートされ、ライブラリもいろいろ強化されています。タスク管理ライブラリのSchedulerクラスやAudioクラスなど。<br /><br />ところで、デバッグ端子はAVRコアの頃はお馴染みの6ピンインターフェースでしたが、Dueでは、ARMコアになり、SWDとJTAGの端子が搭載されました。SWDはDIPピッチピンヘッダで、JTAGは1.27mmピッチピンヘッダです。<br />JTAGを使用してみようと思って、OLIMEXの変換アダプタをStrawberry-linuxで購入(630円)しましたが、<br /><a href="http://strawberry-linux.com/catalog/items?code=15079" target="_blank">http://strawberry-linux.com/catalog/items?code=15079</a><br />なんとSWDコネクタと物理的に干渉して刺さりません!!なんだよーーー!!<br /><br />刺さらないの図。(わかりにくいですけど)<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130106_181533resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_181533resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_181533resized_-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130106_181533resized_-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />そこで、DIPピッチのSWDのピンヘッダ(下の写真の赤く囲った部分)を一旦外して、樹脂を少し削ったものに実装しなおしてみます。<br /><br /><a href="http://projectc3.up.seesaa.net/image/kakotta.jpeg" target="_blank"><img border="0" alt="kakotta.jpeg" src="http://projectc3.up.seesaa.net/image/kakotta-thumbnail2.jpeg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/kakotta-thumbnail2.jpeg.html'; return false;" style="cursor:pointer;" /></a><br /><br />この基板はスルーホール基板で部品を外すのは、面倒です。下手なことをするとスルーホールを壊してしまいます。従ってハンダごてであまりいじらずサクッと外したいところです。本業でハンダ付けしてる方々はバキュームポンプが付いたコテでサクッと外すでしょうが、個人で遊んでる僕にはそのような機材もなく・・・と思ったら、和歌山のたろサさんが素敵なアイテムを紹介してくれました。それは、「はんだシュッ太郎」という機械です。<br /><br />従来のはんだすいとり機と、ハンダゴテが融合した商品で、バキュームポンプが付いた専用機ほどではないにせよ、かなり手軽にハンダを溶かして吸い取ってくれます。しかもかなりリーズナブルなお値段(4千円台)です。<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003B3DC9E/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31KrKF0wSUL._SL160_.jpg" alt="はんだシュッ太郎（はんだ吸取器） HSK-100" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003B3DC9E/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">はんだシュッ太郎（はんだ吸取器） HSK-100</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.14</div></div><div class="amazlet-detail">サンハヤト <br />売り上げランキング: 7,262<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003B3DC9E/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br />これ、僕も買ってみました。使ったら、ピンヘッダあっさり外れました。まぁ、ピンヘッダは普通のコテでも比較的苦労なく外せる部類の部品ですけどね。コテ先はこんな感じです。<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130106_181844resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_181844resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_181844resized_-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130106_181844resized_-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130106_181730resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_181730resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_181730resized_-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130106_181730resized_-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />外した後は、秋月で買ってたストックのピンヘッダを差し込みます。その前に、ピンヘッダの端の樹脂をニッパで切り取っておきます(写真のように)。<br /><br />で、晴れて接続できるようになりましたー!<br /><a href="http://projectc3.up.seesaa.net/image/IMG_20130106_183511resized_.jpg" target="_blank"><img border="0" alt="IMG_20130106_183511resized_.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20130106_183511resized_-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20130106_183511resized_-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />というわけで、Arduinoを浅く触っている状況ですけど、これからいろいろ記事に出来たらとおもいます。本年もよろしくお願い致します!<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008V5PZC4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51AE1mjOjjL._SL160_.jpg" alt="Arduino Leonardo(+Headers)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008V5PZC4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Arduino Leonardo(+Headers)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.17</div></div><div class="amazlet-detail">GHEO SA <br />売り上げランキング: 43,094<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B008V5PZC4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836827/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51M3X5RXPML._SL160_.jpg" alt="JTAGテストの基礎と応用―新時代の電子回路基板のテスト手法とさまざまな応用事例 (エッセンス・シリーズ)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836827/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">JTAGテストの基礎と応用―新時代の電子回路基板のテスト手法とさまざまな応用事例 (エッセンス・シリーズ)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.01.17</div></div><div class="amazlet-detail">坂巻 佳寿美 <br />CQ出版 <br />売り上げランキング: 631,125<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836827/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/313451164</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_191210resized_.jpg" length="103754" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_191210resized_.jpg" length="103754" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_225155resized_.jpg" length="72419" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_225155resized_.jpg" length="72419" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/BOARD_SIDE.jpg" length="40164" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/BOARD_SIDE.jpg" length="40164" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_181533resized_.jpg" length="106510" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_181533resized_.jpg" length="106510" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/kakotta.jpeg" length="162240" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/kakotta.jpeg" length="162240" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_181844resized_.jpg" length="73527" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_181844resized_.jpg" length="73527" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_181730resized_.jpg" length="101016" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_181730resized_.jpg" length="101016" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_183511resized_.jpg" length="114445" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20130106_183511resized_.jpg" length="114445" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/301372328.html</link>
      <title>Raspberry Pi買ってみました!ネット接続とかOSカーネルビルドとかやってみた〜</title>
      <pubDate>Sun, 11 Nov 2012 19:58:54 +0900</pubDate>
            <description>僕もとうとう、Raspberry Pi(ラズベリーパイ)という小さくて安価なマイコンボードを買いました!!このマイコンボード、日本では、RSコンポーネンツのRSオンラインで販売しています。http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypiただ、注文してから発送までの日数がかなりかかりました。僕のケースでは3ヶ月くらいかかりました。特に急ぎではなかったので気長に待てましたが、何か目的があってすぐに欲しい場..</description>
            <itunes:summary><![CDATA[
僕もとうとう、Raspberry Pi(ラズベリーパイ)という小さくて安価なマイコンボードを買いました!!
このマイコンボード、日本では、RSコンポーネンツのRSオンラインで販売しています。
<a href="http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi">http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi</a>

<a href="http://projectc3.up.seesaa.net/image/RPi.jpg" target="_blank"><img border="0" alt="RPi.jpg" src="http://projectc3.up.seesaa.net/image/RPi-thumbnail2.jpg" width="239" height="320"></a>


ただ、注文してから発送までの日数がかなりかかりました。僕のケースでは3ヶ月くらいかかりました。
特に急ぎではなかったので気長に待てましたが、何か目的があってすぐに欲しい場合、
この期間たたずっと待つのは結構辛いかも、ですね^^;

Raspberry Piは、RS以外にもFarnellという業者でも取り扱っていて、しかもこの業者だとすぐに発送されるという
何だか変な状況なのですが、残念ながらこちらの業者は日本への配送を行なっていないため、購入には手間が掛かりそうなようです。

日本で購入する場合でも、ケース付きであればすぐに発送してくれる業者もあるようで、そういうところで買うのが良いのかもしれませんね。
ご参考 : mobilehackerz 2012/10/25 ■ いつまでも届かないRaspberry Piは一手間かけると10日で新型が手に入る
<a href="http://blog.mobilehackerz.jp/2012/10/raspberry-pi10.html">http://blog.mobilehackerz.jp/2012/10/raspberry-pi10.html</a>


さて、RSから届いたので早速少しいじってみましたので、メモっぽい内容ですが、本記事では、以下のような内容を書き出しています。
・イメージを書き込んでテレビに繋いで操作
・ピンヘッダに出ているUARTからシェル操作
・有線LAN、無線LAN、3G通信ドングルでネットワークに接続
・PC側からRaspberry Piのプログラムをビルドして実行
・Linuxカーネルをリビルドして、置き換える
といったことを実施してみます。

この記事では、Raspberry Piから外部のハードを叩くことは触れていません。Raspberry PiでGPIOとかを叩くあたりは、Interface 2012年12月号に詳しく載っているようでしたので良かったらどーぞー!


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51k6vEt3DJL._SL160_.jpg" alt="Interface (&#x30A4;&#x30F3;&#x30BF;&#x30FC;&#x30D5;&#x30A7;&#x30FC;&#x30B9;) 2012&#x5E74; 12&#x6708;&#x53F7; [&#x96D1;&#x8A8C;]" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" target="_blank">Interface (インターフェース) 2012年 12月号 [雑誌]</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.11CQ出版 (2012-10-25)<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>




●SDカードにイメージを焼きこむ

ブートのイメージが付属していないRaspberry Piを購入していたので、早速手持ちのSDカードにイメージを焼きこみます。
ここからダウンロード出来ます。
http://www.raspberrypi.org/downloads

僕は、Raspberry Pi標準のディストリビューションの内、Raspbian "wheezy"を使用しています。
イメージファイルをダウンロードして、Macからddコマンドで焼きこみました。Linuxでも似たような手順だと思います。但し、of=の指定を誤ると大切なディスクを
消してしまうことになりますので、慎重に確認してから行いましょう。

  $ dd if=イメージファイル名.img of=/dev/diskN bs=1m


●電源を投入してみる

Raspberry PiにはHDMI端子、コンポジットビデオ出力端子が付いています。これをお手持ちのテレビやモニターに接続し、USB microBコネクタに5Vで必要な電流を供給
してやることでアッサリとブートしてくれました。

●シリアル・ポートからログインしてみる

コンソールは、/dev/ttyAMA0に出ています。以下のようにピンヘッダにRxDとTxDが出てますので、USBシリアル変換基板と接続します。
<a href="http://projectc3.up.seesaa.net/image/RPi_PINS.png" target="_blank"><img border="0" alt="RPi_PINS.png" src="http://projectc3.up.seesaa.net/image/RPi_PINS-thumbnail2.png" width="240" height="320"></a>

ボーレートは115200[bps]です。3.3V系ですので、5V系のArduinoのシリアル変換を直結しないように注意です。
僕はPIC ADK Miniboardという自作基板の古いrevのボードにFTDI FT232RLだけ乗せまして、それを使用しました。
<a href="http://projectc3.up.seesaa.net/image/RPi_UART.jpg" target="_blank"><img border="0" alt="RPi_UART.jpg" src="http://projectc3.up.seesaa.net/image/RPi_UART-thumbnail2.jpg" width="320" height="240"></a>

秋月のFT232RL基板もオススメです。
<a href="http://akizukidenshi.com/catalog/g/gK-01977/">http://akizukidenshi.com/catalog/g/gK-01977/</a>
または、スイッチサイエンスのとか。
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51OrsYdb5jL._SL160_.jpg" alt="FTDI USB&#x30B7;&#x30EA;&#x30A2;&#x30EB;&#x5909;&#x63DB;&#x30A2;&#x30C0;&#x30D7;&#x30BF;&#x30FC;(5V/3.3V&#x5207;&#x308A;&#x66FF;&#x3048;&#x6A5F;&#x80FD;&#x4ED8;&#x304D;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank">FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.11スイッチサイエンス 売り上げランキング: 9314<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

なお回路図上のピンヘッダ部のところはこんなかんじでした。SPIとかI2Cとか使いやすいように配列されているようです。
<a href="http://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" target="_blank"><img border="0" alt="RPi_PIN_sch.png" src="http://projectc3.up.seesaa.net/image/RPi_PIN_sch-thumbnail2.png" width="320" height="271"></a>


あとSSHからのログインも最初から有効になってました。

●ネットワークに接続してみる
それでは、有線、WiFi、3Gでネットワークに接続してみます。

-有線LANを使用

初めからDHCPありの設定になってたので、イーサのケーブルを差し込むだけでネットに繋がりました。簡単〜


-無線LANを使用

無線LANのドングルにはいろいろなメーカーのチップが使用されているので、きちんと対応しているものを選別して使用するか、そうでない場合はデバドラを組み込む必要があります。
僕の場合は、昔PCをWiFi APに見立ててニンテンドーDSを繋ぐ為にバッファローのWLI-UC-GN(Ralink RT3070を使用してる模様)を持ってたので突っ込んだらアッサリ認識しました。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31w8Fxov7YL._SL160_.jpg" alt="BUFFALO Wi-Fi&#x30B2;&#x30FC;&#x30E0;&#x5BFE;&#x5FDC;USB&#x30B3;&#x30CD;&#x30AF;&#x30BF;&#x30FC; WLI-UC-GNT" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank">BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.11バッファロー (2009-12-26)売り上げランキング: 9287<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

従って何も大した設定はしてませんw
<a href="http://projectc3.up.seesaa.net/image/WiFiDongle.jpg" target="_blank"><img border="0" alt="WiFiDongle.jpg" src="http://projectc3.up.seesaa.net/image/WiFiDongle-thumbnail2.jpg" width="320" height="240"></a>


<a href="http://projectc3.up.seesaa.net/image/RPi_with_WiFi.jpg" target="_blank"><img border="0" alt="RPi_with_WiFi.jpg" src="http://projectc3.up.seesaa.net/image/RPi_with_WiFi-thumbnail2.jpg" width="320" height="240"></a>



●3G通信を使用(USBドングルを使用して)

手持ちのイーモバイルの3G通信のドングルを使用しました。これは21Mbpsに対応したHuaweiのD31HWというものです。オークションとかで安く出てます。
ここにイーモバのポケットルーターで使用しているSIMを突っ込みました。

<a href="http://projectc3.up.seesaa.net/image/RPi_3G.jpg" target="_blank"><img border="0" alt="RPi_3G.jpg" src="http://projectc3.up.seesaa.net/image/RPi_3G-thumbnail2.jpg" width="320" height="240"></a>

Linuxカーネルの設定は、既にPPPありになっていますので特に、変更する内容はありません。
Huaweiのドングルは、PCに接続するとCD-ROMドライブとして認識し、インストーラーが出てくる便利設計になっているのですが、
Raspberry Piではこのインストーラーは当然不要です。
このドングルをモデムとして使用するためには、まずCD-ROMドライブとして認識している状態で、「とあるデータ列」をエンドポイントに送出し、
CD-ROM状態からモデム状態に遷移させる必要があるようなのですが、usb_modeswitchのドキュメントを見るとカーネルが新しいものでは、
特にモデムに遷移する動作が入っていることがあるそうで、今回もRaspberry Piでは特に特殊なコマンド操作無く、いきなりモデムとしてアクセス出来ました。
参考 : usb_modeswitchのkernel related issues
<a href="http://www.draisberghof.de/usb_modeswitch/">http://www.draisberghof.de/usb_modeswitch/</a>


このドングルをモデムとして使用するためには、まずCD-ROMドライブとして認識している状態で、「とあるデータ列」をエンドポイントに送出し、
CD-ROM状態からモデム状態に遷移させる必要があるので、usb-modeswitchをセットアップします。


$ sudo apt-get install usb-modeswitch


ここでudevの再チェックをキックするか、Raspberry Piを再起動すると、/dev/ttyUSB*として認識するはずです。
(★2013/5/11修正追加)


PPP接続の設定は、wvdialを使用しました。まずはモジュールのインストールですがapt-getでサクッと行います。

 $ sudo apt-get install wvdial

次に設定ファイルを用意します。
以下のサイトを参考にさせていただきました。感謝!
http://coordinators.blog18.fc2.com/blog-entry-18.html

で、以下のような内容のファイルを/etc/wvdial.confとして保存します。

[Dialer Defaults]
Modem = /dev/ttyUSB0
Baud = 3600000
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 =
Area Code =
Phone = *99***1#
Username = em
Password = em
Ask Password = 0
Dial Command = ATDT
Stupid Mode = 1
Compuserve = 0
Force Address =
Idle Seconds = 0
DialMessage1 =
DialMessage2 =
ISDN = 0
Auto DNS = 1

で、

 $ sudo wvdial &

とすれば3G回線にマイコンボードから繋がってくれました。


●テスト的にコード(ユーザー空間で実行するプロセス)をクロス環境でビルドしてみる

Raspberry Piのディストリビューションにはコンパイラ等も搭載していますが、PCのパフォーマンスを活かしてビルドしたいところです。
ここでは定番のSourcery g++ liteを使用しました。
以下のページから、ARM processor向けのGNU/Linux releaseを選択します。メールアドレスを入れるとすぐにダウンロードリンクが
入ったメールが届きますので、セットアップしてみて下さい。僕はUbuntuの64ビット版に入れてます。
<a href="http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/">http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/</a>

こんなのを書いて、

// test.c
#include &lt;stdio.h&gt;

int main(void)
{
    printf("Hello,Raspberry-pi World\n");
}



 $ arm-none-gnueabi-gcc test.c -o test

などとすればRaspberry PiのLinux上で動くプロセスを生成してくれました。
その他いろいろビルドしてオープンソースのモジュールを導入してみたいと思います。後ほど。。


●Linuxカーネルをダウンロードし、ビルドして起動する

カーネルはgithubのraspberrypiに上がっているものを使用してみました。
<a href="https://github.com/raspberrypi/linux">https://github.com/raspberrypi/linux</a>

まずはツールチェインのセットアップですが、上記の「テスト的にコード(ユーザー空間で実行するプロセス)をクロス環境でビルドしてみる」でセットアップしたGNU/Linux用のARM EABIの
ものをそのまま使用します。

0.PC側に必要なツールをセットアップ(初回だけ)

 $ apt-get install git gcc-arm-linux-gnueabi make ncurses-dev


1.ソースを入手

 $ git clone https://github.com/raspberrypi/linux.git


2.設定ファイルを整備

 $ cd linux
 $ cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
 $
 $ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig

もしカーネルの設定変更したい場合、

 $ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig


3.ビルド
以下の-j8の8は環境に合わせて下さい。

 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -k -j8


4.モジュールの書き出し
/tmp/modulesを一時書き出し先に使用しています。

 $ mkdir /tmp/modules
 $ make ARCH=arm modules_install INSTALL_MOD_PATH=/tmp/modules


5.SDカードに書き出し
Raspbian "wheezy"を書き出したSDカードをLinuxのPCに接続しますと、2つのパーティションが見えます。
一つはブート用パーティションで、もう一つはルートファイル・システムです。ブート用は2012/10/28にダウンロードした
イメージの場合、58メガバイトでした。なので大抵の場合、小さいパーティションがブート、もう一方がルートファイル・システム
になるのかなと思われます。

ではまず、ブート側パーティションにOSカーネルを入れます。
ここでは、githubから取り出し、ビルド後のLinuxカーネルツリーが./linuxに、そしてSDカードのブート側が/media/sd_bootに
マウントされているものとして記載します。

 $ cp ./linux/arch/arm/boot/Image /media/sd_boot/kernel.img


次に、モジュールもコピーします。
こちらはSDカードのルートファイルシステム側に入れます。
ルートファイルシステムが/media/sd_rootにマウントされているとしますと、


 $ cp -R /tmp/modules/* /media/sd_root/lib/modules

みたいな感じでいけると思います。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31w8Fxov7YL._SL160_.jpg" alt="BUFFALO Wi-Fi&#x30B2;&#x30FC;&#x30E0;&#x5BFE;&#x5FDC;USB&#x30B3;&#x30CD;&#x30AF;&#x30BF;&#x30FC; WLI-UC-GNT" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank">BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.11バッファロー (2009-12-26)売り上げランキング: 9287<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51OrsYdb5jL._SL160_.jpg" alt="FTDI USB&#x30B7;&#x30EA;&#x30A2;&#x30EB;&#x5909;&#x63DB;&#x30A2;&#x30C0;&#x30D7;&#x30BF;&#x30FC;(5V/3.3V&#x5207;&#x308A;&#x66FF;&#x3048;&#x6A5F;&#x80FD;&#x4ED8;&#x304D;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank">FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.11スイッチサイエンス 売り上げランキング: 9314<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
僕もとうとう、Raspberry Pi(ラズベリーパイ)という小さくて安価なマイコンボードを買いました!!<br>
このマイコンボード、日本では、RSコンポーネンツのRSオンラインで販売しています。<br>
<a href="http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi">http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi</a><br>
<br>
<a href="http://projectc3.up.seesaa.net/image/RPi.jpg" target="_blank"><img border="0" alt="RPi.jpg" src="http://projectc3.up.seesaa.net/image/RPi-thumbnail2.jpg" width="239" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/RPi-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<br>
ただ、注文してから発送までの日数がかなりかかりました。僕のケースでは3ヶ月くらいかかりました。<br>
特に急ぎではなかったので気長に待てましたが、何か目的があってすぐに欲しい場合、<br>
この期間たたずっと待つのは結構辛いかも、ですね^^;<br>
<br>
Raspberry Piは、RS以外にもFarnellという業者でも取り扱っていて、しかもこの業者だとすぐに発送されるという<br>
何だか変な状況なのですが、残念ながらこちらの業者は日本への配送を行なっていないため、購入には手間が掛かりそうなようです。<br>
<br>
日本で購入する場合でも、ケース付きであればすぐに発送してくれる業者もあるようで、そういうところで買うのが良いのかもしれませんね。<br>
ご参考 : mobilehackerz 2012/10/25 ■ いつまでも届かないRaspberry Piは一手間かけると10日で新型が手に入る<br>
<a href="http://blog.mobilehackerz.jp/2012/10/raspberry-pi10.html">http://blog.mobilehackerz.jp/2012/10/raspberry-pi10.html</a><br>
<br>
<br>
さて、RSから届いたので早速少しいじってみましたので、メモっぽい内容ですが、本記事では、以下のような内容を書き出しています。<br>
<span style="color:#FF0000;">・イメージを書き込んでテレビに繋いで操作<br>
・ピンヘッダに出ているUARTからシェル操作<br>
・有線LAN、無線LAN、3G通信ドングルでネットワークに接続<br>
・PC側からRaspberry Piのプログラムをビルドして実行<br>
・Linuxカーネルをリビルドして、置き換える<br></span>
といったことを実施してみます。<br>
<br>
この記事では、Raspberry Piから外部のハードを叩くことは触れていません。Raspberry PiでGPIOとかを叩くあたりは、Interface 2012年12月号に詳しく載っているようでしたので良かったらどーぞー!<br>
<br>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51k6vEt3DJL._SL160_.jpg" alt="Interface (インターフェース) 2012年 12月号 [雑誌]" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Interface (インターフェース) 2012年 12月号 [雑誌]</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" title="Interface (インターフェース) 2012年 12月号 [雑誌]" target="_blank">amazlet</a> at 12.11.11</div></div><div class="amazlet-detail"><br />CQ出版 (2012-10-25)<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KR8S9E/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>


<br>
<br>
<span style="font-size:large;"><span style="font-size:large;"><strong>●SDカードにイメージを焼きこむ</strong><br></span></span>
<br>
ブートのイメージが付属していないRaspberry Piを購入していたので、早速手持ちのSDカードにイメージを焼きこみます。<br>
ここからダウンロード出来ます。<br>
<a href="http://www.raspberrypi.org/downloads" target="_blank">http://www.raspberrypi.org/downloads</a><br>
<br>
僕は、Raspberry Pi標準のディストリビューションの内、Raspbian "wheezy"を使用しています。<br>
イメージファイルをダウンロードして、Macからddコマンドで焼きこみました。Linuxでも似たような手順だと思います。但し、of=の指定を誤ると大切なディスクを<br>
消してしまうことになりますので、慎重に確認してから行いましょう。<br>
<pre>
  $ dd if=イメージファイル名.img of=/dev/diskN bs=1m
</pre>
<br>
<span style="font-size:large;"><strong>●電源を投入してみる</strong><br></span>
<br>
Raspberry PiにはHDMI端子、コンポジットビデオ出力端子が付いています。これをお手持ちのテレビやモニターに接続し、USB microBコネクタに5Vで必要な電流を供給<br>
してやることでアッサリとブートしてくれました。<br>
<br>
<span style="font-size:large;"><strong>●シリアル・ポートからログインしてみる</strong><br></span>
<br>
コンソールは、/dev/ttyAMA0に出ています。以下のようにピンヘッダにRxDとTxDが出てますので、USBシリアル変換基板と接続します。<br>
<a href="http://projectc3.up.seesaa.net/image/RPi_PINS.png" target="_blank"><img border="0" alt="RPi_PINS.png" src="http://projectc3.up.seesaa.net/image/RPi_PINS-thumbnail2.png" width="240" height="320" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/RPi_PINS-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br>
<br>
ボーレートは115200[bps]です。<br>3.3V系ですので、5V系のArduinoのシリアル変換を直結しないように注意です。<br>
僕はPIC ADK Miniboardという自作基板の古いrevのボードにFTDI FT232RLだけ乗せまして、それを使用しました。<br>
<a href="http://projectc3.up.seesaa.net/image/RPi_UART.jpg" target="_blank"><img border="0" alt="RPi_UART.jpg" src="http://projectc3.up.seesaa.net/image/RPi_UART-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/RPi_UART-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
秋月のFT232RL基板もオススメです。<br>
<a href="http://akizukidenshi.com/catalog/g/gK-01977/">http://akizukidenshi.com/catalog/g/gK-01977/</a><br>
または、スイッチサイエンスのとか。<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51OrsYdb5jL._SL160_.jpg" alt="FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" title="FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)" target="_blank">amazlet</a> at 12.11.11</div></div><div class="amazlet-detail">スイッチサイエンス <br />売り上げランキング: 9314<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<br>
なお回路図上のピンヘッダ部のところはこんなかんじでした。SPIとかI2Cとか使いやすいように配列されているようです。<br>
<a href="http://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" target="_blank"><img border="0" alt="RPi_PIN_sch.png" src="http://projectc3.up.seesaa.net/image/RPi_PIN_sch-thumbnail2.png" width="320" height="271" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/RPi_PIN_sch-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a>

<br>
あとSSHからのログインも最初から有効になってました。<br>
<br>
<span style="font-size:large;"><strong>●ネットワークに接続してみる</strong><br></span>
それでは、有線、WiFi、3Gでネットワークに接続してみます。<br>
<br>
-有線LANを使用<br>
<br>
初めからDHCPありの設定になってたので、イーサのケーブルを差し込むだけでネットに繋がりました。簡単〜
<br>
<br>
-無線LANを使用<br>
<br>
無線LANのドングルにはいろいろなメーカーのチップが使用されているので、きちんと対応しているものを選別して使用するか、そうでない場合はデバドラを組み込む必要があります。<br>
僕の場合は、昔PCをWiFi APに見立ててニンテンドーDSを繋ぐ為にバッファローのWLI-UC-GN(Ralink RT3070を使用してる模様)を持ってたので突っ込んだらアッサリ認識しました。<br>
<br>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31w8Fxov7YL._SL160_.jpg" alt="BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" title="BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT" target="_blank">amazlet</a> at 12.11.11</div></div><div class="amazlet-detail">バッファロー (2009-12-26)<br />売り上げランキング: 9287<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

従って何も大した設定はしてませんw<br>
<a href="http://projectc3.up.seesaa.net/image/WiFiDongle.jpg" target="_blank"><img border="0" alt="WiFiDongle.jpg" src="http://projectc3.up.seesaa.net/image/WiFiDongle-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/WiFiDongle-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/RPi_with_WiFi.jpg" target="_blank"><img border="0" alt="RPi_with_WiFi.jpg" src="http://projectc3.up.seesaa.net/image/RPi_with_WiFi-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/RPi_with_WiFi-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>

<br>
<br>
<span style="font-size:large;"><strong>●3G通信を使用(USBドングルを使用して)</strong><br></span>
<br>
手持ちのイーモバイルの3G通信のドングルを使用しました。これは21Mbpsに対応したHuaweiのD31HWというものです。オークションとかで安く出てます。<br>
ここにイーモバのポケットルーターで使用しているSIMを突っ込みました。<br>
<br>
<a href="http://projectc3.up.seesaa.net/image/RPi_3G.jpg" target="_blank"><img border="0" alt="RPi_3G.jpg" src="http://projectc3.up.seesaa.net/image/RPi_3G-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/RPi_3G-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a>
<br>
Linuxカーネルの設定は、既にPPPありになっていますので特に、変更する内容はありません。<br>
Huaweiのドングルは、PCに接続するとCD-ROMドライブとして認識し、インストーラーが出てくる便利設計になっているのですが、<br>
Raspberry Piではこのインストーラーは当然不要です。<br>
<del>このドングルをモデムとして使用するためには、まずCD-ROMドライブとして認識している状態で、「とあるデータ列」をエンドポイントに送出し、<br>
CD-ROM状態からモデム状態に遷移させる必要があるようなのですが、usb_modeswitchのドキュメントを見るとカーネルが新しいものでは、<br>
特にモデムに遷移する動作が入っていることがあるそうで、今回もRaspberry Piでは特に特殊なコマンド操作無く、いきなりモデムとしてアクセス出来ました。<br>
参考 : usb_modeswitchのkernel related issues<br>
<a href="http://www.draisberghof.de/usb_modeswitch/">http://www.draisberghof.de/usb_modeswitch/</a><br>
<br></del>

このドングルをモデムとして使用するためには、まずCD-ROMドライブとして認識している状態で、「とあるデータ列」をエンドポイントに送出し、<br>
CD-ROM状態からモデム状態に遷移させる必要があるので、usb-modeswitchをセットアップします。<br>
<br>
<pre>
$ sudo apt-get install usb-modeswitch
</pre>
<br>
ここでudevの再チェックをキックするか、Raspberry Piを再起動すると、/dev/ttyUSB*として認識するはずです。<br>
<span style="color:#FF0000;">(★2013/5/11修正追加)</span><br>

<br>
PPP接続の設定は、wvdialを使用しました。まずはモジュールのインストールですがapt-getでサクッと行います。<br>
<pre>
 $ sudo apt-get install wvdial
</pre>
次に設定ファイルを用意します。<br>
以下のサイトを参考にさせていただきました。感謝!<br>
<a href="http://coordinators.blog18.fc2.com/blog-entry-18.html" target="_blank">http://coordinators.blog18.fc2.com/blog-entry-18.html</a><br>
<br>
で、以下のような内容のファイルを/etc/wvdial.confとして保存します。<br>
<pre name="code" class="xml">
[Dialer Defaults]
Modem = /dev/ttyUSB0
Baud = 3600000
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 =
Area Code =
Phone = *99***1#
Username = em
Password = em
Ask Password = 0
Dial Command = ATDT
Stupid Mode = 1
Compuserve = 0
Force Address =
Idle Seconds = 0
DialMessage1 =
DialMessage2 =
ISDN = 0
Auto DNS = 1
</pre>
で、
<pre>
 $ sudo wvdial &
</pre>
とすれば3G回線にマイコンボードから繋がってくれました。<br>
<br>
<br>
<span style="font-size:large;"><strong>●テスト的にコード(ユーザー空間で実行するプロセス)をクロス環境でビルドしてみる</strong></span>
<br>
Raspberry Piのディストリビューションにはコンパイラ等も搭載していますが、PCのパフォーマンスを活かしてビルドしたいところです。<br>
ここでは定番のSourcery g++ liteを使用しました。<br>
以下のページから、ARM processor向けのGNU/Linux releaseを選択します。メールアドレスを入れるとすぐにダウンロードリンクが<br>
入ったメールが届きますので、セットアップしてみて下さい。僕はUbuntuの64ビット版に入れてます。<br>
<a href="http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/">http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/</a><br>

こんなのを書いて、<br>
<pre name="code" class="cpp">
// test.c
#include &lt;stdio.h&gt;

int main(void)
{
    printf("Hello,Raspberry-pi World\n");
}
</pre>

<pre>
 $ arm-none-gnueabi-gcc test.c -o test
</pre>
などとすればRaspberry PiのLinux上で動くプロセスを生成してくれました。<br>
その他いろいろビルドしてオープンソースのモジュールを導入してみたいと思います。後ほど。。<br>
<br>

<span style="font-size:large;"><strong>●Linuxカーネルをダウンロードし、ビルドして起動する</strong><br></span>
<br>
カーネルはgithubのraspberrypiに上がっているものを使用してみました。<br>
<a href="https://github.com/raspberrypi/linux">https://github.com/raspberrypi/linux</a><br>

まずはツールチェインのセットアップですが、上記の「テスト的にコード(ユーザー空間で実行するプロセス)をクロス環境でビルドしてみる」でセットアップしたGNU/Linux用のARM EABIの<br>
ものをそのまま使用します。<br>
<br>
0.PC側に必要なツールをセットアップ(初回だけ)<br>
<pre>
<span style="color:#FF00FF;"> $ apt-get install git gcc-arm-linux-gnueabi make ncurses-dev</span>
</pre>

1.ソースを入手<br>
<pre >
<span style="color:#FF00FF;"> $ git clone <a href="https://github.com/raspberrypi/linux.git" target="_blank">https://github.com/raspberrypi/linux.git</a></span>
</pre>

2.設定ファイルを整備<br>
<pre>
<span style="color:#FF00FF;"> $ cd linux
 $ cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
 $
 $ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig</span>
</pre>
もしカーネルの設定変更したい場合、
<pre>
<span style="color:#FF00FF;"> $ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig</span>
</pre>
<br>
3.ビルド<br>
以下の-j8の8は環境に合わせて下さい。<br>
<pre>
<span style="color:#FF00FF;"> $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -k -j8</span>
</pre>

4.モジュールの書き出し<br>
/tmp/modulesを一時書き出し先に使用しています。<br>
<pre>
<span style="color:#FF00FF;"> $ mkdir /tmp/modules
 $ make ARCH=arm modules_install INSTALL_MOD_PATH=/tmp/modules</span>
</pre>

5.SDカードに書き出し<br>
Raspbian "wheezy"を書き出したSDカードをLinuxのPCに接続しますと、2つのパーティションが見えます。<br>
一つはブート用パーティションで、もう一つはルートファイル・システムです。<br>ブート用は2012/10/28にダウンロードした<br>
イメージの場合、58メガバイトでした。なので大抵の場合、小さいパーティションがブート、もう一方がルートファイル・システム<br>
になるのかなと思われます。<br>
<br>
ではまず、ブート側パーティションにOSカーネルを入れます。<br>
ここでは、githubから取り出し、ビルド後のLinuxカーネルツリーが./linuxに、そしてSDカードのブート側が/media/sd_bootに<br>
マウントされているものとして記載します。<br>
<pre>
<span style="color:#FF00FF;"> $ cp ./linux/arch/arm/boot/Image /media/sd_boot/kernel.img</span>
</pre>
<br>
次に、モジュールもコピーします。<br>
こちらはSDカードのルートファイルシステム側に入れます。<br>
ルートファイルシステムが/media/sd_rootにマウントされているとしますと、<br>
<br>
<pre>
 $ cp -R /tmp/modules/* /media/sd_root/lib/modules
</pre>
みたいな感じでいけると思います。<br>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31w8Fxov7YL._SL160_.jpg" alt="BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" title="BUFFALO Wi-Fiゲーム対応USBコネクター WLI-UC-GNT" target="_blank">amazlet</a> at 12.11.11</div></div><div class="amazlet-detail">バッファロー (2009-12-26)<br />売り上げランキング: 9287<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00305GYSE/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51OrsYdb5jL._SL160_.jpg" alt="FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" title="FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)" target="_blank">amazlet</a> at 12.11.11</div></div><div class="amazlet-detail">スイッチサイエンス <br />売り上げランキング: 9314<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009AME9R4/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/301372328</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/RPi.jpg" length="126224" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi.jpg" length="126224" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_PINS.png" length="791663" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_PINS.png" length="791663" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_UART.jpg" length="90927" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_UART.jpg" length="90927" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" length="78074" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_PIN_sch.png" length="78074" type="image/png" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/WiFiDongle.jpg" length="77398" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/WiFiDongle.jpg" length="77398" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_with_WiFi.jpg" length="111658" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_with_WiFi.jpg" length="111658" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_3G.jpg" length="81387" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/RPi_3G.jpg" length="81387" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/299826636.html</link>
      <title>蛍光表示管(VFDパネル)をAndroidから制御するライブラリを作ってみました</title>
      <pubDate>Thu, 01 Nov 2012 00:36:04 +0900</pubDate>
            <description>電気街のパーツショップでも購入できるVFDパネルという表示装置があります。昔は小型ゲーム機の表示板や、電卓の数字表示に使用されていたようですし、現在でも(液晶が多くなってきたものの)ビデオデッキの前面パネル表示部や、お店のレジの値段表示、銀行等の為替レート表示、ATMなどいろいろな所で活躍している表示装置の一種です。ノリタケ伊勢電子と双葉電子工業というところの製品が多く出回っているようです。参考 : 蛍光表示管(Wikipedia)http://ja.wikipedia.or..</description>
            <itunes:summary><![CDATA[
電気街のパーツショップでも購入できるVFDパネルという表示装置があります。昔は小型ゲーム機の表示板や、電卓の数字表示に使用されていたようですし、現在でも(液晶が多くなってきたものの)ビデオデッキの前面パネル表示部や、お店のレジの値段表示、銀行等の為替レート表示、ATMなどいろいろな所で活躍している表示装置の一種です。ノリタケ伊勢電子と双葉電子工業というところの製品が多く出回っているようです。

参考 : 蛍光表示管(Wikipedia)
http://ja.wikipedia.org/wiki/%E8%9B%8D%E5%85%89%E8%A1%A8%E7%A4%BA%E7%AE%A1

たまたま、僕が持っているVFDパネル SCK256X64-3101 はUSBのインターフェースを搭載していて、PCからの制御が出来る仕様です。
http://www.noritake-itron.jp/kit/module/sck_3000/index.html
ノリタケ伊勢電子のサイトから個人でも簡単に買えます。確か日本橋の共立電子にもいろいろ置いてありました。

<a href="http://projectc3.up.seesaa.net/image/13516949198931.jpg" target="_blank"><img border="0" alt="13516949198931.jpg" src="http://projectc3.up.seesaa.net/image/13516949198931-thumbnail2.jpg" width="320" height="240"></a>

<a href="http://projectc3.up.seesaa.net/image/13516949494552.jpg" target="_blank"><img border="0" alt="13516949494552.jpg" src="http://projectc3.up.seesaa.net/image/13516949494552-thumbnail2.jpg" width="320" height="240"></a>

そこで、Androidアプリから簡単に任意の表示制御できるようなコントロールライブラリ VFD_Driver を作成してみました。
<a href="http://projectc3.up.seesaa.net/image/VFD_demo.jpg" target="_blank"><img border="0" alt="VFD_demo.jpg" src="http://projectc3.up.seesaa.net/image/VFD_demo-thumbnail2.jpg" width="320" height="179"></a>

VFD_DriverはAndroidのUSBホストポートを使用してVFDパネルと通信を行うVFD_Driverクラスと、その上でコマンドを構築して制御を行うVFD_Communicationクラスとで構成されています。VFD_Driverクラスは、@ksksue氏作 FTDriver の実装をいろいろいただき、その上で実装しています(Special thanks!!)。

VFD_CommunicationクラスのAPIはノリタケ伊勢電子のサポートページで公開されているC++のサンプルAPIをほぼ踏襲しています。

ソースはこちらです。
https://github.com/yishii/Android_VFD_Driver

ビルドしたアプリはPlayストアにも上げました。ノリタケ伊勢電子のUSB接続のパネルであれば、同一型番でなくても動くかも?しれません。(未確認です)
https://play.google.com/store/apps/details?id=jp.yishii.vfdrivertest

API一覧はREADME.mdに入れました。関数毎にコメントで軽く説明入れましたが、詳しくは上記のノリタケ伊勢電子のC++サンプルAPIの説明書と多くは一致するかと思います。あとはソフトウェア開発ガイドのpdf(ダウンロード時要ログイン)があれば詳細なコマンドの振る舞いもわかります。
●ノリタケ伊勢電子 サポートソフト GU-3000シリーズ向け C++サンプルプログラム
http://www.noritake-itron.jp/cs/supportsoft/index.xml#GU-3000シリーズ向け


使用しているところの動画を撮影してみました。
Nexus 7のUSBホストに繋いで、アプリから表示をコントロールしているものです。

動画では、3つの画面のデモを行なっています。
一つはVFD内フォントを使用した文字列描画、もう一つはライン命令を使用したドローイング、最後にAndroidのBitmapからVFDの画面を更新する内容になります。
Android端末に別な画面を繋いで手軽に表示を制御したい場合などございましたら、良かったらご利用下さいませー。

<a href="http://www.youtube.com/watch?v=7-c3g5hHXgo&amp;feature=youtube_gdata&amp;external_video_config=width%3D480%26height%3D320">ノリタケ伊勢電子のVFDパネルをAndroidのUSBから叩く</a>


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41iEYGjOpZL._SL160_.jpg" alt="cheero Power Plus 10000mAh &#x5927;&#x5BB9;&#x91CF;&#x30E2;&#x30D0;&#x30A4;&#x30EB;&#x30D0;&#x30C3;&#x30C6;&#x30EA;&#x30FC; (2.1A,1A 2&#x51FA;&#x529B;&#x30DD;&#x30FC;&#x30C8;/  &#x30DD;&#x30FC;&#x30C1;&#x4ED8;/&#x534A;&#x5E74;&#x4FDD;&#x8A3C;)&#x3000;&#x2605;iPhone5 / iPhone4S 4 3GS / &#x5404;&#x7A2E;&#x30B9;&#x30DE;&#x30DB; / &#x5404;iPad / iPod / Nintendo DSLite / PSP / Wi-Fi&#x30EB;&#x30FC;&#x30BF;&#x5BFE;&#x5FDC;&#x2605;" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" target="_blank">cheero Power Plus 10000mAh 大容量モバイルバッテリー (2.1A,1A 2出力ポート/  ポーチ付/半年保証)　★iPhone5 / iPhone4S 4 3GS / 各種スマホ / 各iPad / iPod / Nintendo DSLite / PSP / Wi-Fiルータ対応★</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.04cheero mart 売り上げランキング: 1<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>


<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CaxAN5dgL._SL160_.jpg" alt="iBUFFALO USB(microB to A)&#x5909;&#x63DB;&#x30A2;&#x30C0;&#x30D7;&#x30BF;&#x30FC; &#x30D6;&#x30E9;&#x30C3;&#x30AF; BSMPC11C01BK" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" target="_blank">iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.01バッファロー (2011-11-01)売り上げランキング: 114<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4863540760/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51-Tjwh5zHL._SL160_.jpg" alt="&#x57FA;&#x790E;&#x304B;&#x3089;&#x5B66;&#x3076; &#x7D44;&#x307F;&#x8FBC;&#x307F;Android" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4863540760/ishiiyasu-22/ref=nosim/" target="_blank">基礎から学ぶ 組み込みAndroid</a>posted with <a href="http://www.amazlet.com/browse/ASIN/4863540760/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.01坂本 俊之 出村 成和 渡邊 昌之 シーアンドアール研究所 売り上げランキング: 135065<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4863540760/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/519yy0YMOhL._SL160_.jpg" alt="BeagleBoard-xM" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" target="_blank">BeagleBoard-xM</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.11.01Circuitco Electronics LLC. 売り上げランキング: 48592<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a><a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
電気街のパーツショップでも購入できるVFDパネルという表示装置があります。昔は小型ゲーム機の表示板や、電卓の数字表示に使用されていたようですし、現在でも(液晶が多くなってきたものの)ビデオデッキの前面パネル表示部や、お店のレジの値段表示、銀行等の為替レート表示、ATMなどいろいろな所で活躍している表示装置の一種です。ノリタケ伊勢電子と双葉電子工業というところの製品が多く出回っているようです。<br /><br />参考 : 蛍光表示管(Wikipedia)<br /><a href="http://ja.wikipedia.org/wiki/%E8%9B%8D%E5%85%89%E8%A1%A8%E7%A4%BA%E7%AE%A1" target="_blank">http://ja.wikipedia.org/wiki/%E8%9B%8D%E5%85%89%E8%A1%A8%E7%A4%BA%E7%AE%A1</a><br /><br />たまたま、僕が持っているVFDパネル SCK256X64-3101 はUSBのインターフェースを搭載していて、PCからの制御が出来る仕様です。<br /><a href="http://www.noritake-itron.jp/kit/module/sck_3000/index.html" target="_blank">http://www.noritake-itron.jp/kit/module/sck_3000/index.html</a><br />ノリタケ伊勢電子のサイトから個人でも簡単に買えます。確か日本橋の共立電子にもいろいろ置いてありました。<br /><br /><a href="http://projectc3.up.seesaa.net/image/13516949198931.jpg" target="_blank"><img border="0" alt="13516949198931.jpg" src="http://projectc3.up.seesaa.net/image/13516949198931-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/13516949198931-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br /><a href="http://projectc3.up.seesaa.net/image/13516949494552.jpg" target="_blank"><img border="0" alt="13516949494552.jpg" src="http://projectc3.up.seesaa.net/image/13516949494552-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/13516949494552-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />そこで、Androidアプリから簡単に任意の表示制御できるようなコントロールライブラリ VFD_Driver を作成してみました。<br /><a href="http://projectc3.up.seesaa.net/image/VFD_demo.jpg" target="_blank"><img border="0" alt="VFD_demo.jpg" src="http://projectc3.up.seesaa.net/image/VFD_demo-thumbnail2.jpg" width="320" height="179" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/VFD_demo-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />VFD_DriverはAndroidのUSBホストポートを使用してVFDパネルと通信を行うVFD_Driverクラスと、その上でコマンドを構築して制御を行うVFD_Communicationクラスとで構成されています。VFD_Driverクラスは、@ksksue氏作 FTDriver の実装をいろいろいただき、その上で実装しています(Special thanks!!)。<br /><br />VFD_CommunicationクラスのAPIはノリタケ伊勢電子のサポートページで公開されているC++のサンプルAPIをほぼ踏襲しています。<br /><br />ソースはこちらです。<br /><a href="https://github.com/yishii/Android_VFD_Driver" target="_blank">https://github.com/yishii/Android_VFD_Driver</a><br /><br />ビルドしたアプリはPlayストアにも上げました。ノリタケ伊勢電子のUSB接続のパネルであれば、同一型番でなくても動くかも?しれません。(未確認です)<br /><a href="https://play.google.com/store/apps/details?id=jp.yishii.vfdrivertest" target="_blank">https://play.google.com/store/apps/details?id=jp.yishii.vfdrivertest</a><br /><br />API一覧はREADME.mdに入れました。関数毎にコメントで軽く説明入れましたが、詳しくは上記のノリタケ伊勢電子のC++サンプルAPIの説明書と多くは一致するかと思います。あとはソフトウェア開発ガイドのpdf(ダウンロード時要ログイン)があれば詳細なコマンドの振る舞いもわかります。<br />●ノリタケ伊勢電子 サポートソフト GU-3000シリーズ向け C++サンプルプログラム<br /><a href="http://www.noritake-itron.jp/cs/supportsoft/index.xml#GU-3000" target="_blank">http://www.noritake-itron.jp/cs/supportsoft/index.xml#GU-3000</a>シリーズ向け<br /><br /><br />使用しているところの動画を撮影してみました。<br />Nexus 7のUSBホストに繋いで、アプリから表示をコントロールしているものです。<br /><br />動画では、3つの画面のデモを行なっています。<br />一つはVFD内フォントを使用した文字列描画、もう一つはライン命令を使用したドローイング、最後にAndroidのBitmapからVFDの画面を更新する内容になります。<br />Android端末に別な画面を繋いで手軽に表示を制御したい場合などございましたら、良かったらご利用下さいませー。<br /><br /><script type="text/javascript">extVideoConfig = {"height":"320","width":"480","url":"http://www.youtube.com/watch?v=7-c3g5hHXgo&feature=youtube_gdata"};</script><script type="text/javascript" src="https://blog.seesaa.jp/contents/js/external_video.js"></script><br /><br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41iEYGjOpZL._SL160_.jpg" alt="cheero Power Plus 10000mAh 大容量モバイルバッテリー (2.1A,1A 2出力ポート/  ポーチ付/半年保証)　★iPhone5 / iPhone4S 4 3GS / 各種スマホ / 各iPad / iPod / Nintendo DSLite / PSP / Wi-Fiルータ対応★" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">cheero Power Plus 10000mAh 大容量モバイルバッテリー (2.1A,1A 2出力ポート/  ポーチ付/半年保証)　★iPhone5 / iPhone4S 4 3GS / 各種スマホ / 各iPad / iPod / Nintendo DSLite / PSP / Wi-Fiルータ対応★</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" title="cheero Power Plus 10000mAh 大容量モバイルバッテリー (2.1A,1A 2出力ポート/  ポーチ付/半年保証)　★iPhone5 / iPhone4S 4 3GS / 各種スマホ / 各iPad / iPod / Nintendo DSLite / PSP / Wi-Fiルータ対応★" target="_blank">amazlet</a> at 12.11.04</div></div><div class="amazlet-detail">cheero mart <br />売り上げランキング: 1<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0081LRCJW/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CaxAN5dgL._SL160_.jpg" alt="iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" title="iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK" target="_blank">amazlet</a> at 12.11.01</div></div><div class="amazlet-detail">バッファロー (2011-11-01)<br />売り上げランキング: 114<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005WNBLN0/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4863540760/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51-Tjwh5zHL._SL160_.jpg" alt="基礎から学ぶ 組み込みAndroid" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4863540760/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">基礎から学ぶ 組み込みAndroid</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4863540760/ishiiyasu-22/ref=nosim/" title="基礎から学ぶ 組み込みAndroid" target="_blank">amazlet</a> at 12.11.01</div></div><div class="amazlet-detail">坂本 俊之 出村 成和 渡邊 昌之 <br />シーアンドアール研究所 <br />売り上げランキング: 135065<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4863540760/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/519yy0YMOhL._SL160_.jpg" alt="BeagleBoard-xM" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">BeagleBoard-xM</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" title="BeagleBoard-xM" target="_blank">amazlet</a> at 12.11.01</div></div><div class="amazlet-detail">Circuitco Electronics LLC. <br />売り上げランキング: 48592<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009FBIEMG/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/299826636</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/13516949198931.jpg" length="74261" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13516949198931.jpg" length="74261" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13516949494552.jpg" length="104588" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/13516949494552.jpg" length="104588" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/VFD_demo.jpg" length="99208" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/VFD_demo.jpg" length="99208" type="image/jpeg" />
                      </item>
        <item>
      <link>https://projectc3.seesaa.net/article/297340392.html</link>
      <title>STM32F4-discoveryでuITRON最小セットカーネルのTOPPERS/SSPを試用してみたー</title>
      <pubDate>Sun, 14 Oct 2012 02:23:41 +0900</pubDate>
            <description>最近いろいろと遊ばせてもらってますSTM32F4-discoveryですが、今回はuITRONの最小セットOSである、TOPPERS/SSPを動作させてみることにしました。TOPPERSは、7年ほど前に趣味でVFDパネルを動かして遊ぶのにTOPPERS/JSPカーネルを秋月のH8/3069Fボードで使用したことはありましたがそれっきりいじっていませんでした。今回はたまたま、CQ出版のInterface 2012年11月号で「リアルタイムOS「TOPPERS/SSP」誕生!」と..</description>
            <itunes:summary><![CDATA[
最近いろいろと遊ばせてもらってますSTM32F4-discoveryですが、今回はuITRONの最小セットOSである、TOPPERS/SSPを動作させてみることにしました。

<a href="http://projectc3.up.seesaa.net/image/IMG_20120831_062451.jpg" target="_blank"><img border="0" alt="IMG_20120831_062451.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20120831_062451-thumbnail2.jpg" width="320" height="240"></a>

TOPPERSは、7年ほど前に趣味でVFDパネルを動かして遊ぶのにTOPPERS/JSPカーネルを秋月のH8/3069Fボードで使用したことはありましたがそれっきりいじっていませんでした。

今回はたまたま、CQ出版のInterface 2012年11月号で「リアルタイムOS「TOPPERS/SSP」誕生!」という記事がありまして、では僕もいじってみたいなーと思い、お試ししてみました。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/517V9YuiODL._SL160_.jpg" alt="Interface (&#x30A4;&#x30F3;&#x30BF;&#x30FC;&#x30D5;&#x30A7;&#x30FC;&#x30B9;) 2012&#x5E74; 11&#x6708;&#x53F7; [&#x96D1;&#x8A8C;]" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" target="_blank">Interface (インターフェース) 2012年 11月号 [雑誌]</a>posted with <a href="http://www.amazlet.com/browse/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.10.14CQ出版 (2012-09-25)<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

TOPPERS/SSPは最小セットカーネルと呼ばれるだけあり、かなり小さいメモリーサイズで動作するカーネルだそうで、実際Cortex-M3の環境でROM 3kバイト、RAM 24バイトであるとの事でした。
今回は、STマイクロのCortex-M4FマイコンボードのSTM32F4-discoveryを持っているので、STM32F4用に移植して動作させてみることにします。

TOPPERS/SSPに関しては以下のサイトを御覧ください。
http://www.toppers.jp/ssp-kernel.html

既にDesignWaveマガジン付属CQ_STARM用、R8C用、Interface付属RX62N用のツリーがアップされています。

今回はSTM32F4にポーティングする元となるツリーとして、CQ_STARM用をダウンロードしました。
CQ_STARMは、STマイクロのSTM32F103VBT6を使用したボートです。(多分このボード僕も持っていると思うのですが、積み基板ボックスを漁りましたが見つかりませんでした。変だなー・・・)
STM32F4-discovery(STM32F407VGT6)で動作させるには最も筋が良いでしょうね。

こんなのです。
http://www.cqpub.co.jp/dwm/Contents/0126/dwm012600520.pdf

TOPPERS/SSPはいくつかのディレクトリで構成されているのですが、アーキテクチャ別のディレクトリ(./arch)とターゲット別のディレクトリ(./target)があり、ポーティングは主にその中をいじれば良いようになっているようです。
今回はSTマイクロのCortex-M3用がベースなのでarch以下はいじらず、./target以下だけをいじっています。

主に周辺機能周りのレジスタとか、アドレスマッピング等はSTM32F1とSTM32F4とでは差分があり、STマイクロの仕様書を見ながら変更していきました。
それなりに試行錯誤もありまして、ソースがごちゃごちゃしたのでgithubに上げる際にソース整理しました。

STM32F4-discovery用TOPPERS/SSP(お試し)は以下のgithubのリポジトリで公開していますので、以下からダウンロード、ビルドしてお手持ちのSTM32F4-discoveryに焼き込めば動作するはずです。
https://github.com/yishii/toppers_ssp_stm32f4_discovery

電源投入すると、加速度センサー周辺の4 LEDは点灯状態になりますので動作したかわかりやすいかと思います。

具体的な改変内容はgithubのコミットログを御覧くださいませー。

なお、コンパイル方法ですが、Windows上で行います。
Cygwinを使用しています。また、Sourcery CodebenchのARMツールチェインをインストールしてパスを通しておきます。無償のLite editionのEABI ReleaseでOKです。
Cygwinは、DevelopmentのカテゴリをInstallにすれば必要な物は足りるはずです。

Cygwin : http://www.cygwin.com/
Sourcery Codebench : http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/

あと、TeraTermのCygterm機能を使ってCygwinのシェルにアクセスしました(これは必須ではありません)。


実は当初、STM32F4の開発環境をUbuntu上に構築していたこともあり、TOPPERS/SSP関連の開発もUbuntuでやろうと思っていました。
ただ、提供されているTOPPERSのコンフィグレータ(CFG.EXE)はWindows用にビルドされていましたので、コンフィグレータのソースからビルドしてUbuntu上のビルドに組み込んでみたのですが、コンフィグレータ実行時にSIGSEGVが発生してしまいまして、落ちたタイミングでバックトレースするとBOOSTライブラリの奥深くで発生してるようで、コンフィグレータの仕様を理解して解析するのはめんどくさいのでWindowsに乗り換えました。^^;


まずは、githubからソース取得し、展開したらconfigureします。

    ./configure -T stm32f4_discovery_gcc

そしてmakeです。

    make

ビルドに成功すると、「ssp.exe」というELF形式のバイナリを生成しますので、これをSTM32F4-discoveryにロードします。
OpenOCDを起動し、その後シェルから

    arm-none-eabi-gdb ./ssp.exe
    (gdb) tar extended-remote :3333
    (gdb) load ssp.exe
    (gdb) c

上記手順で実行開始します。
上記はsample1.cというサンプルコードが実行されます。

sample1.cの操作
シリアル入出力はRxD = PB7、TxD =PB6でボーレートは115200bpsになってます。UART-RS232(またはUSB)変換基板をそのポートに接続して使用して下さい。
マイコンボードの電源を入れると、TOPPERS/SSPのバナー(Copyright表示など)が出てきます。ここで、シリアルコンソールからのコマンド待受けしてますので、TeraTerm等からキーインします。

【タスク関連】--------------------------------
"1" : TASK1を選択
"2" : TASK2を選択
"3" : TASK3を選択
"a" : 選択したタスクを起床(act_tsk)
"e" : 選択したタスクの終了指示メッセージを投げる
"z" : 選択したタスクでCPU例外を発生させるメッセージ
【アラームハンドラ関連】----------------------
"b" : アラーム ALM1を設定(sta_alm)
"B" : アラーム ALM1を停止(stp_alm)
【サイクリックハンドラ関連】-------------------
"c" : サイクリックハンドラ CYC1を起動(sta_cyc)
"C" : サイクリックハンドラ CYC1を停止(stp_cyc)
【その他】-----------------------------------
"Q" : プログラム終了(ext_ker)
--------------------------------------------


なお、ROM/RAMサイズは変更してませんのでSTM32F1のままです。リンカスクリプト(cq_starm_*.ld)を変更するだけで対応できると思います。

※デバッグ環境の、OpenOCDのWindows用については「ねむいさんのぶろぐ」のものをそのまま使用させていただいてます。ありがとうございます。

今回はSTM32F4のブート処理の初期設定をいろいろ調べながら実験していく過程で、いろいろ勉強させていただきました。PIC24に移植してみたいと思っているのですが、PICはソースの公開の制限が大きいので、解決してからにしたいと思います。

ところでどうやら、先日僕にも、Raspberry Piの発送しましたメールが届きまして、間もなく届くのだと思います。7/Eオーダーでしたので長かったー!!
ひとまずここでSTM32F4は区切ってRaspberry Piで遊んでみたいです!

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51n%2BN1DB8oL._SL160_.jpg" alt="ARM&#x3067;OS&#x8D85;&#x5165;&#x9580; (ARM&#x30DE;&#x30A4;&#x30B3;&#x30F3;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" target="_blank">ARMでOS超入門 (ARMマイコン)</a>posted with <a href="http://www.amazlet.com/browse/ASIN/4789835952/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.10.14桑野 雅彦  岡田 好一 共著 CQ出版 売り上げランキング: 101688<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a>

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789848272/ishiiyasu-22/ref=nosim/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51Hknl5JieL._SL160_.jpg" alt="&#x5B8C;&#x5168;&#x7248; &#x4E16;&#x754C;&#x306E;&#x5B9A;&#x756A;ARM&#x30DE;&#x30A4;&#x30B3;&#x30F3; &#x8D85;&#x5165;&#x9580;&#x30AD;&#x30C3;&#x30C8; STM32&#x30C7;&#x30A3;&#x30B9;&#x30AB;&#x30D0;&#x30EA;: &#x30C7;&#x30D0;&#x30C3;&#x30AC;&#x642D;&#x8F09;&amp;&#x306F;&#x3093;&#x3060;&#x3065;&#x3051;&#x4E0D;&#x8981;!Cortex-M3&#x3092;&#x30DB;&#x30F3;&#x30C8;&#x306B;&#x59CB;&#x3081;&#x3089;&#x308C;&#x308B; (&#x30C8;&#x30E9;&#x30A4;&#x30A2;&#x30EB;&#x30B7;&#x30EA;&#x30FC;&#x30BA;)" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789848272/ishiiyasu-22/ref=nosim/" target="_blank">完全版 世界の定番ARMマイコン 超入門キット STM32ディスカバリ: デバッガ搭載&はんだづけ不要!Cortex-M3をホントに始められる (トライアルシリーズ)</a>posted with <a href="http://www.amazlet.com/browse/ASIN/4789848272/ishiiyasu-22/ref=nosim/" target="_blank">amazlet</a> at 12.10.14島田 義人 永原 柊 CQ出版 売り上げランキング: 39135<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789848272/ishiiyasu-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a><a></a>

]]></itunes:summary>
      <content:encoded><![CDATA[
最近いろいろと遊ばせてもらってますSTM32F4-discoveryですが、今回はuITRONの最小セットOSである、TOPPERS/SSPを動作させてみることにしました。<br /><br /><a href="http://projectc3.up.seesaa.net/image/IMG_20120831_062451.jpg" target="_blank"><img border="0" alt="IMG_20120831_062451.jpg" src="http://projectc3.up.seesaa.net/image/IMG_20120831_062451-thumbnail2.jpg" width="320" height="240" onclick="location.href = 'https://projectc3.seesaa.net/upload/detail/image/IMG_20120831_062451-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><br />TOPPERSは、7年ほど前に趣味でVFDパネルを動かして遊ぶのにTOPPERS/JSPカーネルを秋月のH8/3069Fボードで使用したことはありましたがそれっきりいじっていませんでした。<br /><br />今回はたまたま、CQ出版のInterface 2012年11月号で「リアルタイムOS「TOPPERS/SSP」誕生!」という記事がありまして、では僕もいじってみたいなーと思い、お試ししてみました。<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/517V9YuiODL._SL160_.jpg" alt="Interface (インターフェース) 2012年 11月号 [雑誌]" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Interface (インターフェース) 2012年 11月号 [雑誌]</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" title="Interface (インターフェース) 2012年 11月号 [雑誌]" target="_blank">amazlet</a> at 12.10.14</div></div><div class="amazlet-detail"><br />CQ出版 (2012-09-25)<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0096CE5MM/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br />TOPPERS/SSPは最小セットカーネルと呼ばれるだけあり、かなり小さいメモリーサイズで動作するカーネルだそうで、実際Cortex-M3の環境でROM 3kバイト、RAM 24バイトであるとの事でした。<br />今回は、STマイクロのCortex-M4FマイコンボードのSTM32F4-discoveryを持っているので、STM32F4用に移植して動作させてみることにします。<br /><br />TOPPERS/SSPに関しては以下のサイトを御覧ください。<br /><a href="http://www.toppers.jp/ssp-kernel.html" target="_blank">http://www.toppers.jp/ssp-kernel.html</a><br /><br />既にDesignWaveマガジン付属CQ_STARM用、R8C用、Interface付属RX62N用のツリーがアップされています。<br /><br />今回はSTM32F4にポーティングする元となるツリーとして、CQ_STARM用をダウンロードしました。<br />CQ_STARMは、STマイクロのSTM32F103VBT6を使用したボートです。(多分このボード僕も持っていると思うのですが、積み基板ボックスを漁りましたが見つかりませんでした。変だなー・・・)<br />STM32F4-discovery(STM32F407VGT6)で動作させるには最も筋が良いでしょうね。<br /><br />こんなのです。<br /><a href="http://www.cqpub.co.jp/dwm/Contents/0126/dwm012600520.pdf" target="_blank">http://www.cqpub.co.jp/dwm/Contents/0126/dwm012600520.pdf</a><br /><br />TOPPERS/SSPはいくつかのディレクトリで構成されているのですが、アーキテクチャ別のディレクトリ(./arch)とターゲット別のディレクトリ(./target)があり、ポーティングは主にその中をいじれば良いようになっているようです。<br />今回はSTマイクロのCortex-M3用がベースなのでarch以下はいじらず、./target以下だけをいじっています。<br /><br />主に周辺機能周りのレジスタとか、アドレスマッピング等はSTM32F1とSTM32F4とでは差分があり、STマイクロの仕様書を見ながら変更していきました。<br />それなりに試行錯誤もありまして、ソースがごちゃごちゃしたのでgithubに上げる際にソース整理しました。<br /><br />STM32F4-discovery用TOPPERS/SSP(お試し)は以下のgithubのリポジトリで公開していますので、以下からダウンロード、ビルドしてお手持ちのSTM32F4-discoveryに焼き込めば動作するはずです。<br /><a href="https://github.com/yishii/toppers_ssp_stm32f4_discovery" target="_blank">https://github.com/yishii/toppers_ssp_stm32f4_discovery</a><br /><br />電源投入すると、加速度センサー周辺の4 LEDは点灯状態になりますので動作したかわかりやすいかと思います。<br /><br />具体的な改変内容はgithubのコミットログを御覧くださいませー。<br /><br />なお、コンパイル方法ですが、Windows上で行います。<br />Cygwinを使用しています。また、Sourcery CodebenchのARMツールチェインをインストールしてパスを通しておきます。無償のLite editionのEABI ReleaseでOKです。<br />Cygwinは、DevelopmentのカテゴリをInstallにすれば必要な物は足りるはずです。<br /><br />Cygwin : <a href="http://www.cygwin.com/" target="_blank">http://www.cygwin.com/</a><br />Sourcery Codebench : <a href="http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/" target="_blank">http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/</a><br /><br />あと、TeraTermのCygterm機能を使ってCygwinのシェルにアクセスしました(これは必須ではありません)。<br /><br /><blockquote><br />実は当初、STM32F4の開発環境をUbuntu上に構築していたこともあり、TOPPERS/SSP関連の開発もUbuntuでやろうと思っていました。<br />ただ、提供されているTOPPERSのコンフィグレータ(CFG.EXE)はWindows用にビルドされていましたので、コンフィグレータのソースからビルドしてUbuntu上のビルドに組み込んでみたのですが、コンフィグレータ実行時にSIGSEGVが発生してしまいまして、落ちたタイミングでバックトレースするとBOOSTライブラリの奥深くで発生してるようで、コンフィグレータの仕様を理解して解析するのはめんどくさいのでWindowsに乗り換えました。^^;<br /></blockquote><br /><br />まずは、githubからソース取得し、展開したらconfigureします。<br /><pre><br />    ./configure -T stm32f4_discovery_gcc<br /></pre><br />そしてmakeです。<br /><pre><br />    make<br /></pre><br />ビルドに成功すると、「ssp.exe」というELF形式のバイナリを生成しますので、これをSTM32F4-discoveryにロードします。<br />OpenOCDを起動し、その後シェルから<br /><pre><br />    arm-none-eabi-gdb ./ssp.exe<br />    (gdb) tar extended-remote :3333<br />    (gdb) load ssp.exe<br />    (gdb) c<br /></pre><br />上記手順で実行開始します。<br />上記はsample1.cというサンプルコードが実行されます。<br /><br /><span style="font-size:large;">sample1.cの操作</span><br />シリアル入出力はRxD = PB7、TxD =PB6でボーレートは115200bpsになってます。UART-RS232(またはUSB)変換基板をそのポートに接続して使用して下さい。<br />マイコンボードの電源を入れると、TOPPERS/SSPのバナー(Copyright表示など)が出てきます。ここで、シリアルコンソールからのコマンド待受けしてますので、TeraTerm等からキーインします。<br /><blockquote><br />【タスク関連】--------------------------------<br />"1" : TASK1を選択<br />"2" : TASK2を選択<br />"3" : TASK3を選択<br />"a" : 選択したタスクを起床(act_tsk)<br />"e" : 選択したタスクの終了指示メッセージを投げる<br />"z" : 選択したタスクでCPU例外を発生させるメッセージ<br />【アラームハンドラ関連】----------------------<br />"b" : アラーム ALM1を設定(sta_alm)<br />"B" : アラーム ALM1を停止(stp_alm)<br />【サイクリックハンドラ関連】-------------------<br />"c" : サイクリックハンドラ CYC1を起動(sta_cyc)<br />"C" : サイクリックハンドラ CYC1を停止(stp_cyc)<br />【その他】-----------------------------------<br />"Q" : プログラム終了(ext_ker)<br />--------------------------------------------<br /></blockquote><br /><br />なお、ROM/RAMサイズは変更してませんのでSTM32F1のままです。リンカスクリプト(cq_starm_*.ld)を変更するだけで対応できると思います。<br /><br />※デバッグ環境の、OpenOCDのWindows用については「ねむいさんのぶろぐ」のものをそのまま使用させていただいてます。ありがとうございます。<br /><br />今回はSTM32F4のブート処理の初期設定をいろいろ調べながら実験していく過程で、いろいろ勉強させていただきました。PIC24に移植してみたいと思っているのですが、PICはソースの公開の制限が大きいので、解決してからにしたいと思います。<br /><br />ところでどうやら、先日僕にも、Raspberry Piの発送しましたメールが届きまして、間もなく届くのだと思います。7/Eオーダーでしたので長かったー!!<br />ひとまずここでSTM32F4は区切ってRaspberry Piで遊んでみたいです!<br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51n%2BN1DB8oL._SL160_.jpg" alt="ARMでOS超入門 (ARMマイコン)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">ARMでOS超入門 (ARMマイコン)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4789835952/ishiiyasu-22/ref=nosim/" title="ARMでOS超入門 (ARMマイコン)" target="_blank">amazlet</a> at 12.10.14</div></div><div class="amazlet-detail">桑野 雅彦  岡田 好一 共著 <br />CQ出版 <br />売り上げランキング: 101688<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789835952/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><br /><br /><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789848272/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51Hknl5JieL._SL160_.jpg" alt="完全版 世界の定番ARMマイコン 超入門キット STM32ディスカバリ: デバッガ搭載&はんだづけ不要!Cortex-M3をホントに始められる (トライアルシリーズ)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789848272/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">完全版 世界の定番ARMマイコン 超入門キット STM32ディスカバリ: デバッガ搭載&はんだづけ不要!Cortex-M3をホントに始められる (トライアルシリーズ)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4789848272/ishiiyasu-22/ref=nosim/" title="完全版 世界の定番ARMマイコン 超入門キット STM32ディスカバリ: デバッガ搭載&はんだづけ不要!Cortex-M3をホントに始められる (トライアルシリーズ)" target="_blank">amazlet</a> at 12.10.14</div></div><div class="amazlet-detail">島田 義人 永原 柊 <br />CQ出版 <br />売り上げランキング: 39135<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789848272/ishiiyasu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>電子工作</category>
      <author>いしいっち</author>
      <guid isPermaLink="false">blog:https://blog.seesaa.jp,projectc3/297340392</guid>
            <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20120831_062451.jpg" length="122907" type="image/jpeg" />
                  <enclosure url="https://projectc3.up.seesaa.net/image/IMG_20120831_062451.jpg" length="122907" type="image/jpeg" />
                      </item>
      </channel>
</rss>

