[BACK]

GPS & 温湿度ロガーの製作

Update : 2021/1/16

GPSロガーってずっと気になっていたので、自分で作る事にしました。
欲を出して温湿度計もつけようと思ったら...えらくハマりました。


回路図
回路図

基本的にはAmazonで安く購入したモジュールの組み合わせです(笑)。 GPSモジュールはu-blox社の「NEO-6M GY-GPS6MV2」です。 温湿度計は「DHT-11」というモジュールです。

実験
実験 実験

今回は要素が多いので、いきなり作ることはせず、まずブレッドボードで一つづつ確かめながら作っていきました。 上の写真はSDカードへのアクセス、下は温湿度計へのアクセスです。

ちょっと検索するとサンプルプログラムが見つかるので、簡単に動作確認が行えました。 便利な世の中です。

温湿度測定
温湿度測定結果

試しに温湿度を測定してみました。 5月中旬の室内の温湿度です。 測定結果は「gnuplot」を使ってグラフにしました。

測定分解能が低いのがちょっと残念です。

基板
基板 基板

そんなに詰め詰めではないのでスッキリと実装、配線できました。 で、電源を入れたら...温湿度計「DHT-11」から煙が出てきました... よく見ると電源、グランドを逆に取りつけていました。

ブレッドボードで接続も含め動作確認したのに... 凡ミスでした。

ケースに収納&動作確認
ケースに収納 ケースに収納

GPSを金属ケースに入れる訳にはいかないので、プラスチックケースに収納しました。 サイズもピッタリ。 良い感じに収まりました。 ここまでは良い感じです。

で、ブレッドボードで作成したプログラムを一つにまとめて動かしたら... 動きません... なんでだろうとイロイロ調べたのですが、どうも割り込みがバッティングするみたい? と言う事で、「DHT-11」を使う事は早々に諦めました。 測定分解能も良くないので。

回路図 Rev.2
回路図 Rev.2

新たな温湿度計はないかな、とネットをブラブラしていたら... 見つけました、「BME280 温湿度センサー 気圧センサーモジュール」。

インターフェイスはSPIとI2Cで、Arduino用ライブラリもあるようですが、ソフトをコンパクトに作りたかったので、GPIOを使って疑似I2CインターフェイスでArduinoと接続するようにしました。 I2Cは双方向なので、デジトラを使って双方向を実現しています。 本来はクロックも双方向なのですが、「クロックストレッチ」が無いので、ArduinoからBME280への片方向です。

修正基板&コーディング
修正基板 修正基板

「DHT-11」を取り外して、空いたスペースに「BME280」モジュールとデジトラ2個と外付け抵抗2本を何とか取り付けました。 モジュールが小さくて助かりました。

GPIOを使用した疑似I2Cはなかなか苦労しましたが、なんとか動くようになりました。 で、GPSコードとまとめて動かしてみると... なんか怪しい... RAMがいっぱいいっぱい見たいです。

で、試行錯誤しながらイロイロ削減して、ようやく安定して動作するようになりました。

完成!
完成! 温湿度測定結果

車に乗せて軌跡を記録と同時に温湿度、気圧が測定できるようになりました。 SDカードに保存するGPSのデータは「$GPGGAセンテンス」で、PCでそれをKMLに変換するソフトも作成しました。 これでGoogle Mapで表示できます。 BME280のデータは「gnuplot」を使ってグラフに出来ます。 参考までに、それぞれのソースコードを載せておきます。

Arduinoのコードは を参考にしました。 と言うか、そのままコードを使用させていただいています。

gnuplot用スクリプトは、最初の2行でグラフ化したいデータのファイルと出力する画像ファイル(png)名を指定し、
  • gnuplot graphBME.gplt
とすれば、データからグラフを画像ファイルとして出力出来ます。

と言う事で、無事に完成しましたが、最初にGPSモジュールを購入したのが2019年の秋でして、実に1年近くかかった製作でした。


©みぞ