-
[Arduino] Wifi전기전자공학/실습 2018. 2. 1. 14:47
Wifi 모듈 포트 인식하기 위한 파일
아두이노 ->환경설정 => 추가적인 보드 매니저에 밑에 url 추가한다! (For esp8266 설치)
http://arduino.esp8266.com/stable/package_esp8266com_index.json
아두이노 -> 툴 -> 보드매니저 ->esp8266 설치
내 컴퓨터 -> 장치관리자 -> 포트 -> 와이파이 모듈 연결되 포트 번호 확인 (나의 경우: com6)
=> 아두이노 -> 툴 -> 포트 -> com6에서 com8로 바꿔줘야됨!
=> 아두이노 -> 보드 -> 'Arduino Uno'에서 'NodeMCU 1.0 (ESP-12E Module)' 로 바꾸기!
와이파이 모듈 D7(GPIO 13) 과 LED (+)단자 연결./ 와이파이 모듈 GND와 LED (-) 단자 연결
예제: 웹서버에 접속해서 LED 제어
#include <ESP8266WiFi.h>
const char* ssid = "IUnes";
const char* password = "kkkk1234";
int ledPin = 13; //GPIO 13, D7
WiFiServer server(80); //Q1
void setup() {
Serial.begin(115200);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.println();
Serial.println();
Serial.println("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); //Q2
while (/* Q3 */WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println(".");
}
Serial.println("");
Serial.println("WiFi Connected");
server.begin(); //Q4
Serial.println("Server started");
//Print the IP address - 웹에서 접속할 IP를 알려 준다.
Serial.println("Use this URL to connect: ");
Serial.println("http://");
Serial.println(/* Q5 본인 아이피 출력 */WiFi.localIP());
Serial.println("/");
}
// the loop function runs over and over again forever
void loop() {
WiFiClient client = server.available(); //Q6 접속한 클라이언트 연동
if(!client) {
return;
}
Serial.println("new client");
while(!client.available()){
delay(1);
}
//첫번째 라인 읽기
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush(); //? 이건 뭐지?
int value = LOW;
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if(request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}
//서버 응답 -> 이제부터는 HTML 관련이다.
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<title>NodeMCU Control</title>");
client.println("<meta name='viewport' content='width=device-width, user-scalable=no'>");
client.println("</head>");
client.println("<body>");
client.println("<div style='width: 300px; margin: auto; text-align: center;'>");
client.println("<h3>NodeMCU Web Server</h3>");
client.println("<p>");
client.print("Led pin is now : ");
if(value == HIGH) {
client.println("On");
} else {
client.println("Off");
}
client.println("</p>");
//client.println("<br><br>");
client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");
client.println("</div>");
client.println("</body>");
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.print("");
}
와이파이(내 폰 핫스팟)에 연결되면
WiFi Connected
Server started
Use this URL to connect:
http://
172.20.10.10
/
폰 인터넷에 172.20.10.10. 치면 led on/off 화면 뜸 -> 제어 가능웹서버에 접속해서 제어 가능!
무선은 전파 이용 . 전파는 빛!
예제 : 시간 서버에서 시간 받아오기!
#include <ESP8266WiFi.h>
#include <time.h>
const char* ssid = "IUnes";
const char* password = "kkkk1234";
int timezone = 9; // 동경
void setup(void) {
Serial.begin(115200);
Serial.println("start start");
WiFi.mode(WIFI_STA); //Q1. 모드 설정
WiFi.begin(ssid, password);
Serial.println("\nConnecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print("Connecting...");
delay(1000);
}
configTime(timezone * 3600, 0, "pool.ntp.org", "time.nist.gov"); //Q2. 시간 설정
Serial.println("\nWaiting for time");
while (!time(nullptr)) { //시간가져오기
Serial.print(".");
delay(1000);
}
Serial.println("");
}
void loop() {
time_t now = time(nullptr);
Serial.println(ctime(&now));
delay(1000);
}
'전기전자공학 > 실습' 카테고리의 다른 글
MNIST 데이터 + 차원 축소 + LSTM 으로 학습시키기 (1) (0) 2019.12.13 [Visual studio 2015&2017 - OpenCV 3.4.2 설치] (0) 2018.08.16 [Raspberry3] ubuntu mate OS 설치 (0) 2018.02.02 [Arduino] 안드로이드 앱 실습 (mit, bluetooth, chat) (0) 2018.01.31 [Arduino] 스텝모터, 서보 모터, IR 수신 (0) 2018.01.29