ESP32でGPSロガーを作る
概要
『ESP32&Arduino 電子工作 プログラミング入門』の制作事例を実際にやってみた.
ESP32でGPSロガーを作成した.
結論
GPSロガーができた.
SDカードの読み込みができなかった.
ステイホーム中なので,本当にロギングしているかは試せていない.
実行したこと
基本的に『ESP32&Arduino 電子工作 プログラミング入門』のGPSロガーの章のままである.SDカードモジュールのみ自宅にたまたまあった物を使用した(これが良くなかった?)
実行環境
【ホストPC】
【ターゲットボード】
- 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カードモジュール,スライドスイッチを接続している.
ソフトウェア準備
VScodeとPlatformIOでプログラムを作成.
『ESP32&Arduino 電子工作 プログラミング入門』はArduino IDEを用いて作成しているため,ライブラリの利用方法は記載の方法とは異なる.
PlatformIOでライブラリを取得することが可能.
例として,TinyGPSPlusのライブラリを取得する場合は,PIO Home->Libraiesで検索窓からGPSなどキーワードを打てば,親しいライブラリが出てくる.
必要なライブラリを作成用プロジェクトにインストールすればいい.
プログラムは『ESP32&Arduino 電子工作 プログラミング入門』のサンプルでほとんど構成している(勉強のつもりで本の内容を写経していたが,長くなったので途中で諦めた).
実行
ハードウェアとソフトウェアが作成完了したら,起動する.
GPS受信機の説明書に初期動作テストとして,屋外か窓際に置くよう記載があるのでそうする.40秒~十数分ほど静置させると,GPS受信機内のLEDが点灯から1秒毎の点滅に変わる.これが,三次元測位中を示し,4衛星以上を追尾していることを意味する.
プログラム
作成したプログラムはこちら.
メインプログラム以外に必要なヘッダファイルがあることに注意.
SDカードモジュールの初期化があるが,本の通りに実行するとSD_ERRORになることが解消できなかった.このままでは,whileの無限ループになり,肝心のGPSロギングが実行できないままのためやむなくコメントアウトした.
結果
20分くらい放置させると,OLEDディスプレイが初期値から,緯度経度を表示するようになった.一応緯度経度はマスクしている.
SDカードの設定はエラーのままなので,データの読み出しまで確認できなかったのは悔やまれる.
あとがき
SDカードモジュールのエラー要因がわからなかった.
使用したモジュールが本の記載とは異なる部品とはいえ,他のサイトで使用実績のある部品のようなので,ソフト側の問題と思う.
ESP32のSDカードの相性もあるようなので,一度SDカードの読み書きのみの確認をしたほうがいいかもしれない.
https://www.mgo-tec.com/blog-entry-esp32-wroom-micro-sdhc-01.html
本の記載にもあるが,これまでの機能にはESP32特有のWiFi機能などは実装されていないので,ここまでの成果をもとに,拡張していきたい.
まずは,Ambientを使ってみてデータを無線で飛ばしてみたい.
また,GPS受信データを色々加工してNMEAに詳しくなりたい.
参考
- ESP32&Arduino 電子工作 プログラミング入門
https://www.mgo-tec.com/blog-entry-esp32-wroom-micro-sdhc-01.html
- GPS受信機キット
http://akizukidenshi.com/catalog/g/gK-09991/
- SDカードモジュール