FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CES2013 #3

CES2013、今年は全3回で、コンパクトにまとめました。
最終回は、ちょいと気になるガジェット集です。


スーツケースガジェット
_DSC9466
Lost luggage、つまり、空港に預けたスーツケースが同じ目的地に着いていないトラブル。
そんなトラブルがあったときに助かるのが "Trakdot "
スーツケースの中に入れておくと、飛行機が空港に到着したときに、到着した場所をSMSやEmailで送ってくれる。
単三電池 2個だけで動く。GPSだけでなく、海外の携帯電話方式であるGSMチップを使っているっぽい

端末価格:$49.99
登録料:$8.99
年間利用料:$12.99

2013年4月~サービス開始


フォークガジェット

口に食べ物を運ぶ動きをモニターし、
食べるのが早すぎる場合は振動やLED点灯で知らせてくれるフォーク"HAPIfork"
USBやBluetoothを通じてスマホへログデータをアップロードすることも可能
フォークは洗浄OK。

得られるデータは以下3つ。
・食事にかかった時間
・何口食べたか
・一口でかかった時間

これらを使って、コーチングやソーシャルゲームとも連携するらしい。
2013 3Qに発売予定


ガーデニングガジェット

Parrot社が開発した、植物の環境をモニタリングしてくれるガジェット"FlowerPower"
以下のようなセンサが付いていて、不足していたり過剰な場合はBluetoothを通じて知らせてくれる。
・肥料センサ
・温度センサ
・照度センサ
・水分センサ

2013年中に発売予定。


以上、CES2013のまとめでした!

CES2013 #2

CES2013のまとめの続き。
今回は、新たな入力インターフェースの紹介です。

LEAP
タッチパネルなどのデバイスに触れることなく、指先やペン先の動きを超高精度で捉える入力インターフェース。


各辺約60cmの立方体領域にある物体であれば、10μmの制度で3次元の動きを検出可能。
10本の指の同時入力も可能で、追従性もかなり高い(レイテンシ3ms)
CMOSセンサと赤外線LEDを使用しているが、特別なデバイスを使っている訳ではない。
センサ方式も従来からあるTOF*
小型で安価なデバイスであるのに、これだけの高精度で検出できるのは、ソフトウエアのアルゴリズムに秘密があるらしい。
$70くらいで2013年2月にBestBuy.comにて予約注文受付開始。

*TOF(Time Of Flight)
赤外線を出し対象物で反射させ、反射してきた赤外線をセンサで捉える。その遅れ時間から対象物までの距離を求める方式。参考説明サイト
ちなみにKincectのセンサ方式は"light coding"というもので、赤外レーザーをあるパターンで広範囲に拡散させ、それを赤外線カメラで撮影する。その拡散した中で動きがあるとパターンが歪むため、それを検出している。参考動画



Tobii
視線を入力にする。Eye trackingデバイス


既に数年前から医療分野など業務用には製品化されています。
原理は、近赤外LEDの光を目に向けて照射し、瞳孔からの反射光を近赤外CMOSセンサで受信して視線の位置を検出。

注目すべき点は、目だけで入力するのではなく、メインは視線入力で補助的にキーボードやマウスを使う点です。
例えば、実行したいアイコンがある場合、そのアイコンを見つめて1つの決まったキーを押すだけで実行される。
マウスでポインタをアイコンに合わせてからダブルクリックをするよりも、明らかに早い。
他にも、文字を目線で追ってゆくだけで、ページをスクロールさせることもできる。
また、地図のピンチ&ズームは、中心のポインタは目で行い、スクロールはマウスを使うことにより、快適に時短で操作が可能となるようです。

今回は一般ユーザー向けの製品"Tobii REX"を発表。2013年春に発売予定。
現在は、開発者用であれば$995で注文可能。

CES2013 #1

明けまして、お久しぶりです。
かなり遅くなりましたが、CES2013のまとめです。

まずは、王道を攻めます。
"テレビ"、"スマホ"、"クルマ"、"カメラ"です。


テレビ
去年までは3DテレビやスマートTVが流行でしたが、今年は4Kです。
ご存じ、4Kとは2K×1K(1920×1080)画素の解像度をもつフルハイビジョンの4倍で解像度4K×2K(3840×2160)画素の映像です。
でも、肝心のソフトやコンテンツは4K対応のモノは現状非常に少ない。
じゃあ意味無いのかと言うと、そうでもなく、以下の2つの楽しみ方が可能です。

アップコンバートする
2Kのカメラ撮影されたコンテンツに対して4Kにアップコンバートしても効果がありませんが、元々4Kのカメラで撮影され2Kの映像に圧縮されたコンテンツには4Kデータの"残骸"が残っていて、それを利用してアップコンバートをかけると効果があるようです。

②自分で撮影する
SONYからは、お手頃な4Kビデオカメラが発売予定なので、自分で4Kコンテンツを作って楽しむという方法もあります。


スマートフォン
Intelは、低価格帯スマホ向けのAtom Z2420プラットフォーム(Lexington)を発表
新興市場に向いていると言うことで、インドやケニアのスマホで採用が決まっている

中国のHuaweiは6.1インチの大画面スマホ"Ascend Mate"を発表。デカすぎ。
"Ascend D2"はIPX5/4の防塵防水仕様

SonyはXperia Zを発表
・画面オフ時にアプリをオフし、画面オン時にアプリを再起動する"スタミナモード"
・高画質化技術 "モバイルブラビアエンジン2"
・フルHDで"HDR動画"を撮影可能な1300万画素のカメラ
・従来の裏面照射型と比較して暗所での撮影能力が向上する裏面照射型CMOSセンサー"Exmor RS"
・NFCを利用して、タッチするだけで機器間を簡単に接続できる"ワンタッチ機能"
スマホ最強スペックで、2013春に発売されます。


クルマ
・Audi Piloted parking

スマホでササっと操作すれば、バレーパーキング(ホテルの正面玄関前などで車を乗り捨て、あとは係りの者に任せるという駐車システム)を無人で自動操縦するデモを実施。今回のシステムでは、建物の入り口付近や駐車場内の各所に大量にレーザースキャナーを配置し、これを活用しているようです。http://wired.jp/2013/01/11/ces-2013-audi-self-parking/
また、渋滞時にはアクセルペダルを踏み続けることなく走ってくれるレーダークルーズコントロールだけでなく、ハンドルもフリー。

・LEXUS(TOYOTA)の自律走行車両
周囲360°の障害物を検知するレーザーレーダーで、約70m先まで検知可能。
複数のカメラを搭載し、150m先までの障害物や信号・標識を見分ける。
ミリ波レーダーも複数搭載し、障害物や前方の車との距離を正確に測定。
センサーのかたまりです。


アクションカメラ
・GoPro HERO3

こちらは既に2012年12月に発売済みのウェアラブルスポーツカメラ
ダイビング、スキー、スノボ、カヌー、バイクなどあらゆるシーンで身につけて使える小さなカメラ。
スマホからリモート操作も可能。Editionによっては、4K(15P)対応のモノもある。

・ION ADVENTURE
こちらもアクションカメラ。特徴は2つ。
1つは、動きを検出すると録画が始まる"vibrate to record"。
もう一つはノンストップで録画可能なように、SDメモリカードのスロットが2つあること。
2013年3月発売予定

・Ego mini

上記の2つには性能的に劣りますが、とにかく小さいのが特徴。
4cm×2cm×5cmで1080p(30fps)の撮影も可能。Wifiでライブビューも見られるようです。
$200で2013年後半発売予定



組み込みAndroidポータブル #13

第13章 Bluetooth接続

ビーグル君とお散歩を目指すプロジェクト。
今まで操作するのに、有線マウスを使用していましたが、スマートに無線化したい!

120618_BeagleBoard_Bluetooth.png


しかし、通常のスマホのように設定画面でONしようとしても、BlueTooth ONにはなりません
120625_BT.jpg

という訳で、今回はBluetoothを接続できるように設定します。
ちょびっと手間がかかります。
主な手順は以下4つ。

・BT-USBドングル準備(BTハードの準備)
・KernelのConfig設定(BTドライバ組み込み)
・AndroidのConfig編集(Android OSでBT有効化)
・init.rc修正(起動スクリプト修正)



BT-USBドングル準備(BTハードの準備)
そもそもBeagleBoardにはBluetoothのハードは内蔵されていません。
そこでUSBで挿入できるBT-USBドングルを準備します。家電量販店に行けば安く売ってます。
120625_BT-dongle.jpg
数年前に購入したcoregaのCG-BT2USB02CW(Bluetooth Ver2.1+EDR)
もちろん、これ以外でも大丈夫です。


KernelのConfig設定(BTドライバ組み込み)
Linuxでの作業です。
"kernel"フォルダへ移動し、MENU CONFIGを立ち上げる

cd ~/myGingerBread/TI_Android_GingerBread_2_3_4Sources/kernel/
make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig


すると次のような画面が現れる
120620_BTconfig_0.png
操作は、上下キーで項目移動、Yキーで組み込み、左右キーでSelect/Exit選択、Enterキーで決定

"Networking suppport"を選択し、Enterキーを押してサブメニューへ進む
120620_BTconfig_1.png

さらに"Bluetooth subsystem support"を選択し、サブメニューへ進む
出てきた項目全てをYキーを押して組み込む
120620_BTconfig_2.png

"Bluetooth device drivers"の中も全て組み込んだ
120620_BTconfig_3.png

Exitで戻って"RF switch subsystem support"の中も全て組み込む
120620_BTconfig_4.png

pathを通してから

export PATH=~/myGingerBread/TI_Android_GingerBread_2_3_4Sources/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH


makeする

make ARCH=arm CROSS_COMPILE=arm-eabi- -j5 uImage


AndroidのConfig編集(Android OSでBT有効化)
BoardConfig.mkを編集する

cd ~/myGingerBread/TI_Android_GingerBread_2_3_4Sources/
emacs device/ti/beagleboard/BoardConfig.mk


開いたファイルの一番下に以下の文を追記

BOARD_HAVE_BLUETOOTH := true


Androidをビルド。5分くらいかかった。

$ make TARGET_PRODUCT=beagleboard OMAPES=5.x -j5


out/target/product/beagleboard の中のファイルについて
以前作ったandroid_rootfs フォルダの中身を消すか、フォルダ名を変えて退避
android_rootfsフォルダを新規作成
rootフォルダ以下の中身全てをandroid_rootfsフォルダにコピー
systemフォルダをandroid_rootfsフォルダにコピーする


init.rc修正(起動スクリプト修正)
TIのPorting Guidesを参照すると分かりますが、UARTドライバーのポート名?を変更する必要があります。
"Starting 2.6.37 kernel, UART driver is changed to use ttyO* instead of ttyS*"

init.rcというファイルがandroid_rootfsフォルダにあるので編集する
右クリックgeditで開いて編集可能
4箇所、 /dev/ttyS1 という所があるので、/dev/ttyO1に変える


後は、前回と同様の作業を行うだけ!

Android File Systemが作られた位置へ移動

cd out/target/product/beagleboard


android_rootfsをimageへコピーする
Toolの中にある mktarballシェルスクリプトを使って、今作ったフォルダ android_rootfs を rootfs.tar.bz2 に圧縮してimageフォルダへコピーする

sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
cp rootfs.tar.bz2 ../../../../../images/


microSDカードに書き込み

cd ../../../images
LANG=C sudo ./mkmmc-android.sh /dev/sdc MLO u-boot.bin uImage boot.scr rootfs.tar.bz2



結果
microSDカードをBeagleBoardに入れ立ち上げると、BTマークが表示されました。
120625_BT2.jpg
成功!!


ポイント
KernelのConfig設定で、"RF switch subsystem support"の中をincludeし忘れていて、かなりハマりました。
つまずいた場合は、シリアルで繋いでAndroid起動後に、"hciconfig"や"hcitool scan"コマンドが効くか試してみるべし


参考にしたサイト
知らんがな(Gingerbread (Android 2.3.4) on BeagleBoard-xM Rev.C)
TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide

Maker Conference Tokyo 2012

6/2(土)お台場 日本科学未来館で開催された「Maker Conference Tokyo 2012」に参加してきました。
今回のMakeは一般展示は一切無しで、ファシリテーターとゲストがディスカッションを行うというものでした。
特に印象的だったところだけ、感想を書きます。

120602_MakerConferenceTokyo2012.jpg

参加者は約200人くらいで、半分以上の人はMake:に出展したことがある人のようでした。
一方で、Make自体が全くの初参加という方もいました。

オライリー・ジャパンからの話
これまでのMakeの振り返りと今後のMakeについての話です。
出展者も来場者数も右肩上がりに増え、今回はその節目ということでカンファレンス形式にしたようです。
次回開催は2012年11月を予定しており、「Make: Tokyo Meeting」から本場アメリカと同じ「Maker faire」という名前に変更になります。ですが、内容については今まで通りということでした。


Dale Dougherty(デール・ダハティ)の話
書籍「Make:」と「Maker Faire」の創設者。
印象的だったのが、「interdisciplinary」「誰でもMaker」「Maker Space」です。
「interdisciplinary」は、異なる多分野にまたがる人たちが集まるという意味です。
確かに、電子工作だけでなく、手芸やサイエンス、職人芸のようなバラエティーの富んだ出展者がたくさん居ます。その中で新たなコラボレーションも生まれるので、これがMaker faireの面白い点です。
「誰でもMaker」は、昔はモノづくりと言えば、お父さんだけが対象だったが、今日では老若男女問わずにモノづくりすることが可能になってきたということです。これはオープンソースソフトウェアやオープンソースハードウェアによる恩恵で、近代社会の「消費」する文化から「DIY」するという昔の文化が見直されてきているということです。
「Maker Space」は、学校にモノづくりのための場所を設け、フライス盤や3Dプリンタを提供し、子供たちにモノ作りの面白さを伝えるという活動を行っているということです。有望な未来のMakerがたくさん増えそうです。


途中で分科会が2回あり、3~4のテーマで会場が別れて開催されました。
自分が参加したのは、「オープンソースハードウェアの理想と現実」「ものを作る仕事を作る」です。


オープンソースハードウェアの理想と現実
印象的だったのが以下の2つです。
・回路図には著作権はあるが、回路自体には著作権は無い(特許は別)
・CC(Creative Commons) は、C(Copyright:著作権)とPB(Public Domain:知財消滅or放棄)の中間を作っている
Arduinoを例にOSHW(Open Source HardWare)の問題点などを聞くことができました。OSHWはまだ出来たばかりなので、安定するまで紆余曲折ありそうです。
これを機にOSHWやCCについて勉強してみようと思います。


ものを作る仕事を作る
タイトルだけ見るとだと?ですが、
個人でモノを作り販売することを仕事にしている3名をゲストに迎え、色々と質問するという内容でした。
印象的だったのが以下の2つ。
・覚悟が必要
・売価の7割は利益にしろ
前者は、販売システムや在庫管理、取説作成、アフターサービスなどモノを作ること以外にたくさんやることがあるということです。それぞれの苦労話が聞けて参考になりました。
後者は、7割が丸々儲けということではなく、販管費や手数料、自分の人件費に割り当てる必要があるためです。
でも実際は7割設定は難しいのが現状のようです。


クロージングセション
最後に各分科会のまとめの発表がありました。
印象的だったのが、うろ覚えですが、以下のような意見です。
「ソフトウエアとハードウエアはオープンソースになってきたが、デザインはオープンソース化されていない。デザインが定量的にデータ化されてオープンソースになれば、さらに面白い世界になる」
確かに既にデザインが取りこまれたコンテンツはダウンロードできますが、デザインそのものはダウンロードできません。これが出来れbが、あるデザインをベースにさらに新しいデザインを作るという流れが加速的に拡がりそうですね。


追伸
最後は、懇親会で色々な方とお話ができ、少しだけ「おうどうギターLite」を自慢してきました。
ちなみに会場が7階だったので、窓からダイバーシティのガンダムを眺めながらビールを飲むことができました。

組み込みAndroidポータブル #12

第12章 電源不具合を解決せよ

ビーグル君とお散歩を目指すプロジェクト。
前回は、モバイル電池を購入してUSB OTGポート経由でBeagleBoardxMに給電しましたが、バックライトが中途半端な明るさで、OSが全く起動しませんでした。

120513_power.jpg

今回はこいつを解決します。


解析
不具合写真をよく見てみると、DCジャック近くのLEDが赤く光っていることがわかる。
LEDのリファレンス番号はD13。
"BeagleBoard-xM System Reference Manual Revision A3"によると、過電圧検知するとD13が点灯すると書いてある。回路図と部品データーシートを睨めっこしてみたが、過電圧検知じゃなくて低電圧検知ではなかろうか?
Revision B → Revision Cの変更点で、この回路が変更されている。やっぱ間違ってたのでは?
Rev Bに話しを戻すと、この検知回路はDC5Vジャックの電圧を検知して、低電圧の場合はFETをOFFにするという仕組みと解釈した。今回はUSB OTGポート電源なのに検知しているのは、FETから電圧が回り込んでいるのだと思う。
つまりは、内部の電圧(DC_5V)が下がっているということだ。
実測してみると、USB OTGポート端の電圧4.8Vに対し、内部電圧(DC_5V)は2.8Vくらいだった。


原因
ビジネスメンは忙しいので結論から先に言うと、原因は「突入電流」だ。
変換基板の3.3V REG ICの回路に電解コンデンサを付けているが、これを外してみるとOSがちゃんと立ち上がる。
電源投入直後は、非常に短い時間であるが、電荷のたまっていないコンデンサに急激に電流が流れる。これが「突入電流」
そして、BeagleBoardxMのUSG OTGポートと内部電圧(DC_5V)の間には"TPS2141PWP"というICがあり、DCジャックの挿入有無を検知してスイッチしているだけかと思っていたが、電流を監視して制限していた。

ICのデータシートをざっくり意訳すると
・突入電流を抑えるために最初は最大100mAに制限している
・その後、出力側の電圧が入力側の93%以上に達したら制限を1800mAまでに引き上げる
ということだ。
何でこんなことやっているのかというと、USB規格で「USBデバイスがUSBホストから電源を得る場合に突入電流による急激な電圧低下を防ぐこと」と決まっているためだ。

しばらく待っていれば、93%に達しそうなものだが、LCD側の負荷により電解コンデンサにたまった電荷がすぐ使われてしまい、電圧が上がらない均衡状態が続いていると思われる。
とりあえず、原因はわかった。


対策
・電解コンデンサ削除
これでいいじゃん! と思うかもしれないが、電解コンデンサは飾りで付いている訳ではない。
実際に外してみると、非常に映像が乱れる。
却下

・給電をUSB OTGポートからDCジャック側へ改造
DCジャック側には電流制限を行うICは居ない。
しかし、BeagleBoardxMの基板に手を入れて改造するのは避けたい。値段高いしね。
またUSBケーブルを改造してDCジャックに変換する手もあるが、こりゃ面倒だ。
却下

・制限抵抗追加
突入電流を防ぐ対策として、間に抵抗を入れる案がある。
しかし、3.3V REG ICに定常的に流れている電流は235mA。
どれくらいの抵抗値が必要なのかはやってみないと分からないが、電圧降下を考えるとそれほど大きな抵抗は入れられない。また、無駄に熱として電力が消費されてしまい、電池の持ち時間を減らしてしまう。
却下

・インダクタ追加
突入電流を防ぐ対策として、間にインダクタを入れる案がある。
インダクタであれば、突入電流時は抵抗値が大きくなり、定常時は抵抗がほぼゼロになるので、無駄な電力が消費されずに済む。
しかし、手持ちのインダクタで試してみたが結果は変わらなかった。
ちゃんと特性を考慮して購入する必要がありそうだ。
保留

電源供給タイミングをずらす
電解コンデンサにしっかり充電させた後に、LCD側の負荷を繋ぐという作戦。
LEDバックライトの電流が支配的なので、ここにトグルスイッチを付けて、手動でバックライトをON/OFF出来るようにした。
120513_power2.jpg
スイッチを挿入する場所はLEDバックライト電流が直接流れている所ではなく、LEDドライバのEN(chip enable)端子。 キャリーボード上でプルアップされているので、トグルスイッチを使ってGNDとショートもしくはオープンを切り替えられるようにした。

トグルスイッチでEN端子とGNDをショートしたまま電源投入
(バックライトOFFのまま起動)
120513_power3.jpg

その後、トグルスイッチを切り替えてEN端子とGNDをオープンにする
(ちょいと遅れてバックライトをON)
120513_power4.jpg
※実際はandroidのロゴが出るまで待つ必要はない。電源投入直後1秒以内にスイッチを切り替えて問題ない
成功!
→ これを採用


結果
とりあえず、仮ですが組み直しました。
120513_power6.jpg

「これはビーグル君の"しっぽ"です。」と誤魔化す案もありますが
邪魔だし、手動で切り替える手間がかかるので何とかしたいと思います。


続く


必要な部品 [ 購入先 ]
・トグルスイッチ[マルツパーツ館]
・スズコート線材 1.2mm[マルツパーツ館]

参考にしたサイト
BeagleBoard-xM System Reference Manual Revision A3
BeagleBoard-xM System Reference Manual Revision C
TPS3803G15
TPS2141
FDC6331L
IFB-T043S(Carry Board)
RT9293(LED Driver)
Wikipedia(突入電流)
EDN JAPAN(USBデバイスの受電時に突入電流を制限)
宮崎技術研究所(良くわかる 実用ノイズ対策技術)

組み込みAndroidポータブル #11

第11章 電源はどうするよ?

ビーグル君とお散歩を目指すプロジェクト。
前回は持ち運べるようにケースに押し込めました。
今回は電源です。
120510_Beagleboard.png


電源供給方法
そもそもBeagleBoardxMで可能な電源供給方法は何があるのか調べました。
(1)5V DCジャック
今、使用している方法ですが、5Vに変換するACアダプターを繋げるためコンセントが必要。
これでは持ち運べません。

(2)USB OTG Port
USB miniABコネクタにUSBケーブルを繋いで給電
スマホを充電する電池とかUSBタイプのバッテリーはたくさん世に出ているので、これを使えばいけそうだ!


消費電流調査
まずBeagleBoardxM自体の電流値は"BeagleBoard-xM System Reference Manual"よりTyp 750mAということはわかりました。
次に変換基板、キャリーボード、4.3inch LCDでの消費電流をざっくり調査・計算してみました。
Backlight LED 181mA
3.3V Regulator IC 15mA
1.8V Regulator IC 0.6mA
LCD driver 15mA
LED Driver 2.6mA
Logic Level Converter(x4) 21.2mA
NAND gate 0.01mA
------------------------------------
合計 約235mA
※TYPとMAX混在してます。ざっくりだからイイんです。

BeagleBoardxMと合わせると約985mAということがわかりました。


電源購入
BeagleBoardにマウスやキーボードなどのUSB機器やLANケーブルを繋ぐともっと消費することから1500mAくらいは流せるモノが必要そうです。
何か良いのないかな~って探していると、ぴったりなのがありました。

Panasonicモバイル電池パック QE-PL201

USB対応のリチウムイオン充電池
出力:5V 1.5A
寸法:63x70x24mm
質量:150g
端子数:2個
充電時間:約7時間
出力時間:約5時間(1端子)、約2.5時間(2端子)


という訳で、早速購入しました。

(中略)

早速、届きました。
120510_power.jpg
それほど大きくないし、デザインもシンプルでスタイリッシュ。
さすがに、今回作ったケースの中には入りませんが、簡単に持ち運べそうです。
もちろん、スマホとかにも使い回せます。


他のアイテムも必要
ここで注意するのは、1.5AというのはUSBを2端子挿したときの最大値です。
1端子あたりの出力値は仕様書に書いていないので不明。

なので、BeagleBoardxMで使う場合は、USB Yケーブルが必要になります。
家にないか探してみると、Docomoのモバイルルーターの付属品がありました。
120510_power2.jpg
家電量販店とかにも売ってます。


起動
モバイル電池パックをBeagleBoardxMに装着!
120510_power3.jpg


電源オン!
120510_power4.jpg
あれっ? バックライトが中途半端に暗いし、OSも起動もしない...


続く


必要な部品 [ 購入先 ]
・Panasonicモバイル電池パック QE-PL201[楽天]
・ELECOM ダブルパワーUSBケーブル[楽天]


組み込みAndroidポータブル #10

第10章 ケースを作ろう!

ビーグル君とお散歩を目指すプロジェクト。
Android2.3をポーティングし、4.3inch LCDに表示させることができました。

外へ持ち運ぶのに基板むき出しでは、せっかく配線した線がポロリと取れてしまう可能性があります。
そこで今回はケースを作成します!
120508_Beagleboard_case.png


ケースに入れるメリット
・一体型となり持ち運び易くなる
・何となく作った感を味わえる
・誤って配線が取れてしまうことを防げる
・透明ケースに入れると反射光でカッコよく見える
・ホコリがたまりにくい
など色々あります。


使用する材料
秋月のポリカーボネート・ケースを使いました。
寸法は縦125mmx横110mmx高さ31mm
このサイズにLCDとキャリーボードと変換基板とBeagleBoardを押し込めると、かなりギリギリです。


使用する工具
白物家電の三種の神器といえば、エアコン、冷蔵庫、洗濯機。
卓上製品の三種の神器といえば、卓上カレンダー、卓上ポールペン、そして 卓上ボール盤

120508_drilling_ machines
あと ヤスリ も必要


作業内容
現物合わせでペンで印を付けて、卓上ボール盤で穴を空け、ヤスリでシコシコと削る地道な作業です。

[空けた箇所]
・USB Aコネクタ×4
・LANコネクタ
・Dsub9pinコネクタ
・DCジャック
・USB miniABコネクタ
・microSDスロット
・HDMIケーブル
・ステレオミニジャック
・基板スぺーサー×4
※マイクとS端子の穴は用意しませんでした。


完成品
こんな感じで出来ました。
120508_case.jpg


アップ画像。
120508_case2.jpg
大雑把過ぎると思われるかもしれませんが、四角を作るのが難しいです。
ヤスリで削る作業が大変すぎます。


BeagleBoardxMを入れてみました。
120508_case3.jpg
ステレオミニジャックは遠いため、別途ジャックを用意しジャンパー線で延長しました。
この後、Beagleboardにスぺーサーも付けました。


フタをしてDCジャックやマウスを挿してAndroidを起動
120508_case4.jpg
良い感じ。
ケースに入れてしまえば、大雑把な穴の形も気にならなくなります。


続く



必要な部品 [ 購入先 ]
・大型ポリカーボネート・ケース 140[秋月電子通商]
・プラスチックナット+連結(6角ジョイント)スペーサー(10mm)セット[秋月電子通商]
・ミニジャックφ3.5ジャック(ステレオ・オープンBOX型)[千石電商]
・スズコート線材 1.2mm[マルツパーツ館]

追伸
熱がたまるので放熱は考えた方が良いかもしれません。
写真だと簡単そうに見えますが、丸一日作業でした。。。
もっと効率の良い作り方があれば、誰か教えて

組み込みAndroidポータブル #9

第9章 Androidポーティングに挑戦(2)

ビーグル君とお散歩を目指すプロジェクト。
前回からの続きで、Android 2.3(GingerBread)をビルドしてBeagleBoardxMに入れます。
120507_Beagleboard.png


全体の流れ
前回(1)、(2)が終わりました。今回は(3)から最後までダーっとやります。
簡単に言うと、"images"というフォルダを作り、ビルドしたモノをそこにどんどん放り込みます。
最後にシェルスクリプトを使ってmircroSDに書き込む という流れです。

(1)事前準備
(2)Source CodeとDevKitをダウンロード

(3)作業準備
(4)MLOを作成
(5)u-bootを作成
(6)KernelをビルドしてuImageを作成
(7)Andoridをビルドしてrootfsを作成
(8)boot script作成と解像度変更
(9)microSDカードへ書き込み
(10)起動


(3)作業準備
"myGingerBread"というフォルダを作成します。
その下に"images"というフォルダを作成します。

mkdir myGingerBread
cd myGingerBread
mkdir images


前回ダウンロードした2つのファイルをドラッグ&ドロップでmyGingerBreadへ移動します。

マウスで作業


以下のコマンドを実行して2つとも解凍

tar zxvf TI_Android_GingerBread_2_3_4Sources.tar.gz
tar zxvf TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz


"TI_Android_GingerBread_2_3_4Sources"へ移動し
readmeというファイルに従ってコマンドを実行

cd TI_Android_GingerBread_2_3_4Sources
./.repo/repo/repo sync --local-only


以下コマンドを実行しPATHを通す

export PATH=~/myGingerBread/TI_Android_GingerBread_2_3_4Sources/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

これで、ビルド作業に入れます。


(4)MLOを作成
"x-loader"フォルダへ移動

cd x-loader


クロスコンパイルを実行

make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- omap3beagle_config
make CROSS_COMPILE=arm-eabi-


"x-loader.bin"というファイルができるので、DevKitの中にある"signGP"というプログラムを使ってMLOを作成する

../../TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/signGP/signGP ./x-load.bin


"x-load.bin.ift"というファイルができるので、"images"フォルダへ移動し、名前を"MLO"に変更する

mv x-load.bin.ift ../../images/MLO



(5)u-bootを作成
"u-boot"フォルダへ移動しビルド

cd ../u-boot/
make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- omap3_beagle_config
make CROSS_COMPILE=arm-eabi-


"u-boot.bin"というファイルができたので、"images"フォルダへコピー

cp u-boot.bin ../../images/


母艦PC直下の"/usr/bin"フォルダに、"tools"フォルダの下にある"mkimage"をコピー
これはkernel imageを発生させるのに必要

cd tools
cp mkimage ~/bin



(6)KernelをビルドしてuImageを作成
"kernel"フォルダへ移動

cd ../../kernel


ビルドする。 このとき最後の "-5"というオプションは母艦PCのCPUコア数 + 1 の値にすると速く実行できる。
CPUコアの調べ方は、"cat /proc/cpuinfo"などで調べられる。

make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_android_defconfig
make ARCH=arm CROSS_COMPILE=arm-eabi- -j5 uImage


"arch/arm/boot"の下に"uImage"ファイルが出来たので、"images"フォルダへコピー

cd arch/arm/boot
cp uImage ../../../../../images/
cd ../../../../



(7)Andoridをビルドしてrootfsを作成
Android File Systemをビルドします。 先ほどと同様にCPUコア数+1 を-jオプションで追加
ちなみに1時間弱放置していたら、いつの間にか出来ていました。

make TARGET_PRODUCT=beagleboard OMAPES=5.x -j5


Android File Systemが作られた位置へ移動

cd out/target/product/beagleboard


"android_rootfs"というフォルダを作成して、その中に"root"フォルダの中身 と "system"フォルダ をコピー

mkdir android_rootfs
cp -r root/* android_rootfs
cp -r system android_rootfs


圧縮して"rootfs.tar.bz2"というファイル名にした後、"images"フォルダへコピー

sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
cp rootfs.tar.bz2 ../../../../../images/



(8)boot script作成と解像度変更
DevKitへ移動し、"mkbootscr"を実行

cd ~/BeagleBoard/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-bootscr/
./mkbootscr


"boot.script"というファイルが出来るので、編集する

sudo emacs boot.script


以下を入力して保存。 ここで解像度を480x272にしています。

mmc init
fatload mmc 1 80200000 uImage
setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init omap_vout.vid1_static_vrfb_alloc=y omapfb.mode=dvi:480x272MR-24 omapdss.def_disp="dvi" vram=8M omapfb.vram=0:8M'
bootm 0x80200000


"boot.scr"を作成して、"images"フォルダへコピー

sudo ./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n BeagleBoard -d boot.script boot.scr
cp boot.scr ../../../images/



(9)microSDカードへ書き込み
シェルスクリプトを"images"フォルダへコピー

cd ../mk-mmc
cp mkmmc-android.sh ../../../images/


さあ、これで役者はそろいました!
書き込む microSDカードを母艦PCへ繋ぎます。
ドライブの場所を確認してください。
システム→Administration→ディスク・ユーティリティ でわかります。
もしくは、dfコマンドでも確認できます。
エレバカの母艦の場合は "/dev/sdc" ということが分かりました

cd ../../../images
LANG=C sudo ./mkmmc-android.sh /dev/sdc MLO u-boot.bin uImage boot.scr rootfs.tar.bz2

書き込みが終了したら、microSDカードをBeagleBoardxMへ挿入!


(10)起動
電源オン!
120507_android1.jpg


とりゃー!
120507_android2.jpg
おおー!
ドロイド先生登場! しかも2体もいらっしゃる! 恐れ入ります!

120507_android3.jpg
ロゴ出ました!


120507_android4.jpg
ログイン画面!

120507_android5.jpg
マウスでログイン!

120507_android6.jpg
ランチャー画面!

ちょっと、画像が乱れている?
そんな小さな事は気にしてはいけない!
とりあえず成功だ! 今夜は良い夢が見られそうだ

続く



参考にしたサイト
知らんがな  ← こちらのサイトを激しく参考にさせていただきました!
TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide


追伸
以前に参考書を見ながらやってましたが、数時間要するダウンロードに何度も失敗し、上手く行きませんでした。
根幹となる部分は変わりませんが、ダウンロード先のURLなどは、変更が激しいので最新の情報をキャッチする必要があります。
ここに書いた情報もいつの日か古くなってしまうときが来ると思いますが、参考にされる方は めげずに頑張ってください。必ず解決策があります。


組み込みAndroidポータブル #8

第8章 Androidポーティングに挑戦(1)

ビーグル君とお散歩を目指すプロジェクト。
今回は いよいよAndroid 2.3(GingerBread)をビルドしてBeagleBoardxMに入れます。
120506_Beagleboard.png


全体の流れ
若干手順が多いですが、着実に行えばできます。
(1)事前準備
(2)Source CodeとDevKitをダウンロード
(3)作業準備
(4)MLOを作成
(5)u-bootを作成
(6)KernelをビルドしてuImageを作成
(7)Andoridをビルドしてrootfsを作成
(8)boot script作成と解像度変更
(9)microSDカードへ書き込み
(10)起動


(1)事前準備
ここは最初1回だけ必要な手順です。
人によっては既に導入済みのものもあると思います。

・環境について
前回同様、母艦PCにLinux環境が必須です。
エレバカはwubiでインストールしてUbuntu 10.04でやってます。
環境が異なる場合は、最後に記述している"参考にしたサイト"を参照して下さい。
ちなみにBeagleBoardxMは"rev B"です。

・空き容量確認
ダウンロードファイルと各作業で16GBくらい消費しましたので、最低20GB以上空き容量があることをお勧めします。
既にインストールしたUbuntuで空き容量を増やすには"LVPM"が便利です。

・JDKのインストール

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk


・その他の必要なソフトのインストール

sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc


・作業ディレクトリ準備
まずbinディレクトリを作成し、そこにPATHを通す

mkdir ~/bin
export PATH=~/bin:$PATH


・repoの入手
repoをダウンロードし、実行できるように設定する

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo


・checksumを確認

sha1sum repo

エレバカが以前にDLしたときと、現在versionが変わっているようです。
For version 1.15, the SHA-1 checksum for repo is 8eb56d98b36d615c3efec51868e87bebe757feb1
For version 1.16, the SHA-1 checksum for repo is f3bfa7fd2d0a44aa40579bb0242cc20df37b5e17
android open source project(Downloading the Source)で確かめてください。

・repo initを実行
これが絶対に必要なコマンドかわかりませんが、一応書いておきます。

repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-GingerBread-2.3.4-DevKit-2.1.xml

これを実行すると、名前とEmailアドレスを聞かれるので入力します。
特にmailが返ってくるわけでもありません。


(2)Source CodeとDevKitをダウンロード
Texas Instruments(BeagleBoardのCPUを作っているメーカー)が用意しているBeagleBoard用のAndroidソースコードと開発用キットをダウンロードします。
ダウンロードに6時間弱かかりましたので、寝る前に行うことをお勧めします

以下のページから2つのファイルをrepo syncを使わず直接ダウンロードします。
TI_Android_DevKit TI_Android_GingerBread_2_3_4_DevKit_2_1 Product Download Page
"TI_Android_GingerBread_2_3_4Sources.tar.gz"
"TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz"

とりあえず、ダウンロードを仕掛けたら寝るべし
続きはまた明日。

続く


ポイント
・repoはURLが間違っていてもDLできてしまう。たまに正しいファイルが取得できていない場合もある。これでハマった。checksumが合っていることを必ずチェック!

参考にしたサイト
android open source project(Initializing the Build Environment)
android open source project(Downloading the Source)
TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide
知らんがな(Gingerbread (Android 2.3.4) on BeagleBoard-xM Rev.C)

組み込みAndroidポータブル #7

第7章 UbuntuにGUIを入れろ

ビーグル君とお散歩を目指すプロジェクト。
前回遂に4.3inch LCDへの表示が成功しました。

しかし文字だけのCUI(Character User Interface)画面では物足りないので、
今回はGUI(Graphical User Interface)画面を表示させます。
120505_ubuntuGUI.png

何度かインストール作業を繰り返して、やっとこさ成功したので、時系列でその記録をお伝えします。


事前準備
ちっちゃいLCDだと見づらいので、前回修正したuEnv.txtファイルの内容を元に戻しBeagleBoardxMにHDMIケーブルを繋ぎ、母艦PCの液晶モニターに映してインストール作業を行った。


1回目
・ログイン
まずBeagleBoard上でUbuntuを起動してログイン

Default user: ubuntu
pass: temppwd


・イーサネット有効化
BeagleBoardにLANケーブルを挿し込んでからコマンド実行

sudo  ifconfig  -a
sudo  dhclient  eth0


・アップデート

sudo  apt-get  update


・GUIをインストール

sudo apt-get install gdm xubuntu-desktop

→エラーが出て失敗。


2回目
再び、電源OFF/ONしてログイン→イーサネット有効化→アップデート→GUIインストール を実行
エラーとその対処が出ていたので、それに従いコマンドを打ち込んだ

sudo dpkg --configure -a

"gdm" か "lightdm" か選ぶ箇所があったので、"gdm"を選択
→しばらくして途中で映像が消えてしまう。

3回目
microSDカードを別のモノに変えてやってみた
→ダメ。同じく映像が消える

4回目
途中の選択を"lightdm"にしてみた。
→ダメ。同じ。

5回目
BeagleBoardxMのDsubコネクタにRS232C-USBケーブルを繋ぎ母艦PCのUSBコネクタと接続。
母艦のUbuntu上では、"minicom"というソフトを利用。
BeagleBoard上ではなく、母艦PCの"minicom"からインストール作業を実行
ログイン→イーサネット有効化→アップデート→GUIインストール を実行

→どうやら、HDMI端子から出力されている映像が消えた後もBeagleBoardはインストール作業を実行し続けているということが判明した!

2,3時間くらいかかった。

BeagleBoardの電源をOFF/ONして起動
いつもと違う感じ。
なんか、GUIを出そうとしてるが、すぐ画になってしまう。
そういえば、今回は"gdm" か "lightdm" かを選ぶ箇所がなかった気がする。

とりあえず"ふて寝"


6回目
今回は母艦PCをWindowsで立ち上げていたので、"minicon"ではなく"teraterm"を使用しインストール作業を行った。ついでにuEnv.txtファイルの内容を480x272に再び変更した。

電源ONしてログイン→イーサネット有効化→アップデート→GUIインストール を実行
前回はこの画面が出ていなかった気がする
120505_ubuntuGUI2.jpg
※PC液晶モニターの映像

Enterキーを押すと、"gdm" か "lightdm" かを選ぶ画面に
120505_ubuntuGUI3.jpg
※PC液晶モニターの映像

その後、1時間くらい放置して、気づくと終了していた。
そして電源をOFF/ONすると・・・
120505_ubuntuGUI4.jpg
GUI来ました!
マウスも動きます。

120505_ubuntuGUI5.jpg
しかし! 色々クリックしてみるが、どうしてもこれ以上先に進まない。
なぜだ?
再び "ふて寝"


7回目
先に進まない原因がわかった。
4.3inch LCDではパスワード入力のインプットボックスが画面上に見えていなかったのだ。
uEnv.txtファイルの内容を元に戻し、PC用の液晶モニターに表示してみてわかった。
120505_ubuntuGUI6.jpg
※PC液晶モニターの映像

えっ?、じゃあ4.3inchだとログイン不可能なのか?
いいえ、大丈夫です。
こういうときは心の眼で打ち込むべし。

ポイント
・左下のプルダウンメニューで「Xubuntu Session」を選択
・Demo Userをクリックして一旦フォーカスをここに合わせる
・キーボードでTabを押し、フォーカスを見えないパスワード入力インプットボックスに移動させる
・そこでパスワード「temppwd」を間違わずに入力してEnterを押す

そうすると・・・
120505_ubuntuGUI7.jpg
4.3inch LCDでUbuntu11.10 GUIログイン成功!

ちょっと、画像が乱れている?
いいや、そんな小さな事は気にしてはいけない!
次は、Androidに挑戦だ!!

続く


まとめ
・作業内容は、ログイン→イーサネット有効化→アップデート→GUIインストール だけ
・BeagleBoard上でのインストールの際は、シリアルケーブルを繋げて母艦PCで状況をチェック
・途中で、"gdm" か "lightdm" かを選ぶ必要あり
・インストールに1時間くらいはかかる
・480x272の解像度でログインする場合は、ポイントに書いたように工夫して入力する

参考にしたサイト
Embedded Linux Wiki(BeagleBoardUbuntu)
Ichmy's Web Site(Beagleboard-xM で遊ぼうのこーなー)
とりあえずやってみる

組み込みAndroidポータブル #6

第6章 Ubuntuを入手して解像度を変更

ビーグル君とお散歩を目指すプロジェクト。
LCDに表示させるための3つの対策中2つは出来ました。
残り1つの対策である、解像度の変更を行います。

Androidをポーティングすることでも可能ですが、ちょっと時間がかかりそうなので、我慢できません。
まずは、手っ取り早く確認ができそうなUbuntu11.10のプリビルドイメージを入れることとします。Androidは後のお楽しみです。
120504_ubuntu0.png
※イメージ図


ここからは、Linuxと にらめっこ大会が始まりますので、母艦となるPCにUbuntuがインストールされていることが前提です。
Ubuntuのインストール方法などについてはこちらを参照してください。

Pre-Build Imageを入手
まずダウンロード。数十秒でDLできます。

wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r7-minimal-armel.tar.xz


チェックサムを実行
正しくダウンロードできているかチェックします。

md5sum ubuntu-11.10-r7-minimal-armel.tar.xz

"58092de96f8934da74ea00e6a7b8eccf ubuntu-11.10-r7-minimal-armel.tar.xz"と出ればOK

解凍

tar xJf ubuntu-11.10-r7-minimal-armel.tar.xz


解凍したディレクトリへ移動

cd ubuntu-11.10-r7-minimal-armel



microSDカードへ展開
microSDカードを母艦へ接続し、マウントしてドライブの場所を確認します。
システム→Administration→ディスク・ユーティリティ でわかります。
もしくは、dfコマンドでも確認できます。
エレバカの母艦の場合は "/dev/sdc" ということが分かりました。

シェルスクリプトを実行します。

sudo ./setup_sdcard.sh --mmc /dev/sdc --uboot beagle_xm

※赤字部分は母艦によって異なりますので、よくご確認下さい。

本当に良いか聞かれるので"y"を打ち込むが、何やら足りないとエラーが出ました。
インストールすべきコマンドが表示されているので、それに従ってコマンドを打ちました。

sudo apt-get install uboot -mkimage wget pv dosfstools btrfs -tools parted

インストール完了後、再びシェルスクリプトを実行すると、数分かかってから
"setup sdcard.sh script complete" と表示が出て完了。


設定ファイルを変更
microSDカードの中の"boot"パーティションの中にある"uEnv.txt"を開きます。
以下のように修正保存します。 "#"を入れればコメント行扱いになります。

#dvimode=1280x720MR-16@60
dvimode=480x272MR-16@60

これで解像度が変更され、LCDスペック内のCLK周波数になります。(約11MHz)
保存したらアンマウントして、microSDカードを母艦から取り出します。


電源ON
作成したmicroSDをBeagleBoardに挿入し、いよいよ電源ON!
とりゃー!
120504_ubuntu1.jpg
おおーーー! やったーーー!!

120504_ubuntu3.jpg
ペンギンさん、いらっしゃい!


120504_ubuntu2.jpg
CUIまで出来たので、次回はGUIに挑戦だ!


続く


ポイント
ログインID:ubuntu
パスワード:temppwd

参考にしたサイト
Embedded Linux Wiki(BeagleBoardUbuntu)
Ichmy's Web Site(Beagleboard-xM で遊ぼうのこーなー)

追伸
LCDに映ったときは感動しました。

組み込みAndroidポータブル #5

第5章 変換基板を製作せよ

ビーグル君とお散歩を目指すプロジェクト。
前回 変換基板の設計図ができたので、ユニバーサル基板にモクモクと結線してゆきます。

最終的にケースの中に押し込めたいので、BeagleBoardがギリギリ入りそうなポリカーボネートケースを購入し、それと現物合わせをしながら、部品のレイアウトや配線の引き回しを決めました。


変換基板結線の様子(Top)
120502_ConverterBoard_Top.jpg
BeagleBoardxMのLCDコネクタが1.27mmピッチであるため、1.27mmピッチのユニバーサル基板を使っています。
右下のピンヘッダはLCDコネクタ用。1列用のピンヘッダを2列に並べる場合はヤスリで削る必要あります。
左下のピンヘッダは回路的には使用しておらず、BeagleBoardと合体したときに安定させるために付けました。
下側に4つ並んでいるのが「8ビット双方向ロジックレベル変換モジュール」
左上が1.8VのレギュレーターIC、右上が3.3VのレギュレーターIC。ケースに入れることを考慮すると裏面には配置できません。そこで、無理矢理表面にユニバーサル基板を小さく切った基板に載せてセロテープで付けました。良い子はマネしてはいけません。
コンデンサの足が長すぎたので、後で短くしようと思います。


変換基板結線の様子(Bottom)
120502_ConverterBoard_Bottom.jpg
左上がNANDゲート。足を曲げたりして、ピン直で線付けしました。
途中まで、φ0.56mmのETFE(ジュンフロン)線で繋いでいましたが、ケースに押しこめることを考えると、もっと細い線が必要であることに気づき、途中からφ0.2mmのUEW(ポリウレタン銅)線に変えました。
電源とGNDは太いスズコート線を使っています。


CarryBoardと結線し、BeagleBoardxMと合体した様子
120502_ConverterBoard.jpg
すっかりスパゲティ状態です。
後半は疲れて、もうどうでもよくなってきました。


回路自体は複雑ではないのですが
信号線が60本以上あることと基板が1.27mmピッチで作業しづらく、丸一日かかりました・・・
お疲れさん!!
次は解像度の設定だ!

続く


必要な部品 [ 購入先 ]
・片面ガラス・ユニバーサル基板Cタイプ1.27mmピッチ(72x48mm)[秋月電子通商]
・大型ポリカーボネート・ケース 140[秋月電子通商]
・8ビット双方向ロジックレベル変換モジュール[秋月電子通商]
・CMOS 2入力 NANDゲート TC74AC00FT[秋月電子通商]
・三端子レギュレーター(3.3V1.5A) AZ1086H-3.3[秋月電子通商]
・低損失表面実装型三端子レギュレーター(1.8V800mA) NJM2845DL1-18[秋月電子通商]
・1.27mmピッチピンヘッダ1x40(40P)[秋月電子通商]
・電解コンデンサー10μF50V[秋月電子通商]
・電解コンデンサー22μF50V[秋月電子通商]
・積層セラミックコンデンサー0.22μF50V[秋月電子通商]
・スズコート線材 1.2mm[マルツパーツ館]
・ポリウレタン銅線 0.2mm[マルツパーツ館]

ポイント(というか反省)
・配線はなるべく短く
・信号は全てUEW(ポリウレタン銅)線で接続した方が良い
・できれば基板にGND面を作った方が良い

参考にしたサイト
#include "matsu.h"


組み込みAndroidポータブル #4

第4章 変換基板を設計せよ

ビーグル君とお散歩を目指すプロジェクト。
BeagleBoardxMとLCDを直接繋いでもダメで、3つの対策を行う必要があるということが前回まででわかりました。
今回は、その中の2つの対策を盛り込んだ変換基板を設計します。


全体イメージはこんな感じ
120502_Beagble_LCD2.png


変換基板を中心としたブロック図です。
red,green,blueはそれぞれ8bitなので、実際には24本の信号があります。
120502_Block.png


それぞれの部位について、画像付きの回路図で説明します。
LCD Connector
BeagleBoardxMのLCDコネクタです。
変換基板にピンヘッダを付けて、BeagleBoardxMと合体することを想定しています。
120502_LCD_Connector.png


Voltage Converter
各信号を1.8Vから3.3Vへ変換します。
秋月の「8ビット双方向ロジックレベル変換モジュール」を利用しました。
裏面から見た図になっています。OEはGNDに繋げます。
120502_VoltageConverter.png



Inverter
VSYNCとHSYCNをNANDゲートを使って反転させます。
「CMOS 2入力 NANDゲート TC74AC00FT」を使用
120502_Inverter.png


Power3.3V
レギュレーターICを使って5Vから3.3Vを作りだします。
手持ちの「三端子レギュレーター(3.3V1.5A) AZ1086H-3.3」を使用しましたが、500mAくらいでも問題ないと思います。
120502_Power3_3v.png


Power1.8V
レギュレーターICを使って3.3Vから1.8Vを作りだします。
低損失表面実装型三端子レギュレーター(1.8V800mA) NJM2845DL1-18を使用しました。
120502_Power1_8v.png


CarryBoard
変換基板から線を飛ばして、CarryBoardの20pinコネクタの足に付けます。
LED driverについてはCarryBoardに既に実装されているため、特に何もする必要はありません。
120502_carry_board.png


大文字小文字に注意して、黒丸で示した同じ信号名同士を結線すれば完成です。
ちょっと長くなってしまったので、実際の結線の様子は次回へ。


続く

組み込みAndroidポータブル #3

第3章 表示されない原因を探る

ビーグル君とお散歩を目指すプロジェクト。
LCDを買ってとりあえず繋いだは良いが、真っ白にしか表示されませんでした。

120430_Beagble_LCD.png

検討の結果、3つの間違いがあることがわかりました。

(1)電圧が異なる
LCDの駆動電圧が3.3Vに対して、BeagleBoardxMのLCDの各信号の出力信号の振幅は1.8V
LCDのスペックを見ると信号電圧に関しても電源電圧と同じスペックです。

120430_LCDspec.png
LCD(H043M48027240NC08)のデータシートより抜粋

また、タイミング特性を見るとMAX時の70%や30%を基準としてセットアップ・ホールド時間を規定しています。
電源電圧3.3Vであれば、信号電圧のMAXも3.3Vなので、70%の電圧は2.31Vとなり、1.8Vでは足りないことがわかります。


(2)波形が反転している
LCDのスペックを見ると、VSD(VSYNC Detec)とHSD(HSYNC Detect)はLow Activeになっています。

120430_SYNCspec.png
LCD(H043M48027240NC08)のデータシートより抜粋

これに対してオシロスコープで取得したHSYNCとVSYNCの波形を示します。

HSYNC
120430_HSYNC.png

VSYNC
120430_VSYNC.png

Detectがデータシートと異なりHigh Activeになっています。
他のCLKやRGB DATA、DENはデータシートと同じ論理で問題ありません。
つまり、HSYNCとVSYNCのみ波形が反転してしまっているということ。


(3)CLK周波数が異なる
LCDのスペックを見ると、CLK周波数は5~12MHzである必要があります。
120430_CLKspec.png
LCD(H043M48027240NC08)のデータシートより抜粋

これに対してオシロスコープで取得したCKLの波形を示します。
120430_CLKwave.jpg

計算すると約23MHzで、スペックを超えています。


ポイント
解決方法は以下の通り
(1)LCDの各信号について、1.8Vから3.3Vへ電圧変換する
(2)HSYNCとVSYNCに関して、波形を反転する
(3)解像度の設定を480x272にして、CLKを5~12MHzの範囲内にする

(1)と(2)は、変換基板を新たに挿入することで実現させます。(次回説明)
(3)については、microSDカードにOSを入れるときに設定変更することで実現させます。(後日説明)


続く
05 | 2013/06 | 07
Su Mo Tu We Th Fr Sa
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
プロフィール

エレバカ

Author:エレバカ

ポケコンでプログラミングに目覚め、PICマイコンで電子工作に希望を抱き、来たるべきUGDの時代を夢見て眠る。
そんな うだつが上がらないサラリーメン。
先生、電子工作はおやつに入りますか?




Electric Baka

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。