[검증완료] GPS-Module GY-GPS6MV2 셋팅 / NEO-6M / GPS 데이터 뽑아쓰기

in neo6m •  7 years ago 

주의! 건물내에서 실행하면, 전혀 연결이나 데이터값이 들어오지않는다.
필히! 건물외부에서 테스트 하길 바라며.

해당 GPS모듈의 뒷판 과 안테나를 땜질해도 무관하다

라즈베리파이 raspi-config 를 통해서 시리얼 통신을 꼭 꺼야한다

부팅후 - GPS가 잡히지 않는경우 - 이부분을 찾는데 고생좀했다.

  1. stty -F /dev/ttyAMA0 9600 명령후 확인해본다
  2. 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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!