Titaniumのログをブラウザでリアルタイムに確認するライブラリ作った。
しかだよ。
Titaniumで作ったアプリの実機ログを有線で確認するのはめんどいので、ブラウザで見れるような仕組みを作ってみました。
アプリのログをリアルタイムに送信するライブラリ(client)と、ブラウザでログをリアルタイムに受信して確認するライブラリ(server)の2つセットです。
https://github.com/shikajiro/ti.console
install方法
README.mdを見てね。
使い方
これもREADME.md を見てね。一応以下で簡単に説明します。
クライアント側
requireでconsoleライブラリを利用可能にします。
app.js
var console = require('lib/console'); console.info('hogehoge');
サーバー側
コンソールからmongodbとnodejsを起動します。
mongod node ti.console.js Socket Server running at localhost:3000 Http Server running at http://localhost:8080/
http://localhost:8080/ にアクセスしてログが取得されるか確認しましょう。
仕組み
流れ
client側
- TitaniumとNode.jsでsocket通信する。
- ログをNode.jsにどんどん投げる。
- ログはmongodbにどんどん保存する。
server側
- ブラウザでNode.jsにアクセス
- Ajaxでログをどんどん取得
- ログをhtmlに展開。
なんかあったらコメントとかよろしくっす。
XBee wifi を繋いでみる。
XBee wifiも買ったので既存のwifiと繋いでみました。
つなぎ方はXBee Wi-Fi 接続の設定までやってみた Chick Labを参考にされてください。
- 詳細:xbee_wi-fi Arduino Freaks - マイコンボードArduinoの情報
- マニュアル:ftp1.digi.com/support/documentation/90002124_C.pdf
無線LANに繋がらない
BUFFALOのWHR-G301Nに繋げようと頑張りましたが、Association Indication (AI)が0x41になるとこまで行って繋がりませんでした。
0x41 – Module joined a network and is waiting for IP configuration to complete,
which usually means it is waiting for a DHCP provided address
ftp1.digi.com/support/documentation/90002124_C.pdf
察するにDHCPからip割り振りされるのを待ってるみたいなんですがうんともすんとも・・・。
AirMac Express に繋がった
理由はわからない。でもAirMacExpressには繋がった。設定はこんな感じ。
+++OK
atid
AirMac Express
atee
2
atip
1
結果はこんな感じ。
atai
0
atmy
192.168.1.80
Arduinoで動かせない・・・
XBee wifiのArduino用ライブラリがまだ無いみたいで、簡単に動かせる環境は見つかりませんでした。
心が折れたので一旦ここまで。。。
XBee-mbed library - XBee APIモードライブラリ | mbed
を使えばできるかもしれない。
Android ADKとArduino MEGA ADKを繋いでみた
Android Accessory Demo Shield のサンプルはいっぱいあれど、Arduino MEGA ADK で動かしたサンプルがなかなか見つからなかったので探しながら動かしてみました。
スイッチサイエンス/商品詳細 Arduino Mega ADK
結論
id:tomowatanabeさんがgithubしてくださってたので使いました。
tomovwgti/forMegaADK
XBeeを繋いでみた。
ZigBeeに対応した製品であるXBeeでPCとArduinoを繋いでみました。色々とめんどかったのでまとめますね。
以下のサイトと書籍を参考に設定しました。
- MacでArduino Uno + XBEEを使ってみた - むだな ものを つくる
- 建築発明工作ゼミ2008: Arduino+Xbee Shield/Processing+XBee Explorer USB
- Amazon.co.jp: XBeeで作るワイヤレスセンサーネットワーク (Make: PROJECTS): Robert Faludi, 小林 茂(監訳), 水原 文: 本
環境・使ったもの
XBeeを設定する
各XBeeにグループや接続先などの設定をする必要があります。
参考にしたサイトと僕の端末でファームウエアや製品の差異があるみたいで、一部そのままではできませんでした。
ドライバ設定
Virtual COM Port DriversでMac OS X x64 (64-bit) の VCP Driverを落としてインストールします。
ポートの取得
ls /dev/tty.*
/dev/tty.Bluetooth-Modem
/dev/tty.Bluetooth-PDA-Sync
/dev/tty.usbserial-A4013ABD
僕の環境だと /dev/tty.usbserial-A4013ABD が接続しているXBeeのポートです。移行、この名前を使いますが、自分の環境で置き換えてください。
picocomのインストール
XBEEを設定するターミナルをインストールします。ZTermとか色々あるみたいですが、Terminalから使えるpicocomをインストールしました。
brew install picocom
XBeeに接続するには以下を実行します。
picocom --echo --imap crcrlf /dev/tty.usbserial-A4013ABD picocom v1.6 port is : /dev/cu.usbserial-A4013ABD flowcontrol : none baudrate is : 9600 parity is : none databits are : 8 escape is : C-a local echo is : yes noinit is : no noreset is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv imap is : crcrlf, omap is : emap is : crcrlf,delbs,
ATコマンドで端末を設定
- ATID ネットワークグループ
- ATDH / ATDL 宛先
を設定すればいけます。
宛先を設定するためにXBee端末の裏にIDが入力されているので控えましょう。
※参考サイトではATMYに任意を値を設定してるけど、現在(?)はできません。読み込み専用です。
サンプル
ATID(ここが同じのXBee同士が繋がる) ATDH ATDL(この二つに指定された宛先を繋がる)
というわけで以下みたいな感じで設定しました。
XBee A
ATID2001 ATDH0013A200 ATDL4086B111
XBee B
ATID2001 ATDH0013A200 ATDL4086B126
ソースコード
建築発明工作ゼミ2008: Arduino+Xbee Shield/Processing+XBee Explorer USBを流用しました。以下引用です。
int val;//受信データ用の変数を用意 void setup(){ //シリアル通信開始 Serial.begin(9600); //13ピンをデジタル出力に設定 pinMode(13,OUTPUT); } void loop(){ if(Serial.available()>0){ //データが来たら val=Serial.read(); //データを読み込み、valへ代入 } if(val=='H'){ //valが「H」の場合 digitalWrite(13,HIGH);//点灯 }else{ //valが「L」の場合 digitalWrite(13,LOW); //消灯 } }
Processing側
//シリアル通信ライブラリを取り入れる import processing.serial.*; //ポートのインスタンス Serial port; void setup(){ //「XBee Explorer USB」のシリアルポート設定 port=new Serial(this,"/dev/tty.usbserial-A8003VXd",9600); } void draw(){ //特になし } void mousePressed(){//マウスボタンを押したら port.write('H'); //「H」を送信(点灯) } void mouseReleased(){//マウスボタンを放したら port.write('L'); //「L」を送信(消灯) }
Arduinoにソースを書き込む時に以下に注意してください。
スイッチサイエンス/商品詳細 Arduino ワイヤレスプロトシールド
SELEIAL SELECTスイッチによってXBeeの有線接続先を切り替えられます。
スイッチをMICRO側にすると、Arduino⇔XBeeの接続になります。ただしArduinoからのデータは、USBシリアルによってPCにも送信されるのでご注意ください。
スイッチをUSB側にすると、PC(USBシリアル経由)⇔XBeeの接続になります。このモードを使う場合、Arduinoには事前に下記の「空スケッチ」を書き込んで下さい。
なので、書き込んだあとはMICRO側にしないとXBeeが動きません。注意しましょう。
クリックするとこんな感じで動くはず。きっと。
気温を定期的にツイートするArduino端末を作る
Arduinoを使って気温を定期的にツイートするハードウェアを構築してみました。
ソースコード
Twitterのライブラリを利用しています。Tweet Library for ArduinoよりDLしてArduinoパッケージに組み込んでください。僕の環境では以下の場所でした。
/Applications/Arduino1.0.app/Contents/Resources/Java/libraries
ソースコードはサンプルを流用しています。
#include <SPI.h> // needed in Arduino 0019 or later #include <Ethernet.h> #include <Twitter.h> // The includion of EthernetDNS is not needed in Arduino IDE 1.0 or later. // Please uncomment below in Arduino IDE 0022 or earlier. //#include <EthernetDNS.h> // Ethernet Shield Settings byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // If you don't specify the IP address, DHCP is used(only in Arduino 1.0 or later). byte ip[] = { 192, 168, 2, 10 };//ipを指定してください。 // Your Token to Tweet (get it from http://arduino-tweet.appspot.com/) Twitter twitter("ここにつぶやきたいユーザーのトークンを設定してください"); // Message to post //char msg[] = "Hello, World! I'm Arduino!"; void setup(){ Ethernet.begin(mac, ip); // or you can use DHCP for autoomatic IP address configuration. // Ethernet.begin(mac); Serial.begin(9600); } void loop(){ delay(60000);//1分感覚で温度を調査してツイートします。 float a0 = analogRead(A0); float xV = (5*a0)/1024; int intV = xV * 100;//整数部 int decV = int(xV * 1000) % 10;//小数点部 String strMsg = String("aratana lab is "); strMsg += intV; strMsg += "."; strMsg += decV; strMsg += " ℃"; strMsg += " #shikarduino"; Serial.println("tweet is \""+strMsg+"\""); char msg[255]; strMsg.toCharArray(msg, 255); Serial.println("connecting ..."); if (twitter.post(msg)) { // Specify &Serial to output received response to Serial. // If no output is required, you can just omit the argument, e.g. // int status = twitter.wait(); int status = twitter.wait(&Serial); if (status == 200) { Serial.println("OK."); } else { Serial.print("failed : code "); Serial.println(status); } } else { Serial.println("connection failed."); } }
温度計の使い方
温度計で取得した値の意味や使い方は以下のブログに丁寧に紹介されています。
Arduinoで温度計(LM35DZ) - 思い出はいつまでも
LM35DZは温度を測ることができるセンサーで、Voutから温度に応じた電圧を出力してくれます。これを換算することで温度を計測することができます。
LM35DZは0℃で0V、1℃当たり10mVの出力が得られます。25℃だと250mV、100℃だと1000mV(1V)の出力が得られます。LM35DZ自体の計測範囲が-55℃〜+150℃ですが、氷点下を計るためには負電源が必要であるため(これが理由で後にLM61CIZに変更します)、計測は0℃〜100℃までとします。
これで動くはずだよ!
Android Facebook SDKの認証サンプルが動かないので
Facebookの使い方を間違えて落ち込んでいるしかだよ。(´・ω・`)
AndroidのFacebook SDKを使いたくてとりあえずAndroid Tutorial - Facebook Developersを動かそうとしたら、ずっとローディングのまま・・・。それを動かすまでの話です。
Jan 18, 2012のcommit: c58af0b64d85a853f1c79f2ee207c6d9992d31baの状態のsdkを利用しました。
facebook sdkの準備
Android Tutorial - Facebook Developers
とか
takutlessのメモ: Facebook Android SDK を使ってみる
を参考にしましょう。
ソースコード
fb.authorize(this, new Facebook.DialogListener() {...});
の部分を
String[] permissions = {}; fb.authorize(this, permissions, Facebook.FORCE_DIALOG_AUTH, new Facebook.DialogListener() {...});
って書くととりあえず動きます。
起動しているアプリの使用メモリ情報を見る
adb shell dumpsys meminfo [パッケージ名]
サンプル
shikajiro-MacBook-Air:~ shikajiro$ adb -s HT0B4RX02342 shell dumpsys meminfo jp.shikajiro.app Applications Memory Usage (kB): Uptime: 10275836 Realtime: 15606411 ** MEMINFO in pid 7176 [jp.shikajiro.app] ** native dalvik other total limit bitmap nativeBmp size: 6148 5823 N/A 11971 32768 N/A N/A allocated: 6138 4121 N/A 10259 N/A 0 1912 free: 9 1702 N/A 1711 N/A N/A N/A (Pss): 706 184 6501 7391 N/A N/A N/A (shared dirty): 2772 1984 5520 10276 N/A N/A N/A (priv dirty): 664 108 5464 6236 N/A N/A N/A Objects Views: 0 ViewRoots: 0 AppContexts: 0 Activities: 0 Assets: 3 AssetManagers: 3 Local Binders: 5 Proxy Binders: 11 Death Recipients: 0 OpenSSL Sockets: 0 SQL heap: 0 MEMORY_USED: 0 PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0 Uptime: 10275873 Realtime now=15606448