注文していた74HC154とDIPに変換するアダプターが届いたので先日作ったIPv4表示機で3to8デコーダを2つ使った箇所を4to16デコーダ1つに置き換えてみる(*´ェ`)
すんなり動いて配線もすくなった(*゚ェ゚*)
色も若干濃くなった気がする..(*´ェ`)
注文していた74HC154とDIPに変換するアダプターが届いたので先日作ったIPv4表示機で3to8デコーダを2つ使った箇所を4to16デコーダ1つに置き換えてみる(*´ェ`)
すんなり動いて配線もすくなった(*゚ェ゚*)
色も若干濃くなった気がする..(*´ェ`)
3桁の7セグメントLEDを見た時に真っ先に思いついたのがIPv4を表示させること(*´ェ`)
というわけで早速3桁7セグメントLEDを4つ買ってIPv4を表示させてみた(*゚ェ゚*)
まずは1つだけで表示させてみる、これがダイナミック点灯と呼ばれる目の残像を利用した表示方法か(*゚ェ゚*)
目で見ると確かに高速で切り替えているように見えない∑(*゚ェ゚*)
なんとなくわかってきたところで4つの3桁7セグメントLEDを繋げてIPv4を表示させてみる(*´ェ`)
シフトレジスタを使ってArduinoとの配線は3本の信号線で済んだ(*´ェ`)
IPの表示はシフトレジスタにIPアドレス1桁の数字と4つのオクテット(3桁7セグメントLED)のうちどれかという位置と、どの桁かという情報を1byteで送っている
例えば1つ目のオクテット(一番左の3桁7セグメントLED)の2桁目は9という数字の場合
00011001 という8bit 1byte分のデータを送る
左から 2bit は 4つのオクテットのうちどれかという位置(1つ目)
次の 2bit は 3桁のうち何桁目か(2桁目)
次の 4bit は 表示したい数字(9)
00 01 1001
となっている(*´ェ`)
7セグメントLED周りの配線が悲しいけれども表示はできた(*゚ェ゚*)
今回は指定したIPを表示させている(*´ェ`)
いずれネットワークからグローバルIPなどを取得させたい(*゚ェ゚*)
最初はチラついていたのでバイパスコンデンサをICの近くに設置したらチラつかなくなって感動した(*゚ェ゚*)
12桁だとちょっと発色が弱いような色が薄い..(*´ェ`)
別の電源からトランジスタを使って増幅させる必要がある?
と思っていたけれど一旦今の回路で使用しているICを減らせそうと気がついたので減らしてみた(*゚ェ゚*)
2to4デコーダとインバータ(NOT)x2、NANDx3を1つのIC 4to16デコーダ(74xx154)でできそうだ∑(*゚ェ゚*)
だがしかし74xx154のDIPが売り切れ..(*´ェ`)生産終了..(*´ェ`)悲しい
SOICの74HC154はあるのでDIPに変換するアダプターと共に注文(*゚ェ゚*)
届くまで4to16デコーダを3to8デコーダ(74xx138)2つ使って置き換えてみることにした(*゚ェ゚*)機能的には同じ(*´ェ`)
だいぶスッキリした∑(*゚ェ゚*)
あら少し色が濃くなった∑(*゚ェ゚*)
やってみたかった事ができた(*゚ェ゚*)
先日作った SONY SPRESENSE で取得したNMEAセンテンスのデータをシリアル通信で Arduino に繋いだディスプレイに表示させるから発展させて複数のArduino端末へデータを送り各端末でデータを加工し表示させたかったのだ(*´ェ`)
SONY SPRESENSE はNMEAセンテンスをシリアル接続で送るだけ(*゚ェ゚*)
受け取る側のArduinoはそれぞれ表示に必要NMEAセンテンスを取捨選択する(*´ェ`)
一つ目のArduinoは$xxGSV をフォーマットして衛星の位置を表示させて、二つ目のArduinoは$xxZDA をフォーマットして日時の表示をさせている(*´ェ`)
Arduino R4 Minima を追加で1つ買ってしまった(*´ェ`)
今日は先日買った3つのLCDのAE-ATM0130B3を繋いでみる(*゚ェ゚*)
解像度が240pixel × 240pixel なので図が表示できそうだなと触っているとGNSSロガーで取得したNMEAセンテンスのうちGSVのビューアーに使えるのでは思ったので作ってみることにした(*´ェ`)
なんだかいい感じに作れそう(*゚ェ゚*)
なんだかいい感じに作れそう(*゚ェ゚*)
NMEAセンテンス(GSV)に含まれる1番目の要素 $xxGSV のxx部分で色分けをしたり、衛星番号と組み合わせて辞書のキーにしてみたりした(*´ェ`)
シリアル通信でGSVデータが送られてくる度にデータと表示を更新しているのでデータだけは更新して表示は5秒に1回再描画するくらいがいいのかもしれない(*゚ェ゚*)
SONY SPRESENSE で作成したGNSSロガーからシリアル通信でNMEAセンテンスを垂れ流しにして各センテンスごとのビューアにデータを表示させることができそう(*´ェ`)
昨日は Arduino と LCD(AE-AQM1602A) の接続&文字表示が思っていたより簡単に出来ることがわかったので今日は別のLCD(M96-16-SSD1306)を使って文字を表示させてみた(*´ェ`)
昨日のLCDは16文字の2行を表示できたけれど今日のLCDは16文字4行表示できる(*゚ェ゚*)
読みやすさは置いておいて、文字が小さくて文字間が詰まっていてカッコいい(*´ェ`)白文字も良い(*´ェ`)
サンプルのスケッチでビットマップ画像や線や図形などを表示させることもできた(*゚ェ゚*)ドットの描画も出来ていたので文字以外で何か描画させてみたいな(*´ェ`)
SONY SPRESENSE で作ったGNSSロガーで取得したデータをLCDで表示させたいと思い、どう実現させようか調べていたところ Arduino で色んなLCDに文字や図表示させて試してから考えることにした(*´ェ`)
そこで Arduino UNO R4 Minima と Arduino UNO R4 WiFi を一個ずつと3種類のLCD(AE-AQM1602A、AE-ATM0130B3、M96-16-SSD1306)を買ったみた(*゚ェ゚*)
まずは Arduino UNO R4 Minima と AE-AQM1602A の組み合わせで文字を表示させてみた(*゚ェ゚*)
SONY SPRESENSE の拡張ボードに付いているSDカードにGNSSアドオンで取得可能(ライブラリを使用)なデータ(NMEAフォーマット)を漏れなく書き込めるのかどうか試してみた(*´ェ`)
なぜなら最初にSDカードの書き込みを試していた時(1秒に1回データ取得して書き込みを行うと)1分もしないうちにデータが書き込めていなかったので先日は書き込むNMEAセンテンスを絞っていたのだ..(*゚ェ゚*)本当は残せるものは全部残したい気持ち(*´ェ`)
まず毎秒1回データの取得からSDに書き込み完了するまで何秒かかるか調べてみた(*´ェ`)
測定に使用する衛星は GPS+QZSS_L1CA+QZSS_L1S で取得するデータは
平均 | 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アドオンボードと外部アンテナを使用して動作確認が出来たので、これを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ロガーが作れるなんて思ってもみなかった(*゚ェ゚*)とても楽しい₍₍ (ง ˘ω˘ )ว ⁾⁾
おまけメイホクバーガーさんのテリヤキバーガー(エッグトッピング)+サラダ+辛口ジンジャーエール(*´ェ`)とてもオイシイ(*゚ェ゚*)
Raspbery Pi と GPSモジュールを組み合わせてGPSロガーを作ろうと思い調べていたら
SONYが開発したSPRESENSEというIoT用ボードコンピュータが目に入りこれは良さそうと思い買ってしまった ワク₍₍ (ง ˘ω˘ )ว ⁾⁾ワク
今回購入したのは
SONY SPRESENSE メインボード | 1個 |
SONY SPRESENSE 拡張ボード | 1個 |
SONY SPRESENSE GNSSアドオンボード | 1個 |
SMA-J⇔IPEX(IPX/U.FL)変換ケーブル(120mm) テフロン同軸ケーブル | 1本 |
GPS(L1/L5)/GLONASS アクティブアンテナ LNA内蔵 DC3V~5V対応 | 1個 |
拡張ボードは使わずまた次回..
SPRESENSEのドキュメントが日本語で用意されていて画像も豊富なのでとてもわかりやすい(*´ェ`)
開発環境は Mac Book Air(M1 Apple Silicon) に Arduino IDE を選択した(*´ェ`)
まずはサンプルスケッチのLチカからのgnss.inoでメインボードの測位衛星システムの動作確認(*´ェ`)
あっさり動いたー∑(*゚ェ゚*)
それからGNSSアドオンボード+外部アンテナを取り付けてサンプルスケッチのgnss_addon.inoで動作確認して今日はおしまい(*´ェ`)
メインボードの時は受信した衛星の数が12で外部アンテナを取り付けると24になった(*゚ェ゚*)
初めてでも開発環境のインストール含め外部アンテナを使用した位置取得まで僅か1〜2時間で出来てしまうま∑(*゚ェ゚*)カンタン
拡張ボードはSDカードに書き込みしたりネットワークで位置情報などを送信したりする時に使用する予定..(*´ェ`)
あとは外部電源を用意してPCやMBAが無くても使えるになったら持ち歩いてみたい(*´ェ`)
Oakywood の Classic Desk の素材感が良かったのでデスク周りのアイテムも購入した(*´ェ`)
机の下に取り付けたUnderdesk Organizerはスチール製で磁石もくっついて便利(*´ェ`)
フェルトはメリノウールで羊毛だった∑(*゚ェ゚*)