이전 자료
출처
소스코드
#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 예제로 실습하였으며 와이파이 예제도 주어진걸로 할때에 문제가 발생을 안했으나, 간혹 간단한 예제로도 문제가 발생한 경우가 있다.