ESP32でGPSロガーを作る Ambient連携編
概要
『ESP32&Arduino 電子工作 プログラミング入門』の制作事例を実際にやってみた.
作成したGPSロガーが取得したGPSデータをGoogle Map上に送信できるようにした.
結論
自作のGPSロガーで自己位置の緯度経度がGoogle Map上に記録できた.
まだ自動でアクセスポイントを識別することまではできていない.
実行したこと
『ESP32&Arduino 電子工作 プログラミング入門』のGPSロガーを元に,取得したGPSデータをWiFi経由でAmbientに送信できるようにプログラムを追加した.
実行環境
【ホスト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カードアダプタで変換)
【サービス】
- Ambient
手順
ハードウェア準備
作成した構成は下記で変更なし.
ESP32に対して,GPS受信機モジュール,OLEDディスプレイ,SDカードモジュール,スライドスイッチを接続している.
スライドスイッチをONにすると,GPSログがAmbientに送信される.
ソフトウェア準備
VScodeとPlatformIOでプログラムを作成.
WiFiの機能は本にも記載があるが,Ambientを利用しているサイトを参考にした.
https://ambidata.io/blog/2017/08/04/gps-2/
AmbientとはIoTデータの可視化サービスであり,インターネットに接続できるマイコンを使って,マイコンが取得したセンサデータをグラフにしたり,蓄積することが可能.
無料で登録することができる.
登録したら,チャネルを作成してチャネルIDとライトキーを作成する.
作成したチャネルIDとライトキーはプログラムで必要.
今回は地図を用意するので,下記のように設定した.
※WiFi.hライブラリを使うが,PlatformIOのライブラリからインストールすると失敗する.PlatformIOからインストールせずとも,実行できた.これで1日時間を使ってしまった.PlatformIOにあるWiFi.hと標準のもので内容が違うのであろうか.
実行
ハードウェアとソフトウェアが作成完了したら,起動する.
スマートフォンのデザリングでも接続可能なので,実行前にスマートフォンのデザリングアクセスポイントを設定すれば良い.
※複数のアクセスポイントを自動で認識する方法もあるが今後検討
実際GPSロガーが本当にGPSをロギングしているかを外に出て試した.
ブレッドボードに実装しているので,モバイルバッテリー共々ケースに慎重に入れた.
プログラム
作成したプログラムはこちら.
現在は,直接アクセスポイントを記載するようにしている.
ESP32でGPSロガー作成(Ambientで地図データ送信機能追加)
結果
スライドスイッチをONにすると,定期的にAmbient上の地図に現在位置が更新された.
実際に取得できたデータは上記の結論の図のとおりである.
自転車に乗って,途中途中スマートフォンでデータが更新されているかを確認したが,思った以上に反映されて楽しかった.
静止状態では,かなり位置がずれていたが,屋外に出て移動してみると,結構精度が出ている気がする.
あとがき
ようやくIoTをしている感じが実感できた.
スマートフォンさえあれば,屋外でもかんたんにデータの受信ができることがわかった.
現在はブレッドボードに直付けなので,基板に落とし込んでハードを小型化したり,少し機能をいじりたいときのために,OTAの機能を実装しておけば,もっと本格的にIoTデバイスになる気がする.
現状では,スマートフォンのアプリの下位互換にしかならないため,受信データをインターネット上でイジれるようにしてみたい.
【できそうなこと】
- OTA機能
- SDカード読み書き
- ユニバーサル基板実装
- 受信データ応用
参考
- ESP32&Arduino 電子工作 プログラミング入門
- GPS受信機キット