きっかけ
スマホのGPSの調子が悪くなって、ナビができなくなったことがきっかけでした。
(ただし、これには後日談があって、修理に出したら治ってしまいましたので、動機はなくなってしまいました)
方向性
スマホ内蔵のGPSを使用せずに、外部のGPSで信号を受信し、Bluetoothを利用してスマホに転送し、エミュレータのようなもので内蔵GPSと偽ってGoogleマップに送れば、正しくナビができるようにする(はずだった・・・)
用意するもの
Raspberry Pi(今回使用したのはバージョン1Model Bを使用)
スマホ
Raspberry Piのセットアップ
ラズパイのセットアップは割愛します。
デスクトップ起動をやめて、コマンドラインで起動
raspi-configで「インターフェイスオプション」-「シリアルポート」から「ログインシェルにアクセス」はNO、「シリアルポートハードウェアを有効」はYES
sshを許可
node-redをインストール
コマンドラインでnode-redを自動的に起動するようにする
sudo systemctl enable nodered
IPアドレスを固定する(詳しくはネットで検索してみてね)
配線をする
秋月のBluetoothキットにはUSB変換が内蔵されているが、Fritzingにはそのようなデータがなかったので、テキトーに作ってみました。
Node-REDを立ち上げてみる
ホストコンピューターのブラウザーから固定されたipアドレスにポート番号を付けて、Node-REDを開いてみる
例えば、我が家の場合 192.168.3.71:1880
/dev/ttyAMA0につながっているGPSを入力にして、/dev/ttyUSB0につなかっているBluetoothモジュールに出力しています。
(msg.payloadはデバックのためにディスプレイに出力しているだけで、実際には必要ありません)
スマホで受信してみる
スマホにアプリをインストールする Serial Bluetooth Terminal
Bluetoothのバインドをする
Serial Bluetooth Terminalをひらいて、スマホからのデータを受信してみる
最終目標
本来だったらGoogle PlayからGPS Connectorをインストールして、Googleマップでナビをする予定だったのですが、Google Playからこのアプリが無くなってる!!(管理者モードに入らなければならなかったし、ちょっとリスキーだったから、それが引っかかったかな?)
またしても最後の一歩足りなかったぁ。
編集後記
前回のブログから1年以上もたってしまいました。 単純に私の電子工作の記録簿なので「どうしても書かなければいけない」というプレッシャーはないのですが、電子工作をする時間を作ることができなかったという反省は大いにあります。