Arduino

Wifi 스마트 콘센트 1

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

뭔가 재밌는걸 하자고 마련한 아두이노를 방치만 하고 있다가, 무선형 스마트콘센트라도 만들자는 생각에 다시 개발툴을 열었다.


구상은 간단하다.

그리고 후딱 만들었다.

1. 굴러다니는 콘센트 하나를 분해해서 선을 두개 뽑는다.

2. 역시 굴러다니는 릴레이(사실은 여분으로 구매해둔...)에 연결한다.

3. 아두이노 GPIO와 VCC, GND를 각각 연결한다.

4. LED 켜고 끄기 샘플 코드를 살짝 수정한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <ESP8266WiFi.h>
 
const char* ssid = "MAP11N";
const char* password = "1234567890";
 
WiFiServer server(80);
const int SWITCH = 4;
 
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  //pinMode(LED_BUILTIN, OUTPUT);
  pinMode(SWITCH, OUTPUT);
  
  Serial.begin(115200);
  delay(10);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
// the loop function runs over and over again forever
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  int value = LOW;
  if (request.indexOf("/LED=ON"!= -1)  {
    digitalWrite(SWITCH, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF"!= -1)  {
    digitalWrite(SWITCH, LOW);
    value = LOW;
  }
 
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Led pin is now: ");
 
  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
}
cs

5. 굽는다.


6. 시험한다.


기본은 됐고, 응용이 필요하다.


728x90

'Arduino' 카테고리의 다른 글

Wifi 스마트 콘센트 4 + 터치센서  (0) 2017.12.12
Wifi 스마트 콘센트 3 + 앱 위젯  (0) 2017.12.10
Wifi 스마트 콘센트 2 + 라즈베리파이  (2) 2017.12.09
로봇 청소기 분해하기  (7) 2017.06.25
NodeMCU 환경구성  (0) 2017.05.15