카테고리 없음

와이파이 없이 기기끼리 통신? ESP-NOW로 나만의 오프라인 스마트홈 센서 네트워크 만드는 법

allin7 2025. 10. 29. 10:31
728x90
반응형

스마트홈, 정말 편리하죠. 말 한마디로 조명을 켜고, 스마트폰으로 집안 온도를 조절하고. 하지만 치명적인 단점이 하나 있습니다. 바로 '인터넷'이 끊기는 순간, 똑똑하던 기기들이 전부 먹통이 된다는 사실이죠. 공유기가 말썽을 부리거나 통신사 장애가 생기면 애써 구축한 스마트홈은 그저 장식품이 되어버립니다.

 

만약 기기들이 와이파이나 인터넷 없이 서로 직접 대화할 수 있다면 어떨까요? 마치 우리끼리 워키토키로 대화하듯 말이죠. 이런 상상을 현실로 만들어주는 마법 같은 기술이 바로 ESP-NOW입니다. 오늘은 이 ESP-NOW를 이용해 인터넷이 끊겨도 끄떡없는, 나만의 오프라인 센서 네트워크를 만드는 방법을 쉽고 재미있게 알려드릴게요.

 

### 그래서, ESP-NOW가 정확히 뭔가요?

 

ESP-NOW는 ESP32나 ESP8266 같은 저렴하고 인기 있는 마이크로컨트롤러를 만든 Espressif사에서 제공하는 특별한 통신 프로토콜입니다. 와이파이 공유기(AP)에 연결하는 복잡한 과정 없이, 기기끼리 1:1 또는 1:N으로 직접 데이터를 주고받을 수 있게 해줍니다.

 

쉽게 말해, 와이파이라는 거대한 파티장에 들어가서 사람들과 이야기하는 게 아니라, 친구와 둘이서만 알아들을 수 있는 비밀 귓속말을 나누는 것과 같아요. 덕분에 연결 속도가 매우 빠르고, 전력 소모도 적어서 배터리로 동작하는 센서를 만들기에 안성맞춤입니다.

 

### 어떤 상황에 ESP-NOW를 사용하면 좋을까요?

 

* 와이파이 신호가 약한 곳: 마당 텃밭의 토양 습도 센서나 주차장의 차량 감지 센서처럼 공유기 신호가 닿기 어려운 곳에 딱입니다.

* 즉각적인 반응이 필요할 때: 인터넷을 거치지 않기 때문에 지연 시간이 거의 없습니다. 현관문 센서가 열림을 감지하자마자 0.1초 만에 거실 조명이 켜지게 만들 수 있죠.

* 독립적이고 안전한 네트워크: 외부 인터넷과 완전히 분리된 우리 집만의 네트워크를 만들 수 있습니다. 보안이 중요한 아기방 모니터링 시스템 등에 활용하기 좋습니다.

 

### 실전! ESP-NOW로 간단한 버튼-LED 네트워크 만들어보기

 

백문이 불여일견이죠. 이제 직접 ESP-NOW를 사용해 버튼을 누르면 다른 보드에 연결된 LED가 켜지는 간단한 프로젝트를 만들어 보겠습니다. 코딩을 전혀 몰라도 따라 할 수 있도록 차근차근 설명해 드릴게요.

 

1단계: 준비물 챙기기

 

* ESP32 또는 ESP8266 보드 2개

* PC에 설치된 아두이노 IDE

* 버튼 1개, LED 1개, 저항, 브레드보드와 전선 약간

 

2단계: 기기의 '주소' 확인하기

 

사람에게 주민등록번호가 있듯, 모든 통신 기기에는 'MAC 주소'라는 고유한 주소가 있습니다. ESP-NOW 통신은 바로 이 MAC 주소를 이용해 데이터를 보낼 상대를 정확히 찾아냅니다. 먼저 데이터를 받을 수신기 보드의 MAC 주소를 알아내야 합니다.

 

아두이노 IDE에서 간단한 코드를 업로드하면 시리얼 모니터 창에 내 보드의 MAC 주소가 나타납니다. 이 주소를 메모장에 잘 복사해두세요. 이게 바로 '편지를 보낼 주소'가 됩니다.

 

3단계: 송신기(버튼) 코드 작성하기

 

이제 버튼이 연결된 '송신기' 보드에 코드를 업로드할 차례입니다. 코드의 핵심 로직은 아주 간단합니다.

 

1. ESP-NOW를 초기화합니다.

2. 데이터를 보낼 상대방(수신기)의 MAC 주소를 등록합니다. (아까 메모해 둔 주소!)

3. 버튼이 눌리는지 계속 확인합니다.

4. 버튼이 눌리면, "ON"이라는 메시지를 담아 수신기로 전송합니다.

 

코드는 복잡해 보이지만, 핵심은 `esp_now_send()`라는 함수 하나입니다. "이 주소로, 이 데이터를 보내줘!"라고 명령하는 역할이죠.

 

4단계: 수신기(LED) 코드 작성하기

 

마지막으로 LED가 연결된 '수신기' 보드에 코드를 업로드합니다. 수신기의 로직은 더 간단합니다.

 

1. ESP-NOW를 초기화합니다.

2. 데이터가 도착하기를 계속 기다립니다.

3. 송신기로부터 데이터가 도착하면, 특정 함수(콜백 함수)를 실행합니다.

4. 도착한 데이터가 "ON"이면, LED를 켭니다.

 

수신기의 핵심은 `esp_now_register_recv_cb()` 함수입니다. 우편배달부가 편지를 가져다주면 자동으로 편지를 열어보는 로봇을 설정해두는 것과 같아요.

 

이렇게 두 보드에 각각 코드를 업로드하고 전원을 연결하면, 와이파이 공유기가 꺼져 있어도, 심지어 인터넷 선이 뽑혀 있어도 버튼을 누르는 즉시 LED가 반짝이는 마법을 경험할 수 있습니다.

 

### 더 똑똑한 오프라인 스마트홈을 위한 팁

 

ESP-NOW의 세계는 생각보다 훨씬 넓고 깊습니다. 오늘 만든 간단한 예제를 시작으로 여러분의 상상력을 더해보세요.

 

* 전력 효율 높이기: 데이터를 보낸 후에는 '딥 슬립(Deep Sleep)' 모드로 진입시켜 배터리 소모를 최소화할 수 있습니다. 몇 달 혹은 몇 년 동안 배터리 교체 없이 동작하는 센서를 만들 수 있죠.

* 데이터 암호화: ESP-NOW는 통신 내용을 암호화하는 기능도 지원합니다. 우리 집만의 비밀 통신을 더욱 안전하게 지킬 수 있습니다.

* 다양한 센서 활용: 버튼과 LED 대신, 온도/습도 센서, 먼지 센서, 적외선 인체 감지 센서 등 다양한 센서를 연결해 보세요. 인터넷 연결 없이도 스스로 동작하는 스마트 환기 시스템이나 침입 감지 시스템을 구축할 수 있습니다.

 

이제 인터넷 장애 걱정 없이 안정적으로 동작하는 나만의 스마트홈, 더 이상 꿈이 아닙니다. 저렴한 ESP 보드 몇 개와 약간의 호기심만 있다면 누구든 도전할 수 있습니다. 여러분만의 똑똑하고 독립적인 스마트홈 프로젝트를 지금 바로 시작해보는 건 어떨까요?

728x90
반응형