///
Search
🌅

5주차 Esp8266보드로 WiFi를 사용한 WebServer에서 LED 제어하기

이전 자료

출처

소스코드

#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> //LED는 긴다리가 +이다. const char* ssid = "glory"; const char* password = "***비밀번호***"; ESP8266WebServer server(80); //접속 포트를 설정하여 웹서버를 구축한다. const int led = 14; //D13/SCK/D5 led 다리가 긴곳을 여기에 꽂아야 한다. String s,s_head; // 스트링 변수 두개 만든다. void handleRoot() { digitalWrite(led, HIGH); //핀에 하이 즉 전류를 주면 켜지게 되는 것이다. s=s_head+"<h1>켜짐</h1><br>"; server.send(200, "text/html", s); //server.send(200, "text/plain", "hello from esp8266!"); } void handleNotFound(){ digitalWrite(led, 1); String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i=0; i<server.args(); i++){ message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); digitalWrite(led, 0); } // WIFI_STA (Station mode, Stand-alone mode) // 다른 공유기에 접속해서 IP를 할당받고, HTTP 통신을 사용하는 모드입니다 void setupWifi() { //setup WiFi WiFi.mode(WIFI_STA);//와이파이 Static Access 이걸로 접속하는 것이 일반적이다. WiFi.begin(ssid, password); //아이디와 비밀번호로 접속을 시도하는 것 Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void setup(void){ pinMode(led, OUTPUT); //D13/SCK/D5 핀 아웃풋한다. digitalWrite(led, LOW); //꺼진 상태로 초기화 Serial.begin(115200); //통신속도 // 여기 프로그램 부분을 함수로처리 setupWifi(); //상단의 Wifi setup 함수로 넘어간다. // 스마트폰에 맟게 크기 조정, html에서 한글 출력하게 설정 s_head="<meta name='viewport' content='width=device-width, initial-scale=1.0'/>"; //s=s+"<meta http-equiv='refresh' content='5'/>"; s_head=s_head+"<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />"; server.on("/", handleRoot);// 클라이언트 요청에 대한 함수 즉 이벤트이다. 이벤트가 오면 함수를 연결해주는 것이다. Handleroot는 위에있다. server.on("/inline", [](){ //server.send(200, "text/plain", "this works as well"); digitalWrite(led, LOW); s=s_head+"<h1>꺼짐</h1><br>"; server.send(200, "text/html", s); }); server.onNotFound(handleNotFound);//서버에서 요청하는 함수가 없으면 이걸 발생 시키는것이다.//이 함수는 위에 있다. // 즉 존재하지 않는 주소로 접속 하였을때에 처리할 함수를 지정하는 함수 server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); //서버가 시작되고 나서 클라이언트의 요청을 받는 함수 //클라이언트가 접속하는 주소에 따라 해당하는 처리 함수를 호출한다. }
Arduino
복사

실행 방법 (스마트폰도 가능)

켜짐(192.168.0.42)

꺼짐(192.168.0.42/inline)

아두이노와 LED 반응

켜짐

꺼짐

회로 연결

ets Jan 8 2013,rst cause:4, boot mode:(3,6) 오류

반복문의 오류 : 즉 코드를 잘못 짜면 발생할 수 도 있다. 특히 무한 루프에 대해서 문제가 발생한다.
메모리 문제 : 이것도 코드 문제일 가능성이 있는데, 간혹 보드 문제일 수도 있다.
본인은 맨처음 led 예제로 실습하였으며 와이파이 예제도 주어진걸로 할때에 문제가 발생을 안했으나, 간혹 간단한 예제로도 문제가 발생한 경우가 있다.