- 필요한 재료
- Arduino LoRa Shield
- LoRa Shield 용 PCB 제작
- PCB 조립
- LoRa 송신기에 GPS 모듈 연결
- Arduino LoRa를 GPS 송신기로 프로그래밍
- Arduino LoRa를 GPS 수신기로 프로그래밍
- Arduino LoRa GPS 추적기 작동
특정 물체 / 사람의 소재를 아는 것은 항상 위로가되었습니다. 오늘날 GPS는 차량 추적, 차량 추적, 자산 모니터링, 사람 추적, 애완 동물 추적기 등과 같은 자산 관리 애플리케이션에서 광범위하게 사용되고 있습니다. 모든 추적 장치의 경우 기본 설계 고려 사항은 배터리 예상치 및 모니터링 범위입니다. 둘 다 고려할 때 LoRa 는 전력 소비가 매우 적고 장거리에서 작동 할 수 있기 때문에 완벽한 선택으로 보입니다. 따라서이 튜토리얼 에서는 LoRa를 사용하여 GPS 추적 시스템을 구축 합니다. 시스템은 NEO-6M GPS 모듈 에서 위치 정보를 읽는 송신기로 구성됩니다.Lora를 통해 무선으로 전송합니다. 수신기 부분은 정보를 수신하여 16x2 LCD 디스플레이에 표시합니다. LoRa를 처음 사용하는 경우 계속 진행하기 전에 LoRa 및 LoRaWAN 기술과 Arduino와 인터페이스하는 방법에 대해 알아보십시오.
이 프로젝트를 간단하고 비용 효율적으로 유지하기 위해 LoRa 게이트웨이를 사용하지 않을 것입니다. 대신 송신기와 수신기 사이에 피어 투 피어 통신 을 수행 합니다. 그러나 글로벌 범위를 원하는 경우 수신기를 LoRa 게이트웨이로 교체 할 수 있습니다. 또한 저는 인도 출신 이므로 여기서는 합법적 인 ISM 대역 인 433MHz LoRa 모듈 을 사용할 것이므로 국가에 따라 모듈을 선택해야 할 수도 있습니다. 즉, 시작합시다…
필요한 재료
- Arduino Lora Shield – 2Nos (PCB 디자인 다운로드 가능)
- Arduino Uno – 2Nos
- SX1278 433MHz LoRa 모듈 – 2
- 433MHz Lora 안테나
- NEO-6M GPS 모듈
- LCD 디스플레이 모듈
- 전선 연결
Arduino LoRa Shield
LoRa로 더 쉽게 구축 할 수 있도록이 프로젝트를 위해 LoRa Arduino Shield를 설계했습니다. 이 실드는 LM317 가변 레귤레이터를 사용하여 설계된 3.3V 레귤레이터가있는 SX1278 433MHz로 구성됩니다. Shield는 Arduino 위에 직접 배치되어 LoRa 기능을 제공합니다. 이 LoRa Shield는 LoRa 감지 노드를 배포하거나 LoRa 메시 네트워크를 생성해야 할 때 유용합니다. LoRa Arduino Shield 의 전체 회로 다이어그램 은 다음과 같습니다.
Shield는 12V 잭으로 구성되며 전원이 공급되면 LM317 레귤레이터를 사용하는 LoRa 모듈의 3.3V를 조정하는 데 사용됩니다. 또한 Vin 핀을 통해 Arduino UNO에 전원을 공급하는 데 사용되며 Arduino에서 조정 된 5V는 실드의 LCD에 전원을 공급하는 데 사용됩니다. LM317의 출력 전압은 각각 저항 R1과 R2를 사용하여 3.3V로 고정되며, 이러한 저항의 값은 LM317 계산기를 사용하여 계산할 수 있습니다.
LoRa 모듈은 매우 낮은 전력을 소비하기 때문에 Arduino의 3.3V 핀에서 직접 전력을 공급받을 수도 있지만 LM317이 온보드 전압 조정기보다 더 안정적이기 때문에 외부 조정기 설계를 사용했습니다. 실드는 또한 LCD의 밝기를 조정하는 데 사용할 수있는 전위차계를 가지고 있습니다. LoRa 모듈과 Arduino의 연결은 이전의 Interfacing Arduino with Lora 튜토리얼에서했던 것과 유사합니다.
LoRa Shield 용 PCB 제작
이제 회로가 준비되었으므로 PCB 설계를 진행할 수 있습니다. 나는 PCB 설계 소프트웨어로 열었고 트랙을 만들기 시작했습니다. PCB 설계가 완료되면 내 보드는 다음과 같이 보입니다.
또한 GERBER 형식의 설계 파일을 다운로드하고 제작하여 보드를 얻을 수 있습니다. Gerber 파일 링크는 다음과 같습니다.
Arduino LoRa Shield 용 Gerber 파일 다운로드
이제 디자인이 준비되었으므로 제작할 때입니다. PCB 작업을 수행하는 것은 매우 쉽습니다. 아래 단계를 따르십시오.
1 단계: www.pcbgogo.com에 접속하여 처음이라면 가입하십시오. 그런 다음 PCB 프로토 타입 탭에서 PCB 치수, 레이어 수 및 필요한 PCB 수를 입력합니다. PCB가 80cm × 80cm라고 가정하면 아래와 같이 치수를 설정할 수 있습니다.
2 단계: 지금 견적 버튼 을 클릭하여 진행 합니다. 트랙 간격 등을 사용하는 재료와 같이 필요한 경우 몇 가지 추가 매개 변수를 설정할 수있는 페이지로 이동합니다. 그러나 대부분 기본값은 정상적으로 작동합니다. 여기서 고려해야 할 유일한 것은 가격과 시간입니다. 보시다시피 빌드 시간은 2 ~ 3 일이며 PSB 비용은 5 달러입니다. 그런 다음 요구 사항에 따라 선호하는 배송 방법을 선택할 수 있습니다.
3 단계: 마지막 단계는 Gerber 파일을 업로드하고 결제를 진행하는 것입니다. 프로세스가 원활하게 진행 되는지 확인 하기 위해 PCBGOGO 는 결제를 진행하기 전에 Gerber 파일이 유효한지 확인합니다. 이렇게하면 PCB가 제작에 친숙하고 약속 된대로 도달 할 수 있음을 확인할 수 있습니다.
PCB 조립
보드를 주문한 후, 잘 포장 된 상자에 깔끔하게 라벨이 부착 된 택배를 통해 며칠 후 내게 도착했으며 언제나처럼 PCB의 품질은 굉장했습니다.
납땜 봉을 켜고 보드 조립을 시작했습니다. 풋 프린트, 패드, 비아 및 실크 스크린이 완벽한 모양과 크기이므로 보드를 조립하는 데 문제가 없었습니다. 납땜이 완료되면 Arduino Uno Board에 꼭 맞는 것을 볼 수 있듯이 보드는 아래와 같이 보입니다.
우리 프로젝트에는 Arduino LoRa 송신기 와 Arduino LoRa 수신기 가 있기 때문에 수신기 용 차폐와 송신기 용 차폐 2 개가 필요합니다. 그래서 다른 PCB 납땜을 진행했는데 LoRa 모듈이있는 PCB와 LCD가 아래에 나와 있습니다.
수신기 LoRa shied (왼쪽 하나)에만 LCD가 연결되어있는 것을 볼 수 있듯이 송신기 측은 LoRa 모듈로만 구성됩니다. 아래에서 설명하는 것처럼 GPS 모듈을 송신기 측에 추가로 연결합니다.
LoRa 송신기에 GPS 모듈 연결
여기에 사용 된 GPS 모듈은 NEO-6M GPS 모듈이며,이 모듈은 작은 폼 팩터로 매우 낮은 전력으로 작동 할 수 있으므로 추적 애플리케이션에 적합합니다. 그러나 이전에 다른 종류의 차량 추적 및 위치 감지 응용 프로그램에서 사용했던 많은 다른 GPS 모듈이 있습니다.
이 모듈은 5V에서 작동하며 9600 전송 속도로 직렬 통신을 사용하여 통신합니다. 따라서 모듈에 Arduino의 + 5V 핀에 전원을 공급하고 Rx 및 Tx 핀을 아래 그림과 같이 디지털 핀 D4 및 D3에 각각 연결합니다.
핀 D4 및 D3은 소프트웨어 직렬 핀으로 구성됩니다. 전원이 공급되면 NEO-6M GPS 모듈이 위성 연결을 찾고 자동으로 모든 정보를 직렬로 출력합니다. 이 출력 데이터는 National Marine Electronics Association의 약자이며 모든 GPS 장치의 표준 형식 인 NMEA 문장 형식입니다. Arduino에서 GPS를 사용하는 방법에 대해 자세히 알아 보려면 링크를 따르십시오. 이 데이터는 크기가 크고 원하는 결과를 얻기 위해 대부분의 경우 수동으로 구문을 작성해야합니다. 운 좋게도 우리를 위해 모든 무거운 작업을 수행하는 TinyGPS ++라는 라이브러리가 있습니다. LoRa 라이브러리를 아직 추가하지 않은 경우 추가해야합니다. 그래서 아래 링크에서 두 라이브러리를 모두 다운로드합시다.
TinyGPS ++ Arduino 라이브러리 다운로드
Arduino LoRa 라이브러리 다운로드
링크는 스케치-> 라이브러리 포함-> Add.ZIP 라이브러리 명령을 따라 Arduino IDE에 추가 할 수있는 ZIP 파일을 다운로드합니다. 하드웨어 및 라이브러리가 준비되면 Arduino 보드 프로그래밍을 진행할 수 있습니다.
Arduino LoRa를 GPS 송신기로 프로그래밍
우리가 알고 있듯이 LoRa는 트랜시버 장치이므로 정보를주고받을 수 있습니다. 그러나이 GPS 추적기 프로젝트에서는 하나의 모듈을 송신기로 사용하여 GPS에서 좌표 정보를 읽고 전송하고 다른 모듈은 GPS 좌표 값을 수신하여 LCD에 인쇄하는 수신기로 사용합니다. 송신기 및 수신기 모듈 모두를위한 프로그램이 페이지의 맨 아래에서 찾을 수있다. 코드를 진행하기 전에 GPS 모듈 및 LoRa 모듈 용 라이브러리를 설치했는지 확인하십시오. 이 섹션에서는 송신기 코드를 살펴볼 것입니다.
언제나처럼 필요한 라이브러리와 핀을 추가하여 프로그램을 시작합니다. 여기서 SPI 및 LoRa 라이브러리는 LoRa 통신에 사용되며 TinyGPS ++ 및 SoftwareSerial 라이브러리는 GPS 통신에 사용됩니다. 내 하드웨어의 GPS 모듈은 핀 3과 4에 연결되어 있으므로 다음과 같이 정의합니다.
#포함
설정 기능 내에서 직렬 모니터를 시작 하고 NEO-6M GPS 모듈과의 통신을 위해 소프트웨어 직렬을 "gpsSerial " 로 초기화합니다. 또한 LoRa 작동 주파수로 433E6 (433MHz)를 사용했습니다. 사용중인 모듈 유형에 따라 변경해야 할 수도 있습니다.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! Serial); Serial.println ("LoRa 발신자"); if (! LoRa.begin (433E6)) { Serial.println ("LoRa 시작 실패!"); 동안 (1); } LoRa.setTxPower (20); }
루프 함수 내에서 GPS 모듈이 일부 데이터를 내보내는 지 확인하고, 그렇다면 모든 데이터를 읽고 gps.encode 함수를 사용하여 구문을 지정합니다. 그런 다음 gps.location.isValid () 함수를 사용하여 유효한 위치 데이터를 받았는지 확인 합니다.
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
유효한 위치를 수신 한 경우 위도 및 경도 값 전송 을 시작할 수 있습니다. gps.location.lat () 함수 는 위도 좌표를 제공하고 gps.location.lng () 함수 는 경도 좌표를 제공합니다. 16 * 2 LCD에 인쇄 할 것이기 때문에 두 번째 줄에 똥을 넣어야 할 때를 언급해야하므로 수신자가 다음 정보를 줄 2에 인쇄하도록 "c"키워드를 사용합니다.
LoRa.beginPacket (); LoRa.print ("위도:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Long:"); LoRa.print (gps.location.lng (), 6); Serial.println ("LoRa를 통해 전송 됨"); LoRa.endPacket ();
Arduino LoRa를 GPS 수신기로 프로그래밍
송신기 코드는 이미 위도와 경도 좌표 값을 전송하고 있습니다. 이제 수신기는이 값을 읽고 LCD에 인쇄해야합니다. 마찬가지로 여기에 LoRa 모듈 및 LCD 디스플레이 용 라이브러리를 추가하고 LCD가 연결된 핀을 정의하고 이전과 같이 LoRa 모듈을 초기화합니다.
#포함
루프 함수 내에서 LoRa.parsePacket () 함수를 사용하여 송신기 LoRa 모듈과 크기를 구성하는 데이터 패킷을 수신 하고 " packetSize "변수 에 저장합니다. 패킷이 수신되면 문자로 읽고 LCD에 인쇄합니다. 프로그램은 또한 LoRa 모듈이 키워드 "c"를 전송하고 있는지 확인하고, 그렇다면 나머지 정보를 두 번째 줄에 인쇄합니다.
if (packetSize) {// 패킷이 수신 된 경우 Serial.print ("Received packet '"); lcd.clear (); while (LoRa.available ()) { char incoming = (char) LoRa.read (); if (incoming == 'c') { lcd.setCursor (0, 1); } else { lcd.print (incoming); } }
Arduino LoRa GPS 추적기 작동
하드웨어와 프로그램이 준비되면 각 Arduino 모듈의 코드를 모두 업로드하고 12V 어댑터 또는 USB 케이블을 사용하여 전원을 공급할 수 있습니다. 송신기에 전원이 공급되면 GPS 모듈의 파란색 LED가 깜박이는 것을 볼 수 있습니다. 이는 모듈이 좌표를 얻기 위해 위성 연결을 찾고 있음을 나타냅니다. 그 동안 수신기 모듈의 전원이 켜지고 LCD 화면에 환영 메시지가 표시됩니다. 송신기가 정보를 전송하면 수신기 모듈은 아래 그림과 같이 LCD에 정보를 표시합니다.
이제 송신기 GPS 모듈로 이동할 수 있으며 수신기가 위치를 업데이트하는 것을 볼 수 있습니다. 송신기 모듈이 정확히 어디에 있는지 알기 위해 LCD에 표시된 위도 및 경도 값을 읽고 Google지도 에 입력하여 아래와 같이지도에서 위치를 가져올 수 있습니다.
전체 작업은 비디오에서 찾을 수 있습니다 이 페이지의 하단에 주어진. 튜토리얼을 이해하고 유용한 것을 만드는 것을 즐겼기를 바랍니다. 의심스러운 점이 있으면 아래 댓글 섹션에 남겨 두거나 다른 기술 질문에 대한 포럼을 사용할 수 있습니다.