이 프로젝트는 Heherf Lora RFM95W/RFM96W 라디오를 사용하는 간단한 Atmel Atmega328P 기반 노드로 구성됩니다. 배터리 구동 노드는 연결된 하드웨어에 따라 온도, 습도 및 기압 압력을 측정합니다. 외부 전원 펄스 유형 노드는 다른 유틸리티 미터의 펄스를 계산하고 Kamstrup 다중 에너지 미터에 연결합니다. Gateway는 센서 노드에서 이러한 측정을 수신하고 수집하며 2 선 RS-485 또는 공통 3.3 볼트 UART를 통해 Modbus RTU 프로토콜을 사용하여 직렬 통신을 통해 액세스 할 수 있습니다. 이를 통해 Domoticz, Home Assistant 및 OpenHab과 같은 많은 DIY 홈 자동화 시스템과 인터페이스 할 수 있습니다. 센서는 사용자 정의 회로 보드를 사용하지만 Arduino IDE로 프로그래밍됩니다.
이 프로젝트는 완전한 패키지입니다. 하드웨어 설계와 소프트웨어가 모두 포함됩니다. 회로도 에는 PCB 설계가 포함되어있어 공장에서 PCB를 제조하거나 주문하고 노드를 납땜 할 수 있습니다. 소프트웨어는 그대로 업로드 할 준비가되었습니다. 제공된 하드웨어 설계를 사용하지 않으려면 대신 프로토 보드가있는 Arduino Pro Minis와 같이 사용할 수 있어야합니다. 핀 정의를 찾으려면 .inos와 회로도를 탐색하십시오. Pro Minis 또는 기타 "전체 크기"Arduinos를 사용하는 경우 배터리 사용을 고려해야합니다. 또한 사용 된 구성 요소는 주로 3.3 볼트 허용 범위에만 허용되므로 5V UNO를 사용하려면 레벨 이동이 필요합니다.
먼저 전체 readme를 읽는 것이 좋습니다.
센서에는 몇 가지 외부 구성 요소가 작동해야합니다. 라이브러리는 무선 통신 및 연결된 센서에 대한 기능을 제공하는 반면 하드웨어 패키지 핸들은 센서에서 사용하는 사용자 정의 보드와 함께 작동하는 데 필요한 퓨즈를 제공합니다. 라디오 헤드 및 암호화 라이브러리에 관한 지침을 신중하게 따르십시오. 이들은 몇 가지 기본 변경이 필요하므로.
임베디드 마이크로 프로세서 용 Radiohead Packet Radio Library는 RFM95W/RFM96W 라디오 (및 기타 많은 것)를 지원합니다. AirSpayce.com에서 다운로드하십시오. Arduino IDE 라이브러리 폴더로 라이브러리를 추출한 후 한 번의 조정을 수행해야합니다. Radiohead/RH_RF95.H 변경 라인의 시작 부분
#define RH_RF95_FIFO_SIZE 255
에게
#define RH_RF95_FIFO_SIZE 64
이 변경 없이는 커뮤니케이션이 작동하지 않습니다. 또한이 조정없이 SRAM이 부족할 위험이 있습니다.
Arduino 암호화 라이브러리 에는 암호화 지원이 포함되어 있습니다. 트래픽을 암호화 할 계획이 없다면이 라이브러리가 필요하지 않습니다. github.com에서 다운로드하십시오. 라이브러리 의 zip 및 추출 내용을 Arduino IDE 라이브러리 폴더로 다운로드해야합니다. 또한 암호화를 활성화하려면 Radiohead/Radiohead.h 의 끝에서 다음 줄을 타협하는 것을 잊지 마십시오.
//#define RH_ENABLE_ENCRYPTION_MODULE
또한 Watchdog 타이머가 배터리 구동 노드에서 이미 사용되기 때문에 Crypto/Rng.cpp 의 시작 부분에서 다음 줄을 댓글을 달아 Watchdog 엔트로피 수확을 비활성화해야합니다.
#define RNG_WATCHDOG 1 // Harvest entropy from watchdog jitter.
당신 이이 모든 것에 압도되면, 당신은 단지 암호화를 전혀 활성화하지 않기를 원할 수 있습니다. 결국, 센서는 어쨌든 정확히 높은 보안 시스템이 아닙니다.
실리콘 실험실 SI7021 온도 및 습도 센서와 함께 작동하려면 LowPowerLab SI7021 라이브러리가 필요합니다. github.com에서 다운로드하십시오.
Sparkfun BME280 Arduino 라이브러리 인터페이스 Bosch Sensortech BME280 온도, 습도 및 기압 압력 센서. github.com의 문서. Arduino IDE 라이브러리 관리자를 사용하여 설치하십시오.
센서는 일반 Arduino 보드와 약간 다른 하드웨어 설계를 사용합니다. 예를 들어, 배터리 작동 노드는 내부 1MHz 시계에서 실행되며 게이트웨이는 외부 8MHz 크리스탈을 사용합니다. 또한 부트 로더가 부족합니다 (사용할 수는 있지만 하드웨어는 어쨌든 부트 로더를 사용하여 새 펌웨어를 태울 수있는 직렬 핀을 제공하지 않습니다). 대신 ISP 헤더를 통해 ICSP를 사용하여 프로그램이 플래시됩니다.
필요한 퓨즈를 수동으로 설정할 수 있지만 기성품 하드웨어 패키지 만 사용하는 것이 훨씬 쉽습니다. McUdude는이 작업을 수행하는 멋진 핵심을 가지고 있습니다. github.com에서 McUdude의 미니 코어를 다운로드하십시오.
Gateway는 노드에서 데이터를 수집하고 Modbus 네트워크로의 릴레이 역할을합니다. Maxim Integrated Max3485 RS-485 트랜시버 게이트웨이를 사용함으로써 기존 RS-485 MODBUS RTU 네트워크에 노예로 연결할 수 있습니다. 트랜시버를 생략하면 직접 TTL 직렬 포트가 제공됩니다. 예를 들어 다른 Arduino 보드 FTDI 칩으로 액세스하거나 Raspberry Pi에 직접 연결할 수 있습니다. 물리적 연결에 관계없이 Gateway는 Modbus 프로토콜을 사용하여 액세스합니다. 게이트웨이는 조절 된 3.3 볼트 또는 (규제되지 않은) 5-12 볼트 DC 전원 공급 장치가 필요합니다. 또한 게이트웨이에는 3 개의 펄스 입력이 있습니다 (펄스 값은 주기적으로 EEPROM에 저장되고 전원 공급에 복원됨) 중 하나는 NTC 서머 스터 입력으로 사용할 수 있습니다. 이러한 입력은 Modbus를 통해도 액세스 할 수 있습니다.
Modbus 프로토콜의 한 가지 단점은 슬레이브가 새 메시지를 마스터에게 알릴 수 없다는 것입니다. 이를 위해 펄스 2는 외부 인터럽트로 작동하도록 할 수 있습니다. 이 핀은 에뮬레이션 된 오픈 컬렉터 출력처럼 작동합니다 (그러나 외부 상태 전압은 3.3 볼트로 제한됩니다). 게이트웨이 설정에 따라 중요한 노드 또는 노드에서 메시지가 수신되면 핀이 접지로 끌어옵니다. Modbus Read가 완료된 후이 핀은 고 임피던스 상태로 다시 설정됩니다.

경고 : UART 직렬 포트는 3.3 볼트이므로 5 볼트 시스템에 연결하지 마십시오.
왜 modbus? Modbus는 사용하기 쉽고 이러한 종류의 데이터 전송을위한 프로토콜을 통합합니다. 그것은 오래되고 기능이 다소 제한적이지만 여전히 필요한 모든 것을 제공하며 산업에서 널리 사용됩니다. 액세스 할 수있는 라이브러리는 모든 플랫폼에 대해 거의 또는 적은 플랫폼에 대해 존재합니다. 또한 대부분의 DIY 홈 자동화 시스템 (Home Assistant, Domoticz 및 Openhab의 이름)은 MODBUS 지원이 있습니다.
기능 코드 3 (레지스터 홀딩 레지스터 읽기) 또는 4 (입력 레지스터 읽기)를 사용하여 레지스터에 액세스 할 수 있습니다. 둘 다 동일한 레지스터 값을 반환합니다. 정의되지 않은 레지스터는 읽을 수 없습니다. 예를 들어, 레지스터 21-99 또는 108-199를 읽으려고하면 불법 데이터 주소 예외가 반환됩니다.
| 주소 | 숫자 | 이름 | 유형 / 단위 | 메모 |
|---|---|---|---|---|
| 0 | 30001 | modbus 오류 (CRC 실패 또는 손상) | 계수기 | |
| 1 | 30002 | Modbus는 프레임을 넘어 섰습니다 | 계수기 | |
| 2 | 30003 | Modbus 불법 기능 읽기 | 계수기 | |
| 3 | 30004 | Modbus 불법 주소 읽기 | 계수기 | |
| 4 | 30005 | Modbus 프레임이 수신되었습니다 | 계수기 | |
| 5 | 30006 | Modbus 프레임이 전송되었습니다 | 계수기 | |
| 6 | 30007 | 지난 1 시간 동안 노드 | 계수기 | |
| 7 | 30008 | 지난 12 시간 동안 노드 | 계수기 | |
| 8 | 30009 | 지난 24 시간 동안 노드 | 계수기 | |
| 9 | 30010 | 배터리에서 최소한 하나의 노드가 낮습니다 | 부울 | |
| 10 | 30011 | 메모리에서 게이트웨이 | 부울 | |
| 11 | 30012 | 게이트웨이 가동 시간 | 시간 | |
| 12 | 30013 | 펌웨어 버전 | 8 MSB = 메이저, 8 LSB = 마이너 | |
| 13 | 30014 | 상태 | 비트는 아래를 참조하십시오. | |
| 14 | 30015 | 펄스 1 | 계수기 | 32 비트 |
| 16 | 30017 | 펄스 2 | 계수기 | 32 비트 |
| 18 | 30019 | 펄스 3 / 온도 | 카운터 / ° C | 32 비트 |
| 20 | 30021 | 마지막 수신 노드 ID |
상태 레지스터 비트 (LSB에서 MSB로) :
첫 번째 주소는 Node ID * 100 입니다. 예를 들어,이 표는 노드 ID 1에 대한 주소를 보여줍니다. 마찬가지로, 주소 200에서 노드 ID 2에 대한 측정 값 등.
| 주소 | 숫자 | 이름 | 유형 / 단위 | 메모 |
|---|---|---|---|---|
| 100 | 30101 | 마지막 접수 | 분 | 노드는 언제 마지막으로 본 것입니다. |
| 101 | 30102 | 배터리 전압 | MV | 현재 배터리 전압. |
| 102 | 30103 | 전력을 전송하십시오 | 비율 | 상대 전송 전력. |
| 103 | 30104 | 간격을 전송합니다 | 분 | 노드가 적어도 얼마나 자주 전송되는지. |
| 104 | 30105 | 헤더 | 8 LSB, 디버그 데이터 만. 비트는 아래를 참조하십시오. | |
| 105 | 30106 | 온도 | ° C | × 10 |
| 106 | 30107 | 상대 습도 | RH% | × 10. 노드에 SI7021 또는 BME280이있는 경우에만. |
| 107 | 30108 | 기압 / 온도 | HPA / ° C | × 10. 압력 노드가 bme280 인 경우, 노드가 Si7021과 NTC를 모두 갖는 경우 온도. |
헤더 레지스터 비트 (LSB에서 MSB로) :
첫 번째 주소는 Node ID * 100 입니다. 예를 들어,이 표는 노드 ID 2의 주소를 보여줍니다. 마찬가지로, 노드 ID 3에 대한 측정 값은 주소 300에서 시작합니다.
| 주소 | 숫자 | 이름 | 유형 / 단위 | 메모 |
|---|---|---|---|---|
| 200 | 30201 | 마지막 접수 | 분 | 노드는 언제 마지막으로 본 것입니다. |
| 201 | 30202 | 전력을 전송하십시오 | 비율 | 상대 전송 전력. |
| 202 | 30203 | 간격을 전송합니다 | 분 | 노드가 적어도 얼마나 자주 전송되는지. |
| 203 | 30204 | 헤더 | 8 LSB, 디버그 데이터 만. 비트는 아래를 참조하십시오. | |
| 204 | 30205 | 펄스 1 | 계수기 | 32 비트 |
| 206 | 30207 | 펄스 2 | 계수기 | 32 비트 |
| 208 | 30209 | 펄스 3 / 온도 | 카운터 / ° C | 32 비트 |
헤더 레지스터 비트 (LSB에서 MSB로) :
첫 번째 주소는 Node ID * 100 입니다. 예를 들어,이 표는 노드 ID 3의 주소를 보여줍니다. 마찬가지로, 노드 ID 4에 대한 측정 값은 주소 400에서 시작합니다.
| 주소 | 숫자 | 이름 | 유형 / 단위 | 메모 |
|---|---|---|---|---|
| 300 | 30301 | 마지막 접수 | 분 | 노드는 언제 마지막으로 본 것입니다. |
| 301 | 30302 | 전력을 전송하십시오 | 비율 | 상대 전송 전력. |
| 302 | 30303 | 간격을 전송합니다 | 분 | 노드가 적어도 얼마나 자주 전송되는지. |
| 303 | 30304 | 헤더 | 8 LSB, 디버그 데이터 만. 비트는 아래를 참조하십시오. | |
| 304 | 30305 | 펄스 1 | 계수기 | 32 비트 |
| 306 | 30307 | 펄스 2 | 계수기 | 32 비트 |
| 308 | 30309 | 펄스 3 / 온도 | 카운터 / ° C | 32 비트 |
| 310 | 30311 | 열 에너지 | KWH | 32 비트 |
| 312 | 30313 | 실제 흐름 | l/h | 32 비트 |
| 314 | 30315 | 용량 | m³ | × 100. 32 비트 |
| 316 | 30317 | 실제 힘 | KW | × 10. 32 비트 |
| 318 | 30319 | 실제 t₁ | ° C | × 100. 32 비트 |
| 320 | 30321 | 실제 t₂ | ° C | × 100. 32 비트 |
헤더 레지스터 비트 (LSB에서 MSB로) :
센서에는 배터리와 펄스의 두 가지 주요 노드가 포함됩니다. 배터리 구동 저전력 노드는 온도, 습도 및 압력을 모니터링합니다. 펄스 유형 노드는 외부 전원으로 전원을 공급하고 유틸리티 미터의 펄스를 계산합니다. 펄스 노드는 또한 온도 모니터링 및 RS-485 MODBUS RTU를 위해 하나의 NTC 서머 스터 연결을 지원합니다. 후자는 노드를 Kamstrup Multical 602 에너지 미터에 연결할 수있게합니다.
배터리 구동 센서는 온도, 습도 및 기압 압력을 모니터링하기위한 간단한 노드를 제공합니다. 이 노드는 2 개의 일반 1.5 볼트 AA 알칼리 배터리에서 작동합니다. 더 긴 수명이 필요하거나 노드가 차가운 환경에 배치되면 AA 크기의 리튬 배터리를 더 비싼 1.5 볼트 AA 크기의 리튬 배터리도 사용할 수 있습니다.
경고 : 하드웨어는 전원을 절약하고 부품의 수를 최소화하기 위해 역 전압 보호를 제공하지 않으므로 배터리를 삽입 할 때 극성을 관찰하십시오. 그렇지 않으면 노드를 파괴합니다 .
노드는 대부분의 시간을 자고, 측정을하고 값을 게이트웨이로 보낸다. 주파수는 코드 파일 시작시 설정을 통해 제어 할 수 있습니다. 임계 값 모드에서 노드는 주기적으로 일어나서 측정을합니다. 값이 이전에 전송 된 것과 충분히 다른 경우 메시지가 전송됩니다. 그렇지 않은 경우 노드는 잠을 자게됩니다. 그러나 적어도 임계 값에 관계없이 새 메시지가 얼마나 자주 전송되는지 제어하는 특정 힘 시간이 있습니다. 노드가 임계 값 모드에서 작동하지 않으면 깨어날 때마다 메시지를 보냅니다.

노드는 실리콘 랩 SI7021, Bosch Sensortech BME280 및 일반적인 NTC 서머 스터의 세 가지 유형의 센서를 지원합니다. 첫 번째는 온도와 습도가 있고, 두 번째는 기압을 추가하고 후자는 온도 만 제공합니다. 노드는 한 종류의 센서 만 또는 특별한 경우 SI7021 및 NTC 모두 동시에 가질 수 있습니다. PCB는 모두에게 발자국을 제공하며 정확한 유형은 런타임에 정의됩니다. 즉, 모든 노드는 동일한 소프트웨어로 플래시되고 부팅시 어떤 종류의 센서 구성이 연결되어 있는지 확인합니다.
SI7021 센서는 eBay의 브레이크 아웃 보드 및 비슷한 장소로 몇 달러를 구입할 수 있습니다. 센서를 구입할 때는 전압 조절기와 I2C 레벨 이동이 포함되지 않은 센서를 얻으십시오. 배터리 구동 노드는 3.3V에서 작동하므로 SI7021은 직접 공급할 수 있습니다. (불필요한) 규제 기관이 없으면 배터리 전원이 절약됩니다. 예를 들어, 이것은 권장되는 반면, 이것은 그렇지 않습니다.
BME280 센서는 eBay, Aliexpress 및 브레이크 아웃 보드와 유사하게 제공됩니다. 그들은 조금 더 비쌉니다. 이들은 온보드 레귤레이터 없이는 사용할 수없는 것처럼 보이므로 전력 소비를 낮추려면 유일한 옵션은 레귤레이터를 제거하는 것입니다. 여기에 표시된 제거 된 조절기의 예 이미지. 예를 들어이 센서는 성공적으로 사용되었습니다.
참고 : 중국 판매자는 때때로 BME280을 이전 및 덜 특징 BMP280과 혼합합니다. 센서를 구입할 때주의하십시오. 예를 들어 여기 및 여기에 대한 정보.
NTC 서머 스터는 다른 센서와 같은 장소에서 구입할 수 있습니다. 서미스터를 구입할 때 공칭 저항 , 공칭 온도 및 베타 계수의 세 가지 필요한 값을 얻으십시오. 예를 들어,이 서머 스터는 성공적으로 사용되었으며 기본값과 함께 작동합니다.
펄스 타입 노드는 물, 전기, 가스 또는 기타 종류의 미터에서 펄스 출력으로 펄스를 측정하기위한 것입니다. 노드에는 3 개의 펄스 입력이 있으며 그 중 하나는 펄스 입력 대신 NTC 서머 스터 입력으로 사용할 수 있습니다. 펄스 입력은 마이크로 컨트롤러 또는 옵션 외부 저항으로 내부적으로 높이 끌어 당겨지고 연결된 미터는지면으로 낮게 당깁니다. 펄스 값은 주기적으로 eeprom에 저장되고 전원 공급에 복원됩니다. 펄스 노드는 조절 된 3.3 볼트 또는 (규제되지 않은) 5-12 볼트 DC 전원 공급 장치가 필요합니다. 그들은 게이트웨이와 동일한 PCB를 사용합니다.
이 노드는 Kamstrup Multical 602 에너지 미터를 추가로 지원하는 일반 펄스 노드입니다. 노드는 RS-485에 의해 다중 602 에너지 미터에 연결되며 주기적으로 미터의 특정 값을 읽습니다. 이 값은 위의 Modbus Register 리스팅을 참조하십시오.
참고 : 다중 602는 다중 603으로 중단되고 대체되는 것으로 보입니다. 데이터 시트에 따르면, 다중 603은 이전 602와 동일한 MODBUS 레지스터를 지원합니다. 따라서 노드는 새로운 603과 작동해야하지만 테스트되지 않았습니다.
RIPIP : 이 노드를 예로 사용하면 다른 종류의 Modbus RTU 가능 장치를 펄스 유형 노드에 연결하고 그에 따라 코드를 조정하는 것이 매우 쉽습니다. 이렇게하면 센서 노드를 통해 다른 Modbus 미터 또는 장치를 읽을 수 있습니다.
센서는 Heherf RFM95W 및 RFM96W LORA 라디오를 사용합니다. RFM95W는 868/915 MHz 및 433 MHz의 경우 RFM96W입니다. 이것들은 매우 좋은 범위를 가진 저렴한 저전력 라디오입니다. 배터리 노드는 와이어 또는 헬리컬 안테나를 사용하는 반면 게이트웨이 및 펄스 노드에는 안테나를 더 잘 수행하기위한 SMA 커넥터가 있습니다. 주파수 범위, 대역폭, 전송 전원 및 기타 무선 관련 설정을 선택할 때 로컬 규정을 고려하십시오. 노드는 전송 전력을 최저 수준으로 자동 조정합니다.
달성 가능한 범위는 수많은 것들에 크게 의존하지만 개인적으로 나는 강화 콘크리트 벽과 금속 외관을 통해 1km에 걸쳐 쉽게 달성했습니다. 이것은 쌍극자 SMA 안테나가있는 게이트웨이와 Helical 안테나가있는 배터리 노드 사이에있었습니다. 동일한 설정이 더 건축 된 환경의 건물을 통해 200 미터 이상에 도달했습니다. 그러나 일반적으로 무선 통신과 마찬가지로 결과는 다양합니다.
참고 : PCB에는 구형 호르프 RFM69HW 라디오에 대한 발자국도 있습니다. 작동해야하지만 테스트되지 않았으며 현재 소프트웨어에 대한 지원이 없습니다. 새 지점을 만들어 구현하십시오.
다음은 재료 청구서 테이블입니다. 모든 구성 요소가 필요한 것은 아닙니다.이 부분에 대한 아래의 메모를 참조하십시오. SMD 구성 요소의 대다수는 더 쉬운 손 납땜을 위해 1206 패키지입니다. 게이트웨이 및 펄스 노드는 동일한 PCB를 공유합니다.
몇 가지 메모 :
Seeed Studio에서 PCB를 성공적으로 주문했습니다. 10 개의 게이트웨이/펄스 노드에 대한 보드와 10 달러의 배터리 노드를 $ 9.80 + 우송료로 얻을 수 있습니다. 물론 모든 프로토 타입 PCB 공장이 작동합니다. PCB는 엄격한 간격이 있거나 엄격한 공차가 필요하지 않도록 설계되었습니다. 게이트웨이 및 펄스 노드의 경우 1.6mm 두께를 선택하십시오 (인클로저는 PCB를 더 잘 유지합니다). 배터리 노드를 사용하면 보드가 더 얇아 질 수 있습니다 (예 : 1.2mm는 잘 작동합니다). 다른 옵션은 기본값으로 괜찮아야합니다.
보드는 테이블에 언급 된 인클로저에 맞도록 설계되었습니다. BUD Industries DMB-4771은 35mm DIN 레일 장착 상자이며 SuperTronic PP42는 간단한 벽 장착 인클로저 (양면 테이프 사용)입니다. 회로도 폴더에는 배터리 노드를 ABB AP9 정션 상자에 고정시키는 간단한 홀더의 3D 모델 인 AP9_Holder.stl 도 있습니다. 외부에 노드를 설치하고 3D 프린터에 액세스 할 수있는 경우 특히 편리합니다. 두 개의 홀더와 작은 나사 세트가 필요합니다. 또한 상자에 빗물을 방지 할 수있는 방법이 필요하지만 습도와 온도를 가득하게하십시오. 멤브레인 케이블 항목에 구멍을 뚫는 것은 한 가지 방법이거나 전문적인 보호 커버를 사용하십시오. 이것은 작동하는 것으로 입증되었습니다. BME280 브레이크 아웃 보드는 여기에 표시된 것처럼 전선을 보드에 납땜 하면 안에 들어갑니다. 일부 절연 테이프로 브레이크 아웃 보드 (센서 자체는 아님)를 감싸거나 단락을 방지하기 위해 열 수축을 사용하십시오. 이 이미지는 실외 센서 사용을 위해 준비된 SI7021 브레이크 아웃 보드를 보여줍니다. 또한 보호 덮개의 커넥터를 사용하여 플라스틱을 내부에서 뚫어야합니다. 여기서 상상력을 사용하십시오. 기성품이 제작 된 내후성 센서는 이와 같은 것 같습니다. NTC 서머 스터를 충분히 긴 와이어로 연결하면 여기에 표시된 것처럼 멋진 수온 노드가됩니다.
| 부분 | 값 | 장치 | 패키지 | 유형 | 메모 |
|---|---|---|---|---|---|
| C1 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | |
| C2 | 22 PF | 크리스탈 커패시터 | 1206 | 세라믹 | |
| C3 | 22 PF | 크리스탈 커패시터 | 1206 | 세라믹 | |
| C4 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | RFM95W / RFM96W와 함께 사용됩니다. |
| C5 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | RFM69HW와 함께 사용됩니다. |
| C6 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | U2 (Max3485)와 함께 사용됩니다. |
| C7 | 1 UF | 전원 입력 커패시터 | 1206 | 탄탈 | |
| C8 | 1 UF | 전원 출력 커패시터 | 1206 | 탄탈 | |
| C9 | 10 uf | 전원 출력 커패시터 | 1206 | 세라믹 | |
| C10 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | 23K256과 함께 사용됩니다. |
| C11 | 의존합니다 | 펄스 3 스무딩 커패시터 | 1206 | 세라믹 | 잘못된 펄스가 계산 된 경우 사용하십시오. |
| C12 | 의존합니다 | 펄스 2 스무딩 커패시터 | 1206 | 세라믹 | 잘못된 펄스가 계산 된 경우 사용하십시오. |
| C13 | 의존합니다 | 펄스 1 스무딩 커패시터 | 1206 | 세라믹 | 잘못된 펄스가 계산 된 경우 사용하십시오. |
| R1 | 10 KOHM | 풀업 저항을 재설정하십시오 | 1206 | ||
| R2 | 10 KOHM | 라디오 슬레이브 선택 풀업 저항 | 1206 | ||
| R3 | 120 옴 | RS-485 종결 저항 | 1206 | U2 (Max3485)와 함께 사용됩니다. | |
| R4 | 의존합니다 | 전력 LED 저항 | 1206 | 사용중인 LED를 기준으로 값을 선택하십시오. | |
| R5 | 의존합니다 | 활동 LED 저항 | 1206 | 사용중인 LED를 기준으로 값을 선택하십시오. | |
| R6 | 의존합니다 | 일련의 활동은 저항을 이끌었습니다 | 1206 | 사용중인 LED를 기준으로 값을 선택하십시오. | |
| R7 | / 10 kohm에 따라 다릅니다 | 펄스 3 풀업 / NTC 시리즈 저항 | 1206 | ATMEGA328P 내부 풀업 저항이 충분히 강하지 않거나 NTC를 사용해야하는 경우 사용하십시오. | |
| R8 | 의존합니다 | 펄스 2 풀업 저항 | 1206 | ATMEGA328P 내부 풀업 저항이 충분히 강하지 않은 경우 사용하십시오. | |
| R9 | 의존합니다 | 펄스 1 풀업 저항 | 1206 | ATMEGA328P 내부 풀업 저항이 충분히 강하지 않은 경우 사용하십시오. | |
| R10 | 10 KOHM | SRAM 슬레이브 선택 풀업 저항 | 1206 | 23K256과 함께 사용됩니다. | |
| D1 | 일련 활동 LED | 1206 | |||
| D2 | 전원 LED | 1206 | |||
| D3 | 활동 주도 | 1206 | |||
| Y1 | 8 MHz | HC-49US 8 MHz 결정 | |||
| S1 | 순간적인 푸시 버튼 | 3x6 mm | 예를 들어, 이것은이 것입니다. | ||
| x1 | SMA 커넥터 | 예를 들어, 이것은이 것입니다. | |||
| 헤더 | ISP 프로그래밍 헤더 | 2x3, 0.1 "피치 | |||
| 헤더 | 노드 ID 선택 헤더 | 2x5, 0.1 "피치 | |||
| 헤더 | RS-485 종료 및 J1 헤더 | 2x2, 0.1 "피치 | |||
| 나사 터미널 | 전원, 직렬, 맥박 접지, 펄스 입력 | 3x2 + 1x3, 5.08mm 피치 | 예를 들어, 2 개의 터미널과 3 개의 터미널. | ||
| pwr_jmp | 솔더 점퍼 | 1206 | u4를 사용하지 않으면 제로 OHM 저항을 짧게 사용하거나 IE 보드에 외부 조절 된 3.3 볼트가 제공됩니다. | ||
| comm_jmp | 솔더 점퍼 | U2를 사용하지 않으면 짧은 경우, 즉 Direct UART가 사용됩니다. | |||
| U1 | Atmel atmega328p 마이크로 컨트롤러 | DIP-28 | 바람직하게는 소켓을 사용합니다. | ||
| U2 | Maxim Max3485 RS-485 트랜시버 | DIP-8 | 바람직하게는 소켓을 사용합니다. RS-485 네트워크에 연결된 경우에만 사용하십시오. | ||
| U3 | 호 퍼프 RFM95W/RFM96W/RFM69HW | ||||
| U4 | 마이크로 칩 MIC5209-3.3 조절기 | SOT-223 | 선택 사항 (위의 참조). | ||
| U5 | Microchip 23K256 SRAM | DIP-8 | 선택 사항 (위의 참조). 바람직하게는 소켓을 사용합니다. | ||
| 울로 둘러싼 땅 | 버드 산업 DMB-4771 |
| 부분 | 값 | 장치 | 패키지 | 유형 | 메모 |
|---|---|---|---|---|---|
| C1 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | |
| C2 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | RFM69HW와 함께 사용됩니다. |
| C3 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | RFM95W / RFM96W와 함께 사용됩니다. |
| C4 | 100 nf | 전원 스무딩 커패시터 | 1206 | 세라믹 | |
| C5 | 10 uf | 전원 스무딩 커패시터 | 1206 | 세라믹 | |
| C6 | 100 nf | 커패시터 디퍼링 커패시터 | 1206 | 세라믹 | |
| R1 | 의존합니다 | 활동 LED 저항 | 1206 | 사용중인 LED를 기준으로 값을 선택하십시오. | |
| R2 | 10 KOHM | 풀업 저항을 재설정하십시오 | 1206 | ||
| R3 | 10 KOHM | NTC 시리즈 저항 | 1206 | NTC와 함께만 사용하십시오. | |
| R4 | 10 KOHM | 라디오 슬레이브 선택 풀업 저항 | 1206 | ||
| D1 | 활동 주도 | 1206 | |||
| S1 | 순간적인 푸시 버튼 | 3x6 mm | 예를 들어, 이것은이 것입니다. | ||
| 안테나 | 사용 빈도, 나선형 또는 와이어를위한 안테나 | 예를 들어, 이것은이 것입니다. | |||
| 헤더 | ISP 프로그래밍 헤더 | 2x3, 0.1 "피치 | |||
| 헤더 | 노드 ID 선택 헤더 | 2x6, 0.1 "피치 | |||
| 헤더 | J1 헤더 | 1x2, 0.1 "피치 | |||
| U1 | Atmel atmega328p 마이크로 컨트롤러 | DIP-28 | 바람직하게는 소켓을 사용합니다. | ||
| U2 / U3 | SI7021 / BME280 센서 | 다른 핀 주문에 대한 두 발자국. 자세한 내용은 지원되는 센서를 참조하십시오. | |||
| U4 | 호 퍼프 RFM95W/RFM96W/RFM69HW | ||||
| NTC | NTC 서머 스터 | 헤더가 제공되었습니다. 자세한 내용은 지원되는 센서를 참조하십시오. | |||
| 배터리 홀더 | 2 개의 AA 크기 배터리 용 홀더 | 예를 들어, 이것들 중 쌍입니다. | |||
| 울로 둘러싼 땅 | 슈퍼 트로닉 PP42 |
보드에는 다양한 이벤트를 나타내는 몇 개의 온보드 LED가 있습니다. 이 장에서는 이러한 이벤트에 대해 설명합니다. 모든 보드는 전원이 켜진 후 현재 실행중인 펌웨어 버전을 깜박일 것입니다.
게이트웨이가 전원이 공급 될 때마다 PWR 이 켜집니다. L2 Gateway가 Modbus 네트워크에서 전송 될 때 L2 깜박입니다. 다음 표는 L1 과 관련이 있습니다.
| 깜박임 | 간격 | 설명 | 동안 | 메모 |
|---|---|---|---|---|
| 1 | 2 초 | 불법 ID 세트. | 스타트 업 | ID 헤더를 확인하고 재부팅하십시오. |
| 5 | 2 초 | 라디오를 초기화하지 못했습니다. | 스타트 업 | 연결을 확인하십시오. |
| 1 | - | 노드에서 메시지를 받고 저장했습니다. | 작업 | |
| 2 | - | 노드에서 메시지를 받았지만 메모리가 가득 찼습니다. | 작업 | 외부 SRAM 또는 더 적은 양의 노드를 추가하십시오. |
| 3 | - | 성공적인 Modbus Master의 읽기. | 작업 | |
| 4 | - | 실패한 modbus는 마스터에서 읽었습니다. | 작업 |
배터리 노드에는 하나의 LED 만 있습니다.
| 깜박임 | 간격 | 설명 | 동안 | 메모 |
|---|---|---|---|---|
| 1 | 2 초 | 불법 ID 세트. | 스타트 업 | ID 헤더를 확인하고 재부팅하십시오. |
| 3 | 2 초 | 적절한 센서 구성을 초기화하지 못했습니다. | 스타트 업 | 연결을 확인하십시오. |
| 5 | 2 초 | 라디오를 초기화하지 못했습니다. | 스타트 업 | 연결을 확인하십시오. |
| 1 | - | 성공적인 전송. | 작업 | 디버그 모드 또는 강제 전송에서만. |
| 2 | - | 실패한 전송. | 작업 | 디버그 모드 또는 강제 전송에서만. |
펄스 노드는 게이트웨이와 동일한 보드를 공유하므로 3 개의 LED도 있습니다. 노드가 전원이 공급 될 때마다 PWR이 켜집니다. 노드가 Modbus 네트워크에서 전송 될 때 L2 깜박임. 다음 표는 L1 과 관련이 있습니다. 배터리 노드와 달리 펄스 노드에서 L1은 배터리로 제한되지 않기 때문에 항상 깜박입니다.
| 깜박임 | 간격 | 설명 | 동안 | 메모 |
|---|---|---|---|---|
| 1 | 2 초 | 불법 ID 세트. | 스타트 업 | ID 헤더를 확인하고 재부팅하십시오. |
| 5 | 2 초 | 라디오를 초기화하지 못했습니다. | 스타트 업 | 연결을 확인하십시오. |
| 1 | - | 성공적인 전송. | 작업 | |
| 2 | - | 실패한 전송. | 작업 | |
| 3 | - | 성공적인 modbus 읽기. | 작업 | |
| 4 | - | 실패한 modbus 읽기. | 작업 |
보드에는 몇 개의 사용자 정착 가능한 헤더가 있습니다. 보드가 전원이 공급되기 전에 설정해야합니다. 각 장치에는 하나의 버튼도 있습니다. 또한 게이트웨이 및 펄스 노드에는 전원, 직렬 통신 및 펄스 입력 용 나사 단자가 있습니다.
게이트웨이의 버튼은 현재 정상 작동에서 사용되지 않습니다. 그러나 게이트웨이에 전원을 공급하는 동안 J1을 짧게하고 버튼을 누르면 EEPROM의 저장된 펄스 값이 0으로 설정됩니다.
전원을 적용하는 동안 버튼을 누르면 노드가 디버그 모드 에 넣습니다. 이 모드에서 노드는 8 초마다 새로운 값을 보내고 LED를 깜박임을 나타냅니다. 배터리를 빠르게 배출하므로 장기적으로 사용하지 마십시오. 전원 순환 노드는 디버그 모드를 취소합니다.
정상적인 작동 버튼 중에 완전한 전력으로 인스턴트 전송을 트리거하고 LED가 성공을 나타내는 LED를 깜박입니다. 노드가 게이트웨이 범위 내에 있는지 신속하게 테스트하는 데 사용하십시오.
전원을 적용하는 동안 버튼을 누르면 노드가 디버그 모드 에 넣습니다. 이 모드에서 노드는 8 초마다 새 값을 보냅니다. 불필요하게 혼잡 한 무선 네트워크가 될 것이므로 장기적으로 사용하지 마십시오.
정상적인 작동 버튼 중에 완전한 전력으로 즉시 전송을 유발합니다. 노드가 게이트웨이 범위 내에 있는지 신속하게 테스트하는 데 사용하십시오. 또한, J1을 짧게하고 노드에서 전원을 전원하는 동안 버튼을 누르면 EEPROM의 저장된 펄스 값이 0으로 설정됩니다.
제조 보드에 대한 자세한 지침 및 아이디어는 회로도 및 PCB를 참조하십시오. 모든 칩은 더 쉬운 핸드 납땜을 위해 구멍 패키지를 통해 이루어집니다. 작은 구성 요소는 대부분 SMD이지만 충분히 크기 때문에 경험이없는 솔더조차도 납땜 할 수 있어야합니다.
저장소를 다운로드하십시오. 라이브러리 의 내용을 Arduino 라이브러리 폴더에 배치하십시오. 또한 Sensorsgateway , Sensorsbattery 및 Sensorspulse 폴더를 Arduino 스케치북에 복사하십시오.
Arduino IDE에서 보드 관리자를 사용하여 Minicore를 쉽게 설치할 수 있습니다. Minicore 페이지의 지침을 따르십시오.
필요한 모든 외부 라이브러리를 설치하십시오. 추가 지침은 라이브러리 섹션을 참조하십시오. 암호화 라이브러리와 관련하여 암호화를 사용하는 경우 부분에 추가주의를 기울이십시오.
각 .ino의 시작 부분에는 좋은 설명과 함께 필요한 모든 설정을 포함하는 섹션이 있습니다. 필요에 따라 설정을 조정하십시오. 주파수, 암호화 키 및 낮은 속도는 동일한 네트워크의 모든 장치에서 일치해야합니다. 그렇지 않으면 통신이 작동하지 않습니다.
센서는 일반적인 Arduino 보드와는 매우 다른 하드웨어를 사용하므로 마이크로 컨트롤러는 일부 특수 설정으로 프로그래밍해야합니다. 이를 위해서는 외부 AVR ISP 프로그래머가 필요합니다. 운 좋게도 전용 ISP 프로그래머가없는 경우 다른 Arduino (UNO 또는 Pro Mini)를 사용할 수도 있습니다. Arduino.cc의 지침에 따라 Arduinoisp 스케치 배선 및 연소에 대한 지침을 따르십시오. 캐치가 하나뿐입니다. 새로운 보드를 프로그래밍하는 데 사용하는 것은 3.3 볼트 여야합니다 . ATMEGA328P는 5 볼트로 괜찮지 만 다른 모든 구성 요소는 3.3 볼트로 작동하므로 보드에 5 볼트를 공급하면 일부 또는 모든 구성 요소가 발생할 수 있습니다. 내가 제안한 것은 Arduino Pro Mini 또는 Pro Micro의 3.3 볼트 버전입니다.
Program The Bootloader를 때릴 때까지 앞에서 언급 한 지침을 따르십시오. 도구> 보드 및 미니 코어 에서 ATMEGA328을 선택하십시오. 다음과 같이 다른 옵션을 선택하십시오.
다음으로 Burn Bootloader를 누르십시오. 우리가 부트 로더를 사용하지 않기로 선택했기 때문에 실제로 부트 로더를 태우지 않으며 필요한 퓨즈만을 태울 수 있습니다. 두 보드를 계속 연결 한 이후로 계속 연결되어 있습니다. 다음에 스케치를 업로드합니다.
참고 : 이것은 모든 새로운 마이크로 컨트롤러마다 한 번만 수행해야합니다. 나중에 스케치 설정을 변경하고 새 스케치를 업로드하면 6 단계를 건너 뛰고 7 단계를 따라갈 수 있습니다.
6 단계에 설명 된 Arduino IDE 보드 설정과 실제 스케치 오픈은 여전히 두 개의 보드가 연결되어 있으면 스케치 에서 프로그래머를 사용하여 업로드를 누르십시오. 이것은 다른 Arduino 스케치와 마찬가지로 스케치를 업로드합니다. 그 후, 당신은 끝났습니다.
게이트웨이를 중앙 위치로 놓고 Modbus 유능한 네트워크에 연결하십시오. 점퍼 헤더를 사용하여 Modbus 슬레이브 주소를 설정하고 전원을 적용하십시오.
필요에 따라 다른 노드를 배포하고 점퍼 헤더로 주소를 먼저 선택한 다음 외부 전원 또는 배터리를 연결하십시오. 노드의 버튼을 사용하여 최대 전원으로 전송을 강제하십시오. 일반적으로 노드는 전송 전력을 최저 수준으로 자동으로 조정하십시오. 온보드 LED의 한 번의 깜박임은 성공적인 전송을 나타냅니다. 두 번의 깜박임이 실패했습니다. LED blinks only when forcing a transmit with the button. You can use the provided Python script read_modbus.py to read data from the gateway for debugging purposes.
Start logging measurements to a MySQL database ( save_modbus_to_db.py provides a starting point for this), for example, and graph it with Grafana, or connect the gateway to a home automation hub and monitor measurements that way.
Note: Due to the changes, version 2 gateway is no longer compatible with nodes running lower versions. Messages will be delivered but because nodes expect different kind of acknowledgements, they will consider messages lost. This triggers retransmits, full transmit power and more battery usage.
Initial public release.