1 DHT22센서 실드의 오작동 문제
책(따라 하면서 배우는 사물인터넷) 페이지 407에는 DHT22 센서 실드를 사용하는 예제가 있습니다.
문제는 이 실드가 제대로 작동하지 않는 경우가 많다는 것입니다. 필자가 교재를 집필할 때 사용하던 DHT22 센서 실드는 문제 없이 작동이 되었는데, 이 후에 구입한 DHT22센서 실드는 제대로 작동하지 않는 경우가 있었습니다.
동일한 브랜드의 DHT22 센서 실드를 여러 개 구하여 테스트해 보면, 비정상적으로 작동하는 경우가 더러 있습니다. 또한 정상적으로 작동하는 제품도 가동 환경이 달라지면 비정상적으로 작동하기도 합니다. 비정상적으로 작동하는 제품이 불량이라기 보다는 DHT22 센서 실드의 태생적 문제로 보는 것이 타당할 것 같습니다.
2 실드의 핀 D4를 다른 핀으로 바꾸면 오류가 없어집니다.
DHT22 실드는 데이터 핀으로 D4를 사용합니다. 즉, 핀 3.3V,GND,D4가 D1 mini 본체와 연결됩니다.
결론부터 말씀드리면, DHT22 센서 실드의 핀 D4를 다른 핀으로 바꾸면 됩니다. 테스트 결과 핀 D3,D5,D6,D7에서 정상적으로 작동하는 것을 확인하였습니다.
3 실드의 핀 D4를 다른 핀으로 바꾸기
먼저 DHT22 센서 실드의 핀을 납땜 한 후 다음과 같이 작업합니다.
- 핀 D4의 다리를 자릅니다.
(납땜 하기 전에 다리를 미리 제거해도 됩니다) - 핀 D4의 머리 부분을 다른 핀의 머리에 연결합니다.
다음은 핀 D4 다리를 제거하고, D4 머리 부분을 D3와 연결한 상태입니다. 인접한 핀의 머리끼리는 납을 많이 먹이면 쉽게 연결됩니다.
D3핀은 주로 버튼을 연결하는 핀이므로, 만약 버튼 실드를 사용한다면 D4의 머리는 D3외의 다른 핀에 연결해야 합니다. 이 경우에는 배선을 해야합니다.
핀이 바뀌면 프로그램에서도 핀을 바꾸어서 지정해야 합니다.
#define DHT22_PIN D3 // D4
D4와 D6를 연결한 연결한 사례입니다. DHT22 센서의 데이터 핀에 D6를 연결해도 됩니다.
프로그램에서 핀을 D6로 지정합니다.
#define DHT22_PIN D6 // D4
4 기판의 회로를 자르고 데이터 핀에 새로운 핀을 연결하기
실드를 뒤집어 D4에 연결되는 회로를 커터로 자른 후, 실드에 장착된 DHT22 센서의 데이터 핀을 원하는 핀에 연결해도 됩니다. 이 방법으로 하면 D4 핀을 살려 두고 나중에 연결 해 볼 수도 있습니다. 회로를 자를 때 날카로운 도구를 사용해야 하므로 안전에 유의하여야 합니다.
참고 DHT22 센서 실드에서 D4를 사용하여 생긴 오류 분석
D1 mini는 ESP8266 마이크로컨트롤러를 장착한 개발 보드입니다. ESP8266의 경우 핀마다 쓰임새가 다른 경우가 많아 주의가 필요합니다. 다음은 D1 mini 핀의 쓰임새와 실드 핀의 정보를 모아서 정리한 것입니다. 좋음으로 표시된 핀을 우선적으로 사용하는 것이 좋습니다. 그 외의 핀은 쓰임새를 정확히 알고 조심해서 사용해야 합니다.
표시 | GPIO | 통신 | 사용 | 용도 | 실드 |
|
---|---|---|---|---|---|---|
TX | 1 | TX | 자제 | 하드웨어 시리얼 TX 핀 | ||
RX | 3 | RX | 자제 | 하드웨어 시리얼 RX 핀 | ||
D0 | 16 | 주의 | RST와 연결하면 sleep mode를 벗어남. pull-up 금지. interrupt/PWM/I2C/one-wire안됨 | |||
D1 | 5 | SCL | 좋음 | I2COLED DHT12온습도 | relay | |
D2 | 4 | SDA | 좋음 | WS2812B RGB DS18B20 |
||
D3 | 0 | 주의 | 10K pull-up booting mode 설정 (HIGH:run, LOW: flash) | button PIR | ||
D4 | 2 | 주의 | 10K pull-up built-in led (sink mode) | DHT22온습도(AM2301) | ||
D5 | 14 | SCK | 좋음 | buzzer | ||
D6 | 12 | MISO | 좋음 | |||
D7 | 13 | MOSI | 좋음 | |||
D8 | 15 | SS | 주의 | 10K pull-down | ||
A0 | 17 | 입력 | 아나로그 입력(최대 3.3V). 출력핀으로 사용 안됨 |
위 그림에 의하면 핀 D4에는 내장(built-in) LED가 연결되어 있습니다. D4는 프로그램을 올릴 때 사용되는 핀이기도 합니다. 그래서 프로그램을 올릴 때 LED가 점멸하는 것을 확인할 수 있습니다. 이 핀은 주의해서 사용해야 하는 핀입니다.
DHT22 센서 실드에서는 D4의 고유 기능과 DHT22의 데이터 핀으로서의 역할이 충돌을 일으키는 것으로 보입니다. 이 센서 실드의 데이터 핀으로 D4를 사용한 것은 설계상의 오류라고 할 수 있습니다. 이러한 이유로 이 제품을 초기에 설계했던 Wemos에서는 제품을 단종하고, SHT30과 DHT12 센서 기반의 실드로 대체하여 출시하고 있습니다. 그러나 이러한 결함에도 불구하고, DHT22 센서의 성능이 좋기 때문에, 이 실드는 써드파티 제품으로 아직도 판매되고 있습니다.
DHT22 센서 실드는 핀을 바꾸어서 사용하는 것이 안전합니다.