이 프로젝트는 RF95 호환 라디오 모듈과 Adafruit Feather M0 LORA 장치 또는 Heltec OLED LORA 32 모듈과 같은 직렬 인터페이스가있는 마이크로 컨트롤러 보드 용 모뎀 펌웨어를 제공합니다. 다양한 ESP32 기반 보드에서 OLED 상태 디스플레이, GPS, BLE 또는 WiFi 지원과 같은 옵션 기능을 활성화 할 수 있습니다.
현재 기본 구성은 868.1 MHz의 장치입니다. 이것은 다음 줄로 src/modem.h 에서 변경할 수 있습니다. #define RF95_FREQ 868.1
다음 보드가 지원됩니다.
라디오 펌웨어를 구축하고 설치하는 데 권장되는 방법은 시스템에 플랫폼 (http://platformio.org/)을 설치하는 것입니다.
대상 플랫폼을 추가하고 빌드 플래그에서 라디오 핀을 구성하려면 platformio.ini 중요한 편집!
pio run -t upload -e heltec_wifi_lora_32_ble 사용하여 장치에 설치
선택적으로 디스플레이 지원을 활성화 : pio run -t upload -e heltec_wifi_lora_32_display_ble
현재 누구나 BLE 서비스에 연결할 수 있습니다. 모두 일반 텍스트입니다. 명령을 보내기 위해 하나의 특성이 게시되며 하나는 알림을 통해 출력을 사용할 수 있도록합니다.
BLE를 통해 전송 된 모든 명령은 n 으로 종료되어야합니다. 기본 작동 모드는 모든 것을 20 바이트 청크로 나누고 있으며, 이는 BLE 사양에 따라 최대 패킷 크기입니다. iPhone 8 & 11에서는 또한 훨씬 더 큰 BLE 패킷 (> 100BYTES)을 보내고받을 수있었습니다. 따라서 AT+BFB=1 을 통해 큰 펑키 블랙 프레임 모드를 활성화 할 수 있습니다. 이 명령은 후행 n 없이도 인식되며 n 선택 사항을 만듭니다. 이것은 LightBlue Explorer 와 같은 일부 BLE 디버깅 소프트웨어가 쓰기 작업 끝에 캐리지 리턴 또는 라인 피드를 보내지 않기 때문에 특히 유용합니다.
Wi -Fi 프로파일 중 하나가 호환 가능한 ESP MCU에 설치되면 장치는 액세스 포인트 역할을 할 수 있습니다. 자격 증명은 platformio.ini 에서 구성되며 기본적으로 WIFI_PSK="rf95modemwifi" WIFI_SSID="rf95modem" 192.168.4.1 설정됩니다.
모뎀과 의사 소통하는 두 가지 방법이 있습니다.
RF95MODEM은 UDP 방송 패킷에 PORT 1666 으로 응답합니다. 출력을 받으려면 간단한 UDP 리스너가 제공됩니다 ( extras/udp_receiver.py ). 모뎀 netcat에 명령을 보내기에 충분합니다. 예를 들어 echo "at+tx=414141" | ncat -u 192.168.4.255 1666
TCP를 사용하여 Port 1666 에서 192.168.4.1 에 연결하고 직렬 연결처럼 사용하십시오 (예 : ncat 192.168.4.1 1666 .
한 번에 하나의 연결 만 지원됩니다!
TTGOS T-Beam과 같은 일부 장치에는 GPS 칩도 포함됩니다. AT+GPS 명령을 통해 모뎀 펌웨어를 통해 쿼리 할 수도 있습니다. 위치에 대한 초기 잠금을 얻는 데는 Atenna, 위치 및 장치의 GPS 칩에 따라 몇 분이 걸릴 수 있습니다. 또한 에너지 소비를 크게 증가시키기 때문에 (~ 50mA) AT+GPS=0 통해 일시적으로 비활성화 할 수 있습니다.
기본 직렬 속도는 115200 ( src/main.cpp 라인 17 )으로 설정됩니다.
명령 목록 :
AT+HELP Print this usage information.
AT+TX=<hexdata> Send binary data.
AT+RX=<0|1> Turn receiving on (1) or off (2).
AT+BFB=<0|1> Turn send Big Fine BLE-Frames on (1) or off (0).
AT+GPS Print GPS information.
AT+GPS=<0|1> Turn GPS power on (1) or off (0).
AT+FREQ=<freq> Changes the frequency.
AT+INFO Output status information.
AT+MODE=<NUM> Set modem config:
0 - medium range (default)
Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on.
1 - fast+short range
Bw = 500 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on.
2 - slow+long range
Bw = 31.25 kHz, Cr = 4/8, Sf = 512chips/symbol, CRC on.
3 - slow+long range
Bw = 125 kHz, Cr = 4/8, Sf = 4096chips/symbol, CRC on.
4 - slow+long range
Bw = 125 kHz, Cr = 4/5, Sf = 2048chips/symbol, CRC on.
현재 구성을 얻으려면 AT+INFO 사용할 수 있습니다
> AT+INFO
+STATUS:
firmware: 0.7.3
features: MCU BLE WIFI GPS
modem config: 0 | medium range
max pkt size: 251
frequency: 868.10
rx listener: 1
BFB: 0
GPS: 1
rx bad: 0
rx good: 0
tx good: 0
+OK
이 출력에서 펌웨어로 컴파일 된 기능과 버전이 무엇인지 확인할 수 있습니다. 또한 현재 모뎀 구성 및 선택된 주파수가 표시됩니다.
주파수를 변경하려면 AT+FREQ 명령을 사용할 수 있습니다.
> AT+FREQ=868.20
+FREQ: 868.20
조심하십시오 : 모든 플로트 번호는 여기에 추가 할 수 있습니다. 값은 Lora Transceiver에게 직접 전달됩니다!
미리 구성된 모뎀 모드를 변경하는 것은 쉽습니다.
> AT+MODE=2
+OK
AT+TX=414141 AAA 있는 패킷을 컨텐츠로 보냅니다. 최대 패킷 크기는 라디오 칩에 따라 다를 수 있습니다.
AT+RX=1 수신 리스너를 활성화하고 기본값이 켜져 있습니다.
들어오는 데이터는 직렬 포트에 자동으로 작성됩니다. +RX 3,414141,-15,8 페이로드가 -15의 RSSI와 SNR 8의 SNR로 "AAA"가있는 프레임.
GPS가 활성화되고 ( AT+GPS=1 ) TTGO T-Beam과 같은 GPS 가능 장치에서 펌웨어가 실행되면 현재 위치와 시간을 쉽게 쿼리 할 수 있습니다. 프로포어 GPS 잠금이 없으면 반환 된 모든 값은 0으로 설정됩니다.
> at+gps=1
+OK
> at+gps
Latitude : 0.00000
Longitude : 0.00000
Altitude : 0.00M
Satellites: 0
Time : 00:00:00
Date : 00.00.2000
Timestamp : 943920000
+OK
RF95Modem의 통합을 용이하게하기 위해 몇 개의 타사 프로그래밍 라이브러리가 있습니다.
이 코드를 Academic Publications에서 사용하는 경우 다음 논문을 인용하십시오.
@INPROCEEDINGS{baumgaertner2018monitoring,
author={L. {Baumgärtner} and A. {Penning} and P. {Lampe} and B. {Richerzhagen} and R. {Steinmetz} and B. {Freisleben}},
booktitle={2018 IEEE Global Humanitarian Technology Conference (GHTC)},
title={Environmental Monitoring Using Low-Cost Hardware and Infrastructureless Wireless Communication},
year={2018},
pages={1-8},
doi={10.1109/GHTC.2018.8601883},
month={Oct},
}