キイロイトリらぼ

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

ESP32でGPSロガーを作る Ambient連携編

概要

 

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

作成したGPSロガーが取得したGPSデータをGoogle Map上に送信できるようにした. 

結論

自作のGPSロガーで自己位置の緯度経度がGoogle Map上に記録できた.

まだ自動でアクセスポイントを識別することまではできていない.

実行したこと

『ESP32&Arduino 電子工作 プログラミング入門』のGPSロガーを元に,取得したGPSデータをWiFi経由でAmbientに送信できるようにプログラムを追加した.

実行環境

【ホスト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カードアダプタで変換)

【サービス】

  • Ambient

https://ambidata.io/

手順 

ハードウェア準備

作成した構成は下記で変更なし.

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

スライドスイッチをONにすると,GPSログがAmbientに送信される.

f:id:gijin94yobu:20200525115551p:plain

ソフトウェア準備

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

WiFiの機能は本にも記載があるが,Ambientを利用しているサイトを参考にした.

https://ambidata.io/blog/2017/08/04/gps-2/

AmbientとはIoTデータの可視化サービスであり,インターネットに接続できるマイコンを使って,マイコンが取得したセンサデータをグラフにしたり,蓄積することが可能.

無料で登録することができる.

登録したら,チャネルを作成してチャネルIDとライトキーを作成する.

作成したチャネルIDとライトキーはプログラムで必要.

今回は地図を用意するので,下記のように設定した.

f:id:gijin94yobu:20200525140903p:plain

Ambientの地図データ設定画面

WiFi.hライブラリを使うが,PlatformIOのライブラリからインストールすると失敗する.PlatformIOからインストールせずとも,実行できた.これで1日時間を使ってしまった.PlatformIOにあるWiFi.hと標準のもので内容が違うのであろうか.

実行

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

スマートフォンのデザリングでも接続可能なので,実行前にスマートフォンのデザリングアクセスポイントを設定すれば良い.

※複数のアクセスポイントを自動で認識する方法もあるが今後検討

 

実際GPSロガーが本当にGPSをロギングしているかを外に出て試した.

ブレッドボードに実装しているので,モバイルバッテリー共々ケースに慎重に入れた.

f:id:gijin94yobu:20200525142130j:plain

作成したGPSロガーをケースに入れて持ち運べるようにした

 

プログラム

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

現在は,直接アクセスポイントを記載するようにしている.

ESP32でGPSロガー作成(Ambientで地図データ送信機能追加)

 

結果

スライドスイッチをONにすると,定期的にAmbient上の地図に現在位置が更新された.

実際に取得できたデータは上記の結論の図のとおりである.

自転車に乗って,途中途中スマートフォンでデータが更新されているかを確認したが,思った以上に反映されて楽しかった.

静止状態では,かなり位置がずれていたが,屋外に出て移動してみると,結構精度が出ている気がする.

 

あとがき

 

ようやくIoTをしている感じが実感できた.

スマートフォンさえあれば,屋外でもかんたんにデータの受信ができることがわかった.

現在はブレッドボードに直付けなので,基板に落とし込んでハードを小型化したり,少し機能をいじりたいときのために,OTAの機能を実装しておけば,もっと本格的にIoTデバイスになる気がする.

現状では,スマートフォンのアプリの下位互換にしかならないため,受信データをインターネット上でイジれるようにしてみたい.

【できそうなこと】

  • OTA機能
  • SDカード読み書き
  • ユニバーサル基板実装
  • 受信データ応用

参考

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

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

 
  • GPS受信機キット

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

https://ambidata.io/blog/2017/08/04/gps-2/