이전 자료

아두이노(arduino)


출처

bitcocom/newiot


소스코드

#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(); //서버가 시작되고 나서 클라이언트의 요청을 받는 함수
//클라이언트가 접속하는 주소에 따라 해당하는 처리 함수를 호출한다.
}

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

켜짐(192.168.0.42)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/81941a2e-29e0-4908-bda7-abf914ed4a7c/Untitled.png

꺼짐(192.168.0.42/inline)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d5171bfa-0bb4-4a6d-bdb0-05639ff7047d/Untitled.png


아두이노와 LED 반응

켜짐

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6fdfc961-2268-45d1-b62f-e3f4451910ac/Untitled.png

꺼짐