SPGPSTRACK -LORAWAN GPS 매핑
이 프로그램은 Dragino Lora/GPS Shield를 사용한 Arduino UNO 및 ESP32 TTGO T-Beam (T22_V07로 테스트)을위한 Arduino UNO 용 Lorawan GPS 추적기입니다.
- abp로 구성되어 커버리지가없는 위치에서 장치에 전원을 공급할 수 있습니다.
- 모든 X 미터 위치를 전송합니다
- Cayennelpp와 수동 페이로드 디코더 기능 사이의 페이로드 형식을 선택할 수 있습니다.
- 소프트웨어는 확인 된 업 링크를 지원하고 Arduino는 경고음이 울립니다.
- 하드웨어 직렬 또는 소프트웨어 직렬에 대한 GPS를 읽을 수 있으므로 실제 작동 중에 무슨 일이 일어나고 있는지 보면 개발이 더 쉽습니다.
- 하드웨어 직렬 사용의 경우 디버깅을위한 소프트웨어 직렬을 활성화 할 수 있습니다.
할 일
- 트래커가 움직이지 않을 때도 실행되는 Timed Transmission. 예를 들어 매 시간마다 추적기가 여전히 살아 있는지 확인합니다.
- 저전력 옵션
ESP32 지원 [State : 작업에서 지점 개발을 참조하십시오. SPI 구성은 백트레이스를 생성합니다.] 하드웨어 : ESP32 UNO, wemos로 브랜드 ESP32는 이미 FOT TTGO T-BEAM을 구현했습니다- ESP32에 대한 대체 WiFi 위치
빠른 시작
- TTN 콘솔에서 응용 프로그램을 작성하고 새 장치를 등록하십시오 (ABP)
- Lorawan 장치 정보 및 키를 스케치에 복사하십시오.
- 보드를 쌓고 스케치를 보드에 업로드하십시오. 스케치를 업로드하려면 Dragino가 누르면 재설정 버튼을 유지해야합니다. (해당 버튼을 누르지 않고 업로드 할 수 있다면 Dragino 점퍼 또는 스케치의 직렬 설정에서 문제가 있다는 신호일 수 있습니다).
- TTN 콘솔에서 트래픽이 표시되면 페이로드 디코더 기능을 구성하는 데 진행할 수 있습니다.
- (게이트웨이까지의 거리가 좋다고 확신하지만 TTN 콘솔에서 트래픽이 표시되지 않으면 프레임 카운터와 Dragino 점퍼를 점검하십시오).
- ttnmapper-integration 구성, 첫 번째 시도 시간의 실험 이름을 지정하십시오 (또는 성공적인 Connect Dots의 클라우드로 가정 위치를 공개합니다).
- 이 목록 끝에서 새로운 실험을 찾아야합니다.
ESP32
T22_07 SPI 핀 설정의 경우 LMIC에서 아직 구현되지 않았습니다! -> Matthijskooijman/Arduino-lmic#164
-> 라이브러리에서 직접 SPI 핀을 변경하십시오
주목!!! LMIC와 함께 다른 하드웨어를 사용하는 경우이를 재설정하는 것을 잊지 마십시오.
Hal.CPP 라인 79
static void hal_spi_init () {
//SPI.begin();
SPI . begin ( 5 , 19 , 27 );
}의존성
- Arduino LMIC
- tinygps ++
- Cayennelpp (선택 사항) Arduino Library Manager에서 설치하십시오
구성:
- TXDIST- 정의, [미터] 거리를 정의하고 그 후 위치가 전송됩니다.
- SF -Lorawan 확산 계수 정의 (DR_SF7 -DR_SF12) 7 및 8 매핑에 권장됩니다.
- Single_Channel- 단일 채널 게이트웨이에 Lorawan Channel 0 만 사용하십시오.
- 확인 - 확인 된 업 링크를 활성화하고 PIN D5에 부저를 사용하는 경우에만 활성화하십시오! 그렇지 않으면이 기능은 쓸모가 없습니다
- soft_serial- 하드웨어 직렬을 사용하는 무결성, 그렇지 않으면 소프트웨어 직렬이 사용됩니다. 이 경우 GPS 모듈을 RXPIN 및 TXPIN에 연결합니다.
- 디버그 - 하드웨어 직렬을 사용하는 경우 디버그를 활성화하여 소프트웨어 직렬에서 디버그 출력을 얻을 수 있습니다. 소프트웨어 직렬을 전혀 사용하지 않도록 장애인을 남겨 두십시오
- Cayennelpp- Cayennelpp를 페이로드 형식으로 사용하려면 다음 디코더 페이로드 기능을 사용하십시오.
페이로드 기능
function Decoder ( bytes , port ) {
var decoded = { } ;
// if (port === 1) decoded.led = bytes[0];
decoded . latitude = ( ( bytes [ 0 ] << 16 ) >>> 0 ) + ( ( bytes [ 1 ] << 8 ) >>> 0 ) + bytes [ 2 ] ;
decoded . latitude = ( decoded . latitude / 16777215.0 * 180 ) - 90 ;
decoded . longitude = ( ( bytes [ 3 ] << 16 ) >>> 0 ) + ( ( bytes [ 4 ] << 8 ) >>> 0 ) + bytes [ 5 ] ;
decoded . longitude = ( decoded . longitude / 16777215.0 * 360 ) - 180 ;
var altValue = ( ( bytes [ 6 ] << 8 ) >>> 0 ) + bytes [ 7 ] ;
var sign = bytes [ 6 ] & ( 1 << 7 ) ;
if ( sign )
{
decoded . altitude = 0xFFFF0000 | altValue ;
}
else
{
decoded . altitude = altValue ;
}
decoded . hdop = bytes [ 8 ] / 10.0 ;
return decoded ;
}