이 repo에는 홈 IoT 프로젝트를위한 다목적 ESP8266 센서 장치에 대한 빌드 지침이 포함되어 있습니다.
부분적으로 채워진 보드 V5. Kicad에서 생성 된 이미지.
이 센서 보드는 대부분의 홈 오토 메이션 하드웨어 요구를 충족합니다. 저렴하고 광범위하게 사용할 수있는 인클로저 (3D 프린팅 필요 없음)에 적합하며, USB와 배터리가 동시에 연결된 경우 적절한 전원 공유와 함께 Li-ion 배터리 (전압 모니터링, 충전, 역자 민주주의 및 보호 회로 포함) 또는 USB로 전원을 공급할 수 있습니다. 소프트웨어 측면에서, 나는 가능한 한 높은 수준을 유지했습니다. 대부분의 사용 시나리오에 대한 Tasmota; 필요한 경우 마이크로 파이썬. Communication은 Wi-Fi 또는 LORA를 통해 MQTT 프로토콜을 사용합니다 (보드를 원격 LORA 센서 및 LORA-MQTT 브리지로 사용합니다).
이 보드는 모터/펌프 제어 (자동 플랜트 급수 용)뿐만 아니라 다음 센서를 위해 설계되었습니다. GPIO 핀은 쉽게 접근 할 수 있으므로이 보드는 다른 많은 센서의 기초로 사용될 수 있습니다.
ESP8266의 사용에는 특히 이용 가능한 GPIO와 하나의 ADC 포트에 대한 몇 가지 제한 사항이 있습니다. 이는 모든 잠재적 기능이 동시에 사용할 수있는 것은 아닙니다. 예, 이러한 제한은 포트 스플리터로 또는 ESP32와 같은 다른 마이크로 컨트롤러를 사용하여 극복 할 수 있습니다. 그러나 나를위한 재미의 일부는 ESP8266만으로 얼마나 많은 일을 할 수 있는지 보는 것이었고 최종 결과는 모든 사용 사례에 적합합니다.
![]() | ![]() |
|---|---|
| V4, BME280 (온도, 압력 및 습도), BH1750 (LUX) 및 수분 (오디오 플러그를 통한) 센서. 급수 펌프 장비 (오른쪽 하단); 현재 연결되어 있지 않습니다. | V5, BME280 및 MH-Z19C (CO 2 ) 센서 |
![]() |
|---|
| V5 보드의 새로운 배달 |
당신은 다른 것을 사용할 수 있습니다. 처음에는 IoT 센서 및 회로 설계/제작에 대해 배우는 방법으로 이것을 설계했습니다. 상용 보드보다 몇 가지 장점을 제공하기 때문에 그것에 붙어 있습니다.
보드는 USB 또는 Li-ion 배터리에서 직접 전원을 공급할 수 있습니다. 보드 V4 및 이전에는 Micro-USB를 사용했습니다. V5는 USB-C를 사용합니다. 보드 왼쪽의 컷 아웃은 이와 같은 1 셀 18650 배터리 케이스 (구매 링크)를 수용하도록 설계되었습니다. 배터리 커넥터는 2 핀 JST-PH (2mm 피치)이지만 선호하는 경우 와이어를 커넥터에 직접 납땜하십시오.
배터리와 USB가 모두 동시에 연결되면 전력 공유 회로는 USB 만 보드에 전원을 공급하도록합니다. 배터리는 충전을 위해 공통 3 칩 TP4056 기반 모듈의 사본과 함께 사용됩니다. 배터리를 사용하지 않고이 회로를 우회하려는 경우 스위치가 제공됩니다 (또는 USB를 연결하는 동안 배터리가 충전되지 않으려는 경우). 이 모듈에는 과하, 과잉 차지, 과전류 및 단락에 대한 보호가 포함됩니다. USB가 연결된 경우 나머지 보드 (배터리가 아님)에 대해 과전류 및 단락 보호가 우회되어 전원 공유 회로가 활성화됩니다. 표준 충전 모듈에는 배터리 폴라이트 보호가 포함되어 있지 않으므로 추가했습니다.
점퍼 JP5 (Front) 또는 JP6 (뒤)을 연결하면 배터리 전압 모니터링을 사용할 수 있습니다. 이것은 전압 분배기를 통해 Positial Battery 터미널을 ESP의 단독 ADC 핀에 연결합니다. 이 연결은 수분 센서 (및 다른 센서)도 ADC에 액세스해야하기 때문에 선택 사항입니다. 이로 인해 V5 보드와 함께 배터리 전압과 토양 수분 센서를 동시에 모니터링 할 수 없습니다.
메모
선택할 수있는 현기증이 많은 LDO IC가 있습니다. 상대적으로 높은 전류 출력과 낮은 드롭 아웃 전압으로 인해 XC6203P332PR에 정착했습니다. Board V4는 안정성을 테스트 할 두 개의 대체 규제 기관에 대한 발자국이 있었지만, 필요하지 않았으며 V5에서 제거되었습니다.
PCB 버전 4에서 나는 데이터 시트에 따라 2 개의 1μF 탄탈 커패시터와 XC6203과 쌍을 이루었습니다. 몇 주 동안 사용한 후 두 개의 보드에 커패시터가 실패하여 단락과 연기가 많이 발생했습니다 (당시 보드는 USB 구동을 일으켰습니다). Tantalum Horror Stories를 온라인으로 읽은 후, 나는 V5에서 도자기를 교환하기로 결정했으며 더 이상 문제가 없었습니다. 나는 나중에 두 가지 실패가 내 잘못이라는 것을 발견했다. 나는 부분을 반대로 장착했다! 나는 탄탈 룸의 극성 마커 밴드가 양성을 나타내는 반면, 알루미늄 커패시터와 다이오드에서는 부정적인 것을 나타내는 이유가 있다고 확신하지만,이 초보자를 트립했다.
편리하게 XC6203P332PR은 흰색 ESP-12F 어댑터 보드와도 호환됩니다. 제공된 발자국보다 작지만 여전히 문제가 거의 없어서 납땜 될 수 있습니다. 보드 장착 레귤레이터를 사용하는 경우 보드 전면에서 Central Zero-OHM 저항을 제거하십시오.
나는 ESP8266의 전기적 노이즈 민감도에 대한 어려운 방법을 배웠습니다. 보드의 V3에서는 급수 모터가 활성화 될 때마다 재부팅 할 것입니다. 컴포넌트 재배치 (모터를 마이크로 컨트롤러에서 멀리 떨어진 곳으로 이동)로 V4에서 이것을 모터 연결 옆에 추가 커패시터를 추가하고, 신호 추적 대 전력 추적 폭을 증가시키고, 접지 평면의 루프를 최소화하며, 나머지 부분에서 모터지면 평면 리턴 경로를 분리합니다.
보드는 ESP-12F를 위해 설계되었습니다. 납땜하기 전에 프로그래머 보드에서 칩을 플래시하는 경향이 있습니다.
설치되면 USB-UART 인터페이스 보드를 적절한 핀에 연결하여 일반적인 방식으로 플래시 할 수 있습니다.
| 핀# | 포트 | 보드 연결 | 저항기* |
|---|---|---|---|
| 1 | rst | 재설정 버튼 | |
| 2 | ADC | ADC (수분 또는 배터리) | |
| 3 | en | 칩 활성화 | 감독자 또는 e-pu |
| 4 | IO16 | 깊은 수면 | |
| 5 | IO14 | I2C SCL 또는 SPI SCK | |
| 6 | IO12 | 수분 VCC 또는 SPI SDO-MISO | |
| 7 | IO13 | I2C SDA 또는 SPI MOSI | |
| 8 | VCC | ||
| 15 | Gnd | ||
| 16 | IO15 | 로라 NSS | E-PD |
| 17 | IO2 | 온보드 LED 및 SPI SS | |
| 18 | IO0 | 플래시 버튼 | e-pu |
| 19 | IO4 | 모드 스위치 (GND : 수면 사용) | e-pu |
| 20 | IO5 | 워터 펌프 또는 로라 디오 | E-PD |
| 21 | RXD | CO 2 TX | |
| 22 | TXD | CO 2 RX |
* 핀에 부착 된 저항 : I : 내부, E : 외부, PU : 풀업, PD : 풀다운
ESP8266의 DeepSleep 기능을 사용하기 위해 RST를 GPIO16에 연결하는 최적의 방법에 대한 온라인 토론이있는 것 같습니다. 나는주의를 기울이면서 둘 사이에 다이오드를 추가했습니다.
ESP8266은 전압이 너무 낮 으면 브라운 아웃에 취약합니다 (이 문제에 대한 좋은 설명은 여기에서 찾을 수 있습니다). 전원이 처음 적용될 때 조절기의 전압 증가와 함께 부팅 문제가 발생할 수 있습니다. 이를 방지하기 위해 전압이 적절한 임계 값보다 높을 때만 칩으로 활성화 가능한 핀을 설정하는 옵션 전압 관리자 (TPS3839G33dBZ)가 포함되었습니다. 그러나 나는 아직 브라운 아웃이 문제라는 것을 알지 못했기 때문에 때때로이 구성 요소를 건너 뜁니다.
인클로저에 한 쌍의 Lora가 장착 된 장치
ESP8266을 LORA 모듈과 결합하는 것은 사용 가능한 GPIO와 관련하여 스트레치입니다. 이 보드는 SX1276 LORA 모듈 (예제 링크)과 함께 작동하도록 설계되었으며 여기에서 디자인에 크게 의존하여 LORA 모듈의 핀 3 개 (DIO0, 1 및 2)를 Three Diodes (Board Footprint D9, D10 및 D11)를 통해 1 개의 ESP8266 핀을 연결하여 필요한 포트를 최소화합니다. 이 DIO 공유 구성에는 소프트웨어의 특별한 처리가 필요합니다. 그러나 간단한 LORA 커뮤니케이션의 경우 DIO0 만 필요하므로 LORA 보드에는 현재까지 D9를 연결하고 D11과 D11이 연결이 끊어졌습니다.
테스트를 위해 공통 헬리컬 와이어 안테나 (종종 모듈 구매에 포함)를 모듈의 안테나 핀에 직접 납땜 할 수 있습니다. 그러나 범위는 빨라질 것입니다. 더 나은 범위를 위해 고급 안테나를 연결하십시오 (여기에서 구입 한 5DBI 안테나를 사용합니다). AE1에 IPEX U.FL-R 발자국이 포함되어 있습니다. 또는 SMA 가장자리 마운트 커넥터는 풋 프린트 J5의 보드 가장자리에 잘 맞습니다. 이것들은 다음과 같이 유선 될 수 있습니다 (이 예제는 보드 v4를 사용하지만 v5에 대해서도 동일하게 작동합니다) : 상단 및 하단.
메모
ESP8266에서 단일 ADC는 0V에서 1V 사이의 측정 범위를 사용할 수 있습니다. 따라서 더 높은 전압을 측정하려면 전압 분배기가 필요합니다. v5 보드에서 ADC는 오디오 잭에 연결된 주변 장치에 사용되거나 JP11 또는 JP5가 닫힌 경우 배터리 전압을 모니터링 할 수 있습니다.
오디오 잭을 통한 연결은 R1 = 470 kΩ (구성 요소 R7), R2 = 200 kΩ (구성 요소 R8)의 분배기를 통과합니다. 이를 통해 최대 3.3V의 전압 측정을 허용합니다 (3.3V는 약 0.985V로 낮아지고 신호를 더 높은 정확도로 교정합니다).
배터리 연결은 구성 요소 R7과 직렬로 330kΩ (구성 요소 R10) 저항을 추가하여 R1 = 800kΩ로 이어집니다. 이것은 측정 범위를 최대 5V까지 증가시킵니다.
4 극 오디오 잭 (모델 PJ313E)을 사용하여 수분 센서를 보드에 연결하기로 결정했습니다. 현재로서는 4 개의 극 중 3 개만 연결되어 있습니다. 네 번째는 미래의 기능에 대한 시선이있는 여분입니다. 기본에서 오디오 플러그 끝까지 시작하면 현재 연결은 다음과 같습니다.
| 폴 | 연결 |
|---|---|
| 1 | Gnd |
| 2 | 연결 없음 |
| 3 | 3.3V (GPIO12, JP3를 통해) |
| 4 | 3.3V 전압 분배기를 통해 ADC에 |
선택한 소켓 (또는 소켓과 내가 사용하는 플러그의 조합)에 한 가지 문제가 발생했습니다. 기본적으로 4 개의 극과 연결되지 않습니다. 이것은 가장 깊은 접촉 핀 (극 4)이 편향되지 않는 상단 이미지에서 볼 수 있습니다. 문제를 해결하기 위해 소켓의 튀어 나온 플라스틱 전면 (하단 이미지)을 찍거나 제출했습니다.
작은 워터 펌프와 필요한 유연한 튜브를 널리 사용할 수 있습니다. 위에서 논의한 바와 같이, 그들은 전기적으로 곤경에 처한다. 따라서 펌프의 커넥터가 ESP에서 보드의 가장 먼 구석에 있고 자체 커패시터의 두 커패시터 뒤에 차폐 된 이유는 무엇입니까? 일반적으로 N- 채널 MOSFET을 통해 GPIO5에 의해 구동되거나 옵션 버튼 SW5로 수동으로 작동 할 수 있습니다.
단순화를 위해, 작은 펌프는 상당히 넓은 전압 범위에서 작동 할 수있는 것처럼 보이기 때문에 펌프에는 현재 보드에 전원을 공급하는 전압 (전력 공유 회로의 상태에 따라 정의 됨)이 공급됩니다. USB가 연결되면 다이오드 D2 및 D8에 걸쳐 5V 마이너스가됩니다. 배터리로 구동되는 경우 배터리 전압이 D8 방울을 뺀 것입니다. 실제로 그것은 실제로 큰 차이를 만들지 않습니다. USB 대 배터리 구동 시점에 주어진 시간 동안 약간 더 많은 물이 펌핑됩니다.
펌프의 보드 연결에는 DC-002 소켓에 대한 발자국이 있습니다. 나는 USB 소켓 사용을 고려했지만 출력 전압이 항상 USB에서 기대할 수있는 5V는 아니기 때문에 오도가 좋았다고 결정했습니다. 위의 보드에서 파워 잭 소켓을 건너 뛰고 대신 더블 핀 헤더 소켓을 연결했습니다.
이 프로젝트 상자는 저렴하고 광범위하게 사용할 수 있으며 PCB 및 18650 배터리에 적합한 크기이기 때문에 선택했습니다.
보드를 상자에 부착하려면 8mm m2.6 나사가 필요합니다.
| 재산 | 기준 치수 | 보드 연결 | 데이터 시트 | 구매 링크* |
|---|---|---|---|---|
| 온도, 압력, 습도 | BME280 | 직접 (2.54mm 헤더) | 링크 | |
| 럭스 | BH1750 | 직접 (2.00mm 헤더) | 링크 | Aliexpress |
| 공동 2 | MH-Z19C | 직접 (2.54mm 헤더) | 링크 | Aliexpress |
| 수분 | "정전성 토양 수분 센서 v1.2" | 오디오 플러그 | 링크 (이전 버전) | Aliexpress |
* 나는 과거에 그 링크에서 구입했지만 보증은 제공되지 않습니다. 또한 필연적으로 만료 될 때 업데이트 할 계획이 없습니다.
이것은 매우 편리한 온도, 습도 및 압력 센서입니다. 센서의 현재 마운트 포인트를 사용하면 부분적으로 인클로저 외부에 있습니다. 상자 내 공기 흐름에 대해 걱정할 필요가 없기 때문에 이것이 편리하다고 생각합니다. 현재 지오메트리가 당신을 화나게하거나 센서가 손상 될 위험이없는보다 강력한 장치가 필요한 경우, 연결 지점의 재 설계를 고려하거나 내장 케이지가있는 대체 센서를 선택하십시오.
납땜 된 핀이 인클로저 뚜껑을 올바르게 닫는 방식으로 얻을 수 있습니다. 이 경우 납땜하기 전에 내가 여기서 한 것처럼 다듬을 수 있습니다.
센서는 I2C 또는 SPI로 통신 할 수 있습니다. 대부분의 사람들은 I2C를 사용하는 것 같습니다. SPI 인터페이스를 원한다면 후면에 솔더 브리지 몇 개를 닫아 추가 핀을 연결하십시오. v5에서, 이러한 연결 중 하나는 수분 센서에도 전원을 공급하므로 BME280 (SPI 인터페이스 포함)과 수분 센서를 동시에 실행하려면 변경이 필요합니다.
메모
이것은 I2C 인터페이스와 결합 된 간단하고 신뢰할 수있는 포토 다이오드입니다. 당신은 다양한 형태 인자로 구입할 수 있으며, 라이트 볼 버전은 우리의 목적에 특히 편리합니다. 내장 커넥터의 플라스틱 부품을 트림 다운하면 이제 보드 v5에 포함 된 표준 2mm 피치 핀 헤더에 직접 연결할 수 있습니다. 라이트 볼은 센서에서 튀어 나와 인클로저 상단에 직접 장착 될 수 있습니다.
메모
이것은 내가 사용하는 가장 비싼 센서이지만 저렴한 VOC 대안에 대비 한 가치가 있다고 생각합니다. UART 버스를 통해 통신합니다 (따라서 ESP8266 PINS RX 및 TX). 따라서 ESP를 플래시하거나 직렬 인터페이스를 사용하려는 경우 센서가 연결되지 않도록합니다.
보드 V5에서 MH-Z19C를 사용하려면 후면에 두 개의 솔더 브리지를 연결해야합니다. 뒤늦은 브리지를 원하지 않을 때는 좋은 사용 사례를 생각할 수 없으므로 미래 버전에서 연속적인 흔적을 위해 패드를 교환 할 것입니다.
메모
수분 센서가 지속적으로 작동하고 배터리를 배수하기 위해 GPIO12로 직접 전원을 공급합니다. JP3의 오른쪽 패드를 중앙 패드에 연결하여 연결하십시오. 전류를 많이 그리지 않으므로 GPIO 핀에서 센서에 직접 전원을 공급하는 데 아무런 문제가 없었습니다. 앞으로 브라운 아웃/안정성 문제로 판명되면이 연결은 MOSFET으로 대체해야합니다.
이 보드는 Kicad에서 설계되었으며 JLCPCB에서 제조했습니다. KICAD 파일과 JLCPCB가 요구하는 정보는 Board_V* 디렉토리에 제공됩니다.
회로도를 이해하십시오. 나는 그것이 여러 부분으로 나누어야하는 추악하고 필사적으로 필요하다는 것을 알고 있습니다. 이것은 나의 첫 번째 PCB 디자인임을 기억하십시오!

보드 V5 레이아웃
편의를 위해 가능한 모든 장치에 Tasmota를 사용합니다. Tasmota는 Lora를 처리 할 수 없으므로이 장치의 경우 Micropython을 사용합니다.
웹 설치 링크
Tasmota 이미지의 "센서"버전을 설치해야합니다.
다음은이 readme 상단에있는 V4 장치의 Tasmota 스크린 샷입니다.
| 
다음은 제어 인터페이스에서 기본값에서 변경 한 주요 설정입니다. 이것들과 다른 설정에 대해 읽으십시오.
메모
POWER2 ON 명령을 추가하십시오Relay 2 대신 Output Hi 하도록 설정하십시오. 그런 다음 Tasmota의 부팅 프로세스 초반에 높은 설정을하고 마이크로 컨트롤러가 깊은 수면에 빠질 때 여전히 꺼집니다.내 LORA Micropython 소프트웨어 및 지침을 여기를보십시오 : https://github.com/brev/lora_esp8266_sensor_mqtt_bridge.
이 repo가 다루지는 않았지만 여기 에이 장치가 내 전체 집을 설정하는 위치에 대한 빠른 메모가 있습니다.
내 홈 설정은 이러한 목표를 달성하도록 설계되었습니다.
각 객실에서 온도 제어를 가능하게하기 위해 라디에이터는 Tasmotized ESP8285 스마트 플러그에 연결됩니다.
"허브"는 모기, 노드, 유입 및 그라파나가 장착 된 라즈베리 파이 4입니다. 내 결절의 흐름은 아마도 많은 것을 HomeAssistant로 대체함으로써 단순화 될 수 있지만, 나는 그것을 조사하지 않았습니다. InfluxDB와 Grafana의 조합은 현재 상태를 모니터링하고 온도 및 수분 트리거 레벨을 모니터링하기 위해 휴대 전화의 "MQTT Dash"앱과 함께 과거 데이터 (아래 예제)를 저장하고 시각화하는 데 사용됩니다. RPI 소프트웨어 스택은 구성 및 유지 보수를 용이하게하기 위해 Docker 및 iotstack을 사용합니다. Andreas Spiess는 #255, #295 및 #352를 포함하여 주제에 대한 훌륭한 비디오를 가지고 있습니다.


