トップ «前の日記(2009年03月10日) 最新 次の日記(2009年04月12日)» 編集

のろのろのろ雑記


2009年03月13日 [ColdFire] ColdFire×P2P地震情報(11) 改めて,ノイズを見る: 24時間(1)

_ [ColdFire] ColdFire×P2P地震情報(11) 改めて,ノイズを見る: 24時間(1)

 Interface 9月号付録基板を使い,P2P地震情報のサービスを作ってしまう勝手な企画です.過去の記事は,タイトルのColdFireカテゴリからどうぞ.

24時間サンプリングをやってみました

あまり時間がないので,FFTスペクトラムの画像だけ放り投げ.

FFTスペクトラム画像(PNG, 854KB, 1564x840)

測定データ

  • 2009/03/11 21:00 〜 2009/03/12 21:00
  • ColdFire基板 加速度センサ 全軸データ(画像はX軸のみ)
  • 293.3Hzサンプリング

測定環境

  • 天気は晴れ,午後には基板に日差しが当たることも
  • 周辺温度が上昇しやすい.
    • 温度は測定せず.過去に温度計を使っていた経験からすると,今回は最低12度〜最高22度ぐらい
  • 基板 / 輪ゴム / 床 (基板 on 輪ゴム on 床)
  • ACアダプタは LTE 101U-A320,交流周波数は60Hz(西日本)
  • 電源ケーブル両端にフェライトコアを1つずつ取り付け

送信部

  • telnet接続→ InitAd(0x70) → 下記プログラム(U_Fwd::main)
  • 送信されるデータはバイナリ,16進数表記で次のようになる.
    • XX XX YY YY ZZ ZZ 0D 0A
      • XX XX 〜 ZZ ZZ は各軸データの2バイト整数値
      • 0D 0A はCRLF(改行)を示すが,特に意味はない
      • ビッグエンディアンであるから,コンピュータ側の処理に注意すること.
main()
{
char soc,*ctr;ctr=0x40190000;int *dat;dat=0x40190012;
int *sd=MemoryAlloc(8);
soc=CreateSocket(0);if(soc<0){PrStr("S!");return;}
Bind(soc,6909,0);sd[3]=3338;PrStr("MARIO START!\r\n");
for(;;) {
*ctr=32;
sd[0]=dat[4]>>3;sd[1]=dat[5]>>3;sd[2]=dat[6]>>3;
SendTo(soc,<IP Address>,<Port Number>,sd,8);
SystemSleep();
}
PrStr("GAME OVER\r\n");
CloseSocket(soc);
}

解析部

  • いったんリトルエンディアンに変換し,ファイル保存
    • 各軸2バイト,計6バイトのデータと,1日の経過秒数を示す4バイト整数値をあわせて記録.
  • AudacityでRawデータとして読み込む.
    • Signed 16 bit PCM, リトルエンディアン, 5 チャンネル, 293 Hz
    • 経過秒数を示す2チャンネル(4バイト)は削除.
    • FFT 4096でスペクトラム表示.