3-1.部品
UBLOX Banggood:$25.5
3個以上買うとちょっぴり安くなる。
送料無料便で2週間くらいで届いた。特急オプションつけるともっとはやいらしい。
2.54mmピンソケット
直でラズパイに半田つけるなら不要。そんな勇気のない普通の人はあったほうがいいと思う。
手持ちで適当なやつがあったので使用 秋月:¥25。
3-2.ラズパイとGPSを接続
電源は5vでなく3.3vのほうがいいかも。5vでも壊れてないけど信号も5vになるとちょっとまずいかもしれないので。
3-3.ラズパイで測位データを読み込む
ボード上のGPIOのシリアルピンを使う場合は、シリアルの設定を変更する必要がある。
$ sudo vi /boot/cmdline.txt
エディタでcmdline.txtを開いて、
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
1行目の赤字部分を削除。
下の命令はRASPBIAN JESSIEの場合。
RASPBIAN WHEEZYはsudo systemctl…. でなく/etc/inittab の変更らしいのでやり方が違う。
$ sudo systemctl stop serial-getty@ttyAMA0.service
$ sudo systemctl disable serial-getty@ttyAMA0.service
$ console=ttyAMA0,9600 kgdboc=ttyAMA0,9600 console=tty1
$ sudo systemctl stop serial-getty@ttyAMA0.service | sudo systemctl disable serial-getty@ttyAMA0.service | console=ttyAMA0,9600 kgdboc=ttyAMA0,9600 console=tty1 | sudo reboot
$ sudo systemctl stop serial-getty@ttyAMA0.service | sudo systemctl disable serial-getty@ttyAMA0.service | console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 | sudo reboot
---------------メモ
停止/開始
$ sudo systemctl stop serial-getty@ttyAMA0.service
$ sudo systemctl start serial-getty@ttyAMA0.service
自動起動の有効/無効
$ sudo systemctl enable serial-getty@ttyAMA0.service
$ sudo systemctl disable serial-getty@ttyAMA0.service
シリアルの様子をみる
$ sudo cat /dev/ttyAMA0
———————↓手順要考察 *** これ有望
stty -F /dev/ttyAMA0 115200 \
-iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr \
-onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig \
-icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase \
-tostop -echoprt -echoctl -echoke
$ stty -a < /dev/ttyAMA0
シリアル状態をみるコマンド。
——————————-
コンソール(getty)の利用を停止したのち、
シェルプロから直接/dev/ttyAMA0をいじって入出力をする場合、
通信速度や制御コードを送らない設定は従来と同じでsttyコマンドを使います。
$ sudo systemctl stop serial-getty@ttyAMA0.service
$ sudo chmod o+rw /dev/ttyAMA0
$ sudo stty -F /dev/ttyAMA0 115200 \
-iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr \
-onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig \
-icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase \
-tostop -echoprt -echoctl -echoke
http://raspberrypi.stackexchange.com/questions/18285/set-default-baud-rate-on-dev-ttyama0-and-keep-after-reboot
—————————————
NMEAデータを管理するgpsdとクライアントをインストール
$ sudo apt-get install gpsd gpsd-clients
gpsdの設定変更
$ sudo vi /etc/default/gpsd
DEVICES=””
GPSD_OPTIONS=””
の二行の空欄括弧のなかをそれぞれ
DEVICES=”/dev/ttyAMA0″
GPSD_OPTIONS=”/dev/ttyAMA0″
gpsdを起動。
$ sudo gpsd /dev/ttyAMA0 -n -F /var/run/gpsd.sock
クライアント起動
$ cgps -s
GPSの状況が見れる。
guiクライアントは
$ xgps
ctrl + c で中止
参考↓
http://lowfreq.info/archives/18314
3-4.GPSデータをサーバに送信
http://YOUR_PHP_URL/writeA_gps.php?id=GPS002&lat=00&lon=000
をpythonで送信する例。コードをgps.pyで保存。
cgps
python gps.py
#! /usr/bin/python # License: GPL 2.0 import os from gps import * from time import * import time import threading import urllib2 import urllib gpsd = None #seting the global variable os.system(‘clear’) #clear the terminal (optional) class GpsPoller(threading.Thread): def __init__(self): threading.Thread.__init__(self) global gpsd #bring it in scope gpsd = gps(mode=WATCH_ENABLE) #starting the stream of info self.current_value = None self.running = True #setting the thread running to true def run(self): global gpsd while gpsp.running: gpsd.next() #this will continue to loop and grab EACH set of gpsd info to clear the buffer if __name__ == ‘__main__’: gpsp = GpsPoller() # create the thread try: gpsp.start() # start it up while True: #It may take a second or two to get good data #print gpsd.fix.latitude,’, ‘,gpsd.fix.longitude,’ Time: ‘,gpsd.utc os.system(‘clear’) lat = gpsd.fix.latitude lon = gpsd.fix.longitude data = {} data[‘id’]=’GPS002′ data[‘lat’] = lat data[‘lon’] = lon url_values = urllib.urlencode(data) print url_values url = ‘http://YOUR_PHP_URL/writeA_gps.php’ full_url = url + ‘?’ + url_values data = urllib2.urlopen(full_url) print data time.sleep(10) #set to whatever except (KeyboardInterrupt, SystemExit): #when you press ctrl+c print “\nKilling Thread…” gpsp.running = False gpsp.join() # wait for the thread to finish what it’s doing print “Done.\nExiting.”
3-5.RTK
RTKLIBのインストール
$ wget https://github.com/tomojitakasu/RTKLIB/archive/rtklib_2.4.3.zip
$ unzip rtklib_2.4.3.zip
$ cd ~/RTKLIB-rtklib_2.4.3/app
$ sh makeall.sh
とやると、行くはずらしいが、うまくいかない。
最新版うまくいかないのでひとつ前のバージョン
$ wget https://github.com/tomojitakasu/RTKLIB/archive/master.zip
$ unzip master.zip
$ ~/RTKLIB-master/app
$ sh makeall.sh
必要なものだけホーム直下にコピーしておく
$ mkdir ~/rtkrcv
$ cp ~/RTKLIB-master/app/rtkrcv/gcc/rtkrcv ~/rtkrcv/rtkrcv
$ cp ~/RTKLIB-master/app/rtkrcv/gcc/rtkrcv.conf ~/rtkrcv/rtkrcv.conf
$ cp -Rf ~/RTKLIB-master/data ~/rtkrcv/data
$ cd ~/rtktcv
$ vi rtkrcv.conf
テキスト内、ファイルを以下の箇所を書き換え
inpstr2-type =off
inpstr1-format =ubx
inpstr1-path =ttyAMA0:115200:8:n:1:off
file-cmdfile1 =./data/ubx_m8n_glo_raw_1hz.cmd
posi-sateph = brdc
パス関係は全部./data/****に直す。
$ vi data/ubx_m8n_glo_raw_1hz.cmd
!UBX CFG-GNSS 0 32 32 1 3 16 16 0 1
!UBX CFG-GNSS 0 32 32 1 6 16 16 0 1
!UBX CFG-MSG 3 16 0 1 1 1 1 1
!UBX CFG-MSG 3 15 0 1 1 1 1 1
!UBX CFG-MSG 1 32 0 1 1 1 1 1
@
!UBX CFG-MSG 3 16 0 0 0 0 0 0
!UBX CFG-MSG 3 15 0 0 0 0 0 0
!UBX CFG-MSG 1 32 0 0 0 0 0 0
に書き換え。
./rtkrcv
で機動….しないのでいろいろやったら動いた。
どれが有効か不明。
一旦全部けして
chmod 755 makeall.sh
してからコンパイル。
~/RTKLIB-master/app/rtkrcv/gcc/single.conf
の内容を編集して
./rtkrtc -o single.conf でうごかす。
いろいろ試したら
posi-sateph = brdc
がポイントっぽい。
タブレットにRTKGPS+をインストール。
format >> u-blox LET*T
command >> ubx_m8n_glo_row_1hz.cmd
をロード
1行目
!UBX ……… 16 ,16,0,0
を
!UBX ……… 16 ,16,0,1
に変更。