반응형
라즈베리파이에서 위치정보를 기록하기위한 GPS 모듈의 사용방법에 대해 알아보겠다.
연결은 다음과 같이 연결해 주면 된다.
GPS 모듈을 u-blox 사의 NEO-6M 을 사용하였다.
연결을 해준 상태에서
sudo apt-get install python-pip
sudo pip install pynmea2
sudo apt-get install gpsd gpsd-clients python-gps minicom
다음의 필요 라이브러리들을 설치해준다.
sudo nano /boot/cmdline.txt
명령어를 입력해 수정해준다.
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
sudo nano /boot/config.txt
다음 명령어도 입력하여
해당 라인을 찾은다음 수정해 준다.
dtparam=spi=on
dtoverlay=pi3-disable-bt
core_freq=250
enable_uart=1
force_turbo=1
init_uart_baud=9600
sudo reboot now
라즈베리파이를 재부팅해준다.
재부팅을 한 후에 다음의 명령어를 입력한다
stty -F /dev/ttyAMA0 9600
sudo killall gpsd
sudo nano /etc/default/gpsd
다음 명령어를 입력하여 /etc/default/gpsd 와 시리얼 포트를 디바이스에 추가시켜준다.
DEVICES="/dev/ttyAMA0"
소프트웨어를 재시작해준다.
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket
sudo cgps -s
다음의 명령어를 입력하여 제대로 작동되는지 확일해 볼 수 있다.
cat /dev/ttyAMA0
or
cgps -s
파이썬 코드는 다음과 같다.
import serial
import pynmea2
def parseGPS(str):
if str.find('GGA') > 0:
msg = pynmea2.parse(str)
print "Timestamp: %s -- Lat: %s %s -- Lon: %s %s -- Altitude:
%s %s" %
(msg.timestamp,msg.lat,msg.lat_dir,msg.lon,msg.lon_dir,msg.altitude,m
sg.altitude_units)
serialPort = serial.Serial("/dev/ttyAMA0", 9600, timeout=0.5)
while True:
str = serialPort.readline()
parseGPS(str)
4장의 파이카메라와 이번 GPS 모듈을 파이썬 코드를 작성하여 10분마다 기록된 정보를 서버에 통신하도록하였다.
서버에 통신하기 위해선 네트워크가 필요했는데 그 문제를 해결하기위해 라즈베리파이랑 핸드폰 핫스팟을 이용하여 scp 를 이용하여 데이터 통신을 진행하였다.
다음과 같이 차량의 범퍼 부분에 부착하여 프로젝트를 진행하였다.
참고
https://github.com/FranzTscharf/Python-NEO-6M-GPS-Raspberry-Pi
반응형
'Capstone > Caostone2 - 2020-1학기' 카테고리의 다른 글
[6] GUI 구현 - 설치, UI (0) | 2020.06.25 |
---|---|
[5] 동영상 프레임 단위로 나누기 (3) | 2020.06.25 |
[3]라즈베리파이 파이카메라 (0) | 2020.06.20 |
[2]Yolo v3 python (0) | 2020.06.20 |
[1] 캡스톤 아이디어 (0) | 2020.06.18 |