---
title: "Wi-Fi 통신을 사용하여 도어 알리미 구현해보기"
url: "https://maker.wiznet.io/WIZnet/projects/wi-fi-%ED%86%B5%EC%8B%A0%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EB%8F%84%EC%96%B4-%EC%95%8C%EB%A6%AC%EB%AF%B8-%EA%B5%AC%ED%98%84%ED%95%B4%EB%B3%B4%EA%B8%B0/"
markdown_url: "https://maker.wiznet.io/WIZnet/projects/wi-fi-%ED%86%B5%EC%8B%A0%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EB%8F%84%EC%96%B4-%EC%95%8C%EB%A6%AC%EB%AF%B8-%EA%B5%AC%ED%98%84%ED%95%B4%EB%B3%B4%EA%B8%B0/md"
type: "UCC: User Created Content"
author: "코코아팹 kocoafab"
author_url: "https://kocoafab.cc/make/view/692"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "코코아팹 kocoafab"
original_url: "https://kocoafab.cc/make/view/692"
published: "2023-05-31"
language: "ko"
likes: 0
views: 135
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Wi-Fi 통신을 사용하여 도어 알리미 구현해보기

> Wi-Fi 통신을 사용하여 도어 알리미 구현해보기

Original author: 코코아팹 kocoafab (source: https://kocoafab.cc/make/view/692)

## Article

## 개요

이번에 소개할 프로젝트는 WiFi를 이용한 프로젝트로 실생활에 사용할 수 있는 프로젝트 입니다.

내가 집을 비운사이에 집 안의 현관문이 열려있을 경우! 도둑이나 모르는 사람이 들어올 수 있습니다.

특히 혼자사는 집일 경우 이런 보안에 상당히 민감하죠. 여자일 경우에는 더더욱!!

![](http://kocoafab.cc/data/201611021115098435.jpg)

그래서 이번 **프로젝트에서는 값싼 아두이노를 사용하여 10만원 미만의 금액으로 집안의 보안시스템을 구현해보았습니다.**

WiFi통신을 사용하기 떄문에 현관문이나 집안 창문이 열릴 경우 내가 어디에 있든지 스마트폰을 통해 언제든지 푸시 알람으로 경고 메시지를 알려줍니다.

부품도 정말 간단하기 때문에 쉽게 따라할 수 있습니다. 또 블루투스와 달리 안드로이드와 아이폰 모두 사용이 가능합니다.

## 동영상

## 부품 목록

| NO | 부품명 | 수량 | 상세설명 |
| --- | --- | --- | --- |
| 1 | OrangeBoard WiFi | 1 | WizFi250라이브러리 사용 |
| 2 | 마그네틱 도어 센서 | 1 |  |

| 부품명 | OrangeBoard WiFi | 마그네틱 도어 센서 |
| --- | --- | --- |
| 파트 | ![](http://kocoafab.cc/data/201611021131469874.png) | ![](http://kocoafab.cc/data/201611021130225372.jpg) |

## 하드웨어 making

하드웨어 연결의 경우 마그네틱 도어센서를 연결하는 것이 끝이기 때문에 아래 링크의 설명을 참조하였습니다.

**아두이노 마그네틱 도어 센서 사용하기 – **<http://kocoafab.cc/tutorial/view/509>

마그네틱 도어 센서의 경우에는 원래 N.O거나 N.C 둘중에 하나의 성격을 띄고 있습니다.

하지만 이번에 코코아팹에서 사용한 마그네틱 도어 센서의 경우에는 N.O와 N.C 둘 다 가지고 있어 선택형이기 때문에 선이 3개가 있습니다.

![](http://kocoafab.cc/data/201508111636452149.JPG)

이 제품 구매 사이트를 가보면 알겠지만 설명에는 노란색(Yellow)선을 공통으로 사용한다고 알려주고 있습니다.

그렇기 때문에 노란색선은 GND와 연결해주시면 됩니다.

그럼 나머지 보라색선과 회색선은 둘 중 하나만 선택해서 사용하면 됩니다.

(저도 사용하기 전까지는 어떤 선이 N.O이고 어떤 선이 N.C인지 알 수 없었습니다.)

보라색선과 회색선 둘 중 하나는 아두이노의 디지털 입출력핀(아래 소스에서는 디지털 8번 핀)에 연결 해 주시면 됩니다.

| 케이블 | 역할 |
| --- | --- |
| 노란색 선 | GND |
| 회색 선 | N.C(Normal Close) |
| 보라색 | N.O(Normal Open) |

## 시스템 구현하기

WiFi통신으로 스마트폰 푸시 알람을 울리게 하기 위해서는 아래 2개의 사이트의 도움을 받아야 합니다.

두 개의 사이트를 모두 사용하는 것이 불편할 수도 있으나 사용 방법은 크게 어렵지는 않습니다.

| pushbullet | <https://www.pushbullet.com/> |
| --- | --- |
| pushingbox | [https://www.pushingbox.com/](http://https//www.pushingbox.com/) |

첫 번째로 소개할 **pushbullet**사이트는 이름에서 Push라는 말이 있듯이 컴퓨터와 스마트폰을 연결하여 스마트폰에서 푸시 알람이 울릴 수 있도록 도와줍니다.

카카오톡을 생각하면 생각이 쉬울거라 생각합니다. 컴퓨터에서 카톡을 사용하면 실시간으로 스마트폰과 연동되어 데이터가 전달되는 방식입니다.

이 사이트의 장점은 안드로이드 외에 아이폰도 사용이 가능하다는 점이 장점입니다.

![](http://kocoafab.cc/data/201611021140541024.jpg)

두 번째로 소개하는 사이트는** pushingbox**로 특정 조건이 발생하면 특정 행동을 하는 (IF~ THEN~) 사이트 입니다.

한 번쯤은 들어보았을 IFTTT와 비슷한 기능을 합니다.

여기서는 그런 레시피를 시나리오라고 하는거 같습니다. 예를 들어 ‘현재 온도가 영하로 떨어지면 메일로 알려준다’ 이런 시나리오를 작성할 수 있습니다.

![](http://kocoafab.cc/data/201611021144249990.jpg)

## 1. Pushbullet사용하기

pushbullet은 별도의 회원가입 필요없이 Google아이디나 페이스북아이디로 사용합니다.

Google이나 페이스북 아이디가 있다면 오른쪽 상단의 **Sign In**을 통해 로그인할 수 있습니다.

![](http://kocoafab.cc/data/201611021332474035.jpg)

로그인했을 때의 메인 사진입니다.

**Setup**에서는 pushbullet을 사용하는 방법에 대해 단계별로 알려주고 있습니다.

![](http://kocoafab.cc/data/201611021336004463.jpg)

Device를 클릭하면 현재 계정과 연결된 디바이스를 확인할 수 있습니다.

현재는 사이트 로그인 외에 어떠한 작업도 한것이 없기 때문에 연결된 디바이스가 없습니다.

![](http://kocoafab.cc/data/201611021346320904.jpg)

이제 스마트폰으로 와서 어플을 받아야 합니다.

앱스토어나 플레이스토어에서 Pushbullet을 다운받습니다.

![](http://kocoafab.cc/data/201611021403249670.jpg)

Pushbullet 어플을 받으면 실행시키고 역시 로그인을 합니다.

저 같은 경우는 컴퓨터와 마찬가지로 Google아이디로 로그인하였습니다.

![](http://kocoafab.cc/data/201611021404352385.jpg)

어플을 실행시킨 뒤 로그인을 하면 아래와 같은 창이 뜨게됩니다.

![](http://kocoafab.cc/data/201611021405442327.jpg)

앱 설치가 끝난다음 컴퓨터로 돌아오면 아래 사진과 같이 Device목록에 설치한 어플의 스마트폰이 나타납니다.

연결된 목록 밑으로 Chrome도 보이는데 Chrome에도 확장프로그램으로 Pushbullet을 설치할 수 있습니다.

![](http://kocoafab.cc/data/201611021430463755.jpg)

오른쪽 채팅창에 아무런 값이나 입력했을 때 실제 스마트폰으로 푸시알람이 울리며 전달된다면 정상로 세팅이 된 것입니다.

![](http://kocoafab.cc/data/201611021454366338.jpg)

## 2. Pushingbox 사용하기

pushingbox역시 pushbullet과 마찬가지로 Google계정으로 로그인할 수 있습니다.

![](http://kocoafab.cc/data/201611021456351873.jpg)

로그인 뒤에 **My Services**를 클릭하여 **Add a service**를 클릭합니다.

![](http://kocoafab.cc/data/201611021459209717.jpg)

**Add a service**를 클릭하면 서비스가 가능한 목록이 쭉 뜨는데 그 중에서 **Pushbullet**을 선택합니다.

![](http://kocoafab.cc/data/201611021500500134.jpg)

Pushbullet을 선택하면 아래와 같은 창이 뜨는데 **Name**은 임의로 적고,

중요한 것이** Access token**이라는 것이 있습니다. 그 값은 Pushbullet으로 돌아와 My account에서 Access token값을 구해서 적습니다.

![](http://kocoafab.cc/data/201611021505265163.jpg)

![](http://kocoafab.cc/data/201611021509555272.jpg)

**My Scenarios**에서는 시나리오를 추가할 수 있습니다.

시나리오 이름을 적고 Add를 클릭하여 시나리오를 추가합니다.

![](http://kocoafab.cc/data/201611021511415047.jpg)​

**Add an Action** 클릭

![](http://kocoafab.cc/data/201611021513241283.jpg)

Pushbullet을 사용하니까 Pushbullet을 추가합니다.

![](http://kocoafab.cc/data/201611021514459940.jpg)​

보낼 메시지의 제목과 내용을 적을 수 있습니다. 임의대로 적은 후** Submit**을 클릭합니다.

![](http://kocoafab.cc/data/201611021516583782.jpg)​

메시지 내용을 다 적고 나면 아래와 같은 페이지가 뜨는데 Test Scenario를 눌러 테스트를 해볼 수도 있습니다.

아래 조그맣게 적힌 **DeviceID**를 복사합니다. **DeviceID**는 코드상에서 이 시나리오를 사용하기 위해 필요합니다.

**Test Scenario**를 클릭했을 때 잘 동작했다면 이제 준비는 끝났습니다.

스크롤의 압박이 있지만 사실 위 과정은 대부분은 5~10분 사이에 끝나는 간단한 작업입니다.

사실 세세하게 사진을 찍어서 그렇지 중간중간 비웠다면 분량이 얼마 되지 않았을거 같네요 ![🙂](https://s.w.org/images/core/emoji/11.2.0/svg/1f642.svg)

아래 사진은 문이 열리고 닫히는 것을 확인하기 위해 우드락으로 급하게 문을 제작하였습니다.

문에 보시면 마그네틱 도어 센서가 붙어 있는 것을 볼 수 있습니다.

마그네틱 도어센서를 사용하여 문이 열렸는지 닫혔는지를 감지하여 상태에 따라 스마트폰으로 메시지를 보낼 계획입니다.

![](http://kocoafab.cc/data/201611021529012370.jpg)

## 소프트웨어 coding

WiFi보드에서는 마그네틱도어센서로 현재 문이 닫혔는지 열렸는지 판단합니다.

상태값은 아래와 같습니다.

| 상태 | 상태값 |
| --- | --- |
| 문이 열려 있을 때 | 1 |
| 문이 닫혀 있을 때 | 0 |

코드상에서는 5초 간격으로 현재 문의 상태를 파악합니다. 이 간격은 상수로 지정되어 있기 때문에 사용자가 임의로 수정이 가능합니다.

5초 간격으로 문의 상태를 파악하여 열려있을 경우 **httpRequest()**를 실행시킵니다.

```cpp
const unsigned long postingInterval = 5000L; // delay between updates, in milliseconds

  if (millis() - lastConnectionTime > postingInterval) {
    if (digitalRead(8)) {
      httpRequest();
    }
  }
```

pushingbox로 보내는 요청문(httpRequest())은 아래와 같습니다.

![](http://kocoafab.cc/data/201611041437387486.jpg)

요청문을 보낼 때 deviceID가 필요한데, ID값은 MyScenario에서 확인할 수 있습니다.

```plaintext
    client.print(F("GET /pushingbox?devid="));
    client.print(DEVICEID);
    client.print(F(" HTTP/1.1\r\n"));
    client.print(F("Host: api.pushingbox.com\r\n"));
    client.print(F("User-Agent: Arduino\r\n"));
    client.print(F("\r\n\r\n"));
```

![](http://kocoafab.cc/data/201611021521125274.jpg)

---

Source: https://maker.wiznet.io/WIZnet/projects/wi-fi-%ED%86%B5%EC%8B%A0%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EB%8F%84%EC%96%B4-%EC%95%8C%EB%A6%AC%EB%AF%B8-%EA%B5%AC%ED%98%84%ED%95%B4%EB%B3%B4%EA%B8%B0/
