2013年12月30日月曜日

Beaglebone Black で グラフィック液晶 (書籍「Beaglebone Blackで遊ぼう!」より)

 今回は、Beaglebone Black (以下BBB) ネタです。BBB自体は随分前に買ってあったんですが、何度か触ったあと放置していました。Raspberry Pi に比べて、IOが豊富でADも持っているなど、より、電子工作に適しているとは思うのですが、ネット上の情報量(日本語のね)の少なさなどから、今ひとつ使い方がわかりませんでした。Cloud9でJavaScriptで操作する環境はデフォルトで整っているので、IO+ネットワークをやるにはいいのかもしれませんが、CでIOを操作しようとすると、Raspberry PiでいうWiringPiのようなライブラリが見つけられずに、ファイルIOでGPIOを操作する程度のことしか出来ていませんでした。
 今回、ラトルズの「Beaglebone Blackで遊ぼう!」という本の電子書籍(PDF)版を購入しました。その3~4章にCでのハードウェアアクセスの方法が丁寧に解説されていて、4章ではグラフィクLCDを実際に制御する方法がサンプルにそって解説されていました。幸い、記事で使っている秋月のグラフィク液晶を手持ちの在庫で持っていたので、早速試してみることにしました。

 書籍ではジャンパ線(両端コネクタのワイヤ)で配線していましたが、秋月で買ったユニバーサルケープ基板があったので、それに配線することにしました。

 部品としては、抵抗、コンデンサ、輝度調整用の半固定抵抗が1個ずつ。液晶が20pinのコネクタだけなので、簡単です。(むしろ、そんなに使わないのにケープの46pinコネクタを2つ取り付けるのが面倒かも)


 書籍の回路図を見ながら配線。


 書籍では、PWMとGPIOにアクセスするためのライブラリを作成し、そのライブラリを使って液晶に画像を表示する手順(ソース)が説明されています。書籍の内容そのままなので、ソースは載せられませんが、以下、動かしてみたところ。



 BBBをCで操作したい人には、「Beaglebone Blackで遊ぼう!」は非常によい資料になるのではないでしょうか。

2013年12月29日日曜日

LEGO CITY 3367 Space Shuttle

 今回は、LEGO CITY 3367 Space Shuttleです。スペースシャトルがLEGO 「CITY」なのか微妙な気もしますが、LEGO CITYのシリーズに「スペース」というのがあって、宇宙センターの関連、発射台等があります。



 出来上がると20cm以上の大きさですが、構成されるパーツ自体一つ一つが大きい物が多いので、部品数としてはあまり多くないかもしれません。


 宇宙飛行士(パイロット)のミニフィグと人工衛星。


  スペースシャトル本体は羽根の部分と機首の部分が大型パーツです。








 上面のハッチが開閉します。


 裏側に補強と車輪を付けて


 完成です。





 宇宙飛行士が人工衛星とドッキングして作業をするシチュエーションを再現できます。








2013年12月28日土曜日

LEGO CREATOR 31002 Super Racer

 今回のLEGOはクリエータシリーズです。LEGO CREATOR 31002 Super Racer です。


 F1カーをイメージした車両のキットです。3in1で、全部で3種類のモデルが組めるようになっています。



 まず一つ目のモデルから。








 部品数が少なく、組み立ても簡単ですが、組み立てていてとても楽しいです。今後、CREATORシリーズにも手を出していこうと思います。ブロックの使い方も参考になるし、カーブパーツなどのわりと特殊なパーツがふんだんに使われていて、組み立てて楽しんだ後のパーツ集めにもよさそうです。

 2モデル目。








 それから、3モデル目。








 サンドバギーっぽい乗り物でしょうか?なかなかカッコいいですね。価格もリーズナブルだし、とてもお得感のあるキットでした。





Raspberry Pi に 小型USBモニタ (Mimo UM-740) を接続してみた

 Raspberry Pi に 小型のUSBモニタを接続してみました。今回使用したのは、Mimo UM-740 (といいう型番だったと思う)という Displayllink の USBグラフィックモニタです。例によって、使用目的は特にありません。使わなくなったUSBモニタが転がっていたので、遊びで試してみようと思っただけです。
 Windowsで使用していた時に、中身はDisplaylinkのUSBグラフィックチップなことはわかっていたため、ためしに、「Raspberry Pi」「Displaylink」で Google先生に問合せたところ、情報は既にたくさんありました。今回、参考にさせてもらったのは、こちらです。以下の内容は、参考にさせてもらったこちらの写しとなります。

 まず、カーネルコンパイルのための環境を用意します。自分は、Ubuntu 12の仮想環境を利用しました。

 Raspberry Pi 用のクロス開発環境をインストールします。

   sudo apt-get install git-core gcc-4.6-arm-linux-gnueabi
   sudo ln -s /usr/bin/arm-linux-gnueabi-gcc-4.6 /usr/bin/arm-linux-gnueabi-gcc

 Raspberry Pi のカーネルソースを落とします。

   mkdir raspisrc
   cd raspisrc
   git clone git://github.com/raspberrypi/linux.git

 標準configをコピーしてきて、menuconfig でDevice Driver を追加します。

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

 メニュー画面で [Device Drivers --->] → [Graphics support --->] → [Support for frame buffer devices --->] と選んでいき、この中の[Displaylink USB Framebuffer support]を有効にして、あとは、ESCキーで戻っていき、最後の保存の問合せで[Yes]でConfigを保存します。

 カーネルをビルドします。

   make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k -j2

 エラーがなければ、arch/arm/boot 下に zImage ができています。続いてモジュール。

   mkdir ../modules
   make modules_install ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- INSTALL_MOD_PATH=../modules/

 エラーがなければ、 ../modules/にlibができています。

と、この辺までやったところで、もう一つ、日本語のサイトでこのようなサイトを見つけました。こちらは日本語ですし、丁寧に手順が画面キャプチャ入りで説明されているのでお勧めです。自分の途中の設定からはこちらを参考させて進めさせてもらいます。

 作成したカーネルとモジュールをパックしておきます。--- 以下、こちらのサイトの写しです ---

   mkdir udlfb_raspi
   cp arch/arm/boot/zImage udlfb_raspi/kernel.img
   cp -pr ../modules udlfb_raspi/
   tar cvzf udlfb_raspi.tgz udlfb_raspi

 ここで、現状動いているRaspberry Pi のバックアップを取ります。こちらのサイトではモジュールをコピーしていますが、今回はWin32 Disk Imager でSDカードのイメージを丸々バックアップしました。(こちらを参考)

 バックアップ後SDカードをRaspberry Piに戻して、起動し、ネットワーク越しにファイルコピー。

   scp udlfb_raspi.tgz pi@xxx.xxx.xxx.xxx:/home/pi     (xxx...はRaspberry Piのアドレス)

 ここからは、Raspberry Pi 側にsshログインして作業。

   tar xvzf udlfb_raspi.tgz
   sudo cp udlfb_raspi/kernel.img /boot/kernel.img
   sudo cp -pr udlfb_raspi/modules/lib/modules/3.10.24+ /lib/modules/
   sudo reboot

 まずは、再起動後に無事に起動することを確認。(USBモニタはまださしていない)

 つづいて、いよいよ、USBモニタを挿してみましたが、一瞬緑色に表示されるものの、すぐに画面が暗くなり、SSHログインも切断。・・・よく見ると、無線LANのドングルもチカチカしなくなっています。どうやら、USB給電不足の様子。このUSBモニタはかなり電気食いのようです。そこで、間にACアダプタ付き(セルフパワー)のUSBハブをかましてみたところ、緑色に発光。画面は表示されません。なにも参考なしでやっていたら、これでダメかと思ってしまうところですが、事前に先ほどの参考にさせてもらったサイトを見ていたので、これで正常動作であることは認識済み。
 設定ファイルを作成して、Xを起動する必要があるらしい。

   sudo vi /etc/X11/xorg.conf

で、xorg.conf ファイルを作成・編集します。configフィアルの中身の意味は、わかっていません、すみません。とりあえず、丸写し。そのうち勉強します・・・。

   Section "Device"
    Identifier "uga"
    driver "fbdev"
    Option "fbdev" "/dev/fb1"
    Option "ShadowFB" "off"
   EndSection
   
   Section "Monitor"
    Identifier "monitor"
   EndSection
   
   Section "Screen"
    Identifier "screen"
    Device "uga"
    Monitor "monitor"
   EndSection
   
   SEction "ServerLayout"
    Identifier "default"
    Screen 0 "screen" 0 0
   EndSection

で、Xを起動します。

   startx


 おおっ、映った。わーい。



 今回は、Google先生と先人の力に100%頼り切りでした。もうすこし、自分であれこれ試してみたほうがよかったかな・・・。でも、こういった情報を公開して頂けるのは本当にありがたいですね。感謝しつつ今回のトライは終了。