忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

M5paperで自作ナビを作った話 

M5paperでカーナビみたいなもの作りたいな~ とずっと思っていたんですが、今回うまくできたので紹介させていただきたいと思います。

↑こんな具合で今の自分位置と周辺の地図を表示します。

目的地設定や地図をスワイプしたりの機能はありません、あくまで現在位置を移動に合わせて更新するのみです。


ちょっとそれではさみしいので拡大と縮小は実装しました。本体のスイッチの上下で操作します。

まずはざくっとシステムの全貌から説明していきます。


M5paperはAWSで立ち上げたwebサーバーにGPS信号と地図の大きさの情報を送っています。
サーバー側でその緯度経度から地図画像を作りだし、それをM5paperにフィードバックしています。今回の開発はほとんどサーバーサイドの力技で実現させています。

材料は主に下記の3つです
・M5paper

・GPSユニット

・AWS EC2 ubuntuサーバー

まずはubuntuでLAMP環境を作ります。

ちょっとはしょりますが下記リンクを参考にPHPとDBの準備をします
https://qiita.com/shimotaroo/items/76b705852e3fb496abfc
https://zenn.dev/tomoshimizu/articles/eedb6856df9c90


AWSのポートを解放しIPアドレスを叩いて上記の様なapache初期画面が出せたらOKです。

DBは下記の様な仕様にしています。idは0~20の値で地図の拡大、縮小に使っていますsensor_idは使っていないですね…
テーブル名は gps にしています。


+-----------+---------------+------+-----+---------+-------+


| Field     | Type          | Null | Key | Default | Extra |


+-----------+---------------+------+-----+---------+-------+


| id        | int           | YES  |     | NULL    |       |


| sensor_id | varchar(16)   | YES  |     | NULL    |       |


| lat       | double(16,10) | YES  |     | NULL    |       |


| lng       | double(16,10) | YES  |     | NULL    |       |


| datetime  | datetime      | YES  |     | NULL    |       |


+-----------+---------------+------+-----+---------+-------+


続いてindex.htmlと同じフォルダに下記PHPファイルを格納します。これはm5paperからのjsonデータをDBへ格納するプログラムになります。12行目のDB名やパスワード、ユーザー名はSQLを設定したときの値を使って下さい。

続いてpythonのコードです。一緒にもできるかもしれませんが3つに分けてシェルスクリプトで動かしています。DBからデータを取得し地図のhtmlデータにする。 →map.py
htmlデータを画像データ(png)に変換 →map2.py
pngデータ→jpgに変換  →map3.py

という具合です。
map.py
先ほどPHPファイルで使用したDBへアクセスする情報を入力してください。map2.py
こちらはseleniumを使っていますのでubuntuへchromeをインストールするのとそのバージョンに合わせたchromedriverをダウンロードし、pythonコード内にpathを指定してください。


map3.py 
このプログラムで保存した画像ファイルをjpgにします。これでサーバ側の設定は完了です。このシェルスクリプトを動かしている状態でm5paperからpostすればナビの画像が取得できます。

m5paperのスケッチは以下です。wifiのSSID,PASSとサーバーサイドのphpファイルの場所を指定します。I2C通信はPORT.Cの18,19で通信しています。これでWi-Fi経由でGPS情報をアップロードしながら地図の画像をダウンロードしてM5paperで見ることができます。


…ちょっと設定関係は省略しているのでコメントいただければ対応したいと思います。
かなりいろいろな勉強してようやくたどりつきました。参考になれば幸いです。





拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31