Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arduinoで作るGPSロガー

 Arduinoで作るGPSロガー

#soracom #soracomug #iotokayama
Arduino NanoでGPSロガーを作ります。
GPSモジュールや、液晶モニタ、SDカードスロットモジュールはAmazonで買い、それ以外は手持ちのパーツを流用しています。
製作期間は主要なところ(GPSデータの取り込み、SDカードへの追記)は2-3日くらい。

More Decks by NISHIMOTO Keisuke a.k.a. keisuken

Other Decks in Technology

Transcript

  1. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 2

    自己紹介 • @keisuke_n • ソフトウェア屋さん (Webアプリ) • ハードもぼちぼち • 天体観測もぼちぼち – 皆既月食 2022-11-08 – MAKSY60 + LUMIX GX7mk2 – 子供用望遠鏡でもここまで写る
  2. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 3

    GPSとは • GPS(Global Positioning System)衛星を使った • 緯度・経度を計測するシステム • 衛星内原子時計 + 三角測量 + 特殊相対論補正うんぬん • GPS衛星: 中軌道 20,200km, 傾斜角55度, 12H周期 • わかる(わからん)
  3. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 4

    GPS端末の種類 • モジュール式(UART) • ドングル式(USB) • ArduinoはUARTが便利
  4. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 5

    GPSのデータ • NEMA 0183 – テキスト(ASCII)型式 – GPSではよく使われる – 緯度・経度 – 時刻や高度、精度、衛星、 電波強度情報も含まれる $GPRMC,064527.00,A,3436.29378,N,1335 6.47954,E,0.341,,050223,,,A*7E $GPVTG,,T,,M,0.341,N,0.631,K,A*21 $GPGGA,064527.00,3436.29378,N,13356. 47954,E,1,04,3.51,81.5,M,32.1,M,,*6D $GPGSA,A,3,27,16,26,01,,,,,,,,,5.34, 3.51,4.03*07 $GPGSV,4,1,13,01,06,195,29,05,,,20,0 7,,,32,08,,,33*46 $GPGSV,4,2,13,11,,,23,16,54,064,36,1 7,,,22,18,,,21*41 $GPGSV,4,3,13,21,,,30,23,,,22,26,26, 099,36,27,64,021,39*76 $GPGSV,4,4,13,30,,,11*78 $GPGLL,3436.29378,N,13356.47954,E,06 4527.00,A,A*67
  5. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 6

    今回の目標 Arduino NanoでGPSロガーを作る • 移植は考えない (Arduino Nano, C言語) • 緯度・経度を液晶に表示 • ボタンを押すとSDカードに記録開始/停止 • 記録(ログ)は1ファイル、追記
  6. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 8

    全体構成 SDカード スロット (SPI) 液晶モニタ 160x80 (SPI) GPSモジュール (UART) GPSアンテナ Arduino Nano (互換マイコン) USBコネクタ+ ケーブル 記録ボタン
  7. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 9

    記録系:ボタン/表示 記録開始/停止ボタン 通常時(記録なし) 記録時
  8. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 10

    部品リスト 名前 価格 備考 Arduino Nano(互換) 3,589円 / 3個 ELEGOO GPSモジュール 1,682円 NEO-7M, アンテナ付き SDカードスロットモジュール 699円 / 5個 KKHMF 液晶 (160x80, 65536色) モジュール 880円 waves 0.96インチ その他(ケース, 木板など) - 100均 + 手持ちの物 計 3,898円+ ※価格は2023-01-31時点
  9. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 11

    部品:写真 NEO-7M GPSモジュール ELEGOO Arduino Nano waves 0.96” 液晶モニタ SDカードスロット
  10. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 13

    注意点 • SDカード – SDHC/FAT16/FAT32のみサポート (exFAT未サポート) – SDカードの相性問題 • GPS端末 – コールドスタート時、座標取得に2-3分かかる – (最近の端末はバッテリ搭載でホットスタート可能)
  11. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 14

    ソフト:ライブラリ • Arduino IDEでライブラリインストール – TinyGPS: GPSデータの抽出 – SDカード(標準): ファイルの読み書き – Adafruit_ST7735: 画面表示・描画
  12. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 15

    ソフト内容:GPSデータ受信 // 初期化(8PIN, 9PIN); 9600bps通信 SoftwareSerial gpsSerial(8, 9); gpsSerial.begin(9600); ... // シリアル通信があるまで待つ, 受信データを取得 while (gpsSerial.available() <= 0); data = gpsSerial.read();
  13. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 16

    ソフト内容:SDカード追記 // SDスロット初期化, ファイル生成(追記) SD.begin(4); File gpsLogFile = SD.open(“gpslog.txt”, FILE_WRITE); ... // 一行分取得; ファイルに1行書き出し row = ...; gpsLogFile.println(row);
  14. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 17

    ソフト内容:座標取得, 画面表示 // インスタンス初期化 TinyGPS gps; ... // GPSデータ受信, エンコード (GPSデータ解釈) data = gpsSerial.read(); gps.encode(data); ... // 位置(緯度経度)情報取得 // 位置の文字列化 gps.get_position(&lat, &lng); sprintf(latStr, “% 4ld.%6ld”, lat / 1000000, labs(lat) % 1000000); tft.print(latStr);
  15. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 19

    ソフト内容:容量, 行数 ソフト容量: 25,752バイト 変数容量: 1,582バイト 行数: 242行 (コメント空行を除く)
  16. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 20

    苦労した:ログ記録 • SDカード書込みが不安定 – 記録期間(時刻)があっていない – 記録データが少ない • 記録のタイミング(状態変移)がおかしかった – 「記録中」が実は記録してなかった(逆になっていた)
  17. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 21

    苦労した:GPSデータ化け • 時々ソフトシリアル受信を取りこぼす – 画面表示がボトルネック(時間がかかる) – 遅延時間分散して文字を1文字ずつ描画した • 画面通信(SPI)でソフトシリアル受信が間に合わない • シリアル通信のない時に1文字ずつ描画 • 手動平行処理(スレッド欲しい)
  18. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 22

    苦労した:画面表示化け • 画面表示ライブラリ(Adafruit_ST7735)にバグ – 色が変, 座標指定が変 – ハードの初期化がバグっているらしい – 似た環境IDを設定してお茶を濁(回避)した
  19. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 23

    苦労した:画面表示化け • すべてはAdafruitのせい • い、いえお世話になっております... • ちなみにAdafruitは – MIT発 – ハードウェアの開発・販売 – ソフトウェアの配布 – やって〼 Adafruitのおば...お姉さん
  20. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 24

    ロケーションテスト • 自転車に自作GPSロガーを積んで走り回る – プロトタイプ(Arduino+GPS端末+Note PC) – GPSInfo(フリーソフト)で可視化 – 高度・精度・方位・衛星・時刻なども取れている – 結構ずれる (5m程度) 再生
  21. 2023-03-04 SORACOM UG Okayama #3 & IoT勉強会 in 岡山 25

    まとめ • ソフト開発: ライブラリがあるので簡単 • パーツ入手: Amazonで中華パーツをぽちって手に入る • 応用はたくさん考えられる – 自動運転(ロボットなど) – GPS時計 • 天体観測の自動導入の一部に利用したい • 意外に簡単なのでみなさんもお試しを