메뉴 닫기

[아두이노] 무선으로 LED 제어(ESP8266)

ESP8266 (Wifi 모듈) 을 이용하여, 무선으로 LED를 제어해보겠습니다.

제가 이 제품을 구매한게, 1년 반쯤전인데 그떄만하더라도 자료가 얼마없고, 국내쇼핑물에서 사면 원가에 비해 가격도 꽤나 비쌌습니다.

(요즘은 114번에서 5000원 정도 하더군요.ㅠ)

뭐 암튼 구매후에 잠깐 장남감으로 썼던 그놈을 이용해 무선으로 LED를 제어해보겠습니다.

 

 

저처럼 5V 보드를 가지고 계신다면. 위처럼 연결하시면 둘중 한놈이 망가질수도 있습니다… (어떤분은 시리얼이 오가지 않는다고 하네요.)

안전한걸 좋아하시는 분은 아래처럼 연결해주세요!

 

 

 

 

(저는 스텝다운 IC 없어서 스릴넘치게 Rx,Tx 를 5V로 주고받겠습니다.)

(가끔 ESP8266 이 알수없는 이유로 다운되길래 680uF 짜리 콘덴서를 하나 붙여주니까 잘되네요. 아마 전력부족일것 같습니다.)

아두이노에는 아래와 같이 코드를 작성해주세요!

 

 

 

 

 

 

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

 

#include<SoftwareSerial.h>
 
SoftwareSerial ESP_Serial(23); // RX, TX
 
 
void setup()
{
  pinMode(13, OUTPUT);
 
  Serial.begin(19200);
 
  ESP_Serial.begin(9600);
  delay(1000);
 
  ESP_Serial.println("AT");
 
  delay(1000);
  while (ESP_Serial.available())
    Serial.write(ESP_Serial.read());
  Serial.println("===== Ready");
 
  ESP_Serial.println("AT+CWMODE=1");
  delay(1500);
 
  while (ESP_Serial.available())
    Serial.write(ESP_Serial.read());
 
  ESP_Serial.println("AT+CWJAP=\"Your_AP\",\"PW\"");
 
  while (!ESP_Serial.find("OK"))
    delay(300);
 
  while (ESP_Serial.available())
    Serial.write(ESP_Serial.read());
 
  Serial.println("===== Connected!");
 
  ESP_Serial.println("AT+CIFSR");
 
  delay(1000);
 
  while (ESP_Serial.available())
    Serial.write(ESP_Serial.read());
 
  Serial.println();
 
  ESP_Serial.println("AT+CIPMUX=1");
  delay(1000);
 
  while (ESP_Serial.available())
    Serial.write(ESP_Serial.read());
 
  ESP_Serial.println("AT+CIPSERVER=1,80");
  delay(1000);
 
  while (ESP_Serial.available())
    Serial.write(ESP_Serial.read());
 
}
 
void loop()
{
 
  if (ESP_Serial.available())
  {
    Serial.println("Serial Enable __!__ ");
    if (ESP_Serial.find("+IPD,"))
    {
      Serial.println("Message Get!");
      delay(1000);
      int connectionId = ESP_Serial.read()  48;
 
      ESP_Serial.find("pin=");
      int pinNumber = (ESP_Serial.read()  48* 10;
      pinNumber += (ESP_Serial.read()  48);
 
      Serial.print("pin :");
      Serial.println(pinNumber);
 
      digitalWrite(pinNumber, !digitalRead(pinNumber));
 
      String closeCommand = "AT+CIPCLOSE=";
      closeCommand += connectionId;
      ESP_Serial.println(closeCommand);
      delay(1000);
    }
  }
 
}
 
 

 

cs

 

자! 이제 위 코드가 올라가있는 아두이노를 제어해야하는데요~!

간단하게 웹 프로그래밍을 해봅시다.

 

 

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

 

<!DOCTYPE html>
<html>
<head>
<title>ESP8266</title>
</head>
<body>
<script src="jquery.min.js">
</script> 
<script type="text/javascript">
      function pad(n, width)
      {
        n = n + '';
        return n.length >= width ? n : new Array(width  n.length + 1).join('0'+ n;
      }
    document.write("<select name=\"led\" id=\"led\">\n");
    for(i=1;i<=13;i++)
      document.write("<option value=\"" + pad(i.toString(),2+ "\">" + pad(i.toString(),2+ "<\/option>\n");
    document.write(" <\/select>\n");
</script>
<input type="button" name="btn" id="btn1" value="Send"> 
<script type="text/javascript">
  $(document).ready(function()
  {
   $("#btn1").click(function()
   {
    var p = $("#led option").index($("#led option:selected")) + 1;
    $.get("http://172.30.1.51:80/", {pin:p});
   });
  });
</script>
</body>
</html>
 
 

 

cs

 

<시연>

(폰과 컴퓨터를 모비즌으로 연결하고, 폰과 디카를 와이파이로 연결하는 뻘짓을하여 찍었습니다.)

댓글 남기기

이메일은 공개되지 않습니다.