キイロイトリらぼ

ぬいぐるみと一緒に生きていきます

ESP32でGPSロガーを作る

概要

『ESP32&Arduino 電子工作 プログラミング入門』の制作事例を実際にやってみた.

ESP32でGPSロガーを作成した. 

f:id:gijin94yobu:20200523184603j:plain

作成したGPSロガーの概観

結論

GPSロガーができた.

SDカードの読み込みができなかった.

ステイホーム中なので,本当にロギングしているかは試せていない.

実行したこと

基本的に『ESP32&Arduino 電子工作 プログラミング入門』のGPSロガーの章のままである.SDカードモジュールのみ自宅にたまたまあった物を使用した(これが良くなかった?)

実行環境

【ホストPC】

  • windows10 64bit Home
  • VSCode - 1.45.1
  • PlatformIO(VScodeにインストール済み)

【ターゲットボード】

  • ESP32-WROOM-32 開発ボード

【センサ類】

  • GPS受信機キット

http://akizukidenshi.com/catalog/g/gK-09991/

  • SDカードモジュール(GPSデータ保存用)

http://www.boruit.com/JAPANESE/SDcard_jp.htm

  • OLEDディスプレイ(GPS受信データ表示用)
  • スライドスイッチ (GPSログモード切り替え用)
  • ブレッドボード×2 (連結した)
  • マイクロSDカード 8GB(SDカードアダプタで変換)

手順 

ハードウェア準備

作成した構成は下記.ESP32に対して,GPS受信機モジュール,OLEDディスプレイ,SDカードモジュール,スライドスイッチを接続している.

f:id:gijin94yobu:20200525115551p:plain

ソフトウェア準備

VScodeとPlatformIOでプログラムを作成.

『ESP32&Arduino 電子工作 プログラミング入門』はArduino IDEを用いて作成しているため,ライブラリの利用方法は記載の方法とは異なる.

PlatformIOでライブラリを取得することが可能.

例として,TinyGPSPlusのライブラリを取得する場合は,PIO Home->Libraiesで検索窓からGPSなどキーワードを打てば,親しいライブラリが出てくる.

f:id:gijin94yobu:20200523233005p:plain

PlatformIOでライブラリ取得

必要なライブラリを作成用プロジェクトにインストールすればいい.

プログラムは『ESP32&Arduino 電子工作 プログラミング入門』のサンプルでほとんど構成している(勉強のつもりで本の内容を写経していたが,長くなったので途中で諦めた).

実行

ハードウェアとソフトウェアが作成完了したら,起動する.

GPS受信機の説明書に初期動作テストとして,屋外か窓際に置くよう記載があるのでそうする.40秒~十数分ほど静置させると,GPS受信機内のLEDが点灯から1秒毎の点滅に変わる.これが,三次元測位中を示し,4衛星以上を追尾していることを意味する.

プログラム

作成したプログラムはこちら.

メインプログラム以外に必要なヘッダファイルがあることに注意.

SDカードモジュールの初期化があるが,本の通りに実行するとSD_ERRORになることが解消できなかった.このままでは,whileの無限ループになり,肝心のGPSロギングが実行できないままのためやむなくコメントアウトした.

 

GPSロガーの作成プログラム

 

結果

20分くらい放置させると,OLEDディスプレイが初期値から,緯度経度を表示するようになった.一応緯度経度はマスクしている.

SDカードの設定はエラーのままなので,データの読み出しまで確認できなかったのは悔やまれる.

f:id:gijin94yobu:20200523191834j:plain

GPSロガーGPS受信後(一応緯度経度はマスクしている)

あとがき

SDカードモジュールのエラー要因がわからなかった.

使用したモジュールが本の記載とは異なる部品とはいえ,他のサイトで使用実績のある部品のようなので,ソフト側の問題と思う.

ESP32のSDカードの相性もあるようなので,一度SDカードの読み書きのみの確認をしたほうがいいかもしれない.

https://www.mgo-tec.com/blog-entry-esp32-wroom-micro-sdhc-01.html

本の記載にもあるが,これまでの機能にはESP32特有のWiFi機能などは実装されていないので,ここまでの成果をもとに,拡張していきたい.

まずは,Ambientを使ってみてデータを無線で飛ばしてみたい.

また,GPS受信データを色々加工してNMEAに詳しくなりたい.

参考

  • ESP32&Arduino 電子工作 プログラミング入門
ESP32&Arduino 電子工作 プログラミング入門

ESP32&Arduino 電子工作 プログラミング入門

 

 

  • ESP32 ( ESP-WROOM-32 ) で micro SDHC メモリカードを使う場合の注意点

https://www.mgo-tec.com/blog-entry-esp32-wroom-micro-sdhc-01.html

  • GPS受信機キット

http://akizukidenshi.com/catalog/g/gK-09991/

  • SDカードモジュール

http://www.boruit.com/JAPANESE/SDcard_jp.htm