반응형
【 아두이노프로젝업뎃#1】 ESP8266 esp-01 스마트폰으로 LED 컨트롤 하기 업뎃 자료
먼저 아래 기존 게시글을 참고하세요.
【 아두이노모듈#28】 ESP8266 esp-01 활용하기#4 : 스마트폰으로 LED 컨트롤 하기(with Arduino & cp2102 )
이번 글은 기존 프로젝트에서 LED를 완전히 개별로 제어가능하도록 코드를 일부 수정하여 게시하오니 참고하세요.
[ 관련 영상 보기 ]
수정된 코드
/* ### 스마트폰 WiFi로 esp8266모듈회로의 LED 켜고·끄기 ###
* 1. LED를 연결한 esp8266 회로를 서버로 동작시킨다.
* 2. 앱인벤터를 이용하여 접속앱을 직접 제작 한다.
* 3. 접속앱에서 esp8266 서버 주소를 입력하고 접속한다.
* (접속 IP 주소는 코드 업로드가 완료되면 시리얼모니터(115200bps)를 통해 확인 가능함)
* 4. 앱화면의 버튼을 눌러 LED를 On·Off 할 수 있다.(GPIO0(LED1), GPIO2(LED2))
* 5. 아두이노 우노를 제거하고 미니 전원을 연결하여 소형화 된 무선 WiFi 모듈을 구성해본다.
* http://server_ip/gpio0/0 이면 GPIO0(LED1) 를 LOW로 설정,
* http://server_ip/gpio0/1 이면 GPIO0(LED1) 를 HIGH로 설정,
* http://server_ip/gpio2/0 이면 GPIO2(LED2) 를 LOW로 설정,
* http://server_ip/gpio2/1 이면 GPIO2(LED2) 를 HIGH로 설정,
*
* 주의 : 반드시 동일한 내부 네트웍(하나의 공유기로 연결된)에서 동작 시켜야 접속이 이루어 집니다.
*
* 제작과정의 좀더 상세한 내용과 설명 영상은 http://rasino.tistory.com/300 참조 하세요
*/
#include <ESP8266WiFi.h>
#define GPIO0 0
#define GPIO2 2
int GP0val=0;
int GP2val=0;
const char* ssid = "XXXXXXX"; // 접속가능한 공유기(AP) WiFi의 ID를 입력하세요
const char* password = "xxxxxxx"; // 공유기(AP) WiFi의 접속 패스워드를 입력하세요
// 서버 인스턴스를 생성합니다 (80번 포트 지정)
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
// GPIO 포트들을 초기화 합니다
pinMode(GPIO0, OUTPUT);
digitalWrite(GPIO0, 0);
pinMode(GPIO2, OUTPUT);
digitalWrite(GPIO2, 0);
// Serial 통신으로 WiFi 네트웍에 연결합니다.
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); // 네트웍에 설정된 id와 패스워드로 접속을 합니다.
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// 서버 시작
server.begin();
Serial.println("Server started");
// 서버의(esp8266) IP 주소를 출력합니다
Serial.println(WiFi.localIP());
}
void loop() {
// 클라이언트가 접속하는지 체크 합니다
WiFiClient client = server.available();
if (!client) {
return;
}
// 클라이언트가 데이터를 보낼 때까지 기다립니다.
Serial.println("new client");
while(!client.available()){
delay(1);
}
// 요청 첫 출을 읽어 옵니다.
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
// 요청 사항과 비교 후 GPIO들에 대해 셋팅 해줍니다.
if (req.indexOf("/gpio0/0") != -1){
GP0val = 0;
digitalWrite(GPIO0, GP0val);
}
else if (req.indexOf("/gpio0/1") != -1) {
GP0val = 1;
digitalWrite(GPIO0, GP0val);
}
else if (req.indexOf("/gpio2/0") != -1) {
GP2val = 0;
digitalWrite(GPIO2, GP2val);
}
else if (req.indexOf("/gpio2/1") != -1) {
GP2val = 1;
digitalWrite(GPIO2, GP2val);
}
else {
Serial.println("invalid request");
client.stop();
return;
}
client.flush();
// 응답을 준비합니다.
String s1 = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n \r\n\r\nGPIO 0 is now ";
String s2 = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n \r\n\r\nGPIO 2 is now ";
s1 += (GP0val)?"HIGH":"LOW"; //GP0val 값에 따라 HIGH 또는 LOW 응답합니다.
s1 += "\n";
s2 += (GP2val)?"HIGH":"LOW"; //GP2val 값에 따라 HIGH 또는 LOW 응답합니다.
s2 += "\n";
// 클라이언트로 응답을 보냅니다
client.print(s1);
delay(1);
client.print(s2);
delay(1);
Serial.println("Client disonnected"); // 응답완료 후에는 클라이언트를 닫습니다.
}
[코드 다운로드]
반응형
'아두이노 > 4. 프로젝트 LAB' 카테고리의 다른 글
【 아두이노Proj#14】 Esp-01 + Blynk + Nano 스마트폰 WiFi ioT 제어 풀코스 (0) | 2021.12.11 |
---|---|
【프로젝트#13】 손 안대고 손 소독하기! 자동 손 소독기 직접 만들어 봅시다! (0) | 2021.04.04 |
【아두이노 프로젝트#12】아두이노 나노(Nano) OLED 탁상시계 (with Calendar & 온도계) (0) | 2020.11.27 |
『 매번 물 주기 귀찮은 화분! 말라죽는 우리 집 화분을 구해주세요! 』 아두이노 활용 프로젝트 콘텐츠 소개! 』 (2) | 2020.11.11 |
【 릴리패드LilyPAD#3】 우리집 휴지통 스마트하게 바꿔보자! (Plus 영상설명!) (0) | 2019.11.27 |