Android はチョロQを遠隔操作するか
Yutaka Yasuda, Kyoto Sangyo Univeristy

EMMA Mobile 1• NEC Electronics のマルチメディアプロセッサ
ARM1176 500MHz + DSP + Graphics Accelerator
512Mbit DDR SDRAM を内蔵SD, NTSC/PAL, LCD, PCM音源, Camera 等 IF 豊富
H.264 engine もある

現在は Renesas から
see: http://www2.renesas.com/mobile/ja/emma_mobile/index.html

EMMA Mobile-1D HDK• Hardware Development Kit
with LCD, 2GB Flash, etc.
• Android SDK 1.6 (Donut)

現在は Renesas から
see: http://www2.renesas.com/mobile/ja/emma_mobile/hdk_sdk/index.html

EMMA Mobile-1D HDK

12 keys + 4 LEDsconsole + USB + MicroSD

いろいろ手が入れられそう･･･
他にも Ether, TV-out, MIC in, LINE out, LED x2, push button x4, SD IF他にもいろいろ･･･

ピン無し
ホール
数々のコネクタ赤外線リモコンチョロQ

赤外線LEDチョロQ側インタフェイス検討

ボタンは 4 つ
前後左右の二系統
ターボボタンは今回使わず

バラしてボタンを押したことにする回路をつければ良かろう

赤外線LED

さて EM1 側は？

EM1側インタフェイス検討• 半田付けヤメてくださいと• コネクタから取り出すフィルムケーブルの作業ができるか？
こちらで用意してもその先で壊すかも• LED があるではないか
光カップリングでやろう楽しい電子工作step 1
• 電源3V (LR44 x 2)
• 出力は LED ひとつどのくらいの抵抗値まで switch onと認識するだろう？

• 入力はスイッチ４つ• 一方は電源直結• 反対側は IC に消える+• IC は樹脂封止で詳細不明
ICstep 2
• 適当な抵抗を入れて実験• 500KΩでは絶縁と認識

では半導体でも導通と認識させられるであろう+• 200KΩでは通電と認識

ICstep 3
• 適当なトランジスタを挟む• IC が負荷抵抗になるだろう（焼き切れないと推定）

ではフォトトランジスタ直結でも動作するのではないか• トランジスタ出力は直結で良い+• これで正しく認識ICstep 4
• スイッチとトランジスタをフォトトランジスタに置換• 感度調整用に半固定抵抗出力を上げて調整範囲を上げよう• 一応これで反応するが、+• 外光の影響などで動かない場合がある（調整可能範囲が狭い）
ICstep 5
• ましにはなるが、• off → on はできてもon → off できなかったりむむむそんな罠が・・・• その逆とか+• ヒステリシス特性がある

IC

ヒステリシス特性
フォトトランジスタ由来の出力が、この上限・下限を往復するようにアナログ回路で調整するのは面倒すぎる・・on• 非常に電源電圧に近いところまで上がらないと on になったと認識しない• 非常にグラウンドに近づかないと off と認識しない• 明らかな変化があるまでは、以前の状態を保持する

off0V

電圧変化

3V

チャタリング対策としては普通（元はスイッチ直結だし）• しかし振れ幅がデカ過ぎ（0.2V-2.8V くらい？）step 6
• コンパレータ万歳！
• 3V 単一電源
しかし・・・• フルスイング+• これできっちり往復

+
-50K!

100K!

2.9V ちょいと0.0V ちょいをきっちり往復ICstep 6
• IC につなぐと出力の電圧が降下（1V 程度に）出力を上げて調整範囲を上げよう+

するとヒステリシスの罠が・・・

+
-50K!

100K!

IC0V3Vデータシートを読もう（いまさら）NJU7016

今回の電源は 3V負荷抵抗は 50KΩ 程度が限界か
最初の予備実験では 400KΩ 程度で導通と認識されたが、、、IC はブラックボックスなので、どのくらい引っ張るかが判らない

負荷抵抗で調整せず、出力を上げてしまえstep 7
• 50KΩの出力負荷を用意• 60μA では勿論足りない• 2SC1815 (増幅率 100) 一段で 6mA（実測 2mA）動作した、が、テスターが抜けない• 1815の定格範囲に収まる

50K!

+

• 若干足らずもう一段• 最大 200mA、かつ IC はそんなに引かない筈

+
-

50K!

100K!

IC

step 8• プラス側プローブは接続せず• マイナス側プローブが接続されておれば安定動作

電線の LC 成分の何かが効いている• 外すとダメ• テスターを外してマイナス側プローブだけで同じ挙動
50K!

+• 魔法の電線？
+
-50K!

IC

プラス側は開放100K!

マイナス側を接続するだけで安定step 9• 手近な基板から部品取り• 0.1μF パスコンではダメだからアナログは嫌い• 大きめの電解コンデンサを電源側につけて解決

50K!

+

• これで今のところ安定+
-50K!

100K!

IC

と言うかね･･･
データシートに書いてあるしそれ以前に常識ですと、言われそう･･･外観カップリング部

左：ドライバ 右：判定回路

ソフトウェア

Android SDK• ホスト PC 側に Ubuntu 8 をインストール• developer.android.com から SDK 1.6 を取得• EM1 用のドライバソース等を組み込んで target build• 生成された圧縮イメージを MicroSD にコピー
• EM1 の boot mode スイッチを変更して起動、MicroSDのイメージを本体側 Flash に複写• USB/シリアル接続のコンソールを用意• ROM monitor の起動パラメタを Wind River Linux からAndroid 用に書き替える

LED クラス• LEDクラスドライバによるインタフェイス有り• /sys/class/leds/LED_NAME/brightness
消灯：0
点灯：1 （0以外）• 単に echo 1 > /sys/class/leds/led1/brightness でも可• パーミッションの問題あり（others writable でない：後述）実走風景

まとめ： ちょろQドライブ開発は何だったのか

擬似組み込み開発体験である• 本物の組み込みでは恐らく手が出ない
Linux ベースなのでトラブルに対処できる（システムの動きを追える）• それでも一通りのことはする
本体ハードの仕様、チップの型番を調べる
ブロック図を見る、スイッチ・ピンの機能を見る
経験の浅い情報系学生にとって難しすぎない
非ハード系の教員にとっても負担が軽いex. USB serial console
1. コンソールはUSB serial（機体とマニュアルを見る）
2. チップは FTDI の FT232R（ブロック図を見る）
3. Linux 用ドライバがある（FT232のデータシートを見る）
4. Linux kernel 2.6 以降はメインツリーにマージされたと知る（Google）
5. 自ホストが 2.6 ベースだったので差してみると lsmod で usbserial に ftdi_sioドライバがロードされた（Linux）
6. /dev/ttyUSB* を確認（Linux）
7. シリアル対応コンソールアプリ minicom を探してインストール（Google）
8. 仕様に従って baud rate などを設定（マニュアル）
9. コンソール表示が見えた！
組み込み的な作業と上層の作業が適度に被っていて経験の浅い情報系学生に丁度良い適度に被っているので教員がフォローしやすいex. LED クラスのpermission• LED点灯は /sys/class/leds/LED_NAME/brightness• しかし other writable でない（ls -l で確認）
• システム初期化スクリプトに入れたいが rc.local は無い• EM1のSDKを漁って材料探し（find, grep 等）• EM1 固有部分の初期化スクリプトを発見（change-091202/vendor/necel/em1 以下の init.mp200.sh ）• 実機上では SDK_WORK/android-fs/system/etc 以下に init.mp200.sh あり• chmod を追加、システムイメージを再ビルド、インストールして動作確認

Linux 的経験だけでもシステムの見通しが良く自由度が高いちょろQドライブ開発は何だったのか• 情報系学生にとって良い教材である
本物に触れるハード：チップレベルからインタフェイスまで
ソフト：ドライバからアプリまで（ソース込み）
上下共に天井無し
広範囲な経験が得られる• 情報系教員にとっても扱いやすい教材である
従来的 Linux オペレーションでかなり追える
本職領域まで踏み込まずに済む
おすすめです