SONY SPRESENSE の拡張ボードに付いているSDカードの書き込み速度

SONY SPRESENSE の拡張ボードに付いているSDカードにGNSSアドオンで取得可能(ライブラリを使用)なデータ(NMEAフォーマット)を漏れなく書き込めるのかどうか試してみた(*´ェ`)

なぜなら最初にSDカードの書き込みを試していた時(1秒に1回データ取得して書き込みを行うと)1分もしないうちにデータが書き込めていなかったので先日は書き込むNMEAセンテンスを絞っていたのだ..(*゚ェ゚*)本当は残せるものは全部残したい気持ち(*´ェ`)

まず毎秒1回データの取得からSDに書き込み完了するまで何秒かかるか調べてみた(*´ェ`)

測定に使用する衛星は GPS+QZSS_L1CA+QZSS_L1S で取得するデータは

  • GGA
  • GLL
  • GSA
  • GSV
  • GNS
  • RMC
  • VTG
  • ZDA
にした(*´ェ`)
 
衛星を捉えてから1分間(60回)の平均データ取得からSDカードへの書き込み時間は平均約0.33秒、最大約0.37秒
平均 335166.213114754 μs
  335.166213114754 ms
  0.335166213114754 S
最大 377636 μs

あら大丈夫そう∑(*゚ェ゚*)

1回分のデータでそれぞれのNMEAセンテンスを書き込み完了するまでの時間も調べてみた(*´ェ`)

NMEAセンテンス SDに書き込みに掛かる時間(μs)
$GPGGA 13153
$GNGLL 14068
$GNGSA 14221
$GNGSA 14374
$GNGSA 17059
$GPGSV 10742
$GPGSV 10345
$GPGSV 10437
$GPGSV 13946
$GLGSV 12908
$GQGSV 12939
$GQGSV 13091
$GQGSV 13611
$GBGSV 14190
$GBGSV 14221
$GBGSV 14374
$GBGSV 15045
$GBGSV 9827
$GBGSV 10315
$GBGSV 10468
$GBGSV 11535
$GBGSV 12786
$GBGSV 12817
$GAGSV 13001
$GAGSV 17596
$GIGSV 14282
$GNGNS 14282
$GNRMC 17486
$GNVTG 10650
$GNZDA 10345

捉えた衛星で上下はあるけれども約0.4秒..(*´ェ`)

合計 394114 μs
平均 13137.1333333333  
最大 17596  
最小 9827  
合計 394.114 ms
  0.394114 S

やはりNMEAセンテンスごとに書き込む(fileのopen,closeする)よりいくつかまとめて書き込むようにするともっと速くなるのかな(*´ェ`)

最初に試したSDカードが今回調べている途中で認識しなくなってしまったのでもしかしたら壊れかけていたのかもしれない、それで書き込みができなくてデータが保存されていなかったのかもしれない..(*´ェ`)

SONY SPRESENSE でGNSSロガーを作ってみた

SONY SPRESENSE の GNSSアドオンボードと外部アンテナを使用して動作確認が出来たので、これをPCに接続しないで使えるようにしたい(*´ェ`)

何が必要になるか考えると、まず電源とデータを保存するSDカード(これは拡張ボードを買ったので手元にある)、そしてよーく考えるとボタンが必要(SDカードに書き込み途中で電源を落とすとファイルが破損する可能性があるのでは)ということに気がついた∑(*゚ェ゚*)

電源に接続してから即座に位置情報を取得しないでボタンを押したら取得開始するようにする(*´ェ`)

ボタンが押されたら位置情報を取得開始する

もう一度ボタンが押されたら位置情報を取得停止する → 待機状態へ

という仕様にした(*゚ェ゚*)

ということで電源やボタンを買って取り付けてみた(*´ェ`)

電源は敢えて自動パワーOFF機能が付いていないと謳っているサンワサプライの700-BTL049を買ってまずはこのモバイルバッテリーで動作するのかを確認(*´ェ`)OK

拡張ボードを取り付けSDカードの書き込み確認(*´ェ`)OK


SDカードが認識しないこともあったので待機状態に入る前にSDカードの認識(挿入)待ちをする処理を追加することにした(*´ェ`)

ボタンをこんな感じ(Spresense 拡張ボードは、1kΩのプルアップ抵抗がマウントされています。と書かれていたのでこれを利用する)で繋げてボタンを押すたびに状態が切り替わるようにした(*´ェ`)

これをそのまま外で持ち歩くのは恥ずかしいので会社近くのメイホクバーガーさんでハンバーガーをテイクアウトした際にセットで頼んだ辛口ジンジャーエールの容器に入れることにした(*´ェ`)すごくチョウドイイ、でも透明でまだちょっと恥ずかしいのでスタバのスリーブを付けてカモフラージュする(*゚ェ゚*)

これを持って白川公園を歩いてみよう(*´ェ`)

一人で持ち歩くと難易度が高い(見た目)ので同僚に付いてきてもらいました…(*´ェ`)
NMEAフォーマットで記録されているのでgeoJsonに変換してQGIS上でOpenStreetMapに重ねてプロットしたのがこちら∑(*゚ェ゚*)

Aの箇所がジグザクに歩いてみようとしたところでBが木の周りをぐるっと回ってみたところ(*´ェ`)

Bを拡大するとしっかり確認できる∑(*゚ェ゚*)

設定は1秒に1回GPS+QZSS_L1CA+QZSS_L1Sから位置情報を取得してGNSとRMCの2つに絞りSDカードに逐次書き込みするようにした(*´ェ`)

最終的にはこんなシーケンスになった(*゚ェ゚*)

電源ON
↓ LED全部点灯
SDカードチェック
↓ LED1→2→3という順に点灯を繰り返す
待機状態
↓ ボタンを押す(クリック)
指定時間毎に位置情報取得SDカードに書き込み これがloopする
↓ ボタンを押す(クリック)
待機状態

電源OFF   

こんなに簡単にGNSSロガーが作れるなんて思ってもみなかった(*゚ェ゚*)とても楽しい₍₍ (ง ˘ω˘ )ว ⁾⁾

 

おまけメイホクバーガーさんのテリヤキバーガー(エッグトッピング)+サラダ+辛口ジンジャーエール(*´ェ`)とてもオイシイ(*゚ェ゚*)

一人暮らし一周年

マンションで一人暮らしを始めて一年経った(*´ェ`)

この一年間でたくさんの新しいことに触れた。

Android アプリ開発に Java
Webスクレイピングや画像処理に Python
Ruby on Rails で REST API の開発に Ruby

便利なツールもたくさん教わった(*゚ェ゚*)
Middleman
Serverspec
Gitlab の導入で SVN から Git へ移行した。

Let’s Encrypt で無料のSSL証明書を発行したり(*゚ェ゚*)

PythonでルーターからグローバルIPを取得する

Pythonってすごく便利で簡単に扱える(*´ェ`)

何が便利ってライブラリが豊富で必要なものはすでに用意されているってトコロ(*゚ェ゚*)

何が簡単ってコード書いてパパっと実行して結果を得られるトコロ(*゚ェ゚*)

学習2日目で Buffalo の WXR-2533DHP からグローバルIPを取得するコードが書けた(*´ェ`)

Gramapを使った都道府県別人口比率のグラフ

Gramap のアップデートで追加したボリュームマップを使って都道府県別人口比率をグラフにしてみた(*゚ェ゚*)

※都道府県庁所在地に配置されている円にマウスカーソルを合わせると表示される名前は都道府県名ではなく都市名なので注意(*´ェ`)

大正9年(1920年)

昭和16年(1941年)

昭和20年(1945年)※沖縄含まず

平成26年(2014年)

平成26年(2014年)鶏頭図

平成26年(2014年)ツリーマップ

データは以下より入手しました。
「都道府県別人口(各年10月1日現在)-総人口(大正9年~平成12年) 」(総務省統計局) http://www.e-stat.go.jp/SG1/estat/List.do?bid=000000090004&cycode=0 を基に作成

「人口推計(平成26年10月1日現在)」(総務省統計局) http://www.stat.go.jp/data/jinsui/2014np/index.htm を基に作成

最新の Gramap は Windows ストアで入手できます

Gramap 公開

アプリ名 Gramap Tablet_Gramap_left_angle_2
説明

日本の都道府県を対象にしたグラフィカルなマップを簡単に作成できます。

機能
  • 一部SVG形式で保存する事ができます。
Windows ストアで入手できます

SVGで出力したファイルはIllustratorやブラウザで開くことができーるです。

都道府県庁所在地を元にするとこうなる

円形

横並び

縦並び

今回はアプリ提出から1時間程で公開された(*゚ェ゚*)

Windows ストア アプリ はじめました

アプリ名 IP計算 Tablet_IPKeisan_left_angle_2
説明

IP Range から CIDR、CIDR から IP Range に変換します。

計算結果のリストにはネットマスク、ネットマスク(2進数)、アドレス数なども表示されます。

各表示項目はオプションで切り替えられます。

機能
  • IP Range から CIDR に変換
  • CIDR から IP Range に変換
  • リストをダブルタップでテキスト選択
  • 計算結果をテキストファイルに保存
Windows ストアで入手できます

勢いで作ってしまいました(*゚ェ゚*)

Windows ストアで公開するのは初めてだったのでアプリの情報入力に時間がかかったけれども全体的に思っていたよりスムーズ。

アプリの情報を入力したりスクリーンキャプチャした画像を用意したり、ちょっぴりドキドキしながらアプリを提出(アップロード)した。

時刻は 2014/10/22 05:48

ここから認証ステータスが1から段階的に変わる

  1. 前処理
    通常、1時間以内で完了します。
  2. セキュリティテスト
    通常、3時間以内で完了します。
  3. テクニカルコンプライアンス
    通常、6時間以内で完了します。
  4. コンテンツコンプライアンス
    通常、5日以内で完了します。
  5. リリース
    アプリが認定されるまで待ちます。
  6. 署名とパブリッシュ
    通常、4時間以内で完了します。

というような流れで1~5が終わったところで「アプリが認定されました」メールが届いた。

時刻は 2014/10/22 06:45

提出(アプリのアップロード)からわずか1時間。

そこからの認証ステータス6が長く、翌日「Windows ストアに公開されました」メールが届いた。

時刻は 2014/10/23 05:53

提出(アプリのアップロード)からWindows ストアに公開されるまでの時間は1日と5分。

あれ、早いな(*゚ェ゚*)

 

Barnes-Hut

力指向グラフを調べていたら Barnes-Hut のアルゴリズムを Processing で書いているサイトがあったので C#に書き直して WPFアプリケーションに移植してみた(*´ェ`)

参考サイト先にも書かれている通り、初期の配置を考えないとごちゃごちゃになってしまう(*゚ェ゚*)

参考サイト
Barnes-Hutのアルゴリズムについて

今後は最適化と高速化したい(*´ェ`)