tag:blogger.com,1999:blog-47415428634466717182024-02-20T10:31:24.089+09:00Atelier Orchardkimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.comBlogger75125tag:blogger.com,1999:blog-4741542863446671718.post-62528882672929918122014-10-14T23:09:00.002+09:002014-10-14T23:48:33.907+09:00SPF材(1x3)で木箱を組むホームセンターで買った1x3(ワンバイスリー)サイズのSPF材で木箱、木製のコンテナのようなものを作ってみました。といっても、ものを格納するというよりはインテリアとしてハーブ鉢の台にするとか、なんとなくそんな使い方を考えて。<br />
とりあえず晒し上げ。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio9IBg6YIfA6Ur8uYvd4dd77GmgjxtGSF_f_2dP84LiMdg_UV1kq1w0xhaaSz0DvB6xGUOeHdf-Ztcz5vKq4F3xeirHM7TOkFoBb3s7s-SaZihTxACceBdTwarOZCJrX-yqTjyzVntqCE/s1600/P6010287.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio9IBg6YIfA6Ur8uYvd4dd77GmgjxtGSF_f_2dP84LiMdg_UV1kq1w0xhaaSz0DvB6xGUOeHdf-Ztcz5vKq4F3xeirHM7TOkFoBb3s7s-SaZihTxACceBdTwarOZCJrX-yqTjyzVntqCE/s1600/P6010287.jpg" height="240" width="320" /></a></div>
<br />
材料はあらかじめホームセンターのカットサービスで切ってもらっておきます。長さは4種類。上の写真の上から順に、一つ目が底板4枚、二つ目が長手の側板4枚、三つ目が短手の側板4枚、四つ目が短手の側板の連結用2枚です。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3zZtFrFLCDfR03Et5TnAzmbKdjMzrQs06eMgxSgwk4ptDgI48Y6HiFLaVc-ogTj-xwsvvuF0FWZIRDOzvPnZ9aZPiprPSlHB8Ee6Mz7StH7piglgiL4d0Zpd0cAqGIh7DHBIustjmDfo/s1600/P6010292.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3zZtFrFLCDfR03Et5TnAzmbKdjMzrQs06eMgxSgwk4ptDgI48Y6HiFLaVc-ogTj-xwsvvuF0FWZIRDOzvPnZ9aZPiprPSlHB8Ee6Mz7StH7piglgiL4d0Zpd0cAqGIh7DHBIustjmDfo/s1600/P6010292.jpg" height="240" width="320" /></a></div>
<br />
ドリルで下穴を開けた上で、コーススレッドで締結していきます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2hKGF1IrIXTmfsqg25XJrLBQBTyJbIGJ7zuDHgK10Vk2uyDbqF_GaCxza05rQrG6hlelH8IOT9PMcMcaUanQUMC2wt-s45YXuvf8x39kjM4NKSevJ0eQHZHbfyFarmr5_VwlJBU7yxN8/s1600/P6040293.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2hKGF1IrIXTmfsqg25XJrLBQBTyJbIGJ7zuDHgK10Vk2uyDbqF_GaCxza05rQrG6hlelH8IOT9PMcMcaUanQUMC2wt-s45YXuvf8x39kjM4NKSevJ0eQHZHbfyFarmr5_VwlJBU7yxN8/s1600/P6040293.jpg" height="240" width="320" /></a></div>
<br />
組み上げたところ。底面側から。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigU06ILZtekNKVSniJ0trSmydEt7v2m9u0xWmLNOgxE6uDE4a_oBx16iRKEBKafd5e1_tUZWIdvtxzZne9I7SPnESE9YTEhWYvoz1HqMxQXcHPgLu4ibFnqnFlPOevuqB6DJk9za1I1f0/s1600/P6040295.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigU06ILZtekNKVSniJ0trSmydEt7v2m9u0xWmLNOgxE6uDE4a_oBx16iRKEBKafd5e1_tUZWIdvtxzZne9I7SPnESE9YTEhWYvoz1HqMxQXcHPgLu4ibFnqnFlPOevuqB6DJk9za1I1f0/s1600/P6040295.jpg" height="240" width="320" /></a></div>
<br />
上から。<br />
<br />
ここから塗装に入っていきます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh7N-1YQFvxyixq93ZzWX0c5f_ESNZLgGF3vI0EBKR4fiDXqbN6ZnMMqFwDqpFC5Dlv7118G7CC_OJjAfLWgnLhsuJ8hO2SL3ItA42g8A9HnWdQQH_X_vWHuMBusSQdP2vHYIpQNY_L90/s1600/P6040296.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh7N-1YQFvxyixq93ZzWX0c5f_ESNZLgGF3vI0EBKR4fiDXqbN6ZnMMqFwDqpFC5Dlv7118G7CC_OJjAfLWgnLhsuJ8hO2SL3ItA42g8A9HnWdQQH_X_vWHuMBusSQdP2vHYIpQNY_L90/s1600/P6040296.jpg" height="240" width="320" /></a></div>
今回使用した塗料はニッペのオイルステイン、「ウォルナット」カラーです。木目を生かしつつ使い込んだような風合いのつやと色むらを演出してくれて、渋い感じに仕上げることができます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9J7wa1wIE7KU3MvI288_OkACFoaSeg48m6fxbDmTxr9skivB-ul5QcOhyrEPnv32EIP8162tkhaNsGJahcJVPH1RZdrnVMerINmBdo8tZhnMyt3iLSfk6hZyrUcJw9uLaUVnFBPoY3ks/s1600/P6060299.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9J7wa1wIE7KU3MvI288_OkACFoaSeg48m6fxbDmTxr9skivB-ul5QcOhyrEPnv32EIP8162tkhaNsGJahcJVPH1RZdrnVMerINmBdo8tZhnMyt3iLSfk6hZyrUcJw9uLaUVnFBPoY3ks/s1600/P6060299.jpg" height="240" width="320" /></a></div>
<br />
軽く乾かしながら捨て木を挟んで底面からも塗っていきます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwALsXyV9xHudb8ALVMIQZqahq90t1wAG_x-1HhLt895xCxnFuyTEBLsYg0z7NAGwRbwAsWiMLXxDF8drh-ZC5-PenH3K7o1iir3quYmYnOOFj23JB5rSFb1w47XjcyhIycZ2mXjo4daQ/s1600/P6060300.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwALsXyV9xHudb8ALVMIQZqahq90t1wAG_x-1HhLt895xCxnFuyTEBLsYg0z7NAGwRbwAsWiMLXxDF8drh-ZC5-PenH3K7o1iir3quYmYnOOFj23JB5rSFb1w47XjcyhIycZ2mXjo4daQ/s1600/P6060300.jpg" height="240" width="320" /></a></div>
<br />
塗り残しが内容に気をつければ、多少のむらはかえっていい雰囲気になります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG25R17c4JXAmRY-N2mszSwjrGXNHblIxRuhKKavgyTvT68mH3M671sFaAmuB1asw-WX7Fk4MHNUq5-i_GuAOwMfgdBUNxkJ0YM0YDwz4hWGIK0jSfNwsV-cq4kmy2X7SDfvzSxD5-QuQ/s1600/PA142303.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG25R17c4JXAmRY-N2mszSwjrGXNHblIxRuhKKavgyTvT68mH3M671sFaAmuB1asw-WX7Fk4MHNUq5-i_GuAOwMfgdBUNxkJ0YM0YDwz4hWGIK0jSfNwsV-cq4kmy2X7SDfvzSxD5-QuQ/s1600/PA142303.JPG" height="240" width="320" /></a></div>
<br />
完成。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7U4HpKI9Ur8g5bUd8qirHD2w3WdK0QeeFqZVPHsWkPr8KihxVQsi3L1dTHYGz2x9TY0AYXoSRAtBmzaByxnRwkuQKpR4pPxU__poZhsQHa47LhFCmmc8fcMcvvoixeySW8E6h3F2T1Ew/s1600/PA142304.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7U4HpKI9Ur8g5bUd8qirHD2w3WdK0QeeFqZVPHsWkPr8KihxVQsi3L1dTHYGz2x9TY0AYXoSRAtBmzaByxnRwkuQKpR4pPxU__poZhsQHa47LhFCmmc8fcMcvvoixeySW8E6h3F2T1Ew/s1600/PA142304.JPG" height="240" width="320" /></a></div>
<br />
横置きが似合います。いくつか作ってスタックしてもおしゃれかな、きっと。<br />
<br />
SPF材だと規格上ごっつくアメリカンな感じになるので、もうちょい華奢な木材を選んで作ってみてもいいかも。kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-80987258522652155842014-09-25T00:40:00.002+09:002014-09-25T00:44:27.799+09:00UbuntuのXディスプレイをSSHからパワーセーブ解除するこんなことやりたい人がいるかわかりませんが、XディスプレイをSSHからパワーセーブしたり、パワーセーブを解除したりする方法について。<br />
<br />
通常、Xディスプレイを操作するにはxsetを使います。SSHから操作する場合もこれは変わりませんが、そのままのコマンドでは、SSHコンソールがグラフィカルウィンドウではないため、所望のXディスプレイを特定して操作することができません。したがって、<b>-display</b>ウィンドウを使ってXディスプレイを指定してやる必要があります。<br />
<br />
<b>-display</b>オプションに指定すべきサーバー名をうまいこと調べる方法がぐぐってもなかなか見つからないんですが、たぶん一番簡単にできるのは、当該のディスプレイ側で仮想コンソール(Xtermなどのターミナルソフト)を開いておいて、<b>w</b>コマンドを打つ方法です。<b>w</b>はSSHからでもOKです。<br />
<script class="brush: bash" type="syntaxhighlighter">
<![CDATA[
$ w
14:13:07 up 23:21, 2 users, load average: 0.48, 0.31, 0.25
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
pi pts/1 192.168.11.4 13:00 3.00s 3.64s 0.05s w
pi pts/2 :0 14:12 8.00s 0.74s 0.74s /bin/bash
]]>
</script>
ここでFROMにある<b>:0</b>とかがXディスプレイのサーバー名です。<br />
<br />
あとxsetコマンドがない場合は下記でパッケージインストールします。 <br />
<script class="brush: bash" type="syntaxhighlighter">
<![CDATA[
$ sudo apt-get install x11-xserver-utils
]]>
</script>
まずは、パワーセーブを解除して復帰させるコマンド。<br />
<script class="brush: bash" type="syntaxhighlighter">
<![CDATA[
$ xset -display :0 dpms force on
]]>
</script>
次に、指定時間でパワーセーブに入らせるコマンド。<br />
<script class="brush: bash" type="syntaxhighlighter">
<![CDATA[
$ xset -display :0 s 5
]]>
</script>
タイムアウトを秒単位で指定できます。<br />
すぐにオフにしたい場合は、<br />
<script class="brush: bash" type="syntaxhighlighter">
<![CDATA[
$ xset -display :0 dpms force off
]]>
</script>
それからデフォルトのタイムアウト時間を指定しておきたい場合は、 <b>/etc/X11/xorg.conf.d/</b>の下に<b>conf</b>ファイルを作っておく。<br />
<script class="brush: bash" type="syntaxhighlighter">
<![CDATA[
$ sudo vim /etc/X11/xorg.conf.d/10-monitor.conf
]]>
</script>
<b>ServerLayout</b>セクションの<b>Option</b>エントリで、"0"を指定するとその機能が無効、それ以外の数字を指定した場合は、分単位でタイムアウト時間が設定される。<br />
<script class="brush: bash" type="syntaxhighlighter">
<![CDATA[
Section "Monitor"
Identifier "LVDS0"
Option "DPMS" "true"
EndSection
Section "ServerLayout"
Identifier "ServerLayout0"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "1"
EndSection
]]>
</script>
この場合、1分でディスプレイがオフになる。あと<b>Monitor</b>セクションの<b>Option</b>でDPMSを有効にしておく必要があるようです。<br />
<br />
Raspberry PiにつないでいるUSB接続のDisplayLinkモニタをセンサー入力でオンできないかなー、なんてのが動機ですが、そこまでやるかは気分次第。<br />
<br />
<hr />
<h4>
参考</h4>
<a href="https://wiki.archlinux.org/index.php/Display_Power_Management_Signaling_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29" target="_blank">Display Power Management Signaling (日本語) - ArchWiki</a><br />
<a href="http://www.shallowsky.com/linux/x-screen-blanking.html" target="_blank">A Primer on Screen Blanking Under Xorg - Shallowsky.com</a><br />
<a href="http://askubuntu.com/questions/230835/list-existing-x-display-names" target="_blank">list existing X display names? - Ask Ubuntu</a><br />
<br />kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-65725040278174604642014-07-21T22:17:00.000+09:002014-07-21T22:17:48.526+09:00Makers' Baseでレーザーカッターのトレーニングを受けてきたもう一年以上前の話になりますが、 <a href="http://apc.io/products/paper/" target="_blank">APC Paper</a>に感化されて、<a href="http://atelier-orchard.blogspot.jp/2013/05/apc-paper-alternative_5.html" target="_blank">シングルボードコンピュータを入れるための紙箱を作った</a>ことがありました。2mm厚のボール紙を材料に使ったんですが、これを切り出すために、寸法を測り、目印をつけて、定規を当ててカッターで切る、という作業はすごく手間がかかるということ。垂直をとるように気をつけないといけないので、当然たくさん作るのも大変。それで当時、何とか楽にできる方法はないかと頭を悩ませ、裁断機を使うなんてことまで考えたんですが、いつしかレーザーカッターという文明の利器に頼ってはどうかと思い抱くようになりました。<br />
<br />
暫くして、 レーザーカッターの使い方を教えてもらえるような場所を探しているうち、たどり着いたのが今回お邪魔した東京は目黒の<a href="http://makers-base.com/" target="_blank">Maker's Base</a>さんです。こちらでレーザーカッターのトレーニングを受講することで、それ以降施設のレーザーカッター設備を時間借りできるようになります。さらにレーザーカッターのみならず、木工や金工、陶芸、3Dプリンター、シルクスクリーンといった様々な工作、造形技術のトレーニングと設備の時間貸しを行っています。去年流行った言葉で言うところのパーソナルファブリケーションをするための施設と言えます。<br />
<br />
さて、雨もそぼ降る初夏の候、Webからばっちり予約をしてレーザーカッターのトレーニングを実際に受講してきました。JR目黒駅を西へ出たら、タクシーがベタ踏みで登っていく大円寺横の行人坂を下り、雅叙園を横目に、春には桜が綺麗だったであろう目黒川を越えると、住宅街の一角にMaker's Baseさんがあります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73xmCKRPsDEnOOkJF6ml2B0SD__7Vuayd-6jK3ghrxrnNaHT9xdcaAu9rtUtnrwFXfWeDdJstrG4hkx_mENRfFH1P4TMJ-nlEAJNHOq1Bj8IG2hrSx4qDXFn6Xwe8k8M-GGI9tcwW-UA/s1600/20140607_190010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73xmCKRPsDEnOOkJF6ml2B0SD__7Vuayd-6jK3ghrxrnNaHT9xdcaAu9rtUtnrwFXfWeDdJstrG4hkx_mENRfFH1P4TMJ-nlEAJNHOq1Bj8IG2hrSx4qDXFn6Xwe8k8M-GGI9tcwW-UA/s1600/20140607_190010.jpg" height="320" width="240" /></a></div>
<br />
2階のレセプションでトレーニング受講に訪れた旨を伝え、簡単な質問票(アンケート?)記入の後、トレーニングへ。私のときは講師1名に受講者3名、濃厚な少人数制クラスで上達せざるを得ません。2時間枠のトレーニングで最初はテキストを使った講習、機材の使い方を覚えます。次に同施設の備品のタブレットPCを使いカットのためのベクターデータ作成。続いてタブレットからレーザーカッター本体へベクターデータ出力をし、実際にカット。最後に、自由制作です。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoBjfYjjR65jPD0IoUG-mb9o86fUobdY4HgoBL9iWBdXr35qonIzaH116uAemZLwtz-p25lMPdJXMW3rm5xLL3-APWTuwBcWb0ylfUVVnx50r1H5GUjbI-46gbAtGNGX_HIM2ilxN1PU/s1600/20140607_204913.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoBjfYjjR65jPD0IoUG-mb9o86fUobdY4HgoBL9iWBdXr35qonIzaH116uAemZLwtz-p25lMPdJXMW3rm5xLL3-APWTuwBcWb0ylfUVVnx50r1H5GUjbI-46gbAtGNGX_HIM2ilxN1PU/s1600/20140607_204913.jpg" height="320" width="240" /></a></div>
<span id="goog_622452103"></span><span id="goog_622452104"></span><br />
ところで、さっきからカット、カットと言っていますが、レーザーカッターでは素材のカットだけではなく表面への彫刻も可能です。濃淡は表現できず完全な二値画像としての出力になりますが、解像度は結構高いので、ハーフトーン等で多少の表現は可能と思われます。<br />
実際に、アクリル板に画像ベースの彫刻を試してみました。↓の画像の手前にある方はたまたまタブレットの中に入っていた画像で、↑のレーザープリンタを撮影したものと思われます。タブレットにインストールされていたイラストエディターで(トーンマップ機能を使った突貫の)二値化をして出力させました。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVJaFEh2DpM2Y-MWx7CNZJqm7sGH7ueibhFmkZlYb1PiafThcSKjY_-ii4yIHWOUEQjgbJ7kSfPjzUtQ4UZYbTyAbTOdi4xnfq73Gbz7PWmnfPOsOgnSQkuyw96NywGX63LLz6HstVWO4/s1600/20140607_204902.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVJaFEh2DpM2Y-MWx7CNZJqm7sGH7ueibhFmkZlYb1PiafThcSKjY_-ii4yIHWOUEQjgbJ7kSfPjzUtQ4UZYbTyAbTOdi4xnfq73Gbz7PWmnfPOsOgnSQkuyw96NywGX63LLz6HstVWO4/s1600/20140607_204902.jpg" height="277" width="320" /></a></div>
<br />
最後に、せっかくなら誰もレーザーカッターで出力したことのなさそうなものを作ってレーザーカッター史に名を残そうと思い、某天才コメディアンの殿様をオマージュしてみました↓。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizfE7vK30FUQ9CP-nSCH-P4V9Y-tKTNos2UXeet_xLmQnaHm30OW2fkEqHOY3nDC1Y2zEdcjqf-Ion-74wiGWC2VvT6rFIAXK8dCKH0P0rXC9AHvkMDvK01Nuvvm1Y_1cXiBqc_G4aKtI/s1600/20140702_235320.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizfE7vK30FUQ9CP-nSCH-P4V9Y-tKTNos2UXeet_xLmQnaHm30OW2fkEqHOY3nDC1Y2zEdcjqf-Ion-74wiGWC2VvT6rFIAXK8dCKH0P0rXC9AHvkMDvK01Nuvvm1Y_1cXiBqc_G4aKtI/s1600/20140702_235320.jpg" height="240" width="320" /></a></div>
<br />
そんな感じでトレーニング用に支給いただいたアクリル板から3作品(?)切り出したところで時間いっぱいとなりました。今後、作業性アップのために鍛錬することが課題ですね。<br />
切断する素材によって出力時にレーザーカッターのパワーとスピードを決めなければいけないので、厚紙カットのチャレンジはまた追い追い。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf6TFCHB1kw1fin6K5059PG7cWKlCSi7ZJ7-y8ze-RvT4du5Wfc-KwfLxoaa6F3FI8ZZ05FnB7Kez0XQyckaoZx1xfwm0PwEBLjZGTG6lbp0bDsgY8SDic9R6aqPx4i-KTfrbYOLHMuws/s1600/20140607_212821.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf6TFCHB1kw1fin6K5059PG7cWKlCSi7ZJ7-y8ze-RvT4du5Wfc-KwfLxoaa6F3FI8ZZ05FnB7Kez0XQyckaoZx1xfwm0PwEBLjZGTG6lbp0bDsgY8SDic9R6aqPx4i-KTfrbYOLHMuws/s1600/20140607_212821.jpg" height="240" width="320" /></a></div>
<br />
麺屋百式さんでラーメン食べて帰りました。kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-7827946576725290782014-07-13T01:49:00.000+09:002014-07-13T01:49:17.410+09:00UDOO(i.MX6)用Ubuntu 13.10のSDカードセットアップ<a href="http://www.udoo.org/downloads/#tab2" target="_blank">UDOO公式</a>で配布されているUbuntuのバージョンは12.04と若干古めなんですが、<a href="http://jas-hacks.blogspot.jp/2013/10/imx6-ubuntu-1304-with-gpu-acceleration.html" target="_blank">こちらのブログ</a>で13.04のファイルシステムが配布されているのをたまたま見つけたので、インストールしてみることに。とりあえずカーネルとU-Bootは公式のものをそのまま使い、ファイルシステムだけ13.04にしてみます。<br />
<br />
作業はLinuxマシンで行います。<br />
<br />
<h4>
<span style="color: yellow;">1.ルートファイルシステム、カーネル、カーネルモジュール、U-Bootのダウンロード</span></h4>
<br />
まずは必要なものをもろもろダウンロードしてきます。<br />
<br />
U-Boot。i.MX6 DualモデルとQuadモデルで違うので注意。 <br />
<pre class="prettyprint lang-bash">$ wget http://udoo.org/download/files/UDOO_Unico/u-Boot_Quad/u-boot-q.imx
</pre>
次にカーネルイメージ。<br />
<pre class="prettyprint lang-bash">$ wget http://udoo.org/download/files/UDOO_Unico/Kernel/uImage
</pre>
それからカーネルモジュールも。<br />
<pre class="prettyprint lang-bash">$ wget http://udoo.org/download/files/UDOO_Unico/Kernel/modules.tar.gz
</pre>
後は件のルートファイルシステム(rootfs)。<br />
<pre class="prettyprint lang-bash">$ wget http://stende.no-ip.info/jas/xubuntu_13_04_gpu.tar.gz
</pre>
<br />
<h4>
<span style="color: yellow;">2. SDカードのパーティショニング</span></h4>
<br />
役者がそろったら、彼らに最高のステージを。SDカード。UDOOの場合はマイクロSDですな。たぶん2GBとかでもいけますけど、今日日Class10の16GBくらいじゃないと使う気になれませんね。笑<br />
SDカードをカードリーダとかに挿してホストマシンに接続したら、dmesgとかでデバイス名を確認しておきます。パーティショニングはこの後すぐ!ホストマシンのHDDと間違えるなよ!絶対にだぞ!<br />
<pre class="prettyprint lang-bash"> sdf: sdf1
</pre>
既存パーティションがある場合には上記のようにsdXのあとに数字のついたデバイスが見えるはず。いずれにせよ消しちゃうのであってもなくてもOK。<br />
<br />
パーティショニングの作業はお好きなツールで。GUIならGpartedが便利ですよね。その昔、Beagleboardなんかいじってたころは<a href="http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat" target="_blank">fdiskでSDカードをフォーマット</a>したものです。最近はでっかいHDDをいじるときにfdiskがGPTに対応してなかったりするんで、私はpartedに移りつつあります。そんなわけでpartedを使ってやっていきましょう。<br />
<pre class="prettyprint lang-bash">$ sudo parted /dev/sdf
</pre>
まずは<b>print</b>で中身を見てみる。<br />
<pre class="prettyprint lang-bash">(parted) print
モデル: I-O DATA micro SD Reader (scsi)
ディスク /dev/sdf: 15.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 4194kB 15.9GB 15.9GB primary fat32 lba
</pre>
既存のパーティション1を<b>rm</b>で削除。<br />
<pre class="prettyprint lang-bash">(parted) rm 1
(parted) print
モデル: I-O DATA micro SD Reader (scsi)
ディスク /dev/sdf: 15.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
</pre>
次に<b>mkpart</b>でパーティションの作成。ファイルシステムはEXT3、サイズは先頭を10MiBほど空けて、後ろはSDカードサイズいっぱいにとってあげましょう。(パーティションテーブルをmsdosに直す場合は<b>mklabel</b>でできます。)<br />
<pre class="prettyprint lang-bash">(parted) mkpart primary ext3 10MiB 15.9GB
(parted) print
モデル: I-O DATA micro SD Reader (scsi)
ディスク /dev/sdf: 15.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 10.5MB 15.9GB 15.9GB primary
</pre>
<b>quit</b>で終了。<br />
<pre class="prettyprint lang-bash">(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
</pre>
パーティショニングでEXT3指定をしましたが、<b>mkfs</b>もしたほうがいいっぽいので、<br />
<pre class="prettyprint lang-bash">$ sudo mkfs.ext3 /dev/sdf1
</pre>
はい。これで完了です。<br />
<br />
<h4>
<span style="color: yellow;">3. SDカードへの書き込み</span></h4>
<br />
できたパーティションに先ほどダウンロードしたルートファイルシステムを書き込んでいきます。<br />
まずはローカルにマウントポイントのディレクトリを作成し、マウント。<br />
<pre class="prettyprint lang-bash">$ mkdir sdcard
$ sudo mount /dev/sdf1 sdcard
</pre>
ルートファイルシステムをマウントしたSDカードのパーティションへ展開。sudoを忘れずに。<br />
<pre class="prettyprint lang-bash">$ sudo tar -xzpf xubuntu_13_04_gpu.tar.gz -C sdcard/
</pre>
続いてカーネルのコピー。<br />
<pre class="prettyprint lang-bash">$ sudo cp uImage sdcard/boot
</pre>
それからカーネルモジュール。既存のものを消してから。<br />
<pre class="prettyprint lang-bash">$ sudo rm -rv sdcard/lib/modules/*
$ sudo cp -av lib sdcard/
</pre>
ここまでできたら、アンマウントします。<br />
<pre class="prettyprint lang-bash">$ sudo umount sdcard
</pre>
最後に、SDカードにU-bootを書き込みます。<br />
<pre class="prettyprint lang-bash">$ sudo dd if=u-boot-q.imx of=/dev/sdf bs=512 seek=2
</pre>
これでSDカードの準備は完了。syncしてからSDカードを取り外し。<br />
<pre class="prettyprint lang-bash">$ sync
</pre>
ボードに挿して起動します。<br />
<br />
<h4>
<span style="color: yellow;">(おまけ) Ethernetインタフェースのセットアップ</span></h4>
<br />
そのままだとEthernetに接続できませんが、<b>/etc/network/interfaces</b>に下記を追加し、<br />
<pre class="prettyprint lang-bash">auto eth1
iface eth1 inet dhcp
</pre>
下記でEthernetのインタフェースを起動すればOKです。<br />
<pre class="prettyprint lang-bash">$ sudo ifup eth1
</pre>
<hr />
参考<br />
<a href="http://jas-hacks.blogspot.jp/2013/10/imx6-ubuntu-1304-with-gpu-acceleration.html" target="_blank">I.MX6 - Ubuntu 13.04 with GPU acceleration - Tiny Devices</a><br />
<a href="http://www.elinux.org/UDOO_creating_a_bootable_Micro_SD_card_from_precompiled_binaries" target="_blank">UDOO creating a bootable Micro SD card from precompiled binaries - eLinux.org</a><br />
<a href="http://atelier-orchard.blogspot.jp/2014/02/udooubuntu.html" target="_blank">UDOOのUbuntuでネットワークに接続できない - Atelier Orchard</a>kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-61624300109608328142014-05-20T02:18:00.000+09:002014-05-21T08:51:30.820+09:00ウェブカメラのフォーカス新しいウェブカメラを買いました。Logicoolの<a href="http://www.logicool.co.jp/ja-jp/product/hd-pro-webcam-c920" target="_blank">C920t</a>。実勢で一万円ほどする高級ウェブカムですよ。Raspberry PiとかUDOOとかのARMシングルボードコンピュータとつなげて遊ぶウェブカムとしては、もともと持っていたバッファローの<a href="http://buffalo.jp/products/catalog/supply/multimedia/webcamera/320/bsw32km01h/" target="_blank">BSW32KM01H</a>を使っていたんですが、最近マクロ寄りの距離でタイムラプスを撮りたいとこっそり妄想していて、それができそうなウェブカムを探していたのです。<br />
C920tは価格.comのWebカメラランキングでも上位にあるのですぐにアンテナにかかりましたが、決め手は<br />
<ul>
<li>最短7cmのとってもマクロな焦点距離</li>
</ul>
の他にも、<br />
<ul>
<li>UVC対応</li>
<li>ハードウェアH.264エンコード</li>
<li>海外のウェブカムハックでよく話に挙がっている</li>
<li>三脚雲台ネジ穴 </li>
</ul>
といったところがあります。ついでに言うと、「カールツァイスレンズ搭載」というのもこの製品の売りだそう。<br />
<br />
さっそくボードにつないで実験してみるわけですが、ARMボードでの使用となれば、早々簡単にはいかない。<b>uvccapture</b>で静止画撮影してみたんですが、Raspberry Piで撮るとやけに暗いし色もおかしい。UDOOだとそれなりにきれいに撮れるのに。<b>uvccapture -v</b>で調べてみた結果、<b>Brightness</b>、<b>Contrast</b>、<b>Saturation</b>、<b>Gain</b>の設定がおかしくなっていた。uvccaptureのソースを読んでみると、コマンドラインから前記のパラメータが指定されていない場合、v4l2ドライバへのioctlコールでパラメータリセットがかかる。そうなると、これがRPi固有の問題か、他のカーネルでも同じかわかんないけど、おかしな設定になってしまう。あとuvccaptureのソースを読んだついでに書いておくと、前記パラメータに0を指定すると無視されてリセットがかかり、やはりおかしな初期値が使われる。これはさすがにバグだと思う。<br />
<br />
さて、UDOOを参考に<br />
<ul>
<li><b>Brightness: 128</b></li>
<li><b>Contrast: 128</b></li>
<li><b>Saturation: 128</b></li>
<li><b>Gain: 1</b></li>
</ul>
で、RPiでもそれなりに素敵に撮れるようにできた。<br />
<br />
でもまだ問題が残る。フォーカスである。<br />
<br />
カメラの前に被写体として瓶を置いて撮ってみるものの、ピントが合ってない。さてどうしたものかと思っていろいろいじっていると、<b>v4l2-ctl</b>でフォーカスの設定ができそうなことに気づく。<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --list-ctrls
...
focus_absolute (int) : min=0 max=250 step=5 default=8189 value=0 flags=inactive
focus_auto (bool) : default=1 value=1
...
</pre>
これが使えるとしたら、UVCもなかなか気が利く。<br />
<br />
まずはオートフォーカスをオフに。<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --set-ctrl focus_auto=0
</pre>
次に<b>focus_absolute</b>という値をいじってみる。今の設定値は<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --get-ctrl focus_absolute
focus_absolute: 0
</pre>
なので、ここから少しずつ刻みながら画像を確認してみる。<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --set-ctrl focus_absolute=0
$ uvccapture -x1920 -y1080 -B128 -C128 -S128 -G1 -ofocus00.jpg
$ v4l2-ctl --set-ctrl focus_absolute=10
$ uvccapture -x1920 -y1080 -B128 -C128 -S128 -G1 -ofocus10.jpg
$ v4l2-ctl --set-ctrl focus_absolute=20
$ uvccapture -x1920 -y1080 -B128 -C128 -S128 -G1 -ofocus20.jpg
$ v4l2-ctl --set-ctrl focus_absolute=30
$ uvccapture -x1920 -y1080 -B128 -C128 -S128 -G1 -ofocus30.jpg
$ v4l2-ctl --set-ctrl focus_absolute=40
$ uvccapture -x1920 -y1080 -B128 -C128 -S128 -G1 -ofocus40.jpg
$ v4l2-ctl --set-ctrl focus_absolute=50
$ uvccapture -x1920 -y1080 -B128 -C128 -S128 -G1 -ofocus50.jpg
$ v4l2-ctl --set-ctrl focus_absolute=60
$ uvccapture -x1920 -y1080 -B128 -C128 -S128 -G1 -ofocus60.jpg
</pre>
で、結果が下の画像。なおカメラから被写体までの距離は、チポトレソースが約10cm、シナモンシュガーが約20cm、ボトルのビールが約30cmです。(ちなみにこれらはアメリカのトレーダージョーで買い漁ってきた物。)<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSUn7_g7F9sIrbRUl0FcJHYfwUnZeIBzdZlsIlsFzKaKf-JEfZFuLyokaKlhbELwzcqOgYK8Wjv4eNkfUOEilbYksqGEuN8fzncdb8S06809wFI8zLV3JIWmTa-xSdMUu0fF1LHigVbyY/s1600/focus00.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSUn7_g7F9sIrbRUl0FcJHYfwUnZeIBzdZlsIlsFzKaKf-JEfZFuLyokaKlhbELwzcqOgYK8Wjv4eNkfUOEilbYksqGEuN8fzncdb8S06809wFI8zLV3JIWmTa-xSdMUu0fF1LHigVbyY/s1600/focus00.jpg" height="225" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: red;">focus_absolute=0</span></b></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7zuNnA7QWNrnXGforXT40n0cSsvGtIb4Pw7MSp8Cx28UNIRvaeoN4Ze1JKsSoChVHZl7NDYLzuiayxnKaxrg84n27zsNI4QcWwdeI22ct7Vu-mhK4TdEXXH2m7GOAOQ0UiLo7qGSovwI/s1600/focus10.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7zuNnA7QWNrnXGforXT40n0cSsvGtIb4Pw7MSp8Cx28UNIRvaeoN4Ze1JKsSoChVHZl7NDYLzuiayxnKaxrg84n27zsNI4QcWwdeI22ct7Vu-mhK4TdEXXH2m7GOAOQ0UiLo7qGSovwI/s1600/focus10.jpg" height="225" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: red;">focus_absolute=10</span></b></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinj7YWg_gUE8sLgEL8xkosDMHY8oJJ1Q-2vsH9_90dTtT1iFkYkjOk2yJO0PfnVruAyEA2P2bJhbfnRkw7H5U5MNoZdmo8llVsphLc2zdvMR-QcfH0g46b0ATDLYP8u5wXdaGKPTwTAUw/s1600/focus20.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinj7YWg_gUE8sLgEL8xkosDMHY8oJJ1Q-2vsH9_90dTtT1iFkYkjOk2yJO0PfnVruAyEA2P2bJhbfnRkw7H5U5MNoZdmo8llVsphLc2zdvMR-QcfH0g46b0ATDLYP8u5wXdaGKPTwTAUw/s1600/focus20.jpg" height="225" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: red;">focus_absolute=20</span></b></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcuGmjkVEDyUljRuR92CaMO0mviWUPmcldJ1qQca3zRAE5aRsD2nAElVZPS223BWRAh0J0csVM5C5MmqVHoyTlqVffOxybjimBtkgN-MFR1FH_tqOvJlulUZz-tImYxgpfMYsWXsRG1C0/s1600/focus30.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcuGmjkVEDyUljRuR92CaMO0mviWUPmcldJ1qQca3zRAE5aRsD2nAElVZPS223BWRAh0J0csVM5C5MmqVHoyTlqVffOxybjimBtkgN-MFR1FH_tqOvJlulUZz-tImYxgpfMYsWXsRG1C0/s1600/focus30.jpg" height="225" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: red;">focus_absolute=30</span></b></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO34Bs0uw7JvOSqJjgAu67xEoO3zvVabg8BwEAV8-qQO__Tx92YSTQnMB7wgBhQ7E7-QVxR__xiIYlnxTBkF1WkOsGcqoWV9WqRCi6hHlYitdfKpHoAV__ZX5SDT2f6kPIZV5xNSmlAcE/s1600/focus40.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO34Bs0uw7JvOSqJjgAu67xEoO3zvVabg8BwEAV8-qQO__Tx92YSTQnMB7wgBhQ7E7-QVxR__xiIYlnxTBkF1WkOsGcqoWV9WqRCi6hHlYitdfKpHoAV__ZX5SDT2f6kPIZV5xNSmlAcE/s1600/focus40.jpg" height="225" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: red;">focus_absolute=40</span></b></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0YifnFnOiZEJQN6EM1Amm2MAEt38icEeeYy_1kM5x7fK0DdGONheiR70B3dgbYN5v_uQmECrslN0zSYGAuUx9ocujwGZuFjQzT6WTVDpAbii_KWc56L077XQsnIDRKFwcoH23-4jSiUs/s1600/focus50.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0YifnFnOiZEJQN6EM1Amm2MAEt38icEeeYy_1kM5x7fK0DdGONheiR70B3dgbYN5v_uQmECrslN0zSYGAuUx9ocujwGZuFjQzT6WTVDpAbii_KWc56L077XQsnIDRKFwcoH23-4jSiUs/s1600/focus50.jpg" height="225" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: red;">focus_absolute=50</span></b></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizQn4q83adD_WZ6YzugO27wcICKPLakY05er3iqoQpKfq19O5QPuc-Od8sXGvDHPNqjioz8qge54bNPPA1jd5BYDqkKcWUiCOowlbYQfR3UFx5TUmVvf_N8MNFvgHDsvTxuU71JCXBG-A/s1600/focus60.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizQn4q83adD_WZ6YzugO27wcICKPLakY05er3iqoQpKfq19O5QPuc-Od8sXGvDHPNqjioz8qge54bNPPA1jd5BYDqkKcWUiCOowlbYQfR3UFx5TUmVvf_N8MNFvgHDsvTxuU71JCXBG-A/s1600/focus60.jpg" height="225" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: red;">focus_absolute=60</span></b></td></tr>
</tbody></table>
<div style="text-align: center;">
撮影風景↓</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfOngwQcxqTWHYyB4sqsqRGoqCb2QuSrOcrhaBhqUD8ssKaGtNxOhReYgEf3zjiBc10jZHEFhXgrW7EnPqgWO50glVaF89cR0conpDpt5v6S-p1zp-R71-GYI3FED13MSjWCZ845s5CvM/s1600/P5200280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfOngwQcxqTWHYyB4sqsqRGoqCb2QuSrOcrhaBhqUD8ssKaGtNxOhReYgEf3zjiBc10jZHEFhXgrW7EnPqgWO50glVaF89cR0conpDpt5v6S-p1zp-R71-GYI3FED13MSjWCZ845s5CvM/s1600/P5200280.jpg" height="240" width="320" /></a></div>
<br />
まず<b>focus_absolute</b>に関してわかるのは、値が小さいほど無限遠側、大きいほどマクロ側のフォーカスとなること。それから10~30cm程度の近距離の被写体をうまく収める設定値はなさそう。10~40あたりの範囲で好みを調整するといいかもしれない。<br />
<br />
オートフォーカスのときにどういう測距点を使っているのかわかりませんが、ちゃんと撮りたければマニュアルで設定してあげるほうがよさそうです。kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-36711701211951746642014-05-13T03:26:00.000+09:002014-05-13T03:26:36.543+09:00MEncoderで動画変換streamerコマンドを使って、Linuxコマンドラインでウェブカメラ録画をしてみた(<a href="http://atelier-orchard.blogspot.jp/2014/05/linux.html" target="_blank">関連記事</a>)けど、うまいことエンコードできず無圧縮AVIのまま保存していたので、ファイルサイズがすごく大きい。<br />
<br />
そこで、あとからでも圧縮できないかと思ってちょっと調べてみたところ、とりあえずMEncoderを使ってMPEG2にできた。<br />
<br />
mencoderがインストールされていなければ、まずはインストール。<br />
<pre class="prettyprint lang-bash">$ sudo apt-get install -y mencoder
</pre>
<br />
で、AVI→MPEG2の圧縮が<br />
<pre class="prettyprint lang-bash">$ mencoder input.avi -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy -o output.mpg
</pre>
でできた。元ファイルが320x240/10fpsの10秒のRGB24で約24MB、圧縮後が約820kBなので、だいたい1/30になった。<br />
<br />
H.264とかもできたらいいなー。オプションとかいろいろ調べてみよう。<br />
<hr />
<h4>
参考</h4>
<a href="http://www.mplayerhq.hu/DOCS/HTML/en/mencoder.html" target="_blank">Chapter 6. Basic usage of MEncoder - MPlayer - The Movie Player</a><br />
<br />kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-88870814386050743852014-05-13T01:15:00.003+09:002014-05-13T01:15:40.851+09:00ホワイトバランス設定してウェブカメラ録画Linuxのコマンドラインでウェブカメラを使った動画撮影をする方法を<a href="http://atelier-orchard.blogspot.jp/2014/05/linux.html">昨日書いた</a>んですが、若干ホワイトバランスが要調整という感じだった。ので、ホワイトバランス設定してから撮影する方法。<br />
<br />
v4l2-ctlというツールを使います。インストールされていなければ<br />
<pre class="prettyprint lang-bash">$ sudo apt-get install v4l-utils
</pre>
でパッケージをインストール。<br />
<br />
で、まずホワイトバランスを含め設定可能なパラメータの一覧を表示。<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --list-ctrls
brightness (int) : min=-64 max=64 step=1 default=0 value=0
contrast (int) : min=0 max=64 step=1 default=32 value=32
saturation (int) : min=0 max=128 step=1 default=67 value=67
hue (int) : min=-40 max=40 step=1 default=0 value=0
white_balance_temperature_auto (bool) : default=1 value=1
gamma (int) : min=72 max=150 step=1 default=110 value=110
gain (int) : min=0 max=80 step=1 default=0 value=0
power_line_frequency (menu) : min=0 max=2 default=2 value=2
white_balance_temperature (int) : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
sharpness (int) : min=0 max=6 step=1 default=3 value=3
backlight_compensation (int) : min=0 max=2 step=1 default=1 value=1
</pre>
<br />
現在の設定値の取得は<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --get-ctrl white_balance_temperature
white_balance_temperature: 4600
</pre>
オートホワイトバランスのON/OFF確認なら<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --get-ctrl white_balance_temperature_auto
white_balance_temperature_auto: 1
</pre>
でできる。<br />
<br />
実際にホワイトバランスを設定してみる。オートホワイトバランスを切る必要があるので、white_balance_temperature_auto=0を入れる。で、色温度最低は<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --set-ctrl=white_balance_temperature_auto=0,white_balance_temperature=2800
</pre>
色温度最高なら<br />
<pre class="prettyprint lang-bash">$ v4l2-ctl --set-ctrl=white_balance_temperature_auto=0,white_balance_temperature=6500
</pre>
で設定できる。<br />
<br />
あとは昨日書いた下記のコマンドで撮影してみると、違いがわかります。<br />
<pre class="prettyprint lang-bash">$ streamer -c /dev/video0 -o test.avi -t 0:10 -s 320x240 -f rgb24
</pre>
<hr />
<h4>
参考</h4>
<a href="http://www.techytalk.info/webcam-settings-control-ubuntu-fedora-linux-operating-system-cli/" target="_blank">Webcam settings on Ubuntu and Fedora Linux CLI from terminal - TechyTalk.info</a>kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-40350548787426081462014-05-12T00:34:00.000+09:002014-05-13T01:16:40.074+09:00Linuxコマンドラインでウェブカメラ動画撮影の実験Raspberry PiのようなARMボードでも、x86マシンでも何でもいいんですが、ウェブカメラで動画撮影しようとして調べると、streamer、mencoder、gstreamer、v4l2-ctl、ffmpeg(avconv)などなど、いろんなツールがあるっぽい。ちょろっと試してみた結果、streamerでとりあえず録画できるやり方があったので、とりあえずメモ。<br />
<pre class="prettyprint lang-bash">$ streamer -c /dev/video0 -o test.avi -t 0:10 -s 320x240 -f rgb24
avi / video: 24 bit TrueColor (LE: bgr) / audio: none
rate: queueing frame twice (18446511) -0.00s [0]
...
</pre>
ただし、このコマンドだと無圧縮AVIになるので、すごくストレージ容量を食う。320x240サイズの10fpsが10秒で25MBくらい。より大きな解像度、高いフレームレート、長い時間で、と考えたら、おそろしいことに。<br />
そこでstreamerのヘルプを見ると<br />
<pre class="prettyprint lang-bash">$ streamer -h
...
movie writers:
...
avi - Microsoft AVI (RIFF) format
video formats:
rgb15 15 bit TrueColor (LE) [avi]
rgb24 24 bit TrueColor (LE: bgr) [avi]
mjpeg MJPEG (AVI) [avi]
jpeg JPEG (JFIF) [avi]
...
</pre>
ということなのでMJPEGを試してみるんですが、<br />
<pre class="prettyprint lang-bash">$ streamer -c /dev/video0 -o test.avi -t 0:10 -s 320x240 -f mjpeg
avi / video: MJPEG (AVI) / audio: none
no way to get: 320x240 MJPEG (AVI)
movie writer initialisation failed
</pre>
となってしまう。何が足りないのかな。。<br />
あとホワイトバランスも直さないとな。<br />
<br />
なおウェブカメラの設定可能な解像度は下記コマンドで確認可能。<br />
<pre class="prettyprint lang-bash">$ uvcdynctrl -d video0 -f
</pre>
<br />kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-40836999091061577112014-05-07T22:41:00.000+09:002014-05-07T22:42:07.828+09:00APTパッケージのソースを取得する。Raspberry Piで。Raspberry PiのOS「Raspbian」で、apt-getでインストールするパッケージのソースを取得する方法。<br />
<br />
いま手元で使っているバージョン(2014年1月版のイメージ、カーネル3.10.25+)だと、<b>/etc/apt/sources.list</b>に一行追加してやる必要がありました。<br />
<pre class="prettyprint lang-bash">$ sudo vim /etc/apt/sources.list
</pre>
<pre class="prettyprint lang-bash">deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi #この行を追加
</pre>
これをしないと、「<b>E: sources.list に 'ソース' URI を指定する必要があります</b>」と言われます。<br />
<br />
追加できたら、アップデート。<br />
<pre class="prettyprint lang-bash">$ sudo apt-get update
</pre>
あとはお好きなパッケージのソースをお落とし下さいませ、と。 <br />
<pre class="prettyprint lang-bash">$ apt-get source uvccapture streamer v4l-utils
</pre>
<hr />
<h4>
参考</h4>
<a href="http://www.raspbian.org/" target="_blank">Raspbian Repository</a>kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-31680777364367498662014-05-04T20:32:00.001+09:002014-05-04T20:32:33.544+09:00crontab -eのエディターをVimに変更するRaspberry Piでcorntab -eしたら、使い慣れないnanoが起動した。なので、vimに変えたい。<br />
<br />
Ubuntuとかだと、<b>select-editor</b>コマンドで対話型のメニューから変更できるみたいですね。はじめてcrontab -eを使おうとしたときにも同様に選べます。<br />
<br />
調べてみると、crontab -eのエディター起動は<b>editor</b>コマンドが呼ばれてるっぽい。whereすると<b>/usr/bin/editor</b>にあるんですけど、これは<b>/etc/alternatives/editor</b>へのシンボリックリンク。さらにそれがエディタープログラム本体(/bin/nano)へのシンボリックリンクになっている。<br />
<br />
Raspbianではselect-editorコマンドがないっぽいので、このシンボリックリンクを手動で変更してやります。<br />
<pre class="prettyprint lang-bash">$ sudo ln -sf /usr/bin/vim /etc/alternatives/editor
</pre>
既存のシンボリックリンクを強制上書きするため、lnコマンドに-fオプションをつけます。これでcrontab -eのエディタをVimに変更できました。<br />
<hr />
参考<br />
<a href="http://www.linuxquestions.org/questions/red-hat-31/how-to-change-the-default-crontab-editor-395750/#post2012553" target="_blank">How to change the default crontab editor - LinuxQuestions.org</a><br />
<a href="http://blog.y--9.jp/2011/03/blog-post.html" target="_blank">シンボリックリンクの張替え - ブログ名は後で考える</a><br />
<br />kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-53982532778913929422014-04-24T01:02:00.000+09:002014-04-24T01:02:31.678+09:00Raspberry Piのケースを加工する最近Raspberry Pi Model Aを注文したら静電シールド袋に紙箱という質素な梱包で届いたんですが、以前Model Bを注文したときはピンク色のプラスチック製の個性的なケースに入っていました。今もあるんですかね。よくわかりませんが。<br />
<br />
このケースを加工してワイヤレス接続のカメラサーバとして設置できるようにしてみました。フレキ接続のカメラモジュールを外に引き出し、USBのWi-Fiアダプタがぶつからないよう側面に穴を開けています。ふたを閉めても電源を供給できるよう、マイクロUSBコネクタの側も開口してあります。<br />
<br />
↓こんな感じのケースを加工します。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHSss6x5NV-hgbgxGhUvqu_KjDOTN-n2THmquE-c3ACCeh9WMTAvDRA2IbSuySZzbGgojKJwWfc_82g_bL0s0O0z6thjXBROMBVWThpTqUmqkhG4KZDmadtxihti0A5DfYfg9zQ-0U1g8/s1600/P4210246.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHSss6x5NV-hgbgxGhUvqu_KjDOTN-n2THmquE-c3ACCeh9WMTAvDRA2IbSuySZzbGgojKJwWfc_82g_bL0s0O0z6thjXBROMBVWThpTqUmqkhG4KZDmadtxihti0A5DfYfg9zQ-0U1g8/s1600/P4210246.jpg" height="240" width="320" /></a></div>
カメラモジュールとWi-Fiアダプタの位置を大まかに見極めて、<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbuRLiyq6s0rBl8nR7C9TTgUrTe9P5H4ZiR-ICjek1wXDBrw8jj2MyLrQ4xG60OlH9w7hV2ym8UUIGm3vuEFYmpqDaI-UsUAlptZCYjJ0rNbo_GBDw-c9r-JfGlhbzSt-xk6xHToJ_vr4/s1600/P4210247.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbuRLiyq6s0rBl8nR7C9TTgUrTe9P5H4ZiR-ICjek1wXDBrw8jj2MyLrQ4xG60OlH9w7hV2ym8UUIGm3vuEFYmpqDaI-UsUAlptZCYjJ0rNbo_GBDw-c9r-JfGlhbzSt-xk6xHToJ_vr4/s1600/P4210247.jpg" height="240" width="320" /></a></div>
開口部分に油性マーカーでしるしをつけます。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhff-LgCFgnWPpqY4d7rcNvvlD4SynfYD5Q-bVISgs0xROeANUjPREjZ6-giWsk0tDXq68U_lfw_YIqFdCWDlRSy2U7dr_CatBJj8W1482rzoJWpfqgFuqB0z8FvTiL5ToHCRK3zXFEhCM/s1600/P4210248.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhff-LgCFgnWPpqY4d7rcNvvlD4SynfYD5Q-bVISgs0xROeANUjPREjZ6-giWsk0tDXq68U_lfw_YIqFdCWDlRSy2U7dr_CatBJj8W1482rzoJWpfqgFuqB0z8FvTiL5ToHCRK3zXFEhCM/s1600/P4210248.jpg" height="240" width="320" /></a></div>
ピンバイスで輪郭沿って穴を開けていき、<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNRP1VQ5GLEWCWB1-cQYUjcdToWo6RiaUvVsW5jlKhpBRu0HwFSW5xh2OzSrRxfK0xgpJqONkDbdl5jXUcsRlq7bToahKBy-hkI7AY251g-OQEeT3k9tvSaMSZkf6pdw3ZSHom_5rVYr8/s1600/P4210249.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNRP1VQ5GLEWCWB1-cQYUjcdToWo6RiaUvVsW5jlKhpBRu0HwFSW5xh2OzSrRxfK0xgpJqONkDbdl5jXUcsRlq7bToahKBy-hkI7AY251g-OQEeT3k9tvSaMSZkf6pdw3ZSHom_5rVYr8/s1600/P4210249.jpg" height="240" width="320" /></a></div>
ニッパやカッターで穴を繋げ、切り落とします。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHIN7x1XZm8tmAV4cJVybR7oZMYp9NobkzZLcT7wvlr_f-vwqhsOD5VRkoPvCFsgW0Hndz_kLv3PNCBkDlS59PImnyyaTNcDnngR0fX26Yz0bbjkNIhcKnFxmnOJjL5d38F_mn66THEUk/s1600/P4210250.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHIN7x1XZm8tmAV4cJVybR7oZMYp9NobkzZLcT7wvlr_f-vwqhsOD5VRkoPvCFsgW0Hndz_kLv3PNCBkDlS59PImnyyaTNcDnngR0fX26Yz0bbjkNIhcKnFxmnOJjL5d38F_mn66THEUk/s1600/P4210250.jpg" height="240" width="320" /></a></div>
バリはカッターと金ヤスリでフラットに整えます。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrJR5ol8iQmlGPiIhA6aCBDDlR7t_fMWmrOVMCu0dlZJWKWxPFWwAdqlxXvgIbzot0DT_rRTw5p_W3EPdMMuoOn5id0vvhXlQTaGyLpAvfuobbK1Erflu0H5n_F-zkHga-kPwfikRJ-Aw/s1600/P4210251.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrJR5ol8iQmlGPiIhA6aCBDDlR7t_fMWmrOVMCu0dlZJWKWxPFWwAdqlxXvgIbzot0DT_rRTw5p_W3EPdMMuoOn5id0vvhXlQTaGyLpAvfuobbK1Erflu0H5n_F-zkHga-kPwfikRJ-Aw/s1600/P4210251.jpg" height="240" width="320" /></a></div>
フレキの方も同様に。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTEKouGvhG5DAUQsDfTOd51oRkA8NSd7KZa2eP34CbmQ90ab0q6vDYqkrWSMm0al5IAC6vCBqxapEvjzHLDmXfw5oxbHtGGZvl9njxUlkwBUjok9PpobWqFsG1q81e0ieWK4xVweSnEL4/s1600/P4210252.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTEKouGvhG5DAUQsDfTOd51oRkA8NSd7KZa2eP34CbmQ90ab0q6vDYqkrWSMm0al5IAC6vCBqxapEvjzHLDmXfw5oxbHtGGZvl9njxUlkwBUjok9PpobWqFsG1q81e0ieWK4xVweSnEL4/s1600/P4210252.jpg" height="240" width="320" /></a></div>
反対側には電源用のUSBケーブルが通る穴を。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrHera6Q5JtKRcrSeLx8wMEYmKQuQrGtoo4lwVnCZxKefqOvxhO5JlLaahYXbTJEW3nZRRFPfYWjtK9qJWTFVV9fLeXmAf7dtb9U2FDdPDKUau5G5N3XA5_1ivLzjmXjWOJUqvHlIHKPQ/s1600/P4210253.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrHera6Q5JtKRcrSeLx8wMEYmKQuQrGtoo4lwVnCZxKefqOvxhO5JlLaahYXbTJEW3nZRRFPfYWjtK9qJWTFVV9fLeXmAf7dtb9U2FDdPDKUau5G5N3XA5_1ivLzjmXjWOJUqvHlIHKPQ/s1600/P4210253.jpg" height="240" width="320" /></a></div>
ボードを合わせるとこんな感じ。ずれていたらカッターで修正します。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs9IDTzpcME6ACnl5REA4lY8SHF6BVtvCRYk3rMSTLM0trb-mLLiYaGjtkHksgDW6TgjJQ9OpQJ7RebSxPXRD3zMVWi830sAHgTZ-dAtLlaQPxv4lkWkWWzfPrjhNvezyy4hv2J4g_45M/s1600/P4210254.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs9IDTzpcME6ACnl5REA4lY8SHF6BVtvCRYk3rMSTLM0trb-mLLiYaGjtkHksgDW6TgjJQ9OpQJ7RebSxPXRD3zMVWi830sAHgTZ-dAtLlaQPxv4lkWkWWzfPrjhNvezyy4hv2J4g_45M/s1600/P4210254.jpg" height="240" width="320" /></a></div>
カメラモジュールは裏面に両面テープをつけてケースに固定。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqK7zo6qQ-5OIkXGpGH3egsEnisCsO32gHEdujuV5CJOCQ_XBKp9Nzm5JPVVUup9J-bWw5ZvICjXNyouByIhBg6PAwxqZCLJNycx0LGb4zjtvDMK22RKnPzqNd7ksNF-SFgaavUS6yudI/s1600/P4210255.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqK7zo6qQ-5OIkXGpGH3egsEnisCsO32gHEdujuV5CJOCQ_XBKp9Nzm5JPVVUup9J-bWw5ZvICjXNyouByIhBg6PAwxqZCLJNycx0LGb4zjtvDMK22RKnPzqNd7ksNF-SFgaavUS6yudI/s1600/P4210255.jpg" height="240" width="320" /></a></div>
コンパクトにまとまりました。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiezj4LnpZGFlnqwMVVjLkrkmhVZPqVoKFnC-LEsIdA-oiyWdo-UdLd7cFkYOq_UlZ2KUr3nand2UTnGnlf-DmhKbh1duegoYBM7rseHarV6bZ5VAzvLDSpUEHGAY4g9P4Vsnuy0sgkvcA/s1600/P4210257.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiezj4LnpZGFlnqwMVVjLkrkmhVZPqVoKFnC-LEsIdA-oiyWdo-UdLd7cFkYOq_UlZ2KUr3nand2UTnGnlf-DmhKbh1duegoYBM7rseHarV6bZ5VAzvLDSpUEHGAY4g9P4Vsnuy0sgkvcA/s1600/P4210257.jpg" height="240" width="320" /></a></div>
中身のボードも裏面に厚手の両面テープを三枚重ねにして底に軽く固定してあります。<br />
<br />
<br />
<br />
<br />
<br />
<br />kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-76906589119798445542014-04-24T00:07:00.000+09:002014-04-24T00:30:16.216+09:00SDカードのUbuntuルートファイルシステムパーティションを拡張Linuxは比較的非力な環境に入れることが多いためか、Ubuntuをしばらく使っているとパッケージのインストールやカーネル、ソースコードのダウンロードが積もり積もってディスク容量が手狭になってしまうことがよくあります。PCではWindowsと別パーティションのデュアルブートで使うこともあると思いますが、一応はHDDの増設で対応できます。VM環境でもHDD上のイメージサイズを拡張してGparted等でパーティションを動かせば割りと楽に容量確保できたりします。<br />
<br />
これがSDカードブートのARMシングルボードコンピュータなんかだと、ちょっと厄介かも知れません。昔のBeagleBoardだと、よくfdiskを使って手作業でSDカードのパーティションを切り、ブートローダとルートファイルシステムを入れるなんてことをしました。面倒ですがパーティションサイズを任意に設定できるので、大きいSDカードを使えばそれに合わせて広いルートファイルシステムのパーティションを確保できます。これが最近のRaspberry Piになると、SDカードイメージが丸ごと配布されているので、いちいちfdiskをする必要がなくてかなり楽なんですが、SDカードサイズにかかわらずイメージとして決め打ちされたパーティションサイズになってしまいます。Raspbianはインストール時のコンフィギュレーションでパーティション拡張ができますが、他のOSやボード向けのイメージで同様の機能がサポートされることはほとんどないと思います。<br />
<br />
そこで、既にSDカードに書き込まれたパーティションを手作業で拡張することになるわけです。今回、UDOO向けUbuntuのルートファイルシステムパーティションを拡張したので、作業手順をメモっておきます。<br />
<br />
SDカードは16GB、<a href="http://www.udoo.org/downloads/" target="_blank">UDOO公式</a>で配布のQuad向けUbuntu 12.04 LTSを焼いてあります。最初に<b>df</b>してみると、ルートファイルシステムは6GB程度のパーティションになっていました。<br />
<pre class="prettyprint lang-bash">$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 6.4G 2.4G 3.7G 40% /
devtmpfs 438M 4.0K 438M 1% /dev
none 88M 2.6M 85M 3% /run
none 5.0M 0 5.0M 0% /run/lock
none 438M 100K 438M 1% /run/shm
</pre>
では、<b>fdisk</b>で作業開始。<br />
<pre class="prettyprint lang-bash">$ sudo fdisk /dev/mmcblk0
</pre>
まずpで現在の構成を確認。<b>Start</b>セクタはあとで入力しなおす必要があるので、 飛ばさないように。<br />
<pre class="prettyprint lang-bash">Command (m for help): p
Disk /dev/mmcblk0: 15.7 GB, 15720251392 bytes
255 heads, 63 sectors/track, 1911 cylinders, total 30703616 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c356e
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 16065 13623119 6803527+ 83 Linux
</pre>
つぎに現在の<b>d</b>→<b>1</b>と入力して現在のパーティションを削除。<br />
<pre class="prettyprint lang-bash">Command (m for help): d
Selected partition 1
</pre>
続いて<b>n</b>で新たにパーティションを作成。パーティションタイプは<b>p</b>でプライマリを選択します。パーティションナンバーはデフォルトのまま。ファーストセクタで先ほど表示させたStartの数字を入力します。ラストセクタは最大まで確保します。<br />
<pre class="prettyprint lang-bash">Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-30703615, default 2048): 16065
Last sector, +sectors or +size{K,M,G} (16065-30703615, default 30703615):
Using default value 30703615
</pre>
新たなパーティションはこんな感じ。<br />
<pre class="prettyprint lang-bash">Command (m for help): p
Disk /dev/mmcblk0: 15.7 GB, 15720251392 bytes
255 heads, 63 sectors/track, 1911 cylinders, total 30703616 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c356e
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 16065 30703615 15343775+ 83 Linux
</pre>
では、wで書き込みます。<br />
<pre class="prettyprint lang-bash">Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
</pre>
ここで再起動。<br />
<pre class="prettyprint lang-bash">$ sudo reboot
</pre>
最後に、既存のファイルシステムを拡張されたパーティションいっぱいまで広げるため、<b>resize2fs</b>コマンドを実行します。<br />
<pre class="prettyprint lang-bash">$ sudo resize2fs /dev/mmcblk0p1
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/mmcblk0p1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mmcblk0p1 to 3835943 (4k) blocks.
The filesystem on /dev/mmcblk0p1 is now 3835943 blocks long.
</pre>
<b>df</b>で確認してみます。15GBまで拡大されました。 <br />
<pre class="prettyprint lang-bash">$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 15G 2.4G 12G 18% /
devtmpfs 438M 4.0K 438M 1% /dev
none 88M 2.6M 85M 3% /run
none 5.0M 0 5.0M 0% /run/lock
none 438M 100K 438M 1% /run/shm
</pre>
まぁ手順としちゃHDDの場合と変わりませんやね。<br />
<hr />
参考<br />
<a href="http://raspberrypi.stackexchange.com/questions/499/how-can-i-resize-my-root-partition#answer-501" target="_blank">How can I resize my / (root) partition? - Stack Exchange</a> kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-75474530057179005922014-04-20T02:49:00.001+09:002014-04-20T02:50:37.108+09:00Raspberry Piのカメラモジュールを使ってみた<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJrLgrcJY4NINkMAFsyvBcI7s9T0NSOM_RNavLvecmLOjElkieduImLJyQ4C9a4tbEJD_w-kNZjgJWUkq1ejcaxfYVmEOwLgTlcleUz7G3tpBxFlnSkZX9ffpmJKYMUQyHV2FXhBBwmY8/s1600/P4150242.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJrLgrcJY4NINkMAFsyvBcI7s9T0NSOM_RNavLvecmLOjElkieduImLJyQ4C9a4tbEJD_w-kNZjgJWUkq1ejcaxfYVmEOwLgTlcleUz7G3tpBxFlnSkZX9ffpmJKYMUQyHV2FXhBBwmY8/s1600/P4150242.jpg" height="240" width="320" /></a></div>
<br />
前にRaspberry Piにウェブカメラを繋いでFFmpegで動画撮影やuvccaptureで静止画撮影を試してみたことがありました(<a href="http://atelier-orchard.blogspot.jp/2013/11/raspberry-piweb.html" target="_blank">記事</a>)。最近、Raspberry Pi Model Aを買い足したときに、カメラモジュールをセットに含めて発注しておいたので、今回ちょっと試してみようと思います。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3ZqdC73Qk2Prp1VHlPvLODtcH7PqWfglM4qWfIpRlXJqb2ulSDBFRubs-Jf33hHhvY_1hiNE_ZsDpmDWAXd8QOTxICFyvpXZGTDef0qS_VuGsVTAaaqkEyStMVOx_aCZ83Y6hfxOxpFY/s1600/P4150243.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3ZqdC73Qk2Prp1VHlPvLODtcH7PqWfglM4qWfIpRlXJqb2ulSDBFRubs-Jf33hHhvY_1hiNE_ZsDpmDWAXd8QOTxICFyvpXZGTDef0qS_VuGsVTAaaqkEyStMVOx_aCZ83Y6hfxOxpFY/s1600/P4150243.jpg" height="240" width="320" /></a></div>
<br />
箱から取り出したカメラモジュールには最初からフレキが接続されているので、反対側をボード上のコネクタS5に挿し込みます。固定具を一度緩めてフレキを挿してから固定しなおします。電極面の向きに注意が必要です。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrxk5mDqkMaXsdNw3oJyPOZ0XOxS73NwYmSfFR83kIS6RpJTuB953hvUk7wx7oaNRhM0-RYfnZRG4jHUHzsho5wxzx26QrhpELyqOzuH7cQWuwh9BWDcud6viT1DEdT5_Uz7t576rb9pA/s1600/P4150245.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrxk5mDqkMaXsdNw3oJyPOZ0XOxS73NwYmSfFR83kIS6RpJTuB953hvUk7wx7oaNRhM0-RYfnZRG4jHUHzsho5wxzx26QrhpELyqOzuH7cQWuwh9BWDcud6viT1DEdT5_Uz7t576rb9pA/s1600/P4150245.jpg" height="240" width="320" /></a></div>
<br />
カメラモジュールを使用するためにはOSのコンフィギュレーションが必要です。公式のRaspbianイメージをSDカードに焼いた場合は、初回の起動時にカメラを使う設定ができます。OSの使用開始後でもraspi-configコマンドでカメラ使用の設定ができました。<br />
<br />
<h4>
<span style="color: yellow;">静止画</span></h4>
<b>raspistill</b>コマンドで撮影可能。ウェブカムでuvccaptureを使ったときよりもホワイトバランスとかが調整されてる印象。<br />
<br />
<pre class="prettyprint lang-bash">$ raspistill -o test.jpg
</pre>
<br />
<h4>
<span style="color: yellow;">動画</span></h4>
<b>raspivid</b>コマンドを使用。ちゃんとそこそこのFPSで撮影できてるっぽいです。 撮影時にはSSHからコマンドしてもディスプレイを繋いでいればフレームバッファにプレビューが描画され画面表示されます。<br />
<br />
<pre class="prettyprint lang-bash">$ raspivid -o test.mp4
</pre>
<br />
撮影した動画はomxlayerで再生可能。こちらもデスクトップでなくても画面表示してくれます。<br />
<br />
<pre class="prettyprint lang-bash">$ omxplayer test.mp4
Video codec omx-h264 width 1920 height 1080 profile 100 fps 25.000000
Subtitle count: 0, state: off, index: 1, delay: 0
V:PortSettingsChanged: 1920x1080@25.00 interlace:0 deinterlace:0
</pre>
<br />
WinSCPでWindowsに持ってきて再生しようとしたんですが、WMPでもaviutlでも最初の1フレームくらいしか表示されませんでした。omx-h264というコーデックがまずいのかな?もしかしたらコーデック変換とかしたらいいのかも。<br />
<br />
<hr />
参考<br />
<a href="http://www.raspberrypi.org/documentation/usage/camera/README.md" target="_blank">Camera Module - Raspberry Pi Foundation</a><br />
kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-47069303002066698712014-04-18T01:44:00.000+09:002014-04-18T01:44:54.333+09:00はじめてKickstarterで出資してみた最近、クラウドソーシング発の製品やプロジェクトをたくさん見かけるようになりました。このブログでも以前買ってからよく遊んでいるUDOOボードなんかも、Kickstarterから飛び出したプロダクトの一つです。<br />
<br />
映像、音楽、ゲーム、ファッションなど多様なジャンルのプロジェクトが公開されている中、テクノロジー製品だけでも個性的なアイディアを見つけることができ、眺めているだけでも楽しめます。そんなKickstarterで、今更ながら、初めてのBack=支援、出資をしてみました。<br />
<br />
ターゲットは、<a href="http://atelier-orchard.blogspot.jp/2014/04/3.html" target="_blank">先日このブログでも書いた</a>、ウェアラブル開発ボードの「MetaWare」 です。<br />
<br />
まずは<a href="https://www.kickstarter.com/projects/guardyen/metawear-production-ready-wearables-in-30-minutes" target="_blank">プロジェクトのページ</a>へ。英語ですが、気合を入れてプロジェクト内容を読んだり、動画を見たりしてテンションあげていきます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtjzSQ1l6kBlRBBZjlp9VfJoSerz1DiYC_r9RIeOlswWpcYubXqgh8Ug7rKyczFeedxFFC4SNk9g3UGNb4CJc9vyMDM9QL-wRHo46aannnQ_3PaL_4SGcHgBW4HwZNs2_F01Wf7P7TPmY/s1600/back01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtjzSQ1l6kBlRBBZjlp9VfJoSerz1DiYC_r9RIeOlswWpcYubXqgh8Ug7rKyczFeedxFFC4SNk9g3UGNb4CJc9vyMDM9QL-wRHo46aannnQ_3PaL_4SGcHgBW4HwZNs2_F01Wf7P7TPmY/s1600/back01.png" height="244" width="320" /></a></div>
<br />
お気に入りゲージがいい感じに高まってきたところで、ページ右側に並んでいる出資オプションから、一つを選びます。金額に応じて得られる特典が変わるので、財布と相談しながら気に入った出資額を選びます。今回はボード本体と基本アクセサリがもらえる$30のコースにしてみました。なお緑色の「Back This Project」ボタンを押しても、出資オプションを選ぶページに進んで同様に選択ができます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3KQm8nUy8uv6shxwlegaqiBEd2wakGduVVyL7dL2iNuCiPqtEOkZ3c_7yqQY9oSl0uVAh4ymnS8OD_wC0IdBvahbFWQprQPflBTZEOCWnzbYAHGmPTsTdlCxAdo8Q7hRc7DOgEqOFppg/s1600/back02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3KQm8nUy8uv6shxwlegaqiBEd2wakGduVVyL7dL2iNuCiPqtEOkZ3c_7yqQY9oSl0uVAh4ymnS8OD_wC0IdBvahbFWQprQPflBTZEOCWnzbYAHGmPTsTdlCxAdo8Q7hRc7DOgEqOFppg/s1600/back02.png" height="244" width="320" /></a></div>
<br />
選択するとポップアップが開き、Pledge amount(出資確約額)が確認されます。このプロジェクトではUS国外への発送は+$10で対応されるため、合計金額$40が自動的に入力された状態で表示されます。OKなら「<b>Continue to next step</b>」ボタンを押します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiizAd3ZqzW-hh5znS0D7nETIdDc9th8wsJ7QSz4kARbjKTL_fJqQvEaM2E8Cuyhbfd0GP-aYEfFDFSMfKqcHSEczYW-vdV2K9tO9d0A-x-gW-c83zT6SLDDx24l9CJNIRVahOda6BF3Z4/s1600/back03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiizAd3ZqzW-hh5znS0D7nETIdDc9th8wsJ7QSz4kARbjKTL_fJqQvEaM2E8Cuyhbfd0GP-aYEfFDFSMfKqcHSEczYW-vdV2K9tO9d0A-x-gW-c83zT6SLDDx24l9CJNIRVahOda6BF3Z4/s1600/back03.png" height="244" width="320" /></a></div>
<br />
続いてログイン画面になります。既にログインしてる場合はスキップされると思います。今回はKickstarterを始めて利用するので、<b>Log in</b>ではなく中央の<b>New to Kickstarter?</b>のフォームで各欄を入力しサインアップします。また、Facebookアカウントを使った認証にも対応しているようです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieR5u-2JVDWK6fmFwY-0jbU1GJhpEDS1VR-GvmfSID63SAO6nH4op835Ks7F1ITnubNFhPSuVX_bZdX22If0iKPCGGj-Dq0yLwMDOQL5sXaULClkgLzwsEGdyjfbrsyN3Y6wLVs_-T10Q/s1600/back04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieR5u-2JVDWK6fmFwY-0jbU1GJhpEDS1VR-GvmfSID63SAO6nH4op835Ks7F1ITnubNFhPSuVX_bZdX22If0iKPCGGj-Dq0yLwMDOQL5sXaULClkgLzwsEGdyjfbrsyN3Y6wLVs_-T10Q/s1600/back04.png" height="208" width="320" /></a></div>
<br />
サインアップできたら、Amazonでの決済へ進むための確認画面が出るので、「<b>Continue to Amazon</b>」 を押します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK0BXaS7bDfHk_PJZBLsPwZ_86T8u7ZCJVB8CoGvjqRWGZIqRGJSZR1hZoNW85vvtnWQbYJDBKUtJA9p5tdeCeR9CwcpkN3xXUyX9yzyWZrXowYzgWSvjz9eOYr4nCxVh3fm2CUqW9EEY/s1600/back05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK0BXaS7bDfHk_PJZBLsPwZ_86T8u7ZCJVB8CoGvjqRWGZIqRGJSZR1hZoNW85vvtnWQbYJDBKUtJA9p5tdeCeR9CwcpkN3xXUyX9yzyWZrXowYzgWSvjz9eOYr4nCxVh3fm2CUqW9EEY/s1600/back05.png" height="225" width="320" /></a></div>
<br />
Amazonのログインページへ移ります。アメリカのAmazon.comなので、日本のAmazon.co.jpとは別にアカウントが必要のようです。持っていないので新たに作成しました。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz8KTqfVKpOX8sfcvf6qe11jhIrem4upRzlay7FBu_sBRN0hyG-_bI90D0Od64L4jEyXYIaM_K1cIsdq3E4uasSQ1NqLmtsNLB2LEdCZ5MoFxySfPawoiPU2sDRaX_8dei3oUds-N7gD4/s1600/back06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz8KTqfVKpOX8sfcvf6qe11jhIrem4upRzlay7FBu_sBRN0hyG-_bI90D0Od64L4jEyXYIaM_K1cIsdq3E4uasSQ1NqLmtsNLB2LEdCZ5MoFxySfPawoiPU2sDRaX_8dei3oUds-N7gD4/s1600/back06.png" height="193" width="320" /></a></div>
<br />
アカウント登録してAmazon.comにログインしたら、クレジットカード情報を入力して<b>Continue</b>を押します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU5E5DpiMTZP5MYeJdtxdTrt9mX7cw4F89UEm8v4EBImacvCv7gSWsgBScC9jEhs0BY0dlAykwxXdW9DDi9TCxhGGxa_Lr0FePUYUx5-ROsbId9m1BDeMn1sKQ9hTksqTZ52c52ctkeuM/s1600/back07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU5E5DpiMTZP5MYeJdtxdTrt9mX7cw4F89UEm8v4EBImacvCv7gSWsgBScC9jEhs0BY0dlAykwxXdW9DDi9TCxhGGxa_Lr0FePUYUx5-ROsbId9m1BDeMn1sKQ9hTksqTZ52c52ctkeuM/s1600/back07.png" height="145" width="320" /></a></div>
<br />
次に請求先住所の入力です。Amazon.comですが日本の住所で大丈夫そうです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi47iDBypgGas01cx-wtvdva0T6Pq4Ly3FY01ITrhW0uo8h1ZjDga7EeE3lN2l07r1cYZ5oUTRgqExzABQSgOXzgUU5sVWqMoQkEftJjXwrJrpIra2hJPF_HcWQoiVUDd3cYN9wIndOmac/s1600/back08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi47iDBypgGas01cx-wtvdva0T6Pq4Ly3FY01ITrhW0uo8h1ZjDga7EeE3lN2l07r1cYZ5oUTRgqExzABQSgOXzgUU5sVWqMoQkEftJjXwrJrpIra2hJPF_HcWQoiVUDd3cYN9wIndOmac/s1600/back08.png" height="184" width="320" /></a></div>
<br />
Kickstarterによる決済を承認します。<b>Continue</b>で。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpCkYH_Y1zQBUyYQ2ME-EUXOHrfHuCSwM_3w5SHoJrYEU-mHXW9aBa8hFYhPV8ngl69ztP232p3mmVTeDMaE7pL3mAyybsFZXJtER-SlFdmq7xXHR45s5amYBcYru91PT8DbseCKPhQiU/s1600/back09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpCkYH_Y1zQBUyYQ2ME-EUXOHrfHuCSwM_3w5SHoJrYEU-mHXW9aBa8hFYhPV8ngl69ztP232p3mmVTeDMaE7pL3mAyybsFZXJtER-SlFdmq7xXHR45s5amYBcYru91PT8DbseCKPhQiU/s1600/back09.png" height="213" width="320" /></a></div>
<br />
以上で決済手続きは完了です!これで出資額が確約されました。後は座してプロジェクトの進捗を待つばかりです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSUEI2DI1_zxVDJNknZWYVVorD4CSy5UdL4TifMgFUS7IhKEGYfjKZUCjcwKASESfVj5C0FWanddq6sliXRyYu-jY-EAuUI5o0O0xHwgw23JG9Powy4eE2cA6pjsM14vrWc1ktVYK6f-Y/s1600/back10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSUEI2DI1_zxVDJNknZWYVVorD4CSy5UdL4TifMgFUS7IhKEGYfjKZUCjcwKASESfVj5C0FWanddq6sliXRyYu-jY-EAuUI5o0O0xHwgw23JG9Powy4eE2cA6pjsM14vrWc1ktVYK6f-Y/s1600/back10.png" height="244" width="320" /></a></div>
<br />
kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-8972621855033516942014-04-16T09:01:00.000+09:002014-04-16T09:01:06.340+09:00DirectFBのサンプルをgprofでプロファイリングしてみる<a href="http://atelier-orchard.blogspot.jp/2014/04/udooubuntudirectfb.html" target="_blank">i.MX6搭載のUDOOにDirectFBとExamplesをインストールしてみた</a>んですが、df_andi(ペンギンいっぱい出るサンプル)を動かしてみると、標準のペンギン200体で20fpsしか出てない。<a href="http://atelier-orchard.blogspot.jp/2013/10/raspberry-pi-directfb.html" target="_blank">RPiでやったとき</a>ももうちょっと出てたと思うのに、上位CPUを搭載したUDOOがこんなに遅いわけがない!<br />
<br />
ということで、GNU gprof使ってちょいとプロファイルしてみる。 <br />
<br />
df_andiのソースだけ取り出してgprof向けコンパイルできればいいんですが、依存関係とかややこしいので、CFLAGSだけいじってautotoolsで全部ビルドしちゃう。<br />
<br />
<pre class="prettyprint lang-bash">$ cd build_dfbexamples
$ make clean
$ CFLAGS=-pg ../DirectFB-examples-1.7.0/configure
$ make
</pre>
<br />
で、実行してみる。<br />
<br />
<pre class="prettyprint lang-bash">$ sudo src/df_andi &
</pre>
<br />
強制終了するとgprofの結果ファイルgmon.outが生成されないので、pkillは使わない。面倒ですが、USBキーボードを繋いでESCを押します。<br />
gmon.outが生成されたら、gprofでプロファイル結果を表示してみる。<br />
<br />
<pre class="prettyprint lang-bash">$ gprof src/df_andi gmon.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
100.12 0.01 0.01 draw_penguins
</pre>
<br />
draw_penguinsが100%超えてますやん笑<br />
<br />
df_andi.cの中のこの関数の実装を見てみると、確かに二重ループになってたり、DirectFBのライブラリ関数をコールしてたり、確かに重そうではある。もうちょっと詳しく見てみる必要がありそう。。<br />
<br />
<hr />
参考<br />
<a href="http://ubuntuforums.org/showthread.php?t=941986#post_5931765" target="_blank">Re: using gprof with autotools - Ubuntu Forums</a>kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-43910564607189140762014-04-15T21:09:00.007+09:002014-04-15T21:09:56.482+09:00UDOOのUbuntuにDirectFBをインストール以前、<a href="http://atelier-orchard.blogspot.jp/2013/10/raspberry-pi-directfb.html" target="_blank">Raspberry PiにDirectFBをインストール</a>して動かしてみたんですが、わけあってi.MX6でやってみたくなったのでUDOOにもインストールしてみた。<br />
<br />
まずは<a href="http://directfb.org/index.php?path=Main%2FDownloads" target="_blank">公式のダウンロードページ</a>から本体とExtrasのexamplesをダウンロード。<br />
<br />
<pre class="prettyprint lang-bash">$ wget http://directfb.org/downloads/Core/DirectFB-1.7/DirectFB-1.7.3.tar.xz
$ wget http://directfb.org/downloads/Extras/DirectFB-examples-1.7.0.tar.gz
</pre>
<br />
んで本体ビルドしてみる。<br />
<br />
<pre class="prettyprint lang-bash">$ tar xf DirectFB-1.7.3.tar.xz
$ mkdir build_directfb
$ cd build_directfb/
$ ../DirectFB-1.7.3/configure --with-gfxdrivers=gles2
...
checking for fluxcomp... no
configure: error:
*** DirectFB compilation requires fluxcomp ***
</pre>
<br />
が、fluxcompがない、というエラー。調べてみたら、これもDirectFBのページでソース配布してるツールだった。ダウンロードしてインストールする。<br />
<br />
<pre class="prettyprint lang-bash">$ cd ../
$ wget http://directfb.org/downloads/Core/flux/flux-1.4.4.tar.gz
$ tar xf flux-1.4.4.tar.gz
$ mkdir build_flux
$ cd build_flux/
$ ../flux-1.4.4/configure
$ make
$ sudo make instlal
</pre>
<br />
では本体のビルドに戻る。<br />
<br />
<pre class="prettyprint lang-bash">$ cd ../build_directfb/
$ ../DirectFB-1.7.3/configure --with-gfxdrivers=gles2
...
PNG support is missing - many applications won't work correctly!
JPEG support is missing - many applications won't work correctly!
</pre>
<br />
とりあえずコンフィギュできたけど、RPiのときも出たPNGとJPEGサポートの警告。なので、<br />
<br />
<pre class="prettyprint lang-bash">$ sudo apt-get install libpng12-dev libjpeg62-dev libfreetype6-dev
</pre>
<br />
でインストールしてから、もう一度。 <br />
<br />
<pre class="prettyprint lang-bash">$ ../DirectFB-1.7.3/configure --with-gfxdrivers=gles2
$ make
make[3]: Entering directory `/home/ubuntu/work/directfb/build_directfb/systems/drmkms'
CC drmkms_layer.lo
In file included from ../../../DirectFB-1.7.3/systems/drmkms/drmkms_layer.c:45:0:
../../../DirectFB-1.7.3/systems/drmkms/drmkms_system.h:69:6: error: unknown type name 'drmModePlane'
...
cc1: some warnings being treated as errors
make[3]: *** [drmkms_layer.lo] Error 1
make[3]: Leaving directory `/home/ubuntu/work/directfb/build_directfb/systems/drmkms'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/ubuntu/work/directfb/build_directfb/systems'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ubuntu/work/directfb/build_directfb'
make: *** [all] Error 2
</pre>
<br />
おや、今度はdrmkmsとやらで引っかかってる?コンフィギュで回避してみる。<br />
<br />
<pre class="prettyprint lang-bash">$ ../DirectFB-1.7.3/configure --with-gfxdrivers=gles2 --enable-drmkms=no
$ make clean
$ make
$ sudo make install
</pre>
<br />
これで本体のビルドとインストールはOK。あ、忘れずにldconfigしないとね。<br />
<br />
<pre class="prettyprint lang-bash">$ sudo ldconfig
</pre>
<br />
Examplesの方も同様にビルド&インストール。<br />
<br />
<pre class="prettyprint lang-bash">$ cd ../
$ tar xf DirectFB-examples-1.7.0.tar.gz
$ mkdir build_dfbexamples
$ cd build_dfbexamples/
$ ../DirectFB-examples-1.7.0/configure
$ make
$ sudo make install
</pre>
<br />
できたら、df_andiあたりを動かしてみる。<br />
<br />
<pre class="prettyprint lang-bash">$ sudo df_andi &
</pre>
<br />
画面にペンギンがもしゃもしゃ出ればOK。HDMI接続はしつつ、コマンドはSSHから&付きで実行することで、一応コマンドラインから強制終了もできる。<br />
<pre class="prettyprint lang-bash">$ sudo pkill df_andi
</pre>
<br />
以上です。 kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-42534649000827021562014-04-15T00:41:00.001+09:002014-04-15T00:41:45.911+09:00Ubuntuの時刻を合わせる久しぶりにUDOOを起動したら、時刻がUNIXエポックにタイムスリップしてた。<br />
<br />
<pre class="prettyprint lang-bash">$ sudo ntpdate ntp.ubuntu.com
</pre>
<br />
で、自動的にローカルタイムに合わせてくれた。<br />
<br />
<hr />
<b>参考</b><br />
<a href="https://help.ubuntu.com/10.04/serverguide/NTP.html" target="_blank">Time Synchronisation with NTP - Ubuntu Documentation</a>kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-70494770012462110332014-04-14T00:49:00.002+09:002014-04-14T00:51:22.001+09:00Raspberry PiのArch LinuxでLXDEを使うRaspberry Piの公式で配布してるArch Linuxには標準でデスクトップ環境がインストールされていないので、pacmanで後からLXDEをインストールします。<br />
<br />
<span style="color: yellow;"><b>[1]</b></span> レポジトリのアップデートとローカルパッケージ更新<br />
<pre class="prettyprint lang-bash">pacman -Syu
pacman -Syy
</pre>
<br />
<b><span style="color: yellow;">[2]</span></b> 各種パッケージのインストール<br />
<pre class="prettyprint lang-bash">pacman -S openbox lxde gamin dbus
pacman -S xorg-server xorg-xinit xorg-server-utils
pacman -S mesa xf86-video-fbdev xf86-video-vesa
</pre>
<br />
<b><span style="color: yellow;">[3]</span></b> 起動<br />
<pre class="prettyprint lang-bash">xinit /usr/bin/lxsession
</pre>
<br />
<hr />
<h4>
参考</h4>
<a href="https://forum.manjaro.org/index.php?topic=10429.0#msg93840" target="_blank">Re: Can't login to GUI following updates - manjoro</a><br />
<a href="http://raspberrypi.stackexchange.com/questions/5257/does-arch-come-with-a-gui-preinstalled#answer-5263" target="_blank">Does Arch come with a GUI preinstalled? - StackExchenge</a><br />
<a href="http://archlinuxarm.org/forum/viewtopic.php?f=31&t=6613#p36766" target="_blank">Re: x at raspberry pi - Arch Linux ARM</a><br />
kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-90869765071961536372014-04-13T02:41:00.000+09:002014-04-13T03:20:09.096+09:00Raspberry Pi Model Aをネットワークに接続するEthernetコネクタのないRPiのModel Aでネットワークに接続する方法。OSはArch Linuxです。<br />
<br />
初代BeagleBoard(赤いやつ)がそうだったんですけど、USB接続のEthernetアダプタを使います。今回はウチにストックしてあった<a href="http://www.planex.co.jp/product/adapter/ue-200tx-g2/" target="_blank">PLANEXのUE-200TX-G2</a>を使いました。残念ながら同製品は生産終了してますが、後継機とか似たようなものがAmazonとかでもいろいろ見つかります。<br />
<br />
では手順。<br />
<br />
<b><span style="color: yellow;">[1]</span></b> まずArch Linuxの初期アカウント(<a href="http://www.raspberrypi.org/downloads/" target="_blank">Raspberry Pi公式</a>のイメージならroot/root)でログイン。<br />
<br />
<b><span style="color: yellow;">[2]</span></b> USB EthernetアダプタをUSBコネクタに接続します。Model Aには1ポートしかないので、キーボードと両立のためにUSBハブが必要です。接続すると新しいネットワークインタフェースとしてeth0という名称で登録されます。UE-200TX-G2はドライバがサポートされてます。<br />
<br />
<b><span style="color: yellow;">[3]</span></b> 続いてインタフェースを有効化します。 コマンドは下記。<br />
<pre class="prettyprint lang-bash">ip link set eth0 up
</pre>
<br />
<b><span style="color: yellow;">[4]</span></b> 最後にDHCPでIPアドレスをもらってきます。あ、言わずもがなですが、LANケーブルでルータに接続されている必要があります。<br />
<pre class="prettyprint lang-bash">dhcpcd eth0
</pre>
<br />
これでOK。ifconfigでeth0に有効なIPアドレスが割り当てられていることを確認できると思います。これでネットワークが利用可能になります。<br />
<br />
<hr />
<h4>
参考</h4>
<a href="https://wiki.archlinux.org/index.php/Network_Configuration_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29" target="_blank">Network Configuration (日本語) - ArchWiki</a>kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-27714310964516342392014-04-12T04:08:00.003+09:002014-04-12T04:08:29.347+09:00はじめてのwxWidgets私はPCのウィンドウプログラムを作ることがほとんどないんですが、たまーに思い立って何か作りたくなることもあるんですよね。そういうときのために何かGUIツールキットを手軽に使えるようにしておくと捗るんですが、WindowsもLinuxも使う身からすると、Windows SDKだとプラットフォームが限定されるし、なんかAPIも難しそうでちょっと二の足。OpenCVとかGLUTとかProcessingとかライブラリオリエンテッドのクロスプラットフォームGUIとかもありますが、汎用的に使いたい。そのあたりでいろいろ探していて、wxWidgetsに行き着いた、というわけです。<br />
<br />
ということで、とりあえずwxWidgetsのSDKをダウンロードして、サンプルをビルドしてみます。OSはWindows 7でございます。<br />
<br />
<h4>
<span style="color: yellow;">1 Visual C++ Express のインストール</span></h4>
<br />
PCにVisual C++がインストールされている場合は飛ばしてOKです。ない場合は、<a href="http://www.microsoft.com/ja-jp/download/details.aspx?id=23691" target="_blank">Microsoft Download Center</a>からMicrosoft Visual Studio 2010 Service Pack 1 (インストーラー)をダウンロードしてインストールを行います。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNAjHIFWZ8Z8ZPIJjZ0WYXjfufAYY4gMlUzaBAcNWz9x5GhXZp4pUL6KIeoq4CvajU7QTw4_2KI2EA460W_hVFBGCLZk2dyuNFPP5d7IkNMx688drQjol4_TdXfdFUuYT9o7MCUvz_u88/s1600/wxwidgets_3b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNAjHIFWZ8Z8ZPIJjZ0WYXjfufAYY4gMlUzaBAcNWz9x5GhXZp4pUL6KIeoq4CvajU7QTw4_2KI2EA460W_hVFBGCLZk2dyuNFPP5d7IkNMx688drQjol4_TdXfdFUuYT9o7MCUvz_u88/s1600/wxwidgets_3b.png" height="219" width="320" /></a></div>
<br />
現時点で最新版は2013なんですが、試してないのでwxWidgetsのSDKと適合するかわかりません。wxWidgetsのSDK内のライブラリやデモプログラムのプロジェクトも最新でもVisual C++ 2008またはVisual C++ 2005用のプロジェクト/ソリューションファイルしか用意されていませんが、2010で変換してインポートする分には問題なくビルドできました。Microsoft Visual Studio 2010をインストールする場合は、<b>Service Pack 1</b>を選ぶ必要があることに注意。SP1ではない無印を使うと、デモプログラムのビルド時に「LINK : fatal error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています。」というエラーに直面します。<br />
<br />
<h4>
<span style="color: yellow;">2 wxWidgets SDKのダウンロード</span></h4>
<br />
wxWidgets公式のダウンロードページから、Windows向けのソースアーカイブをダウンロードします。Zipでもいいですが、7zの方が高圧縮で軽量です。7z対応の展開ソフトがあるなら、こちらを選ぶといいでしょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9yKQOkJgDcu2BQnfhP_-R6be0UgbnSjxqSGLmudf_ZUp8Kuq03L0Yd0DFq_R1kJVTPsewr5EKvz-vqSoWE7cZ1uPgUZSIBup6HXITS6V_07SZpxnGymo2ThPMwbiPDyiMfLWiKymYUDc/s1600/wxwidgets_1b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9yKQOkJgDcu2BQnfhP_-R6be0UgbnSjxqSGLmudf_ZUp8Kuq03L0Yd0DFq_R1kJVTPsewr5EKvz-vqSoWE7cZ1uPgUZSIBup6HXITS6V_07SZpxnGymo2ThPMwbiPDyiMfLWiKymYUDc/s1600/wxwidgets_1b.png" height="219" width="320" /></a></div>
<br />
ダウンロードしたら、任意のフォルダで展開します。<br />
<br />
<h4>
<span style="color: yellow;">3 ライブラリのビルド </span></h4>
<br />
Visual C++ Express 2010を起動し、[ファイル(F)]->[開く(O)]->[プロジェクト/ソリューション(P)...]を選びます。「プロジェクトを開く」ダイアログが開くので、展開したライブラリの<b>build\msw\wx_vc10.sln</b>を開きます。ソリューションの読み込みが完了したら、[デバッグ(D)]->[ソリューションのビルド(B)]を選び、ビルドを行います。DebugとReleaseの両方の構成でビルドしておくとよいでしょう。<br />
<br />
<h4>
<span style="color: yellow;">4 デモプログラムのビルド、実行</span></h4>
<br />
同様にVisual C++ Express 2010で<b>demos\bombs\bombs_vc9.sln</b>を開きます。ソリューションとプロジェクトが2010のバージョンに対して古いため「Visual Studio 変換ウィザード」が開きます。そのまま[完了(F)]でOKです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj7wdsTL2FuKecb9TCicikRiZ3FPoXFhFoe5GpEtEnzjZByVNdcvtssnTABp9r5Pm2fQ9h2g2-4jNAW_7L91A8ACvcwuHS5KeLmymw4-EfJZK1rVBTQVHJCXqbyUOlLql7vWIlAokHzB4/s1600/wxwidgets_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj7wdsTL2FuKecb9TCicikRiZ3FPoXFhFoe5GpEtEnzjZByVNdcvtssnTABp9r5Pm2fQ9h2g2-4jNAW_7L91A8ACvcwuHS5KeLmymw4-EfJZK1rVBTQVHJCXqbyUOlLql7vWIlAokHzB4/s1600/wxwidgets_4.png" height="250" width="320" /></a></div>
<br />
ソリューションが読み込まれたら、[デバッグ(D)]->[デバッグ開始(S)]を選びます。しばらくビルドが走った後、マインスイーパーっぽいプログラムが起動します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy_EJOzvTADVk8PEnArJO1SiYv_-Pn8pttPWtliVmQqN9es9Lc2z_dT_nHdJu9NPL7T8SN_qtRTVZJxITtENPd99EnILvTmSV44sJ4uQ-meHAi6KcFihETIs0q74Dzp8kkpONh0u4SwJ0/s1600/wxwidgets_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy_EJOzvTADVk8PEnArJO1SiYv_-Pn8pttPWtliVmQqN9es9Lc2z_dT_nHdJu9NPL7T8SN_qtRTVZJxITtENPd99EnILvTmSV44sJ4uQ-meHAi6KcFihETIs0q74Dzp8kkpONh0u4SwJ0/s1600/wxwidgets_5.png" /></a></div>
<br />
これでOK。<br />
<br />
<hr />
<h4>
参考</h4>
<a href="http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide" target="_blank">Microsoft Visual C++ Guide - wxWiki</a><br />
<br />kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-78769862647972451152014-04-10T02:48:00.000+09:002014-04-10T02:54:54.708+09:00ウェアラブル開発に使えそうなボード3つ毎年年始にラスベガスで開かれるCESといえば、その年のコンシューマーエレクトロニクス市場のトレンドを占う言わば「一年の計」です。今年のCESは、スマートウォッチや眼鏡型スマートデバイスの出展が牽引して「ウェアラブル元年」を印象付けるものでした。一般コンシューマー向けのエレクトロニクス製品もさることながら、やはり気になるのは開発者コミュニティーの盛り上がり。そんなわけで、コミュニティを駆動するウェアラブル向け開発ボードをチェックしてみたいと思います。<br /><br />
<h4>
1. WaRP</h4>
<a href="http://www.warpboard.org/">http://www.warpboard.org/</a><br />
<br />
FreescaleがCESで発表したWaRPは$149で2014年2Qの出荷を予定。i.MX6を搭載しAndroidを駆動するパワフルなアプリケーションサポートに加え、KineticsマイクロコントローラとのハイブリッドCPU構成でフィジカル方面の拡張性も期待できる。ただ、Kineticパートはドーターボードで接続というような記載があるのみで、具体的にどのように連携するのかはわからないです。コネクティビティとしてはムラタのワイヤレスモジュールを搭載し無線LANとBlootoothが使えそう。あくまでリファレンスプラットデザインという扱いなので、開発ボードとしてどれだけ普及が見込まれるかわかりませんが、Freescaleをはじめ、HW設計にRevolution Robotics、SW設計にKyneticsの両社がついており、信頼性と当面の調達性はいい感じじゃないかと思います。<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLRmHK1Y7y8F_gB8eiyBiUgGZZLASAZoURFoqPoBdlT5I3BeoPFwSoQEa95ZY2ih1EOTnLiJ-t-zAdOn-H91Sks0E3x8bJNxfsb_YhdwejR4J-tdi8BLFS2-S-yUdBAf4QQsefjgyMa4Q/s1600/31350-CON-Board_Angled_Front_3826-HR.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLRmHK1Y7y8F_gB8eiyBiUgGZZLASAZoURFoqPoBdlT5I3BeoPFwSoQEa95ZY2ih1EOTnLiJ-t-zAdOn-H91Sks0E3x8bJNxfsb_YhdwejR4J-tdi8BLFS2-S-yUdBAf4QQsefjgyMa4Q/s1600/31350-CON-Board_Angled_Front_3826-HR.jpg" height="286" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="color: #666666;">image from www.warpboard.org</span></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h4>
2. MetaWare</h4>
<a href="http://metawear.mbientlab.com/">http://metawear.mbientlab.com/</a><br />
<br />
<a href="https://www.kickstarter.com/projects/guardyen/metawear-production-ready-wearables-in-30-minutes" target="_blank">Kickstarterのプロジェクト</a>として米MbientLabが開発しているMetaWareは、Cortex-M0をコアに持つNordic SemiconductorのSoCを搭載。WaRPとは対照的にアプリケーションプロセッサを削る一方、BluetoothでAndroidやiOSと連携して使うことに的を絞った設計。FCC/CE認証済みの「プロダクションレディ」を売りに、プロトタイピングからマスプロダクションまで幅広く狙っている模様で、サイズも製品搭載まで見越した25セント硬貨相当に収めています。Githubで公開されているライブラリをダウンロードしてAndroid/iOSプロジェクトにロードすることでAPIを使用できるようになるようです。本体にはファームウェアがプリインストールされているので、アプリの開発に集中できますね。本稿執筆時点で、$30からの寄付で本体プレオーダーができるとのこと。<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuZuFmTh7_fI_p67z2nEIHRypg7QZKANYdIX7BsTr5iNHjhoO9UuxNxcpEpP8tmaOpM0zzaprQynH1FFON8Im-P5__NzgKPN6xQ8IpR8-xT7ziG9-dtWw9elmriKUZqKKUfWTG7tcp8DI/s1600/57fee5a0db3d5b527136b50fbd4f03d1_large.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuZuFmTh7_fI_p67z2nEIHRypg7QZKANYdIX7BsTr5iNHjhoO9UuxNxcpEpP8tmaOpM0zzaprQynH1FFON8Im-P5__NzgKPN6xQ8IpR8-xT7ziG9-dtWw9elmriKUZqKKUfWTG7tcp8DI/s1600/57fee5a0db3d5b527136b50fbd4f03d1_large.png" height="202" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="color: #666666;">image from www.kickstarter.com</span></td></tr>
</tbody></table>
<br />
<h4>
3. CoreWind Tech WiFiG25 Module</h4>
<a href="http://armdevs.com/WiFiG25.html">http://armdevs.com/WiFiG25.html</a><br />
<br />
産業用ボードコンピュータのCoreWindからは、AtmelのSoCを50mm×30mmサイズのモジュールに収めたWiFiG25が登場。CPUコアはARM9(400MHz)で、ちょうどWaRPとMetaWareの中間帯を埋めるような存在といえます。WiFiモジュールを標準搭載するほか、2×20ピンの拡張ヘッダが特徴的。ブートローダとLinuxカーネル、DebianルートFSは一応公式で配布しています。ただ、Freescaleのような著名企業がバックアップしているわけでもなく、かといってKickstarterのようなコミュニティ発祥でもない、この手の代物は開発コミュニティがいまいち盛り上がりに欠けるのが懸念点です。価格はRAM128MBモデルが$29.9、256MBモデルが$39と、とても手ごろ。ぜひがんばって欲しいところです。<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSsPVzPDHs9fHuDylNk0tJhL7mHN_Mb83CRq0WblCklA12DSRCoRqyCJT3Vj2wTl-IqfBV04LWllWMeSINVj4ocKidIr7zi0SR8g5GNxeTjEt2GrqetaEmJ0CF7BsUwmNnn0VBvEmdGus/s1600/cefang.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSsPVzPDHs9fHuDylNk0tJhL7mHN_Mb83CRq0WblCklA12DSRCoRqyCJT3Vj2wTl-IqfBV04LWllWMeSINVj4ocKidIr7zi0SR8g5GNxeTjEt2GrqetaEmJ0CF7BsUwmNnn0VBvEmdGus/s1600/cefang.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="color: #666666;">image from armdevs.com</span></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
これらのほかにも、SDカードのフォームファクターでCESで注目を集めた<a href="http://www.intel.com/content/www/us/en/do-it-yourself/edison.html" target="_blank">Intel Edison</a>、WiFi、Bluetooth、FM、NFCとワイヤレスコネクティビティてんこ盛りの<a href="http://www.ingenic.cn/en/en/android.php?pid=114&fid=799" target="_blank">Ingenic Newton</a>、アルテラFPGAを搭載した<a href="http://www.denx-cs.de/?q=mcv" target="_blank">Denx MCV</a>、なんとデュアルコアCortex-A9(1.5GHz)搭載でハイエンドスマホに匹敵するスペックを誇る<a href="http://www.variscite.com/products/system-on-module-som/cortex-a9/dart-4460-cpu-ti-omap-4-omap4460" target="_blank">DART-4460</a>など、注目のプラットフォームが目白押し。どんなプロトタイプが出てくるか、とっても楽しみ。
<br />kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-14690124561029320922014-02-21T02:30:00.004+09:002014-02-21T02:34:58.620+09:00UDOOのUbuntuでネットワークに接続できないちょっと前に<a href="http://atelier-orchard.blogspot.jp/2014/02/udoo.html" target="_blank">UDOOのWi-Fiモジュールを使ってワイヤレス接続</a>するように設定したんですが、その後、なぜかLANケーブルをつないでもPCからSSH接続ができなくなった。とりあえずワイヤレスでSSHログインしていろいろ調べてみると、DHCPでIPアドレスが取れてない。どうやら/etc/network/interfacesの設定がおかしくなってたっぽい。<br />
<br />
UDOOのUbuntuでデフォルトの有線インタフェースのデバイス名は<b>eth2</b>なので、 <br />
<pre class="prettyprint lang-bash">$ sudo vim /etc/network/interfaces
</pre>
<pre class="prettyprint lang-bash">auto eth2
iface eth2 inet dhcp
</pre>
の2行をを追加した上で、<br />
<pre class="prettyprint lang-bash">$ sudo ifdown eth2
$ sudo ifup eth2
</pre>
として反映してやると、有線でも接続できるようになりました。 kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-31792252263340350282014-02-19T00:06:00.000+09:002014-02-19T00:06:16.809+09:00[小技] QEMUの対応マシン一覧を表示するコマンドQEMUでエミュレートできるマシンの一覧を表示するコマンド。<br />
<pre class="prettyprint lang-bash">$ qemu-system-arm -machine help
</pre>
↓こんな感じで出てきます。
<pre class="prettyprint lang-bash">Supported machines are:
none empty machine
collie Collie PDA (SA-1110)
nuri Samsung NURI board (Exynos4210)
smdkc210 Samsung SMDKC210 board (Exynos4210)
connex Gumstix Connex (PXA255)
verdex Gumstix Verdex (PXA270)
highbank Calxeda Highbank (ECX-1000)
integratorcp ARM Integrator/CP (ARM926EJ-S) (default)
kzm ARM KZM Emulation Baseboard (ARM1136)
mainstone Mainstone II (PXA27x)
musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S)
n800 Nokia N800 tablet aka. RX-34 (OMAP2420)
n810 Nokia N810 tablet aka. RX-44 (OMAP2420)
sx1 Siemens SX1 (OMAP310) V2
sx1-v1 Siemens SX1 (OMAP310) V1
cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310)
realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S)
realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore)
realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8
realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9
akita Akita PDA (PXA270)
spitz Spitz PDA (PXA270)
borzoi Borzoi PDA (PXA270)
terrier Terrier PDA (PXA270)
lm3s811evb Stellaris LM3S811EVB
lm3s6965evb Stellaris LM3S6965EVB
tosa Tosa PDA (PXA255)
versatilepb ARM Versatile/PB (ARM926EJ-S)
versatileab ARM Versatile/AB (ARM926EJ-S)
vexpress-a9 ARM Versatile Express for Cortex-A9
vexpress-a15 ARM Versatile Express for Cortex-A15
xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9
z2 Zipit Z2 (PXA27x)
</pre>
ほかにも
<pre class="prettyprint lang-bash">$ qemu-system-arm -machine ?
</pre>
<pre class="prettyprint lang-bash">$ qemu-system-arm -M help
</pre>
<pre class="prettyprint lang-bash">$ qemu-system-arm -M ?
</pre>
でもおk。kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-59629733450058405622014-02-16T22:49:00.001+09:002014-05-02T02:24:44.183+09:00UDOOをワイヤレス化してみた以前、このブログでRaspberry Piのワイヤレス化にトライしました。そのときに使ったのがBuffaloの<a href="http://buffalo.jp/product/wireless-lan/client/wli-uc-gnm/" target="_blank">WLI-UC-GNM</a>というUSB無線LANアダプタです。Raspbian OSで追加のドライバインストールなしに使えて、簡単な設定だけでワイヤレスコネクティビティを追加でき、小型、しかも安価。ストックしておいて損はないアイテムです。<br />
<br />
一方、オンボードのWi-Fiモジュールが搭載されたボードでは、後付けのデバイスなしでもワイヤレス接続をセットアップできます。UDOOの場合、DualおよびQuadモデルにはWi-Fiモジュールが搭載されているので、ボード単体で<b>Raspberry Pi+USB無線LANアダプタ</b>の場合と同様にワイヤレス化が実現できます。<br />
<br />
で、実際にやってみました。手順は下記のとおりです。OSは<a href="http://www.udoo.org/downloads/" target="_blank">公式のUbuntu 12.04</a>です。<br />
<br />
<span style="color: yellow;"><b>ワイヤレスインタフェースを見つける</b></span><br />
<pre class="prettyprint lang-bash">$ ifconfig
(中略)
wlan6 Link encap:Ethernet HWaddr 7c:dd:90:42:cf:83
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
</pre>
wlan6というインタフェースがあることがわかります。なおコマンドは
<br />
<pre class="prettyprint lang-bash">netstat -i
</pre>
や
<br />
<pre class="prettyprint lang-bash">ip link show
</pre>
でも可。
<br />
<br />
<span style="color: yellow;"><b>wpa_supplicantの設定</b></span><br />
<pre class="prettyprint lang-bash">$ sudo sh -c "wpa_passphrase '(ESSID)' '事前共有キー' >> /etc/wpa_supplicant/wpa_supplicant.conf"
</pre>
エディタでちょっと編集
<br />
<pre class="prettyprint lang-bash">$ sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
</pre>
<pre class="prettyprint lang-bash">network={
ssid="(入力したESSID)"
# ここから
key_mgmt=WPA-PSK
proto=WPA WPA2
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
# ここまでを追加
#psk="(入力した事前共有キー)"
psk=(暗号化された事前共有キー)
}
</pre>
wpa_supplicantの再起動。
<br />
<pre class="prettyprint lang-bash">$ sudo pkill wpa_supplicant
$ sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan6 -Dwext &
</pre>
<br />
<span style="color: yellow;"><b>DHCPによるIPアドレスの取得</b></span><br />
<pre class="prettyprint lang-bash">$ sudo dhclient -d wlan6
</pre>
これで接続できるようになるはずです。<br />
<br />
<span style="color: yellow;"><b>ネットワーク設定にワイヤレス接続を追加</b></span><br />
再起動時に自動接続されるよう設定しておきます。<br />
/etc/network/interfacesをエディタで開いて編集。
<br />
<pre class="prettyprint lang-bash">$ sudo vim /etc/network/interfaces
</pre>
下記を追加
<br />
<pre class="prettyprint lang-bash">auto wlan6
iface wlan6 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
</pre>
<hr />
<h4>
参考情報</h4>
<a href="http://www.cyberciti.biz/faq/linux-list-network-interfaces-names-command/" target="_blank">Linux: Show / Display Available Network Interfaces - nixCraft</a>kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0tag:blogger.com,1999:blog-4741542863446671718.post-53082000132668221782014-02-16T03:38:00.002+09:002014-02-18T02:12:49.465+09:00Rapsberry Piで気温のログ+Google Chartsでグラフ化以前「<a href="http://atelier-orchard.blogspot.jp/2013/12/raspberry-pi.html" target="_blank">気温をつぶやくRaspberry Pi</a>」の記事で、温度センサによる室温測定と、自動でのTwitter投稿をやってみました。cronで30分ごとに定期的に温度を測り、ツイートするようにしたわけですが、せっかく定期実行しているので、温度ログを残すようにしてみました。ログといっても、淡々と羅列された数字を眺めても何も面白くないので、可視化します。<br />
<br />
可視化、つまり温度グラフを描画すること、これはいろいろ方法があると思います。たとえば何かの言語の2D描画ライブラリを使って、一つひとつの温度ログを直線で繋いでいくとか。でも、この方法は結構面倒です。横軸はいつからいつまで表示するか、縦軸の温度範囲はどうすれば見やすいか、軸そのものや目盛り、ラベルはどうするか、考えるべきことがたくさん。これらをすべて考慮して実装しても、得られるのは静的な画像が一枚。インタラクティブなUIを作って、拡大縮小なんて、さらに手間がかかります。<br />
<br />
そこで今回は<a href="https://developers.google.com/chart" target="_blank">Google Charts</a>を使ってみます。 Google Chartsは、温度変化のプロットに適した折れ線グラフのほか、円グラフ、棒グラフなど実に多様なグラフのプリセットを備えたWebベースのデータ可視化ツールです。JavaScriptで利用可能で、拡大縮小などのインタラクティブなUIを生成してくれます。しかも、フリー!Google先生、太っ腹。<br />
<br />
<b><span style="color: yellow;">気温取得スクリプトにログ機能を追加</span></b><br />
<br />
まずは前回作った温度測定スクリプトにログ機能を追加します。本来は時刻と気温をシンプルにCSV形式などで記録したほうが汎用性は高いのですが、今回はGoogle Chartsに渡す前提で、HTMLファイルに埋め込むJavaScriptの1行分としてあらかじめ整形してテキストファイルに書き込んでしまいます。<br />
<pre class="prettyprint lang-bash">$ vim temperature.py
</pre>
<pre class="prettyprint lang-python">#!/usr/bin/env python
#!/usr/bin/env python
import os
import os.path
# Get temperature from the sensor
hex_temp = os.popen("/usr/sbin/i2cget -y 1 0x48 0x00 w").read()
hex_temp = hex_temp[4:6] + hex_temp[2:4]
dec_temp = int(hex_temp, 16) / 8 * 0.0625 # 計算結果を変数に入れるよう修正
# ここから下を追加
# Print temperature
print int(dec_temp)
log_file = '/home/pi/path/to/temp_log.txt'
lines = []
if os.path.exists(log_file):
with open(log_file) as f:
lines = f.readlines()
while len(lines) > 20000:
lines.pop(0)
str = " [new Date(" + os.popen("date +%Y,").read().rstrip() + os.popen("echo \"$(date +%m) - 1\" | bc").read().rstrip() + os.popen("date +,%d,%H,%M,%S").read().rstrip() + "), " + str(dec_temp) + "],\n"
lines.append(str)
with open(log_file,'w') as f:
f.writelines(lines)
</pre>
ログファイル(temp_log.txt)の中身は、下記のような感じになっています。new Date()はDateオブジェクトのコンストラクタです。monthのみ、1月を0として数え始める点に注意が必要です。上記のPythonスクリプト内ではos.popen()関数でシェルのdateコマンドを読んで日付を取得していますが、月だけ-1しています。<br />
<pre class="prettyprint lang-js"> [new Date(2014,1,05,04,30,01), 23.5],
[new Date(2014,1,05,05,00,02), 22.75],
[new Date(2014,1,05,05,30,02), 22.1875],
[new Date(2014,1,05,06,00,01), 21.75],
[new Date(2014,1,05,06,30,02), 21.4375],
[new Date(2014,1,05,07,00,01), 20.75],
[new Date(2014,1,05,07,30,02), 20.625],
[new Date(2014,1,05,08,00,02), 21.625],
[new Date(2014,1,05,08,30,01), 21.6875],
[new Date(2014,1,05,09,00,02), 21.125],
</pre>
<br />
<b><span style="color: yellow;">HTML出力スクリプト</span></b><br />
<br />
表示用のHTMLを生成するスクリプトを作成します。上記スクリプトで出力したログ行をファイルから読み込んで展開します。ベースとなるHTMLは<a href="https://google-developers.appspot.com/chart/interactive/docs/quick_start" target="_blank">公式のサンプル</a>などを参考に。<br />
<pre class="prettyprint lang-bash">$ vim write_html.py
</pre>
<pre class="prettyprint lang-python">#!/usr/bin/env python
import os
import sys
argvs = sys.argv
argc = len(argvs)
html_path = ''
if(argc == 2):
html_path = argvs[1] + os.sep
lines = ['']
lines.append("<html>\n")
lines.append(" <head>\n")
lines.append(" \n")
lines.append(" <script src="http://www.google.com/jsapi" type="text/javascript"></script>\n")
lines.append(" <script type="text/javascript">\n")
lines.append(" google.load('visualization', '1', {'packages':['annotatedtimeline']});\n")
lines.append(" google.setOnLoadCallback(drawChart);\n")
lines.append(" function drawChart() {\n")
lines.append(" var data = new google.visualization.DataTable();\n")
lines.append(" data.addColumn('date', 'Date');\n")
lines.append(" data.addColumn('number', 'Temp');\n")
lines.append(" data.addRows([\n")
log_file = '/home/pi/path/to/temp_log.txt'
if os.path.exists(log_file):
with open(log_file) as f:
lines.extend(f.readlines())
lines.append(" ]);\n")
lines.append(" var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));\n")
lines.append(" chart.draw(data, {displayAnnotations: true});\n")
lines.append(" }\n")
lines.append(" </script>\n")
lines.append(" </head>\n")
lines.append(" <body>\n")
lines.append(" <div id="chart_div" style="height: 240px; width: 700px;">
</div>
\n")
lines.append(" </body>\n")
lines.append("</html>\n")
with open(html_path + 'index.html','w') as f:
f.writelines(lines)
</pre>
で、このスクリプトを実行してHTMLを吐き出させるわけですが、本来はCGI化して、Webアクセスがあったときに動的に実行するほうがかっこいいと思います。温度測定スクリプトと同様、30分おきにcronで実行しますが、測定結果のログ書き込み→HTML生成という動作は特に同期しません。手抜きです。cronに登録したジョブ自体、表記順にスタートこそすれ、他のジョブの終了を待つわけではないらしい(<a href="http://askubuntu.com/questions/143666/in-what-order-do-cron-jobs-with-the-same-schedule-run" target="_blank">参考</a>)ので。<br />
<br />
あ、一つのスクリプトにまとめれば話は早いですよ、もちろん。ただhtmlの出力先をユーザのhomeディレクトリ下のpublic_htmlじゃなくて、/var/wwwの下にしたくて、HTML出力はrootのcronでやる必要があるな、と思って別々のスクリプトにしちゃいました。ですのでcorntabもsudoで。<br />
<pre class="prettyprint lang-bash">$ sudo crontab -e
</pre>
<pre class="prettyprint lang-bash">0,30 * * * * /home/pi/work/temperature/write_html.py /var/www
</pre>
あらかじめWebサーバ(apache2) をインストールしておく必要があります。sudo apt-get install apache2とかやればOKだと思います。たぶん。<br />
<br />
あとは、cronが走るなり、スクリプトを手動で実行するなりすれば、所望のHTMLファイルが生成されます。ブラウザからRaspberry Piにアクセスしてやることで、Google Chartsで生成された温度グラフが表示されるはずです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixbryu6xmcLsWDMU3f_z5fuzbUlBTZp6aInMo-zxKeSfnBqmy_-t_BoAH51K8Tw_ZxITuosVA4RlLmFi0DSpP-Niba8GGOd663u5w99INUBIgr8zdf-kH4Fg09o124vwHGZ96Wd9AjoWs/s1600/graph1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixbryu6xmcLsWDMU3f_z5fuzbUlBTZp6aInMo-zxKeSfnBqmy_-t_BoAH51K8Tw_ZxITuosVA4RlLmFi0DSpP-Niba8GGOd663u5w99INUBIgr8zdf-kH4Fg09o124vwHGZ96Wd9AjoWs/s1600/graph1.png" height="144" width="320" /></a></div>
<br />
グラフを特定の期間に絞って引き伸ばして表示してやることもできます。便利。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHC0cpWfAyQpT3nUe_coWis6c9_RlKPLFdB0LPjwvo-IcT66kFsMf-yjOw63lZEo6oiVIqS_pA2XRono8fDNS443pBIJUea_tXbwWIdgEAdpF-8KvNztINSsiIXZ0-10y35jizznNuGFo/s1600/graph2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHC0cpWfAyQpT3nUe_coWis6c9_RlKPLFdB0LPjwvo-IcT66kFsMf-yjOw63lZEo6oiVIqS_pA2XRono8fDNS443pBIJUea_tXbwWIdgEAdpF-8KvNztINSsiIXZ0-10y35jizznNuGFo/s1600/graph2.png" height="144" width="320" /></a></div>
<br />
kimniihttp://www.blogger.com/profile/13137863458642055100noreply@blogger.com0