Arduino

Wifi 스마트 콘센트 4 + 터치센서

[혜안] 2017. 12. 12. 00:05
728x90

이번엔 lan plug에 붙어있던것과 동일하게, wifi plug에도 터치센서를 붙여보자.


스케치를 열고 nodeMCU 소스 수정...

GPIO 5번을 터치센서 입력으로 선택하고, 간단 코딩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  //pinMode(LED_BUILTIN, OUTPUT);
  pinMode(SWITCH, OUTPUT);
  pinMode(TOUCH, INPUT);
  
.....
 
void loop() {
 
  if(digitalRead(TOUCH) == HIGH) {
    Serial.println("Touched");     
    digitalWrite(SWITCH, !digitalRead(SWITCH));
    delay(500);
  }
 
.....
cs

단 몇줄로 터치할때마다 plug를 toggle하도록 구현완료.


그러나 역시, 한가지 문제점은...

현재의 plug 상태가 아두이노, 라즈베리파이, 스마트폰 앱 위젯에 동기화되어야 한다는 것...

즉, 아두이노의 터치센서가 터치될 때마다 상태를 능동적으로 라즈베리파이에 보내는 코드가 추가되어야 한다.


그래서 아래와 같이 소스 수정.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void connectToPi() {
  WiFiClient client;
  IPAddress pi(192,168,0,8);
  if(client.connect(pi, 80)) {
    Serial.println("connected to pi");
    if(digitalRead(SWITCH) == HIGH) {
      client.println("GET /wifiplugtouched?state=on HTTP/1.0");
    } else {
      client.println("GET /wifiplugtouched?state=off HTTP/1.0");
    }
    client.println();
  }
}
 
// the loop function runs over and over again forever
void loop() {
 
  if(digitalRead(TOUCH) == HIGH) {
    Serial.println("Touched");     
    digitalWrite(SWITCH, !digitalRead(SWITCH));
    connectToPi();
    delay(500);
  }
cs

현재 상태가 toggle 될때마다 라즈베리파이에 클라이언트로 붙어서 상태를 업데이트 한다.


당연히, 라즈베리파이에서도 수정이 필요하다.

node.js 웹서버 소스 수정..

1
2
3
4
5
6
7
8
app.get('/wifiplugtouched', function(req, res) {    
    l("wifiplug touched!! state: " + req.query.state);
    if(req.query.state == "on")
        wifiplug_state = true;
    else
        wifiplug_state = false;
    send_push();
});
cs

wifi plug가 업데이트되면, 각 스마트폰 앱에 push를 보낸다.


대략 완성!!

아래 화면에서 스텐드 두 개를 각각 아두이노와 라즈베리파이에 연결된 플러그에 꽂아놓았다.

그리고, 각 위젯 버튼을 클릭할때마다 스탠드 두 개가 각각 작동한다.

관전포인트 1. 앱 위젯 추가할때에 lan plug와 wifi plug 선택 장면

관전포인트 2. 앱 위젯 아이콘 구분 (둘다 있을때에 구분을 위해 wifi plug에는 wifi 아이콘모양을 추가했다)

관전포인트 3. 터치센서로 아두이노를 켜고 끌때에 앱 위젯의 상태 색이 회색-주황색으로 동기화되는 장면


★ 이해가 안되시는 부분은 지난 블로깅을 보시면 도움이 됩니다. 

2017/04/16 - [Raspberry pi] - 1편 스마트 콘센트? Smart Plug!

2017/04/16 - [Raspberry pi] - 2편 스마트 콘센트? Smart Plug!

2017/04/16 - [Raspberry pi] - 3편 스마트 콘센트? Smart Plug!

2017/04/18 - [Raspberry pi] - 4편 스마트 콘센트? Smart Plug! + 앱위젯

2017/04/19 - [Raspberry pi] - 5편 스마트 콘센트? Smart Plug! + 터치스위치

2017/04/25 - [Raspberry pi] - 6편 스마트 콘센트? Smart Plug! + Node.js Push 서버 (개요편)

2017/04/27 - [Raspberry pi] - 7편 스마트 콘센트? Smart Plug! + Node.js Push 서버 (Firebase 등록)

2017/05/03 - [Raspberry pi] - 8편 스마트 콘센트? Smart Plug! + Node.js Push 서버 (서버편)

2017/05/06 - [Raspberry pi] - 9편 스마트 콘센트? Smart Plug! + Node.js Push 서버 (App편)

2017/12/03 - [Arduino] - Wifi 스마트 콘센트 1

2017/12/09 - [Arduino] - Wifi 스마트 콘센트 2 + 라즈베리파이

2017/12/10 - [Arduino] - Wifi 스마트 콘센트 3 + 앱 위젯


728x90