주의! 건물내에서 실행하면, 전혀 연결이나 데이터값이 들어오지않는다.
필히! 건물외부에서 테스트 하길 바라며.
해당 GPS모듈의 뒷판 과 안테나를 땜질해도 무관하다
라즈베리파이 raspi-config 를 통해서 시리얼 통신을 꼭 꺼야한다
부팅후 - GPS가 잡히지 않는경우 - 이부분을 찾는데 고생좀했다.
- stty -F /dev/ttyAMA0 9600 명령후 확인해본다
- gpsd -n -G -F /var/run/gpsd.sock -P /var/run/gpsd.pid /dev/ttyAMA0 프로세스를 다시 실행해보고 확인한다 (기존프로세스는 죽여야함)
================================
스펙
================================
UBlox Brand NEO-6M
EEPROM to maintain user settings
Compatible with AMP2 and APM2.5
Operating Voltage: 5V
Baud Rate: 9600
Brand new in antistatic bag.
Dimensions:
Antenna: 9x25x25mm
Module/Encoder: 4x26x36mm
Weight: 18g
4 Mounting holes to suit M3 Bolts
==========================================
공통 GPS 셋팅
==========================================
참고 : http://www.dominicwormald.co.uk/2015/03/07/gps-module-gy-gps6mv2/
참고 : http://www.jamesrobertson.eu/blog/2014/jul/02/using-a-raspberry-pi-with-a-ublox-flight-cont.html
라즈베리파이 raspi-config > 시리얼통신 중지
핀배열
Raspberry Pi - 5v -> GPS Module - VIN
Raspberry Pi - GND -> GPS Module - GND
Raspberry Pi - Tx -> GPS Module - Rx
Raspberry Pi - Rx -> GPS Module - Tx
==========================================
GPS 셋팅
==========================================
/boot/cmdline.txt
삭제 - GPIO 로 해당 속도가 구동않됨
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
/etc/inittab
비활성화
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
/etc/default/gpsd
# Default settings for gpsd.
# Please do not edit this file directly - use `dpkg-reconfigure gpsd" to
# change the options.
START_DAEMON="true"
GPSD_OPTIONS="-n -G"
DEVICES="/dev/ttyAMA0"
USBAUTO="false"
GPSD_SOCKET="/var/run/gpsd.sock"
설치
sudo apt-get install gpsd gpsd-clients python-gps
sudo apt-get install minicom 설치
gps 셋팅 *** 실제 이용시 stty -F /dev/ttyAMA0 9600 명령을 사용함에 셋팅은 하지 않아도 무관한듯 ****
minicom -s
메뉴에 따라 gps의 옵션을 지정
1. Serial port setup
A. Serial Device (데몬지정) : /dev/ttyAMA0
E. Bps/Par/Bits (속도지정) : 115200
2. Save setup ad dfl
3. Exit
4. reboot
부팅시 옵션 - /etc/default/gpsd 에서 옵션을 지정해주어도 정상적인 구동이 되지않는경우
1. stty -F /dev/ttyAMA0 9600 후 확인
2. 프로세스 gpsd -n -G -F /var/run/gpsd.sock -P /var/run/gpsd.pid /dev/ttyAMA0 를 죽이고
gpsd -n -G -F /var/run/gpsd.sock -P /var/run/gpsd.pid /dev/ttyAMA0 다시실행
후 확인
1,2 방법중 구동되는 방법을 부팅시 처리한다.
/etc/rc.local
sudo stty -F /dev/ttyAMA0 9600 라인추가 하였더니 구동않됨
sh 또는 python 으로 우회해서 실행해야한다.
python os 로 실행 -> 파이썬을 /etc/etc.rc.local 에서 실행
import os
os.system("sudo stty -F /dev/ttyAMA0 9600 &")
체크
cgps 를 통한 GPS상태체크
sudo cgps -s
gpsmon 를 통한 GPS상태체크
sudo gpsmon
gpsd 데몬실행
gps 모듈은 디바이스 명칭이 ttyAMA0 이며
반드시 모듈과의 연동속도를 지정해주어야 한다.
이제품은 38400 baud rate가 기본 속도이다
minicom -b 9600 -o -D /dev/ttyAMA0
sudo gpsd /dev/ttyAMA0 -b "B=9600" -F /var/run/gpsd.sock
==========================================
webiopi 를통한 GoogleMap 연동
==========================================
git clone https://github.com/rasplay/googleMapGPS.git
cd googleMapGPS
Gpsreceive.py : gpsd 에서 데이타를 받아 webiopi Server로 송신한다.
index.html : 웹화면으로 표시되는 메인 화면이다.
webiopi_script.py : 웹서버에서 참고하는 script 이다.
/etc/webiopi/config
myscript = /home/pi/googleMapGPS/webiopi_script.py
doc-root = /home/pi/googleMapGPS
재시작
sudo service webiopi restart
클라이언트 구동
sudo python ./Gpsreceive.py
웹기반 구글맵 정보
http://IP:8000
=================
추가팁
=================
UART 인 경우
$ sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
단, Ublox NEO-6/7 GPS 모듈인 경우 속도 설정 필요
$ sudo gpsd /dev/ttyAMA0 -b “B=9600” -F /var/run/gpsd.sock
부팅 시에 자동으로 실행하도록 설정하려면 dpkg-reconfigure gpsd 명령으로 설정하거나 /etc/default/gpsd 파일을 편집하여 다음과 비슷한 내용을 추가하면 된다.
GPSD_OPTIONS=”/dev/AMA0 -b ”B=9600””
======================================================
GPS 데이터 뽑아쓰기
======================================================
참고 : https://bigdanzblog.wordpress.com/2015/01/18/connecting-u-blox-neo-6m-gps-to-raspberry-pi/
sudo cat /dev/ttyAMA0
gpspipe -w -n 30 | grep -m 1 lat
JQ 설치 20150616140218_jq1.3.tar.gz
curl -O http://stedolan.github.io/jq/download/source/jq-1.3.tar.gz
tar xfvz jq-1.3.tar.gz
cd jq-1.3
./configure
make
make install
sudo cp jq /usr/bin
gps값 반환
gpspipe -w -n 30 | grep -m 1 lat | jq "."
{
"climb": 0,
"speed": 3.41,
"track": 284.94,
"epv": 67.16,
"epy": 17.333,
"epx": 10.884,
"alt": -33.3,
"class": "TPV",
"tag": "GLL",
"device": "/dev/ttyAMA0",
"mode": 3,
"time": "2015-06-16T04:49:37.000Z",
"ept": 0.005,
"lat": 37.448068667,
"lon": 126.695746833
}
경도값만 반환
gpspipe -w -n 30 | grep -m 1 lat | jq ".lat"
00.00000
경위도 반환
gpspipe -w -n 30 | grep -m 1 lat | jq ". | {lat,lon}"
{
"lon": 000.000000
"lat": 00.0000000
}
또는
gpspipe -w -n 30 | grep -m 1 lat | jq ".lon,.lat"
000.00000
00.000000
echo $(gpspipe -w -n 30 | grep -m 1 lat | jq ".lat") $(gpspipe -w -n 30 | grep -m 1 lat | jq ".lon")
00.000000 000.0000000
echo "http://google.com/maps/@lat="$(gpspipe-n 30 | grep -m 1 lat | jq ".lat")","$(gpspipe -w -n 30 | grep -m 1 lat | jq ".lon")
http://google.com/maps/@lat=00.00000,000.00000