2011年10月31日月曜日

AndroidのUSBホストを使ってArduinoとシリアル通信

Androidの会のメーリングリストを見ていると気になる投稿があったので、早速試してみた。



Android USBを用いてシリアル通信を行う方法

https://groups.google.com/forum/?hl=ja#!topic/android-group-japan/eox6wGtMOSY

投稿の中で紹介されていたサイト
http://android.serverbox.ch/?p=370

上記のサイトを読む感じだとハニコムのUSB Host APIを使ってFTDIのチップと通信してるみたい。
とりあえずデスマが近いのでさくっとした動作確認だけしました。

追記
アプリ側は紹介されているサイトのままなので、シリアルからカウントアップした値を常に出し続ける。Arduino側は受信したデータを2で割ってあまりが1ならLEDをオンにするスケッチを書き込んだ。



Android
Optimus Pad(L-06C) 3.1

Arduino
・Arduino Duemilanove
・Arduino Pro Mini 328 3.3V 8MHz + FT232RL搭載小型USB-シリアルアダプタ 3.3V

Arduino UNOはUSB-シリアル変換のチップがFTDI製のものからATmega8U2
に変わっているのでそのままでは認識しない様子。
この辺ももしかしたらどこかに仕様が落ちてるかも。


#以下アフィリエイト用の広告です


2011年10月8日土曜日

Thunderbirdの送信メールの自動改行を無くす方法

自分の備忘録


メニューから
「ツール」→「オプション」



「詳細」で、「一般」のタブを選ぶ。

「高度な設定」の「設定エディタ」を選ぶ。



「about:config」は内部の定数などを編集するので間違えると深刻な問題を引き起こすので、
最新の注意を払って変更する。


「フィルタ」に「mailnews.wraplength」を入力し検索する。

出てきた設定名「mailnews.wraplength」を右クリックし、「値を変更」を選ぶ



入力ボックスを「0」としてOKを押す。

「about:config」を閉じて、「オプション」でOKを押すと設定が反映される。



#以下アフィリエイト用の広告です

2011年10月2日日曜日

Channel APIを使ってブラウザ経由でlogcatを見る


TLやらデ部やらで@tomorrowkeyさんがWebSocket使ってブラウザでLogcat見れるようなのを、
作ったってのを見て二番煎じしてみました。


サイト
https://iwata-n.appspot.com/logcat
上のURLをお好きなブラウザから見ればOK。
ただし、Androidで使っているアカウントと同じGoogleアカウントでログインしている必要があります。

ubuntu11.04 + chrome
mac 10.6 + chrome
Android 3.1 + ブラウザ
で動作確認しました。


アプリ
RemoteLogcat(マーケットへのリンク)
残念ながらGoogleアカウントを使っているのでIS01は動作対象外にしてしまいました。
誰か1.6で端末に設定されているGoogleアカウントのとり方教えてください。


使い方
使い方は簡単で、

  1. PC等でサイトにアクセスして、Androidと同じGoogleアカウントでログイン
  2. Androidでアプリを起動
  3. アプリにサイトでログインしたGoogleアカウントを設定する
  4. サービスのチェックを入れてサービスを起動する
  5. サイトが(゚д゚)ウマー

取りあえずで公開してみました。
反応を見てつくり込むか決めようかと思います。



参考
 Android1.6でも動く「オレオレC2DM」の実装
明日の鍵


#以下アフィリエイト用の広告です

2011年9月6日火曜日

Ubuntu11.04にArduinoの開発環境を作る

ちょっとデスクトップの環境をWin7からUbuntuに変更したのでその際のメモがわり。

Winやmacと同じようにArduinoを公式から環境を落としてきたらコンパイルができなかった。
おそらくコンパイラの設定を特にしていない状態だからまずいようだ。
なので、
 sudo apt-get install arduino
 sudo apt-get install arduino-core
と実行したが、これだとランチャーにショートカットをおいても起動できなかった。
なので、Ubuntuソフトウェアセンターからダウンロードしてくると、
コンパイルもできるし、ランチャーにショートカットをおいても起動できた。
ただ、微妙にアイコンが標準と違う気がするけど、気にしない。


追記
ライブラリとかを置くフォルダは
/usr/share/arduino
の下にある。

さらに追記
なぜか標準のリポジトリからダウンロードできるIDE(22)でUnoが使えない。
しかたがないので、ダウンロードして解凍したのを使う

#以下アフィリエイト用の広告です

2011年8月30日火曜日

横浜Androidプラットフォーム部第12回勉強会 メモ


@checkela
ゲーム屋的パフォーマンスチューニング(仮) & NDK本サイン会
@tetsu_koba
Google TV add-onのemulatorをいじってみた
@androidsola
OrigenBoardPandaBoardの比較(仮)
@roishi2j2
Android開発者のためのSoC入門(のようなもの)
@hermit4
init以前 – フラッシュメモリとfastbootをさわりだけ」 



ゲーム屋的パフォーマンスチューニング
@chechela
出村

フリーランス
東北
黄色いト○ピーみたいなアイコンの人
黄色いとげとげ→黄色いチューリップ

NDK本の執筆者

普通の奴らの下を行け

1clockの削減に命を削る世界は存在する

1GHz -> 0が9個

その1つがゲーム開発

なぜ1clockにこだわるのか?

1clock削るとゲームの操作性とかに影響
 UI操作が気持ちいい!
 
1万回通るなら1万クロック削減できる
 ある部分の1クロックを削る

3Dグラフィックスが特にそう
 PS3など
  1回の描画で1万頂点演算する
   1頂点の処理時間を短くすれば全体の処理が早くなる

場所を見極めてチューニングする

全体で1番時間がかかるのは描画処理

3Dはそんなに処理は無いからチューニングしやすい、結果が見やすい


どんなパフォーマンスチューニングをする?
 10年くらい前の知識かも

ゲームプログラマを10年ほど
SFC末期〜PS2初期頃まで

ゲーム機の歴史


SFC時代
 H/Wの上でアプリが動いていた
 H/Wがマイナーアップデート入ると後期のソフトほど互換テストするのが大変だった

 ハード特性を極限まで利用する手法
 処理速度はアルゴリズム、DSP(ファミコンソフト側)でカバー
  CPUクロックは早くない
  変態コードは存在する

 H/W特性を利用した例
  ラスタースクロール(DQのワープで波打つエフェクトの事)
   テレビの走査線(H-SYNC 水平同期)の割り込みを利用
  1/60秒で処理する
   すべての画面を書き換える時間(NTSC規格)
   海外のテレビだと仕様が違うから作り直したりする 

PS時代
 H/W上でOSが動いてライブラリがあってアプリが動く
 OS、ライブラリのレイヤーは薄っぺらい
 開発ハードルが下がった

 家庭用ゲーム機に3Dの波が
 RISC CPU(32bit)を搭載
 3D演算に特化したプロセッサを搭載
  DC、PS2、PS3も

 開発スタイルが変化
  CPU、メモリが劇的に変化
  8割〜9割はC言語でつくっていた。一部asm
  昔はROM、RAMを意識してプログラムしていた


 ハードウェアの変化
  CPU性能
   キャッシュ
   パイプライン
  デバイス間のBUS幅
  コンパイラ性能
  3D描画性能
  メモリ管理
  CD-ROMアクセス
   ノウハウが溜まってBGロードができるようになった
   SFCではなかった要素

 組み込み開発で役立つ
  CPU、コンパイラの話

 CPU性能
  ・キャッシュ
  ・パイプライン
  実行効率を決める要素
  
 キャッシュ
  メインメモリから直接データ取得
   メモリから取得している間にidleする
    メモリのアクセス速度はCPUの数十倍遅いから
    CPUの速度向上にくらべメモリの速度向上していない
    刺す枚数を増やしてごまかす
   L1キャッシュからデータ取得
    CPUとL1きゃっすは同クロックで動作するからCPUのidle時間が発生しない
    L1キャッシュは容量が小さい(32K)
    コードをキャッシュに載せられるか、ヒットさせられるかは腕次第
     1ループを小さくして参照するデータ量を減らす
      似たメモリアドレスにあるデータを処理する
    L1キャッシュを意識したプログラムを書く

 パイプライン
  1命令を13のプロセスに分割して処理
  →命令の実行効率を上げる
   ちょっとずつ並行して処理する
  F:フェッチ
  D:デコード    解析
  E:エグゼキュート 実行

 パイプラインの効率化
  パイプラインストール
   パイプライン処理の間延びの事(少し止まる)
    結果の依存性がある箇所で発生
     c=a+b
     e=c+d
    コンパイラ利用すると発生しない
     asmで書くとうっかりやっちまう
     Cで書くとコンパイラがそのへん理解して自動でやってくれる
    CPUの特性把握は必須
    プロファイラを利用するのも手

 動的分岐予想
  true/falseの分岐を予測して先回りしてパイプラインでデコード処理
  ヒット率向上がカギ
  予想を外すと影響がでかい
   13clockのペナルティ
  なるべく外さないコードを書く

 コンパイラ性能
  なぜ重要視するのか?
   そもそものRISCの概念
    1命令を単純化 → 実行を高速化
    コンパイラが頑張って命令配置
     CPU特性を活かすため
    ハード・ソフトからアプローチ
   コンパイラがへぼいとCPUを生かしきれない
   GCCを利用する
    クロスコンパイラ=GCC
   -O3をしても昔は最適化が甘かった
   すべてasmで書くのか?
    →現実的な量では無い
  いかに実行効率がよいコードをはかせるのか?
   人間が頑張るしかない

まとめ
  機械は人間の思いを理解してくれない
  人間が機械の思いを理解するしか無い
  チューニングは細かい作業の積み重ね

おまけ(学習手法)
  97年 → 書籍がほぼすべての情報源
       ハイパフォーマンスコンピューティング(RISC特有のチューニング手法を解説 絶版)
       MMXテクノロジオフィシャルガイド(SIMDを学ぶ)

  今はこの手の情報が減ったからNDK本買ってね。

FAQ
どうやったらコンパイラの気持ちがわかるの?
 コンパイラがだしたコードを読んでみると特徴が分かってくる
  どこで無駄が出てるとか。
 コンパイラに色々な情報を追加して人間の思いをつたえる
 相手をよく知ること!

SIMDの考え方はNEONとかでも変わらない?
 実装されている命令は変わらない
 特徴的なのは、命令に合わせたアルゴリズムを考えないといけない。そうしないとNEONの特徴を生かしきれない。




Tweaking Google TV emulator
@tetsu_koba

Google TVのアドオン
KVMの説明
やってみたこと
 NDKが動かなっかったのはなぜか?

Google TVアドオン
 code.google.com/tv/android/docs/gtv_addon.html
 Android SDK上で動く
 Javaのアプリが動くけどUIを変えてねって趣旨のページ
 
 FAQページ
  Android 3.1
  NDK動かない
  chrome 11(Linux用)
  Flash 10.1
  Native Clientはあとで実装する
  HTML5のVideoタグのH.264サポートを続ける
  
 ターゲットCPU x86 atom
 KVMが必要
  リナックスの技術
  Windowとmacは今はサポートしない
   そんな簡単に移植できないだろ
 Open GLつかって描画
  GPUで動いていない
  画面サイズでかい、3Dガリガリ使うから遅い
   HOST側のGPUにエミュレータの情報を食わせるエミュレータを作ってる

 Kernel Based Viertual Machine
  VMとかViertual Boxみたいなもの
 Intel VTとかADM_V
 ゲストCPUとホストCPUが一緒である必要がある
 KVMはQEMUと一緒に使う
  www.linux-kvm.org/page/Main_Page

 KVMがどんなふうに動くか
  QEMU
   すべての命令をエミュレート
   MMU(仮想メモリのハードウェア支援)もソフトウェアでエミュレートしてるから遅い
  QEMU + KVM
   普通の命令はCPUでそのまま実行
   IO命令、状態を変えるような命令を何らかの仕組みでフックして特別な割り込みをしてKVMの本体が差し替えて動作さるようなイメージ
   95%くらいは普通のCPUで動いている
    だから速度向上が見込める
 
 KVMのセットアップ方法(Ubuntu)
  sudo apt-get install kvm

  Ubuntu 10.04
   sudo chmod a+rw /dev/kvm
  Ubuntu 11.04では必要ない
  gtv_emu**.html

 速度比較
  Ubuntu 10.04 KVM無効 52秒
         KVM有効 32
  Wubi  11.04 KVM無効 52
      11.04 KVM有効 17

  新しいカーネルを使ったほうが速度が上がるのかもしれない


NDK
 NDKr6からはx86をサポートしている
  armとx86を同時につくるとおかしくなる
 AOSPのマスターのソースからx86のエミュレータがビルドできる
 NDK for x86はちゃんと動いている

 Google TVのランタイムはandroidとだいぶ違っている
  Vynamic linkerとかlibcがbionicじゃない
  ソースを見た感じglibcじゃないかな?
  NDKr6はbionic向けだからglibcじゃ動かない

Google TV emulatorをWin7上で動かす
 KVM無効でも動くからwin7でも動くんじゃないか?
 
 eulator executable (QEMU + KVM)
 Linuxカーネル
 target file system
 Skin image files
 AVD file configure
 onley (1) depends on host OS

 起動方法
  Android SDK for windowsにはemulator-86.exeがある
  Linuxで作ったエミュレータをコピーする
  iniファイルにパスが入ってるからwin用にパスを変更する
  eclipseからは起動出来ないから、コマンドラインから起動する
   emulator -avd
  起動するけどむちゃくちゃ遅い

参考資料
 KernelVM探検隊
 てつこばさんのサイト

デモンストレーション
 仮想マシン上ではKVMが動かない
 画面構成はDirectFDからSurfeceフリンガーに変わった

FAQ
 QEMUのイメージをVM用のイメージに変えればいけるんじゃない?
  ぜひやってみてください


OrigenBoardとPandaBoardの比較(仮)
@androidsola

OrigenBoardとPandaBoard
似たようなスペックと価格だったから比較してみた

PandaBoard
 CPU:OMAP4430 Dual Core 1GHz
 メモリ:DDR2 1GB
 GPU:PowerVR SGX540
 無線・BTが付いている

OrigenBoard
 CPU:Exynos4210
 メモリ:DDR3 1GB
 GPU:Mali-400
 CPU基板が取り外しができる
 無線・BTが付いている
 
ベンチマークソフト
 Quadrant Standard
  CPU、メモリ、I/O、2Dグラフィック、3Dグラフィックの総合結果
 0xBenchmark
  村長がよく使ってる
 AnTuTu Benchmark
  Pandaで落ちたから不採用
 Neocore

結果
 PandaはNSに劣る
  解像度のせいかも・・・
 解像度を変えても遅い
  解像度が何故か1680×1080でだしてた・・・
 解像度を1024*600にしてもOrigineBoardの方がいい




Android開発者向けSoC入門(のようなもの)

目標
Xoomはギャラタブ10.1でNEON命令が使えなくなった事情を理解する

NEONとは
 ARMのSIMD拡張命令の1つ
 マルチメディア向けの命令

SoCとは?
 System on Chipの略
  昔はボード上に実装していた回路を1chip化したもの

Tegra2の構成
 CPU
 キャッシュ
 GPU
 バス AMBA
 などなど・・・

Tegra2のコピーを作ってみよう

そもそもどうやってSoCをつくるのか?
大規模ソフトを開発する場合は?
 まったくの新規開発でなければパッケージやライブラリを買ってきて手を加える
 新規開発でもOSを1からつくることはめったにないでしょ?

H/Wも一緒
 CPUはNVIDEAから買う
 DDR2 I/Fはxxx社から買う
 USB I/Fはyyy社から買う
  ・・・

なぜTegra2にNEONを入れなかったのか?
 NEON命令を処理する回路をレイアウト出来なかった。
  その分だけチップサイズをでかくしてもいいけどうまく収まるとは限らない
  矩形のフロアプラン問題はNP困難

SoCの製造って?
 シリコンウェーハから切り出す

課題
 チップをでかくするとどうなるのか?
 有効面積問題
  丸から四角を切り出すから使える面積な問題がある
   4.9mmから5.2mmに変更するとどうなるのか?
 歩留まり問題
  300mmウェハ1枚あたりに数十個の微細なゴミが落ちているとする。
  ゴミを含むチップは不良品
  4.9mmから5.2mmに変更するとどの程度影響するか?

ARMから買ってきたCPU
 TSMC 40Gハードマクロ実装で2GHzの標準動作を実現する卓越したパフォーマンス
 TSMCは世界的に有名な半導体製造メーカー
 40G : 40nmプロセスのハイパフォーマンス版

しかしTegra2はTSMC 40LPで生産
 40LP : 低電圧版

IP(Intellecual Property)
 知的財産権
 日経新聞では「設計済み回路ブロック」
 半導体業界では通信プロトコルは「TCP/IP」と読んで使い分ける
 ハードマクロ
  配置・配線が完了しているモジュール
  物理的な制約(デザインルール)が満たされている
   ゲートの大きさ、素子間の距離、配線間隔
   デザインルールを満たすラインでしか製造出来ない
   Tegra2の場合:TSMC 40LPのハードマクロが必要
 ソフトマクロ
  配置・配線を行う前のモジュール
  素子の間の接続情報だけが記述されている
   ネットリストと言うこともある
   手間暇かければ解析できるかもしれない

ソフトマクロとハードマクロ
 ソフトマクロ(Verilog等)
 ハードマクロ(GDS2等)

買ってきたIPを修正
 ソフトの場合、ソースコードを書き換えることで修正
 ハードマクロの場合は形状固定でブラックボックス
 ソフトマクロは自由にレイアウト、頑張れば解析可能
 IPベンダーはソフトマクロは売りたがらない

IPを組み合わせるには
 全体の仕様を決める
 接続部分のRTLを書く Register Transfer Level
 論理合成する 合成した出力はソフトマクロと等価
 配置配線する
 レイアウト後に検証

ハードの検証
 シミュレーション
  PC上でクロックを与えて回路を実際に動かす
   最新のハイスペックPCでもせいぜい100Hz
   遅いので回路全体を動かすのはまれ
   デバッグ用のコードを任意の場所に挿入できる
    買ってきたIPではできない
    IPにも普通にバグがあるのでIPベンダはソースに検証用のコードを入れておくのが一般的
 エミュレーション
  エミュレータという専用装置を使う
  数十KHzでる
  内部状態の参照に制限がある
 実機

Tegra2にNEONがない理由は?
 *根拠はない
 
 レイアウト上の制約
  そんなにNEONの実装面積でかいのか?
 ARMが「NEON入りのA9ハードマクロ」を高く売っている
  NEON無しIPって価値があるのか?
 実はNEONが載っているけど、マスクされているとか?
  ありそうな話:NEON命令を実行したらバグがでた
  


 
 

2011年8月10日水曜日

2011年8月4日木曜日

第11回レスキューロボットコンテストの中の人やってきます

8月6日〜7日に神戸サンボーホールで開催される第11回レスキューロボットコンテストで
中の人をやってきます。

Rescue Robot Contest(公式ホームページ)

当日1階の展示ブースでABCなどで展示したAndroidから操縦できるカメラ付きラジコンを
Windowsから操縦できる走行体験コーナーもやってます。
そこら辺をうろうろしている私に声をかけてもらえればWindowじゃなくて、
Androidから操縦できるようにしますよー。

ぜひいらしてください。

#以下アフィリエイト用の広告です

2011年7月18日月曜日

横浜PF部 第11回メモ


@sekitoba
はじめよう!プラットフォーム Kernel2.6のマルチプロセッサー対応その3(仮)
@akryokoyoko
その後の現状での活動報告(USBの表面的なこと)
@magoroku15
Androidの入力システム(仮)
@l_b__
OpenBinder Android IPCの2回目 

メモ内容はつづきへ


2011年7月16日土曜日

Android Bazaar and Conference 2011 Summerで講演/出展します



半年に一回のペースでやっているABC
今回はついに講演者側に回ることになりました。

Robotトラックの15:00〜のロボットサミットで登壇します。
16:00ごろからの予定です。
その後にパネルディスカッションの予定です。
興味のあるかたはぜひいらしてください。
http://www.android-group.jp/abc2011s/conference.html#robot

また、当日はバザールで、横浜ロボ部としてブースをだしています。
こちらは、8号館の3Fコミュニティーブース3でだしています。
今まで作ったロボとかチョロQとか持っていく予定です。
http://www.android-group.jp/abc2011s/bazaar.html


Android Bazaar and Conference 2011 Summer
http://www.android-group.jp/abc2011s/


#以下アフィリエイト用の広告です

2011年7月15日金曜日

MicroBridgeでADKのアプリインストール動作を真似る

ADKでは対応するアプリがインストールされていなかったら
自動でマーケットへ飛ばしてくれるらしいです。
ADKを使える端末を持っていないのであくまでらしいです。

神戸支部のMLで日曜エレクトロニクス(日エレ)の管理人の石井さんの投稿を見て
そんな機能をMicroBridgeでも作れないかとインスパイアさせて頂きました。

やり方は至って簡単で、adb shellのamコマンドを使って起動したいアプリをintentを使って
起動しようとします。
もし、アプリが起動したらバンザイ。それでおしまい。そのままお好きに通信開始。
アプリが起動出来ないと、amコマンドが色々とエラーを吐いてきてくれます。
エラーが出てたら、そのままamコマンドでマーケットへ飛ばしてあげるだけです。
小さいapkファイルだったらそのまま書き込みをしてみてもいいかもしれないです。

これで、ABCや、マイスマではチョロQ展示用の端末を自前で用意しなくても
来場者の端末を使って操縦できそうです。

最後に動作している動画です。


#以下アフィリエイト用の広告です

2011年7月10日日曜日

MicroBridgeを使ったスケッチのテンプレート

MicroBridgeを使ったスケッチのテンプレート。


#include <spi.h>
#include <adb.h>

// ADB接続
Connection *connection;

// ADB接続のイベントハンドラ
void adbEventHandler(Connection *connection, adb_eventType event, uint16_t length, uint8_t *data) {

  if (event == ADB_CONNECTION_RECEIVE) {

  }
}


void setup(){

  // ADBの初期化 
  ADB::init();

  // ADB接続の開始
  connection = ADB::addConnection("tcp:4567", true, adbEventHandler);  

}

void loop() {
  // ADB接続のポーリング
  ADB::poll();
}



Arduino pro miniでADK互換ボードを構成する

どうもArduino UNOだと大きいのでArduino pro miniを使って小さく構成してみました。

といっても市販品?で構成できるので簡単でした。

構成部品

  1. Arduino pro mini
  2. FT232RL搭載小型USB-シリアルアダプタ 3.3V
  3. USB Host Shield for Arduino Pro Mini


Arduino pro miniはスイッチサイエンスで購入。
注意点として3.3V版を購入すること。

FT232RL搭載小型USB-シリアルアダプタ 3.3Vはスケッチの書き込みで使います。
間違って5V版を買わないこと!

USB Host Shield for Arduino Pro MiniはCircuits@Homeで購入。
何故か国内で取り扱っている店が無いので、海外から購入。
海外からの発送なので1週間ほど時間がかかります。
ちなみに自分はFlat Rateで発送してもらいました。
Paypalで購入したら荷物番号みたいなのを送ってきてくれたのですが
USPSで追跡はできなかったです。
Expressだともっと早いし追跡できるのかな?

上から

横から

組み合わせてみるとこんなくらいのサイズ。
ジャンパが基板表面上にあるみたいで、どう影響するかいまいちわからなかったので
コネクタを使ってArduinoとシールドを外せれるようにしておいた。
でもそのまま使えたので、2セット目はそのまま直結してもよさそう。

これでテストでLogcatのサンプルを書きこんでみたら
そのまま動いた。

とっても簡単でした。

2011年7月2日土曜日

ADKリファレンスボードでMicroBridgeを使う

神戸支部の吉田さんからGalileo 7 ADK Main BoardでMicroBridgeが使えないか?と頼まれたので
いろいろと調べてみました。

Galileo 7 ADK Main BoardはADK互換ボードでサイズはUNOを少し大きくした感じです。
詳しくはこちら

肝心のMicroBridgeを使う方法ですが、拍子抜けするくらい簡単でした。

まずArduinoのライブラリフォルダにMicroBridgeのライブラリを追加します。
追加方法は過去記事を参考にしてください。

過去記事の「Arduinoのライブラリをインストール」が終わったら、
ARDUINO/librarys/Adk/max3421e.h
を編集します。

max3421e.hをひらいて、


#include "max3421e_constants.h"
#include "pins_arduino.h"





#include "max3421e_constants.h"
#include "pins_arduino.h"
#define ADK_REF_BOARD

としてください。
あとは、過去記事と同じようにlogcatのデモを実行すればAndroidのログが見れます。



おそらく

PIN_MAX_SS、PIN_MAX_INT、PIN_MAX_GPX、PIN_MAX_RESET
でピン配置を決定しているのだとわかるのですが、SPIの端子はどこで設定しているのか
よくわかりませんでした。そのあたりがわかればもう少し自由が効くようになりそうなのですが・・・



2011年6月27日月曜日

AndroidのMonkeyRunnerを使うためのメモ

自分用のメモ

MonkeyRunnerは自動テストツールらしいよ。

使うためには/tools/monkeyrunnerにJythonでかいたソースを投げればいい。
Activityの起動はintentで直書きするのと似た書き方

2011年6月20日月曜日

AndroidからAndroidの乗ったロボを操縦する


ABC2011sへ持ってく予定の新作です。
端末がいっぱいあったので、タブレットからAndroid携帯とBluetoothで通信して、
Android携帯からはMicroBridgeを使ってArduinoと通信するといった構成で
遠隔操縦ロボつくりました。

詳細は続きから

2011年6月10日金曜日

Amazonで買えるArduino関連商品

Amazonで買えるArduino関連商品をまとめた

・本体
Arduino Uno
¥2,995
言わずもがな、一番大切な本体。一番最初に買うなら一番オススメ。Unoからドライバを入れないとWinで認識してくれない。Macは何故かモデムとして認識する。

Arduino Fio
¥2,495
Zigbeeとかバッテリーが必要だとかで追加で買う物があったはず。

Netduino
¥3,495
.Net環境で開発ができる変わり種。一番最初に買うのはあまりオススメしないかな。
でもVC#で開発ができて、ステップ実行とかできるのでデバッグがすごく遣り易いらしい。

Seeeduino328

¥3,200
Arduino 互換らしいけど詳しくはしらないな。

Arduinoをはじめようキット
本当はこのキットがオススメなのだが、最近ずっと売り切れになってる。
ブレッドボードやLED等があってすぐに遊べるキットになってる。


・シールド
LCDシールドキット
¥1,980
ちょっと興味があるかな。まんまLCDを表示するためのシールド。

Arduino用ユニバーサル基板 UB-ARD01
¥704
自分で作った回路を載せるための基板

Arduinoイーサネットシールド(microSDスロット付)
在庫切れ
便利。Arduino に有線LANをつなぐ事ができる。ただノイズに弱いのか電源が貧弱なのかモータードライバと一緒にして動かすとリセットがかかってしまい使えない。
サーボ、LEDなら大丈夫だった。
PLANEX 手のひらサイズ 300Mbps ハイパワー無線LANルータ/アクセスポイント/コンバータ FFP-PKR01と組み合わせれば、無線LAN化してArduino とAndroidを繋げられる。

・その他
RBT-001 Bluetooth evaluation kit
Bluetoothをシリアル通信化してくれるキット。技適もとってるから安心。

Prototyping Lab Kit Vol.1
Prototyping Lab Kit Vol.2
正直バラで買ったほうがオススメ。






2011年6月2日木曜日

2011年5月27日金曜日

AndroidとArduinoを使ってチョロQを操縦する ソース公開編



AndroidとArduinoをUSBホストシールドを使って通信するMicroBridgeを利用して
チョロQを操縦するアプリのソースを公開しました。
先人の知恵をお借りすることで簡単に操縦が出来ました。

http://code.google.com/p/iwatan-lab/downloads/list

ArduinoにMicroBridgeのライブラリを追加する方法は
AndroidとArduinoをUSBホストシールドでつなぐ(非ADK編)
を参照してください。


Google Codeで公開しているのはAndroid側のアプリのソースです。
Arduino側のソースはここを参考にさせて頂いているので改変部分のみ公開します。

以下のソースに参考元からコピペで追加してください。

  • void setch(byte bb)
  • void setbit(byte bb)
  • void execpwm()
  • void setpwm(int pwm)
  • void runpwm()
  • void sendpwm()

#include <spi.h>
#include <adb.h>

#define LED 2


// Adb connection.
Connection * connection;

int data[15];
int g = 0;
byte b = B001111;

// Event handler for the shell connection. 
void adbEventHandler(Connection * connection, adb_eventType event, uint16_t length, uint8_t * data) {
  
  // Data packets contain two bytes, one for each servo, in the range of [0..180]
  if (event == ADB_CONNECTION_RECEIVE) {
    char ch = data[0];
    Serial.println(ch, DEC);
    if (ch < 0x20) {
        setbit(ch);
    } else {
        setch(ch - 0x20);
    }
  }
}


void setup(){
  Serial.begin(57600);
  Serial.println("Ready"); 
  pinMode(LED , OUTPUT);
 
  // Initialise the ADB subsystem.  
  ADB::init();

  // Open an ADB stream to the phone's shell. Auto-reconnect
  connection = ADB::addConnection("tcp:4567", true, adbEventHandler);  
 
}

void loop(){
  
  // Poll the ADB subsystem.
  ADB::poll();
}

ここまでやっておいてなんですが、やはり標準のコントローラーの方が操縦しやすいです。

2011年5月26日木曜日

AndroidとArduinoを使ってチョロQを操縦する その2

AndroidとArduinoを使ってチョロQを操縦する
AndroidとArduinoをつなぐライブラリMicroBridgeのデモアプリを動かす
AndroidとArduinoをUSBホストシールドでつなぐ(非ADK編)

上の続きです。

!追記
この記事のソース公開編

TVの音入っちゃってるけど気にしない。




配線を少し綺麗にしました(前のでは切れちゃったから)
アプリ側では複数チャンネルに対応して、チャンネルを切り替えることで
複数台のQステアを操縦することができるようにしました。
また、トグルボタンでターボのオン/オフも切り替えができるようにしました。
これで、Qステアへの充電以外の機能はすべて実装しました。

Qステアも少しドレスアップしちゃいました。


ボディを開けて、LEDを仕込みました。