ESP8266과 릴레이 사용하여 전구 점등

 아두이노를 다룰때 아두이노에 ESP8266을 장착하여 와이파이로 앱인벤터와 스마트폰으로 대상과 통신을 하는 방법은 예정에도 다루어 보았었다.

 이번에는 아두이노가 아닌 ESP8266에 코드를 직접올려, 부트로더를 하여 아두이노를 통하는게 아닌 ESP8266과 직접적으로 통신을 사용했다.

➤필요 물품
ESP8266

릴레이

USB

➤코드
#include <ESP8266WiFi.h>

const char* ssid = "AR403";
const char* password = "itedu203";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(9600);
  delay(10);

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

////////////
  WiFi.mode(WIFI_STA);//ESP8266WiFilType.h에 존재
////////////
  IPAddress ip(192,168,0,17);//사용할 ip주소
  IPAddress gateway(192,168,0,1);//게이트웨이 주소
  IPAddress subnet(255,255,255,0);//서브넷 주소
  WiFi.config(ip,gateway,subnet);
////////////
  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.println(WiFi.localIP());
}

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 req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // Match the request
  int val;
  if (req.indexOf("/Relay=0") != -1) {
    val = 0;
  } else if (req.indexOf("/Relay=1") != -1) {
    val = 1;
  } else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);

  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val) ? "high" : "low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}

ESP8266을 다시 켰을때 ip주소가 동일하게 하기 위한 코드도 작성하였다.
➤작동 사진

댓글

이 블로그의 인기 게시물

python 에서 resize 이벤트 만들기

PLC와 아두이노 그리고 온도 센서를 이용하여 램프 점등

C언어로 로또 프로그램 만들기