著者:麻生 二郎
「NEO-6M」というGPS(地理情報システム)モジュールを搭載したアンテナ付き基板が数百円に 購入できます。この基板にUART-USB変換ケーブルを接続するだけで、パソコンから位置の情報を取得できます。最新のLinuxディストリビューションとシェルスクリプトで遊んでみましょう。
シェルスクリプトマガジン Vol.61は以下のリンク先でご購入できます。
図13 GPSモジュールを利用するシェルスクリプト(gps_data.sh)
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 32 33 34 35 36 37 38 39 40 |
#!/bin/sh ## Yahoo! JAPANのアプリケーションID yahoo_appid="アプリケーションID" ## 地図の大きさ、縮尺 width="640" height="480" scale="17" ## GPSのデータ取得 timeout 3 cat /dev/ttyUSB0 > /tmp/gps.log ##緯度計算 latitude_raw=$(cat /tmp/gps.log | grep GPGLL | head -1 | cut -f 2 -d ",") latitude_ns=$(cat /tmp/gps.log | grep GPGLL | head -1 | cut -f 3 -d ",") ns=1;test "${latitude_ns}" = "S" && ns=-1 latitude_do=$(echo "scale=0;${latitude_raw} / 100" | bc) latitude=$(echo "scale=5;${ns} * ((${latitude_raw} - ${latitude_do} * 100) / 60 + ${latitude_do})" | bc) ##経度計算 longitude_raw=$(cat /tmp/gps.log | grep GPGLL | head -1 | cut -f 4 -d ",") longitude_ew=$(cat /tmp/gps.log | grep GPGLL | head -1 | cut -f 5 -d ",") ew=1;test "${longitude_ew}" = "W" && ew=-1 longitude_do=$(echo "scale=0;${longitude_raw} / 100" | bc) longitude=$(echo "scale=5;${ew} * ((${longitude_raw} - ${longitude_do} * 100) / 60 + ${longitude_do})" | bc) ##HTMLファイル生成 echo "<!DOCTYPE html>" > gps.html echo "<html lang='ja'>" >> gps.html echo "<head>" >> gps.html echo "<meta charset='UTF-8'>" >> gps.html echo "<title>場所</title>" >> gps.html echo "</head>" >> gps.html echo "<body>" >> gps.html echo "<p>現在地<br>" >> gps.html echo "<img width=${width} height=${height} src='https://map.yahooapis.jp/map/V1/static?appid=${yahoo_appid}&lat=${latitude}&lon=${longitude}&z=${scale}&width=${width}&height=${height}&pointer=on'>" >> gps.html echo "</p>" >> gps.html echo "</body>" >> gps.html echo "</html>" >> gps.html |