메뉴 전체보기

회원메뉴

MQTT와 Tasmota를 활용한 Wi-Fi 대기질 모니터 만들기 (BME680, ESP32) > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3042
제목 : MQTT와 Tasmota를 활용한 Wi-Fi 대기질 모니터 만들기 (BME680, ESP32)
2026-08-19 11:08

소개: MQTT와 Tasmota를 활용한 Wi-Fi 대기질 모니터 만들기 (BME680, ESP32)


창고 내부의 환경 상태를 간편하게 모니터링할 방법이 필요해서, 보쉬(Bosch)의 BME680 센서와 ESP32 보드를 활용해 소형 무선 환경 모니터를 제작했습니다. 이 센서 하나만으로도 온도, 습도, 기압, 전반적인 공기 질 수치를 한 번에 확인할 수 있으며, 전체 시스템이 MQTT를 통해 데이터를 전송하므로 어디서든 데이터를 확인할 수 있습니다. 가장 좋은 점은 코딩이 전혀 필요 없다는 것입니다. ESP32에는 센서, 웹 인터페이스, 메시지 전송을 자동으로 처리해 주는 기성 펌웨어인 Tasmota가 구동됩니다.

모든 부품은 현장에서 벽에 나사로 고정할 수 있는 작은 전기 박스 안에 들어갑니다.




STEP 1. 준비물


준비물


준비물


하드웨어 측면에서는 3.3V로 작동하는 6핀 버전의 BME680 브레이크아웃 보드와 핀 헤더가 장착된 ESP32 개발 보드가 필요합니다. 이 두 장치를 연결하려면 암-암 듀폰트 점퍼 케이블 4개가 필요합니다. 저는 갈색을 접지, 빨간색을 3.3V, 노란색을 클럭 라인, 주황색을 데이터 라인으로 사용했지만, 색상만 일관되게 유지한다면 어떤 색상이라도 상관없습니다. 또한 보드에 전원을 공급하고 프로그래밍하기 위한 USB 케이블과, 모든 부품을 수납할 작은 전기 인클로저 박스가 필요합니다. 박스에 케이블과 센서를 삽입할 구멍을 뚫을 때는 드릴이나 취미용 칼이 유용합니다.

소프트웨어 측면에서는 Tasmota 웹 설치 프로그램이 브라우저에서 직접 보드를 플래시하므로, Chrome이나 Edge와 같은 크로미움 기반 브라우저가 설치된 컴퓨터만 있으면 됩니다. 또한 MQTT 브로커에 접속할 수 있어야 합니다. 이는 Home Assistant 인스턴스, 자체 호스팅 브로커, 또는 호스팅 플랫폼일 수 있습니다. 저는 표준 MQTT를 지원하는 ding.mk를 사용했습니다.


  1. BME680 센서: https://s.click.aliexpress.com/e/_c3iIDMmL
  2. ESP32 개발 보드: https://s.click.aliexpress.com/e/_c3PfpZXZ
  3. Tasmota 펌웨어 웹 설치 프로그램: https://tasmota.github.io/install/
  4. 듀폰 점퍼 케이블 (암-암): https://s.click.aliexpress.com/e/_c3fr8y5p
  5. 전기 인클로저 박스: https://s.click.aliexpress.com/e/_c3XEbZl5
  6. ding.mk 플랫폼: https://ding.mk/en
  7. ding.mk 동영상: https://youtu.be/9simFNsFohA
  8. 벤치형 전원 공급 장치: https://s.click.aliexpress.com/e/_c3OoaCuB
  9. 납땜 작업대: https://s.click.aliexpress.com/e/_c3fAwU4n
  10. 멀티미터: https://s.click.aliexpress.com/e/_c3PfXcr9
  11. 현미경: https://s.click.aliexpress.com/e/_c4su1Ycr





STEP 2. 시스템의 작동 원리


시스템의 작동 원리


BME680은 보쉬(Bosch)에서 개발한 복합 센서입니다. 이 작은 패키지 하나 안에 온도, 습도, 기압, 그리고 공기 중의 휘발성 유기 화합물(VOC)을 측정하는 기능이 담겨 있습니다. 다만, 휘발성 유기 화합물 측정 기능은 특정 가스를 식별하거나 농도 수치를 제공하지는 않습니다. 이 센서가 제공하는 것은 공기 질에 대한 전반적인 지표이며, 이는 특정 화학 물질을 찾아내는 것보다 방이나 보관 공간을 모니터링할 때 종종 정확히 필요한 정보입니다.

센서는 I2C를 통해 마이크로컨트롤러와 통신합니다. 이는 2선식 통신 프로토콜이므로, SCL이라는 클럭 라인과 SDA라는 데이터 라인, 그리고 전원 및 접지가 필요합니다. 총 4개의 연결이 필요합니다. 브레이크아웃 보드에는 실제로 6개의 핀이 있으며, 끝부분에 있는 두 개의 추가 핀은 SPI 모드와 칩 셀렉트용입니다. 이 핀들은 동일한 버스에서 여러 개의 센서를 구동할 때만 필요합니다. 센서가 하나뿐이라면 이 핀들은 무시해도 됩니다.

ESP32는 센서 데이터를 읽어들이고 이를 네트워크로 전송하는 역할을 담당합니다. 이를 위해 별도의 펌웨어를 작성하는 대신, 이미 BME680과 통신하는 방법과 측정값을 MQTT 브로커에 전송하는 방법을 알고 있는 Tasmota를 사용합니다.




STEP 3. ESP32에 Tasmota 플래시하기


ESP32에 Tasmota 플래시하기


USB 케이블로 ESP32를 컴퓨터에 연결한 다음, 브라우저에서 Tasmota 웹 설치 프로그램 페이지를 열어주세요. 펌웨어 업데이트는 전적으로 브라우저 내에서 이루어지므로, 컴퓨터에 별도로 설치할 것은 없습니다.

연결하기 전에 펌웨어 버전을 선택하세요. 이것이 이 페이지에서 가장 중요한 선택 사항입니다. BME680용 I2C 드라이버가 포함된 빌드인 ‘Tasmota Sensors’ 변형을 선택해야 합니다. 표준 Tasmota 빌드로 플래싱을 진행해도 센서가 인식되지 않습니다. 원한다면 특정 릴리스 버전을 선택할 수도 있지만, 기본값으로도 충분하며 플래싱 속도도 기본값으로 설정하면 됩니다.

‘연결’을 클릭하고, 보드가 표시된 COM 포트를 선택한 다음, 연결이 설정될 때까지 몇 초간 기다리세요. 그런 다음 장치를 초기화한 후 설치하도록 선택하세요. 먼저 초기화를 하면 완전히 깨끗한 상태에서 시작할 수 있으며, 나중에 혼란을 일으킬 수 있는 잔여 설정을 방지할 수 있습니다.

첫 번째 시도에서 ‘부트로더 모드로 진입할 수 없습니다’라는 메시지가 표시되며 실패할 가능성이 높습니다. 이는 ESP32 보드에서 매우 흔한 현상이며, 보드가 고장난 것은 아닙니다. 일부 보드는 USB를 통해 칩을 플래싱 모드로 자동으로 전환하지 못할 수 있습니다.

이 문제를 해결하는 데 10초 정도 걸립니다. 설치 프로그램에서 포트를 분리했다가, 다시 연결할 때 ESP32의 부팅 버튼을 길게 누르세요. 이 버튼을 길게 누르면 칩이 수동으로 부트로더 모드로 전환됩니다. 포트를 다시 선택한 후, 지우기 및 설치 과정을 한 번 더 실행하세요. 이번에는 지우기 모드로 전환된 후 펌웨어 쓰기가 시작되는 것을 확인할 수 있을 것입니다.

전체 설치에는 사용 중인 메인보드와 컴퓨터 사양에 따라 몇 분 정도 걸리므로, 설치가 완료될 때까지 건드리지 마세요.




STEP 4. 보드를 Wi-Fi에 연결하세요


보드를 Wi-Fi에 연결하세요


보드를 Wi-Fi에 연결하세요


갓 펌웨어를 업데이트한 보드에는 Wi-Fi 접속 정보가 없기 때문에 아직 네트워크에 연결할 수 없습니다. 설치 프로그램에서는 설치가 완료되는 즉시 이를 대신 설정해 주겠다고 제안하는데, 이것이 가장 쉬운 방법입니다. 목록에서 네트워크를 선택하고, 비밀번호를 입력한 다음 연결하세요.

잠시 기다리면 기기가 네트워크에 연결되고 ‘기기 방문’ 버튼이 나타납니다. 이 버튼을 클릭하면 이제 보드 자체에서 실행 중인 Tasmota 웹 인터페이스가 열립니다. 이 단계부터는 모든 작업이 해당 인터페이스에서 이루어지므로, 주소를 즐겨찾기에 추가해 두는 것이 좋습니다.




STEP 5. 센서를 보드에 연결하세요


센서를 보드에 연결하세요


배선을 시작하기 전에 USB에서 보드를 분리하십시오. 센서 브레이크아웃과 ESP32 모두 수형 핀을 가지고 있으므로, 암-암 듀퐁 케이블을 사용하면 납땜 없이도 두 장치를 직접 연결할 수 있습니다.

먼저 전원을 연결하세요. 센서의 VCC 핀은 ESP32의 3.3V 핀에 연결하고, 센서의 접지 핀은 보드의 임의의 접지 핀에 연결하세요. 이 센서 브레이크아웃은 3.3V용으로 설계되었으므로 5V 핀은 사용하지 마세요.

다음은 두 개의 통신 선입니다. 센서의 SCL은 클럭 라인으로, ESP32의 D22 핀에 연결됩니다. 센서의 SDA는 데이터 라인으로, D21 핀에 연결됩니다. 이 핀들은 대부분의 ESP32 보드에서 표준으로 사용되는 I2C 핀이며, 안정적으로 작동합니다.

이것으로 네 가닥의 선이 모두 연결되었습니다. 색상을 일관되게 사용하면 나중에 작업 결과를 확인하기가 훨씬 쉬워지므로, 저는 갈색을 접지, 빨간색을 3.3V, 노란색을 SCL, 주황색을 SDA로 지정해 둡니다.




STEP 6. Tasmota에서 GPIO 핀 구성하기


Tasmota에서 GPIO 핀 구성하기


Tasmota는 사용자가 어떤 배선을 했는지 자동으로 파악하지 않으므로, 직접 설정해 주어야 합니다. 보드의 전원을 다시 켠 다음, 웹 인터페이스를 열고 ‘구성(Configuration)’으로 이동한 후 ‘모듈 구성(Configure Module)’을 선택하세요.

해당 페이지에는 보드에서 사용할 수 있는 핀들이 나열되어 있으며, 각 핀 옆에는 드롭다운 메뉴가 있습니다. 보드에 인쇄된 D21 및 D22 라벨은 펌웨어의 GPIO 21 및 GPIO 22에 해당합니다. GPIO 21을 I2C SDA로, GPIO 22를 I2C SCL로 설정한 후 저장하십시오.

저장하는 즉시 기기가 재시작됩니다. 기기가 다시 시작되면 메인 화면에 센서 측정값이 표시될 것입니다.




STEP 7. 직접 해보세요


직접 해보세요


재시작 후, Tasmota 인터페이스의 메인 페이지를 확인해 보세요. 측정값이 한 블록으로 표시되는 것을 확인할 수 있습니다: 섭씨 단위의 온도, 백분율로 표시된 상대 습도, 이슬점, 그리고 hPa 단위의 기압입니다. 제가 처음 이 장치를 작동시켰을 때, 29.8도, 37.7%의 습도, 13.7도의 이슬점, 그리고 942 hPa가 표시되었습니다.

아무런 반응이 없다면, 가장 유력한 원인은 보드의 전원이 켜진 상태에서 센서를 연결했기 때문일 것입니다. Tasmota는 부팅 시 I2C 버스를 스캔하므로, 그 순간 연결되어 있지 않았던 센서는 절대 감지되지 않습니다. USB 케이블을 뽑았다가 다시 꽂아 전원을 재시작하면 측정값이 표시될 것입니다. 저도 처음에 이 문제로 곤란을 겪었는데, 해결 방법은 정말 이토록 간단합니다.




STEP 8. MQTT를 통해 데이터 전송하기


MQTT를 통해 데이터 전송하기


MQTT를 통해 데이터 전송하기


로컬 웹 페이지에서 표시되는 측정값은 브라우저가 실행 중인 상태에서 동일한 네트워크에 연결되어 있을 때만 유용합니다. 이를 진정한 의미의 모니터링 시스템으로 만들기 위해서는 데이터가 중앙 서버로 전송되어야 하며, MQTT가 바로 이를 가능하게 합니다. MQTT는 기기가 측정값을 브로커에 게시하면 다른 어떤 장치든 이를 구독할 수 있는 경량 메시징 프로토콜입니다.

Tasmota 인터페이스에서 ‘구성(Configuration)’으로 이동한 다음 ‘MQTT 구성(Configure MQTT)’을 선택하세요. 사용 중인 MQTT 제공업체의 호스트, 포트, 사용자 이름, 비밀번호 및 토픽 정보를 입력하세요. 이 값들은 브로커마다 다르므로, 해당 제공업체의 설정 페이지에서 확인하여 입력하세요. Home Assistant를 사용 중이라면 Home Assistant 브로커를 지정하세요. 저는 제 브로커를 다음과 같이 지정했습니다. ding.mk 그리고 해당 수치는 몇 초 만에 모바일 앱과 웹 대시보드에 표시되었습니다.

주의해야 할 점 중 하나는 업데이트 간격입니다. Tasmota는 타이머에 따라 데이터를 전송하며, 기본값은 5분마다 한 번입니다. 저는 이 설정을 10초마다 한 번으로 변경했기 때문에, 측정값이 변경된 시점과 대시보드에 표시되는 시점 사이에 약간의 지연이 발생합니다. 값이 변하는 즉시 업데이트를 전송하도록 기기 규칙을 추가할 수도 있지만, 일반적인 환경 모니터링의 경우 10초면 충분합니다.




STEP 9. 그것을 케이스에 넣어주세요


그것을 케이스에 넣어주세요


그것을 케이스에 넣어주세요


그것을 케이스에 넣어주세요


그것을 케이스에 넣어주세요


마지막 단계는 케이스 조립입니다. 전기 박스 측면에 USB 케이블이 통과할 수 있을 만큼의 크기로 구멍을 뚫고, 센서를 넣을 수 있도록 그보다 작은 구멍을 하나 더 뚫으세요. USB 케이블을 분리한 뒤, 먼저 케이블을 구멍에 통과시킨 다음 보드에 다시 연결하고, 보드를 박스 안에 넣으세요.

여기 중요한 사항이 있습니다. 센서를 상자 안에 밀폐하지 마십시오. ESP32는 소량의 열을 발생시키는데, 밀폐된 플라스틱 케이스 안에서는 그 열이 빠져나갈 곳이 없어, 결국 센서가 실내 온도가 아닌 상자 내부의 온도를 측정하게 됩니다. 원래는 구멍을 통한 공기 흐름에 의존할 계획이었으나, 레이아웃을 보고 나서 생각을 바꿨습니다. 센서의 끝부분이 상자 벽을 뚫고 밖으로 나오도록 배치하십시오. 그렇게 하면 실제 외부 공기를 측정할 수 있으며, 내부에 쌓이는 열은 측정 결과에 영향을 미치지 않습니다.

상자를 닫고 웹 인터페이스를 한 번 더 확인하여 측정값이 여전히 업데이트되고 있는지 확인하십시오. 그러면 필요한 곳에 설치할 준비가 완료됩니다.




STEP 10. 결론


결론


전선이 4개뿐이고 코딩이 필요 없는 프로젝트 치고는 이 정도면 꽤 많은 기능을 제공합니다. BME680 하나만으로도 온도, 습도, 기압, 공기질을 측정할 수 있으며, Tasmota를 사용하면 평범한 ESP32를 웹 인터페이스와 MQTT 전송 기능이 내장된 네트워크 센서 노드로 변환할 수 있습니다. 부팅 버튼 활용법과 배선 후 전원 재시작 요령만 알면 전체 제작 시간은 1시간도 채 걸리지 않습니다.

여기에는 더 발전시킬 여지가 충분합니다. 값이 변경되면 업데이트가 즉시 게시되도록 Tasmota 규칙을 추가하거나, 건물 주변에 여러 대의 기기를 배치하고 주제별로 구분할 수도 있으며, 데이터를 Home Assistant에 전송하여 선풍기, 히터 또는 알림을 자동으로 작동시킬 수도 있습니다.

이와 같은 빌드를 더 보고 싶으시다면, 다음을 팔로우해 주세요. Taste The Code 유튜브 채널.


원문: https://www.instructables.com/Building-a-WiFi-Air-Quality-Monitor-With-MQTT-and-/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.