본문 바로가기

Hardware/Arduino and Friends

WeMOS (ESP826) 보드 최초 접근 - 웹브라우저로 아두이노에 접근해 보기

아두이노에서 ESP8266이라는 아이를 이용해서 인터넷을 이용할 준비[바로가기]도 하고, 이를 이용해서 Blynk라는 아이를 이용해서 아두이노에 폰에서 와이파이로 아두이노에 접근[바로가기]하는 것도 했었습니다. 그 과정에서 살짝... ESP8266을 좀 더 테스트해볼 생각을 했는데요. 이번에는 아예 ESP8266을 탑재한 아두이노 호환보드인 WeMOS 보드를 사용해볼려고 합니다.

이렇게 생겼네요^^. 사실 이 보드는 최근 제가 자주 구매하는 메카솔루션[바로가기]에서 구매했는데요. 저는 WeMOS D1 R2 보드인줄 알았는데. 알고보니 R1이네요...ㅠㅠ. 뭐 그래도 상관없습니다. 잘 동작하더라구요^^

먼저 아두이노에서 이 보드를 사용하기 위해 Github에서 라이브러리 공식 페이지[바로가기]로 갑니다. 제가 왜 저가다 빨간 박스를 쳤을까요?ㅜㅜ. 빨간박스 위에 Boards manager link에 있는 주소를 긁어다 CTRL+C를 눌러줍니다^^

그리고, 아두이노 IDE의 Preferences를 눌러서 아까 주소를 붙여 넣습니다. 저는 OpenCR보드[바로가기]도 추가해서 두 줄이네요^^

그리고 보드매니저를 열어서 eps8266으로 검색해서 설치해 줍니다.

이제... 보드는 WeMOS D1 R!으로 셋하고, 포트는 연결된 포트로~, Upload Speed도 잡아줍니다~^^

메카솔루션 블로그에 있듯이 Blink예제를 한 번 돌려서 보드 이상유무도 확인해보구요~

한가지.. 영문 주석에도 있지만, LED_BUILTIN은 반전이에요~ low가 on, high가 off^^ 아무튼... 뭐 LED 동작하니까.. 정상인거겠죠... ^^ 다음 단계로 건너가요~~~

예제에서 HelloServer를 찾아 불러옵니다. 자신의 IP의 정보만 넣고 런닝~~~~~

그러면 저렇게 시리얼모니터에 나타나면 됩니다. 오케이~~~~~ 이제 simple web server 예제를 수행해볼까요. 아두이노 보드가 쉽게 말하면 웹페이지를 만들고 PC에서 거기에 접속해 보는거죠^^ 해당 예제[바로가기]를 한 번 따라해 보았습니다.

위 예제입니다.^^ 위 예제의 코드는 

#include <ESP8266WiFi.h>

const char* ssid = "R------";
const char* password = "rn------";
 
//int ledPin = 14;
WiFiServer server(80);
IPAddress ip(192, 168, --, --); 
IPAddress gateway(192, 168, --, --); 
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
 
  Serial.print(F("Setting static ip to : "));
  Serial.println(ip);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your network
  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.print("Use this URL : ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
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(LED_BUILTIN, LOW);
    value = HIGH;
  } 
  if (request.indexOf("/LED=OFF") != -1){
    digitalWrite(LED_BUILTIN, HIGH);
    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("Click <a href=\"/LED=ON\">here</a> turn the LED on Arduino ON<br>");
  client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on Arduino OFF<br>");
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disconnected");
  Serial.println("");
 
}

입니다. 이 코드가 배포되는 방금 말씀드린 esp learning 홈페이지도 들러보세요. 좋은 공부거리들이 많더라구요^^

그리고 시리얼 모니터를 돌리면 나타나는 주소로 접근합니다. 웹브라우저로~~~ 그러면 위 그림처럼 되죠. 저것도 분명 홈페이지입니다.^^

어때요? ㅎㅎ 홈페이지에 접근해서 LED를 on, off하는 걸 선택해서.. 아두이노를 다루는 거죠...&^^. 이제 이걸 이용하면 더 재미있는걸 많이 해볼 수 있겠어요 ㅎㅎ^^

반응형