이 저장소에는 장치를 868MHz Lorawan 기술로 변환하는 TFA 30.3161 레인 게이지 (페이지 하단의 링크 참조)의 대체 회로 보드에서 실행되는 펌웨어가 포함되어 있습니다.
측정 데이터는 장치 범위의 Lorawan 게이트웨이로 전송 될 것이며 (도시 지역에서도 1km의 문제없이 1km를 덮을 수 있음) 전력 소비는 실제로 낮으므로 배터리는 수년간 지속됩니다.
Thethingsnetwork V3 및 Chirpstack V4로 테스트 된 JavaScript 페이로드 디코더가 제공됩니다.

조립 된 로라 레인 게이지 보드 외에도 다음 도구가 필요합니다.
주 회로 보드의 프로세서는 Arduino 호환 Atmel Atmega328p입니다. 따라서이 프로젝트는 LORA에 인기있는 McCi Arduino LMIC 라이브러리를 활용합니다. 편집 및 배포를 쉽게하기 위해 플랫폼 툴 체인이 사용됩니다.
Lorawan 구현은 OTAA 및 ABP를 지원합니다. 세션 데이터 (예 : 세션 키, 프레임 카운터) 및 강우 카운터 값은 때때로 SPI Fram 칩에 저장됩니다. 이는 네트워크에 가입 한 직후 및 각 세 번째 데이터 패킷이 전송 된 후 즉시 수행됩니다. Flash 메모리보다 Fram의 장점은 훨씬 더 많은 수의 쓰기주기이지만, 그것들을 조금 제한하는 것은 여전히 좋은 생각입니다.
시동 후 장치는 먼저 절전 모드로 들어갑니다. 정의 된 시간 간격 후 또는 버튼을 누른시기 (분당 한 번 가능)가 깨어납니다. 유효한 세션이 없으면 먼저 가입하려고합니다. 데이터 패킷이 전송되면 마이크로 컨트롤러가 깊은 수면으로 전환하여 전력 소비가 14µA로 떨어집니다. 깊은 수면 모드의 타이밍은 Watchdog 타이머를 사용하여 매 초마다 파워 다운 모드에서 마이크로 컨트롤러를 깨우고 다음 전송까지의 기간을 포함하는 카운터 변수를 줄임으로써 실현됩니다.
티핑 버킷 레인 게이지에 의해 생성 된 펄스는 포트 변경 인터럽트에 의해 캡처됩니다. 이는 마이크로 컨트롤러 주변 장치의 대부분의 구성 요소 (타이머/카운터 포함)가 깊은 수면 모드로 인해 비활성이기 때문에 필요합니다. 인터럽트는 컨트롤러를 짧은 시간 동안 깨우기 위해 레인 카운터를 증가시킵니다. 그 후에는 다음 깊은 수면주기와 함께 계속됩니다.
BMP280 센서가 연결된 경우 온도 및 기압계 압력 데이터도 전송에 포함됩니다.
수면 간격 및 비 카운터는 다운 링크 메시지를 통해 업데이트 할 수 있습니다. 간격에 FPORT 1을 사용하고 카운터 값에는 FPORT 2를 사용하십시오. 둘 다 서명되지 않은 16 비트 정수 (MSB First)로 전송됩니다.
이 펌웨어는 플랫폼 빌드 시스템을 사용하여 모든 도구 체인 및 종속성 관련 제품을 자동으로 처리합니다. Platformio.org의 가이드를 따라 플랫폼 코어 (콘솔 작동) 또는 vs Code & Platformio (IDE)를 설치하십시오. 그런 다음이 저장소를 복제하고 올바른 디렉토리로 변경하십시오.
USBASP를 보드의 6 핀 ISP 커넥터에 연결하기 만하면됩니다. RFM95W가 5V 허용되지 않으므로 프로그래머가 3.3V 전압으로 설정되어 있는지 확인하십시오! 그런 다음 pio run -t bootloader -e m328p_isp (또는 ATMEGA328PB의 경우 -e m328pb_isp )를 실행하여 Bootloader 및 FuseBits를 실행하십시오. 그 후 일련의 연결을 통해 장치를 쉽게 프로그래밍 할 수 있습니다.
SRC/Config.h.example 파일을 src/config.h에 복사하십시오. 그런 다음 사용 _otaa 또는 use_abp를 사용하지 않고 Lorawan 서버에서 새 장치를 작성하고 여기에 설명 된대로 Config.h의 초기 세션 데이터를 작성하십시오. Docs/Payload-decoder.js에서 필요한 페이로드 디코더를 찾을 수 있습니다.
모든 것이 구성되면 USB 직렬 어댑터를 적절한 핀 헤더에 연결하십시오. 그런 다음 pio run -t upload 실행하여 (ATMEGA328PB의 경우 -e m328pb 추가) 펌웨어를 프로그래밍하십시오.
명령 pio device monitor 사용하여 로그 메시지의 직렬 콘솔을 확인할 수 있습니다. 네트워크는 전원 업 직후에 결합됩니다. 측정 값은 15 분마다 전송됩니다.
Lorawan 활성화가 완료되면 세션 데이터는 FRAM에 저장되고 부팅시 복구됩니다. 구성 변경을 감지하고 현재 세션을 무효화하기 위해 Config.h의 해시 값이 포함되어 장치가 다시 활성화되었습니다. 배터리를 삽입하면서 배터리 실의 버튼을 몇 초 동안 누른 상태에서 재 활성화를 강요 할 수도 있습니다.
패킷이 전송되면 회로 보드의 LED가 조명됩니다. OTAA 활성화가 실패하면 깜박일 것입니다.
https://www.maltepoeggel.de/?site=lora-raingauge
이 펌웨어는 MIT 라이센스의 용어에 따라 해제됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.