- 필수 구성 요소 :
- GPS 모듈 및 작동 :
- GPS와 통신하도록 Raspberry Pi 준비 :
- Raspberry Pi GPS 모듈 인터페이스 연결 :
- Python 스크립트 전 테스트 :
Arduino와 같은 가장 멋진 임베디드 플랫폼 중 하나는 제조업체와 DIYer에게 GPS 모듈을 사용하여 위치 데이터를 쉽게 가져와 위치에 의존하는 것을 구축 할 수있는 기능을 제공했습니다. Raspberry Pi가 제공하는 전력량을 고려할 때, 똑같은 저렴한 GPS 모듈로 GPS 기반 프로젝트를 구축하는 것은 확실히 굉장 할 것입니다. 이것이이 게시물의 초점입니다. 오늘이 프로젝트에서는 GPS 모듈을 Raspberry Pi 3과 인터페이스 할 것 입니다.
이 프로젝트의 목표는 GPS 모듈에서 UART를 통해 위치 데이터 (경도 및 위도)를 수집하여 16x2 LCD에 표시하는 것이므로 16x2 LCD가 Raspberry Pi와 작동하는 방식에 익숙하지 않은 경우 이것은 또 다른 배울 수있는 좋은 기회입니다.
필수 구성 요소:
- 라즈베리 파이 3
- Neo 6m v2 GPS 모듈
- 16 x 2 LCD
- Raspberry Pi 용 전원
- 헤드리스 모드에서 파이를 PC에 연결하는 LAN 케이블
- 브레드 보드 및 점퍼 케이블
- LCD에 대한 저항기 / 전위차계
- Raspbian Jessie를 실행하는 메모리 카드 8 또는 16Gb
그 외에 GPSD (GPS Daemon) 라이브러리, 16x2 LCD Adafruit 라이브러리를 설치해야합니다.이 라이브러리는이 튜토리얼의 뒷부분에서 설치합니다.
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 3 를 사용하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며 Raspberry Pi 소개에서 찾아 볼 수 있습니다.
GPS 모듈 및 작동:
GPS는 Global Positioning System의 약자로 정확한 UTC 시간 (협정 세계시)으로 지구상의 모든 위치의 위도와 경도를 감지하는 데 사용됩니다. GPS 모듈은 차량 추적 시스템 프로젝트의 주요 구성 요소입니다. 이 장치는 시간과 날짜와 함께 매초마다 위성으로부터 좌표를 수신합니다.
GPS 모듈 은 추적 위치와 관련된 데이터를 실시간으로 전송하며 NMEA 형식으로 많은 데이터를 전송합니다 (아래 스크린 샷 참조). NMEA 형식은 한 문장 만 필요한 여러 문장으로 구성됩니다. 이 문장은 $ GPGGA 에서 시작 하며 좌표, 시간 및 기타 유용한 정보를 포함합니다. 이 GPGGA 는 Global Positioning System Fix Data 라고합니다. 여기에서 GPS 데이터 및 문자열 읽기에 대해 자세히 알아보십시오.
문자열의 쉼표를 세어 $ GPGGA 문자열에서 좌표를 추출 할 수 있습니다. $ GPGGA 문자열을 찾아서 배열에 저장한다고 가정하면 Latitude는 두 개의 쉼표 뒤에 있고 Longitude는 네 개의 쉼표 뒤에 있습니다. 이제 이러한 위도와 경도를 다른 배열에 넣을 수 있습니다.
다음은 설명과 함께 $ GPGGA 문자열입니다.
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M`` * 47
$ GPGGA, HHMMSS.SSS, latitude, N, longitude, E, FQ, NOS, HDP, altitude, M, height, M,, 체크섬 데이터
식별자 |
기술 |
$ GPGGA |
글로벌 포지셔닝 시스템 수정 데이터 |
HHMMSS.SSS |
시간 (시간 분 초 및 밀리 초 형식) |
위도 |
위도 (좌표) |
엔 |
방향 N = 북, S = 남 |
경도 |
경도 (좌표) |
이자형 |
방향 E = 동쪽, W = 서 |
FQ |
품질 데이터 수정 |
NOS |
사용중인 위성 수 |
HPD |
정밀도의 수평 희석 |
고도 |
해발 고도 |
미디엄 |
미터 |
신장 |
신장 |
체크섬 |
체크섬 데이터 |
다른 GPS 프로젝트를 확인할 수 있습니다.
- GPS 및 GSM을 사용하는 Arduino 기반 차량 추적기
- GPS, GSM 및 가속도계를 사용한 Arduino 기반 차량 사고 경보 시스템
- Arduino에서 GPS를 사용하는 방법
- Arduino, ESP8266 및 GPS를 사용하여 Google지도에서 차량 추적
GPS와 통신하도록 Raspberry Pi 준비:
자, 이제 지루하지 않습니다. 이미 Raspberry Pi에 대해 많이 알고 있다고 가정합니다. OS를 설치하고, IP 주소를 얻고, 퍼티와 같은 터미널 소프트웨어에 연결할 수 있습니다. PI. 위에서 언급 한 작업을 수행하는 데 문제가있는 경우 댓글 섹션에서 저를 누르시면 기꺼이 도와 드리겠습니다.
이 프로젝트를 진행하기 위해 우리가해야 할 첫 번째 일은 UART를 통해 GPS 모듈과 통신 할 수 있도록 Raspberry Pi 3 를 준비하는 것입니다. 제 말을 믿으세요. 꽤 까다 롭고 제대로하기 위해 많은 노력을 기울였습니다. 내 가이드는 신중하게 한 번에 얻을 수 있으며 이것은 프로젝트에서 가장 어려운 부분입니다. 여기에서는 Neo 6m v2 GPS 모듈을 사용했습니다.
자세히 알아보기 위해 Raspberry Pi 3 UART의 작동 방식에 대한 간단한 설명이 있습니다.
Raspberry Pi에는 PL011과 미니 UART라는 두 개의 내장 UART가 있습니다. 그들은 다른 하드웨어 블록을 사용하여 구현되므로 약간 다른 특성을 갖습니다. 그러나 라즈베리 파이 3에서 무선 / 블루투스 모듈은 PLO11 UART에 연결되고 미니 UART는 Linux 콘솔 출력에 사용됩니다. 어떻게 보는지에 따라 PLO11을 구현 수준으로 인해 두 UART 중 최고로 정의하겠습니다. 따라서이 프로젝트에서는 업데이트 된 현재 버전의 Raspbian Jessie에서 사용할 수있는 오버레이를 사용하여 PLO11 UART에서 Bluetooth 모듈을 비활성화 할 것입니다.
1 단계: Raspberry Pi 업데이트:
모든 프로젝트를 시작하기 전에 제가 좋아하는 첫 번째 일은 라즈베리 파이를 업데이트하는 것입니다. 따라서 평소대로하고 아래 명령을 실행 해 보겠습니다.
sudo apt-get 업데이트 sudo apt-get 업그레이드
그런 다음 시스템을 재부팅하십시오.
sudo 재부팅
2 단계: Raspberry Pi에서 UART 설정:
가장 먼저 할 일은 /boot/config.txt 파일 을 편집하는 것 입니다. 이렇게하려면 아래 명령을 실행하십시오.
sudo nano /boot/config.txt
config.txt 파일의 맨 아래에 다음 행을 추가하십시오.
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x를 눌러 종료하고 y를 누르고 Enter를 눌러 저장합니다.
파이가 부팅되지 않을 수 있으므로 오류를 다시 확인하여 오타 나 오류가 없는지 확인하십시오.
이러한 명령의 이유는 무엇입니까? force_turbo 는 UART가이 경우 250으로 설정 한 최대 코어 주파수를 사용할 수 있도록합니다. 그 이유는 수신 된 직렬 데이터의 일관성과 무결성을 보장하기위한 것입니다. 이 시점에서 force_turbo = 1 을 사용 하면 라즈베리 파이의 보증이 무효화되지만 그 외에는 꽤 안전하다는 점에 유의해야합니다.
dtoverlay = PI3-비활성화-BT 로부터 블루투스 연결이 끊어 ttyAMA0는 ,이 우리를 통해 사용할 수있는 전체 UART 전력 사용에 대한 액세스를 허용하는 것입니다 ttyAMAO 대신 미니 UART ttyS0에 있습니다.
이 UART 설정 섹션의 두 번째 단계 는 boot / cmdline.txt 를 편집하는 것입니다.
cmdline.txt의 사본을 만들고 편집하기 전에 먼저 저장하여 필요한 경우 나중에 되돌릴 수 있도록 제안합니다. 다음을 사용하여 수행 할 수 있습니다.
sudo cp boot / cmdline.txt boot / cmdline_backup.txt 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 reboot ).
3 단계: Raspberry Pi Serial Getty 서비스 비활성화
다음 단계는 Pi의 직렬 getty 서비스 를 비활성화하는 것입니다.이 명령은 재부팅시 다시 시작되지 않도록합니다.
sudo systemctl stop [email protected] sudo systemctl disable [email protected]
필요한 경우 다음 명령을 사용하여 다시 활성화 할 수 있습니다.
sudo systemctl enable [email protected] sudo systemctl start [email protected]
시스템을 재부팅하십시오.
4 단계: ttyAMAO 활성화:
ttyS0을 비활성화했습니다. 다음은 ttyAMAO 를 활성화하는 것 입니다.
sudo systemctl enable [email protected]
5 단계: Minicom 및 pynmea2 설치:
우리는 GPS 모듈에 연결하고 데이터를 이해하는 minicom이 될 것입니다. 또한 GPS 모듈이 제대로 작동하는지 테스트하는 데 사용할 도구 중 하나입니다. minicom의 대안은 데몬 소프트웨어 GPSD입니다.
sudo apt-get 설치 minicom
수신 된 데이터를 쉽게 파싱하기 위해 pynmea2 라이브러리를 사용 합니다. 다음을 사용하여 설치할 수 있습니다.
sudo pip 설치 pynmea2
라이브러리 문서는 https://github.com/Knio/pynmea2에서 찾을 수 있습니다.
6 단계: LCD 라이브러리 설치:
이 튜토리얼에서는 AdaFruit 라이브러리를 사용합니다. 라이브러리는 AdaFruit 화면 용으로 만들어졌지만 HD44780을 사용하는 디스플레이 보드에서도 작동합니다. 디스플레이가이를 기반으로하는 경우 문제없이 작동합니다.
라이브러리를 복제하고 직접 설치하는 것이 더 좋습니다. 실행을 복제하려면;
git clone
복제 된 디렉토리로 변경하고 설치하십시오.
cd./Adafruit_Python_CharLCD sudo python setup.py 설치
이 단계에서는 구성 요소 연결을 계속할 수 있도록 다시 부팅 할 것을 제안합니다.
Raspberry Pi GPS 모듈 인터페이스 연결:
아래 회로도에 표시된대로 GPS 모듈과 LCD를 Raspberry Pi에 연결합니다.
Python 스크립트 전 테스트:
파이썬 스크립트를 진행하기 전에 GPS 모듈 연결을 테스트하는 것이 중요하다고 생각합니다.이를 위해 minicom을 사용할 것입니다. 다음 명령을 실행하십시오.
sudo minicom -D / dev / ttyAMA0 -b9600
여기서 9600은 GPS 모듈이 통신하는 전송 속도를 나타냅니다. 이것은 GPS와 RPI 사이의 데이터 통신이 확실하면 파이썬 스크립트를 작성할 때 사용할 수 있습니다.
이 검사는 고양이를 사용하여 수행 할 수도 있습니다.
sudo 고양이 / dev / ttyAMA0
Window 에서는 앞에서 논의한 NMEA 문장 을 볼 수 있습니다.
이 Raspberry Pi GPS 자습서의 Python 스크립트 는 아래 코드 섹션에 나와 있습니다.
모든 것이 말하고 완료되면 전체 시스템을 테스트 할 시간입니다. GPS가 제대로 수정되었는지 확인하는 것이 중요합니다. 대부분의 GPS는 수정을 위해 3 ~ 4 개의 위성이 필요합니다.
제대로 작동합니까? 네…
질문이나 의견이 있습니까? 댓글 섹션에 놓으십시오.
데모 비디오 는 아래에 제공되며 GPS 및 Raspberry Pi를 사용하여 LCD에 위도 및 경도 위치를 표시했습니다.