버전 6.2.0, 데이터 : 2020 년 1 월 29 일
저자 : M. Westenberg ([email protected])
저작권 : M. Westenberg ([email protected])
모든 권리 보유. 이 프로그램과 함께 제공되는 자료는이 배포와 함께 제공되는 MIT 라이센스의 조건에 따라 제공되며 https://opensource.org/licenses/mit-license.php에서 제공됩니다.
이 프로그램은 유용 할 것이지만 보증이 없다는 희망으로 배포됩니다. 상업성 또는 특정 목적에 대한 적합성에 대한 묵시적 보증조차 없습니다.
Maarten Westenberg ([email protected])
우선 :이 파일과 문서를 읽으십시오. 여기에는 대부분의 정보가 포함되어 있어야합니다. 불행히도 나는 모든 이메일을 후속 조치를 취할 시간이 없으며, 핀아웃 등을 포함한 대부분의 정보 가이 페이지에 포함되어 있으므로 읽고 나머지 질문을 게시 할 시간이 있기를 바랍니다.
나는 10 개가 넘는 wemos d1 미니 보드를 운영하고 있으며, 일부는 나 자신을 만들었고, 일부는 Hallard에서 10 개 이상, Comresult에서 3 개, ESP32 보드 4 개가 있습니다. 그들은 모두이 코드에서 문제없이 작동합니다. 그러나 좋은 납땜 조인트와 배선이 모든 차이를 만들어 내기 때문에 리치/오류가 발생하면 설명 할 수 없으면 배선을 두 번째로 살펴보십시오.
이 저장소에는 ESP8266에 대한 단일 채널 Lorawan 게이트웨이의 개념 증명 구현이 포함되어 있습니다. 시작 버전 5.2 또한 TTGO (및 기타)의 ESP32도 지원됩니다. 이 소프트웨어는 다음과 같은 예외와 변경 사항이있는 표준 LORA 게이트웨이를 구현합니다.
이 로라 게이트웨이는 전체 게이트웨이가 아니지만 1 채널/1 주파수 게이트웨이만을 구현합니다. 전체 게이트웨이에서 지원되는 최소 주파수 양은 3이며, 대부분 9 개 이상의 주파수를 지원합니다. 이 소프트웨어는 유럽의 거의 모든 LORA 노드에 존재하는 단일 저비용 RRFM95 칩이 SX1301 칩을 사용하는 훨씬 더 비싼 전체 게이트웨이의 저렴한 대안으로 사용될 수 있음을 증명하기위한 개념 증명으로 시작되었습니다.
이 게이트웨이의 소프트웨어는 프로젝트의 개발 단계 또는 데모 상황에서 종종 사용되므로 소프트웨어는 유연하며 환경 또는 고객 요구 사항에 따라 쉽게 구성 할 수 있습니다. 소프트웨어와 상호 작용하는 두 가지 방법이 있습니다.
단일 채널 게이트웨이의 전체 문서는 things4u.github.io에서 찾을 수 있습니다. 게이트웨이 장 아래 하드웨어 안내서를 참조하십시오.
단일 채널 게이트웨이는 호 퍼프 RFM95W 트랜시버를 사용하여 Wemos D1 Mini를 사용하여 게이트웨이에서 테스트되었습니다. 868 버전의 LORA 및 433 MHz에서 테스트를 수행했습니다. LORA 노드는 다시 테스트했습니다.이 게이트웨이는 다음과 같습니다.
이 코드는 Hallard와 Comresult Boards를 기반으로 8 개 이상의 개별 게이트웨이 보드에서 테스트되었습니다. 나는 여전히 ESP32 핀 아웃 및 기능을 연구하고 있습니다 (곧 예상).
가능한 한 작은 변형 상태로 단일 채널 게이트웨이를 컴파일하고 시작하는 것이 좋습니다. 즉, 2 개의 구성 파일에서 기본 설정을 가능한 한 많이 사용하고 WiFi 설정의 SSID/비밀번호와 Loramodem.h에서 사용하는 ESP8266의 핀 만 변경해야합니다. 이 섹션에서는 웹 페이지를 사용하여 추가로 구성 할 수있는 작업 게이트웨이를 얻는 데 필요한 최소 구성에 대해 설명합니다.
도서관 관리자를 통해 :
이제 게이트웨이가 실행되어야합니다. 웹 페이지를 사용하여 "디버그"를 1로 설정하면 직렬 모니터에서 패키지가 들어 오는 것을 볼 수 있어야합니다.
단일 채널 게이트웨이의 구성을 변경하는 두 가지 방법이 있습니다.
선택의 여지가있는 경우 옵션 2는 훨씬 더 친절하고 유용합니다.
configgway.h 파일에는 사용자 구성 가능한 게이트웨이 설정이 포함되어 있습니다. 모두 #define 문을 통해 정의가 설정되어 있습니다. 일반적으로 #define을 1로 설정하면 기능이 가능하고 0으로 설정하면 비활성화됩니다.
또한 #Define으로 값을 설정하여 일부 설정을 초기화 할 수 있지만 웹 인터페이스에서 런타임에 변경할 수 있습니다. 일부 설정의 경우 #Define으로 기능을 비활성화하면 웹 서버에서 기능이 제거됩니다.
메모리 사용에 관한 참고 : ESP8266에는 프로그램 공간 및 파일 시스템에 사용할 수있는 엄청난 양의 메모리가 있습니다. 그러나 힙 및 변수에 사용할 수있는 메모리는 약 80K 바이트로 제한됩니다 (ESP-32의 경우 더 높음). 사용자는 메모리 사용을 저장하기 위해 사용하지 않은 기능을 끄는 것이 좋습니다. 힙이 18 kbytes 아래로 떨어지면 일부 기능은 예상대로 작동하지 않을 수 있습니다 (극단적 인 경우 프로그램이 충돌 할 수 있음).
Confignode.h 파일은 Wi-Fi 액세스 포인트와 알려진 센서의 구조를 1 채널 게이트웨이로 설정하는 데 사용됩니다. 알려진 Wi -Fi 액세스 포인트 (SSID 및 비밀번호) 설정은 컴파일 시간에 수행해야합니다.
게이트웨이가 게이트웨이로 사용될뿐만 아니라 디버깅 목적으로 사용되는 경우, 중고는 센서 노드의 이름뿐만 아니라 특정 노드의 해독을 지정할 수 있습니다.
사용자는 USB 콘솔이 출력 메시지에 사용되는지 여부를 결정할 수 있습니다. _DUSB를 0으로 설정할 때 직렬로 모든 출력이 비활성화됩니다 (실제로 직렬 명령문은 코드에 포함되지 않음).
#define _dusb 1
게이트웨이에서 지원하는 작동 클래스를 정의하십시오. 클래스 A는 지원되며 배터리 센서의 기본 작동이 포함되어 있습니다.
클래스 B에는 비콘/배터리 작동 모드가 포함됩니다. 게이트웨이는 연결된 센서로 Beacon을 보내서 다운 링크 메시지를 동기화 할 수 있습니다.
클래스 C (연속) 작동 모드에는 배터리 작동하지 않고 항상 네트워크를 듣는 장치에 대한 지원이 포함되어 있습니다. 결과적으로 이러한 장치의 대기 시간은 클래스 A 장치보다 짧습니다. 클래스 C 장치는 배터리 전원에 의존하지 않으며 다음 전송 창까지 수신 창을 확장합니다. 실제로, 전송 만으로도이 트랜스미션이 지속되는 한 장치가 청취를 중단하게 만듭니다. 클래스 C 장치는 클래스 B 작업을 수행 할 수 없습니다.
#define _class "a"
모든 장치는 클래스 A 장치로 시작하여 클래스 B 또는 C로 "업그레이드"하기로 결정할 수 있습니다. 또한 게이트웨이는 클래스 A의 슈퍼 세트 인 클래스 B를 지원하거나 지원하지 않을 수도 있습니다. 참고 : 클래스 A 만 지원됩니다.
박스 외부의 두 가지 핀 아웃 구성 인 Hallard와 Compresult를 지원합니다. 이 두 가지 중 하나를 사용하는 경우 매개 변수를 올바른 값으로 설정하십시오. PIN 정의가 다른 경우 Loramodem.h 파일을 업데이트하여 이러한 설정을 반영하십시오. 1 : Hallard 2 : Comresult Pin out 3 : ESP32 PIN OUT 4 : 다른, Loramodem에서 자신을 정의하십시오.
#define _pin_out 1
다음 매개 변수 Shoudl은 정상적인 상황에서 0으로 설정됩니다. 시스템은 Spiffs 파일 시스템의 FOCE 서식을 허용합니다.
#define spiff_format 0
_spreading 계수를 원하는 SF7, SF8 -SF12 값으로 설정하십시오. 이 값은 _cad에 사용 된 값과 밀접한 관련이 있습니다. _CAD가 활성화되면 _Spreading 값은 모든 SREADING 요소가 활성화되어 있으므로 게이트웨이에서 사용되지 않습니다.
#define _spreading sf9
사용 된 기본 주파수는 868.1 MHz이며 Loramodem.h 파일에서 변경할 수 있습니다. 사용자는이 ETTING을 변경하지 않고 기본 868.1 MHz 주파수 만 사용하지 말 것을 권장합니다.
채널 활동 감지 (CAD)는 들어오는 메시지 (활동)를 감지하기위한 LORA RFM95 칩의 함수입니다. 이러한 들어오는 메시지는 잘 알려진 확산 요소 SF7-SF12에 도달 할 수 있습니다. CAD를 활성화함으로써 게이트웨이는 스프레드 요인의 메시지를받을 수 있습니다.
실제로 수신기에 다른 신호가 이미 채널을 사용하고 있음을 알리기 위해 정상 작동에 사용됩니다.
CAD 기능은 (작은) 가격으로 제공됩니다. CAD 함수가 칩의 RSSI 레지스터 설정을 사용하여 신호를 받았는지 여부를 결정하기 때문에 칩은 매우 약한 신호를받을 수 없습니다. 결과적으로, 매우 약한 신호가 수신되지 않으므로 게이트웨이의 범위가 CAD 모드에서 줄어 듭니다.
#define _cad 1
버전 4.0.6에서와 같이 게이트웨이는 A_OTA 설정이 켜져있는 경우 공기 업데이트를 허용합니다. 오버 에어 소프트웨어는 4.0.6 버전을 USB를 통해 게이트웨이로 설정 한 후에는 소프트웨어가 사용하기 위해 (기본값) 사용이 필요합니다.
첫 번째 릴리스는 IDE를 사용하여 OTA 함수 만 지원합니다. 실제로 IDE는 게이트웨이와 동일한 네트워크 세그먼트에 있어야합니다.
참고 : 네트워크에서 Bonjour 소프트웨어 (Apple)를 사용해야합니다. 대부분의 플랫폼에서 버전을 사용할 수 있습니다 (예 : Windows 용 iTunes와 함께 제공됨). Bonjour 소프트웨어를 통해 게이트웨이는 MDNS를 사용하여 OTA가 설정 한 게이트웨이 ID를 해결할 수 있으며, 이후 다운로드 포트가 IDE에 표시됩니다.
TODO : OTA 소프트웨어는 아직 Wifimanager 소프트웨어와 함께 테스트되지 않았습니다.
#define a_ota 1
이 설정은 웹 서버를 활성화합니다. Webserver 자체는 많은 메모리를 사용하지만 Gatewayat 런타임을 구성하고 동작을 검사하는 데 큰 도움이됩니다. 또한 수신 된 마지막 메시지의 통계를 제공합니다. a_refresh 매개 변수는 웹 서버가 x 초마다 갱신 해야하는지 여부를 정의합니다.
#define a_server 1 //이 정의가 설정된 경우에만 로컬 웹 서버를 정의합니다.
#define a_refresh 1 // 웹 서버가 예/아니오를 새로 고칠 수 있습니까? (예입니다) #define a_serverport 80 // 로컬 웹 서버 포트
#define a_maxbufsize 192 // 128보다 크지 만 작동하기에 충분히 작아야합니다.
A_Refresh 매개 변수는 WebBrowser에서 새로 고침 예/아니오 설정을 설정할 수 있는지 여부를 정의합니다. Webbrowser의 설정은 일반적으로 "NO"를 기본값으로 켜지지 만 WebBrowser에서 해당 설정을 활성화하기 위해 "1"의 정의를 남겨 둘 수 있습니다.
게이트웨이가 사전 설정된 스프레딩 팩터와 기본 주파수에서 다운 링크 메시지를 보내려면 _Strict_1ch 매개 변수를 1으로 설정해야합니다. 1로 설정되지 않으면 Gateway는 백엔드 서버에서 설정 한 주파수 및 스프레딩 계수로 다운 링크 요청에 응답합니다. 그리고 현재 TTN은 RX2 시간 슬롯 및 주파수 869.525MHz 및 SF12의 다운 링크 메시지에 응답합니다 (RX2 시간 슬롯을 보낼 때 LORA 표준에 따라).
#define _strict_1ch 0
이 매개 변수의 기본 설정을 변경하지 않는 것이 좋습니다.
OLED를 설정하면 I2C를 통해 OLED 패널로 작동하도록 시스템을 구성합니다. 일부 패널은 SPI와 I2C가 모두 작동합니다. 여기서 I2C는 Solwer입니다. 그러나 SPI는 RFM95 트랜시버 통신에 사용 되므로이 소프트웨어에서는 작동하지 않기 때문에이 중 하나를 사용하여 스포팅됩니다. 대신 I2C에서 작동하는 OLED 솔루션을 선택하십시오.
#정의 OLED 1
다음 값은 OLED에 대해 정의됩니다.
이것이 정의되면 (== 1) 모든 메시지의 통계를 수집하여 Spiffs 파일 시스템에 출력합니다. 통계에 대한 고정 된 수의 레코드가있는 여러 파일을 사용해야합니다. REC 번호는 각 통계 파일에 허용되는 레코드 수를 알려줍니다. REC 번호가 허용 된 레코드 수보다 높으면 새 파일을 열었습니다. 파일 수가 수의 통계 파일을 초과하면 OldEest 파일을 삭제하고 새 파일을 엽니 다. GUI 화면 상단에서 "로그"버튼을 선택할 때 모든 로그 파일은 USB 직렬 장치에 대한 것입니다. 이런 식으로 GUI 화면이나 직렬 출력을 장착하는 것보다 훨씬 더 많은 레코드를 검사 할 수 있습니다.
#define stat_log 1
I2C SDA/SCL 핀 설정은 OLED의 #define 바로 다음에 configgway.h 파일에서 수행됩니다. 표준 ESP8266은 I2C 버스 SCL 및 SDA 라인에 핀 D1 및 D2를 사용하지만 사용자가 변경할 수 있습니다. 일반적으로 THSI는 필요하지 않습니다. OLED 기능은 _loramodem.ino 파일에 있으며 다른 필드를 표시하도록 조정할 수 있습니다. 함수는 메시지를 수신 할 때 (!) 호출되므로,이 기능은 예상보다 더 많은 시간이 필요할 수 있으므로 ESP의 불안정성에 추가됩니다. 그렇다면 OLED 함수를 제거하거나 사용자 시간 (인터럽트가 아님)에 표시되는 기본 루프 ()의 함수를 빌드하십시오.
게이트웨이는 동시에 2 개의 서버에 연결할 수 있습니다 (대부분의 LORA 게이트웨이는 BTW를 수행하는 것처럼). TTN (Things Network)을 사용하는 경우 다음을 설정하는 것보다 적어도 하나의 표준 LORA 라우터에 연결해야합니다.
#define _ttnserver "router.eu.thethings.network"
#define _ttnport 1700
자신의 서버를 설정하는 경우 자신의 라우터 URL과 자신의 포트를 사용하여 다음과 같이 지정할 수 있습니다.
#define _thingserver "Your_server.com"// Lora UDP.JS 서버 프로그램의 서버 URL
#define _thingport 1701 // UDP 서버는이 포트를 들어야합니다.
게이트웨이의 ID 매개 변수를 설정하십시오.
#define _description "esp-gateway"
#define _email "[email protected]"
#define _platform "esp8266"
#define _lat 52.00
#define _lon 5.00
#define _alt 0
게이트웨이를 노드로 사용할 수 있습니다. 이런 식으로 로컬/내부 센서 값이보고됩니다. 센서 메시지를 만드는 데 EAS 및 CMAC 기능이 포함되므로 CPU 및 메모리 집약적 인 기능입니다.
#GatewayNode 0을 정의합니다
Confignode.h 구성 파일에서 게이트웨이 노드의 주소 및 기타 LORA 정보를 설정할 수 있습니다.
Wi -Fi에서 게이트웨이를 구성하는 가장 쉬운 방법은 Wifimanager 함수를 사용하는 것입니다. 이 기능은 상자에서 작동합니다. Wifimanager는 게이트웨이를 액세스 포인트 모드로 배치하여 Wi -Fi 액세스 포인트로 연결할 수 있습니다.
#define _wifimanager 0
Wi -Fi 관리자가 활성화 된 경우 게이트웨이가 액세스 포인트 모드와 비밀번호에있는 경우 액세스 포인트 이름을 정의하십시오.
#define ap_name "esp8266-gway-things4u"
#define ap_passwd "ttnautopw"
게이트웨이에서 사용하는 표준 액세스 포인트 이름은 "ESP8266 Gway"이며 암호는 "ttnautopw"입니다. 휴대폰이나 컴퓨터로 액세스 포인트에 바인딩 한 후 브라우저의 htp : //192.168.4.1로 이동하여 게이트웨이에 연결하려는 Wi -Fi 네트워크에 어떤 문서에 알리고 암호를 지정하십시오.
그런 다음 게이트웨이는 주어진 네트워크에 재설정하고 바인딩합니다. 모든 것이 잘 진행되면 이제 설정되고 ESP8266은 연결 해야하는 네트워크를 기억합니다. 참고 : 게이트웨이가 묶인 액세스 포인트가있는 한 게이트웨이는 알려진 액세스 포인트의 WPA 목록과 더 이상 작동하지 않습니다. 필요한 경우 웹 서버의 현재 액세스 포인트를 삭제하고 전력 순환 게이트웨이를 삭제하여 WPA 배열을 다시 읽도록 강제로 강제로 할 수 있습니다.
#if GatewayNode == 1
#define _devaddr {0x26, 0x01, 0x15, 0x3d}}
#define _appskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#define _nwkskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#define _sensor_interval 300
#endif
내장 된 웹 서버를 사용하여 상태를 표시하고 디버깅 정보를 표시 할 수 있습니다. 또한 Webserver를 통해 사용자는 디버그 레벨 또는 CAD 기능을 켜고 끄는 것과 같은 런타임에 특정 설정을 변경할 수 있습니다. 다음 URL로 액세스 할 수 있습니다. http : // : 80 라우터가 시작시 ESP8266의 IP는 어디에 있습니까? 아마도 192.168.1.xx와 같은 것일 수 있습니다. 웹 서버에는 다양한 구성 설정과 매개 변수를 설정하는 기능을 제공합니다.
웹 서버를 사용하여 다음 매개 변수를 설정할 수 있습니다.
이 소프트웨어는 여러 소프트웨어에 의존하며 ESP8266의 Arduino IDE가 가장 중요합니다. 다른 여러 라이브러리는이 프로그램에서도 사용되므로 IDE와 함께 해당 라이브러리를 설치하십시오.
편의를 위해 라이브러리는 라이브러리 디렉토리 의이 Github 저장소에서도 발견됩니다. ESP 1 채널 게이트웨이의 일부가 아니며 자체 라이센스가있을 수 있습니다. 그러나 이러한 라이브러리는 단일 채널 게이트웨이 소프트웨어의 일부가 아닙니다.
구축 및 연결 지침은 하드웨어 섹션에서 http://things4u.github.io를 참조하십시오.
다음 종속성은 단일 채널 게이트웨이에 유효합니다.
다음은 여전히 내 위시리스트에있는 단일 채널 게이트웨이에 있습니다.
이 저장소의 게이트웨이 스케치의 소스 파일은 MIT 라이센스로 제공됩니다. 이 저장소에 포함 된 라이브러리는 편의를 위해서만 포함되며 모두 자체 라이센스가 있으며 ESP 1CH 게이트웨이 코드의 일부가 아닙니다.