Blog of OH! MY ENGINEER

오마이엔지니어 블로그

ESP8266 NodeMcu Lua Wifi V3 (CH340 드라이버 사용) 를 사용해서 웹으로 LED를 제어하고 조도센서 출력값을 확인해 보기

댓글 0

Arduino(아두이노) IoT 키트 강좌

2018. 2. 2.

ESP8266 NodeMcu Lua Wifi V3 (CH340 드라이버 사용) 를 사용해서 웹으로 LED를 제어해 보고
추가적으로 역시 웹으로 조도센서 출력값을 확인해 보는 프로젝트 입니다


먼저 ESP8266 NodeMcu Lua Wifi V3 (CH340 드라이버 사용) 의 초기 세팅법과 사용방법에 대해서 알아보고 간단한 웹서버 테스트를 해보도록 하겠습니다


ESP8266(ESP-12E) 기반의 NodeMcu 의 Lua Wifi Board V3 입니다
3.3V 레귤레이터, GPIO, PWM, IIC, 1-Wire 및 ADC를 모두 하나의 보드에 통합 한 모듈 입니다
아두이노 통합 개발환경 Arduino IDE 를 지원하며, 아두이노를 이용하여 IoT 프로젝트를 진행하기에 적합합니다
보드의 기본 펌웨어는 LUA 인터프리터 인 NodeMCU 펌웨어이며, 사용자 응용 프로그램은 LUA 스크립트 형태로
플래시 ROM에 저장 될 수 있습니다, 또한 사용자가 직접 인터프리터를 설치/업데이트 할 수 있습니다


<ESP8266 NodeMcu Lua Wifi V3 이미지>



<ESP8266 NodeMcu Lua Wifi V3 상세 사양>



<ESP8266 NodeMcu Lua Wifi V3  핀 구성>



사용된 부품

ESP8266 NodeMcu Lua Wifi V3



초기세팅 방법
ESP8266 NodeMcu Lua Wifi V3 은 CH340 UART DRIVER 를 사용하기 때문에
일단 장치인식을 위해서 드라이버를 설치해 줍니다
https://github.com/nodemcu/nodemcu-devkit/tree/master/Drivers
위 링크에서 자신의 OS에 맞는 드라이버를 다운로드 받아서 설치해 줍니다
드라이버 설치가 끝나고 보드를 마이크로 USB케이블로 연결하면 PC의 장치관리자에 CH340 으로
포트가 뜹니다



기본적으로 아두이노 통합 개발환경 아두이노 IDE 를 설치해야 합니다 (Arduino.cc 의 IDE 를 설치합니다
Arduino.org 의 IDE 와는 호환 되지 않습니다)
https://www.arduino.cc/en/Main/Software


아두이노 IDE를 실행후 파일--->환경설정을 클릭합니다



환경설정에서 추가적인 보드매니저 URL에 http://arduino.esp8266.com/stable/package_esp8266com_index.json 

링크의 URL를 추가해 줍니다




툴--->보드--->보드매니저
순으로 클릭합니다



보드 매니저에서 타입을 "Contributed"로 선택해주면 ESP8266 Community  나오게 됩니다
설치를 눌러서 최신버전을 설치해 주면 됩니다




설치가 끝나면 툴--->보드--->NodeMCU 1.0 (ESP-12E Module) 순으로 클릭합니다 NodeMCU 1.0 (ESP-12E Module) 이 추가 되었습니다


툴에서 업로드 스피드를 115200 으로 맞춰 주도록 합니다 (일부는 업로드 실패시 57600 으로 속도를 낮춰서 성공을 하는것 같습니다)
본 테스트에서는 115200으로 별 무리없이 무난하게 업로드를 성공했습니다


스케치 업로드 버튼을 눌러서 간단하게 업로드를 테스트 해보고 이상이 없으면 파일--->ESP8266--->Blink 순으로 클릭해서
Blink 테스트를 해봅시다 (Wemos 보드와는 다르게 ESP8266 모듈의 LED는 깜박이지 않습니다)

브래드보드와 점퍼선을 사용해서 LED의 (+) 핀은 모듈의 TX 핀과 연결, LED의 (-) 핀은 모듈의 D1 핀과 연결하도록 배선합니다
Blink 예제가 이상없이 스케치 업로드 되어 있다면 LED가 깜박이게 됩니다


주의사항
보드를 USB 허브를 통해서 연결하면 소스 업로드시 업로드 에러가 나는 경우가 있는것 같습니다
(USB 허브를 사용하고 있다면 허브에 연결하지 말고 컴퓨터 USB 포트에 바로 연결해서 테스트 해 봅시다



프로젝트 동영상


프로젝트 동영상 (ESP8266 NodeMcu Lua Wifi V3 을 사용해 웹서버 IP 주소와 아이디 확인해 보기)



파일--->예제--->ESP8266WebServer--->HelloServer
순으로 클릭합니다

스케치 코드에서 const char* ssid = "........" const char* password = "........"
의 " "를 본인의 Wifi 아이디와 비밀번호 설정으로 수정해 준후 업로드 해 줍니다
시리얼 모니터를 켜면 연결된 웹서버의 IP 와 아이디를 확인할 수 있습니다


위 동영상에서 보면 알수 있듯이 모듈에 전원이 공급되면 기본적으로 Wifi 이름은 무선 네트워크 연결 관리자를 확인하면

"FaryLink_251B3F" 로 검색되고 있는것을 확인할 수 있습니다


이때 보드레이트는 꼭 115200 으로 되어있어야 합니다~



ESP8266 NodeMcu Lua Wifi V3 의 아두이노 IDE 초기 세팅도 끝났고, 보드의 이상 유무도 확인했으므로 이제 웹으로 LED를 제어해 보고 추가적으로 조도센서의 출력값을 웹으로 확인해 보도록 하겠습니다



사용된 부품

ESP8266 NodeMcu Lua Wifi V3
5mm LED 블루
막대 저항 10K Ohm 또는 1K Ohm 
미니 브래드 보드
점퍼케이블


구성배선도-웹으로 LED 제어해 보기


구성배선도-웹으로 조도센서 출력값 확인해 보기



구성회로도

LED and Photoresistor Circuit Schematic.png

LED Circuit Schematic.png



사용된 예제코드

Blink.txt

Node MCU_LED.txt

Node MCU_LED_Photoresistor.txt


주의사항

ESP8266 NodeMcu Lua Wifi 는 아두이노의 13번 핀이 D7번 핀과 맵핑 되어 있습니다
때문에 Blink 테스트를 하려면 13번핀이 아닌 D7번 핀과 GND에 LED를 배선해 주어야 합니다
테스트로 위 첫번째 배선도를 참고해서 배선 후 Blink 예제를 실행해 보도록 합시다 (예제파일 첨부)

이상없이 Blink 테스트가 동작된다면 첨부된 Node MCU_LED 파일의 스케치를 다운로드 한 다음

const char* ssid = "YourWifiNetworkName";
const char* password = "YourPassword";
 

첨부된 예제 코드의 위 두줄 부분을 자신의 WIFI 이름과 비밀번호로 수정해 줍니다
수정이 끝났으면 스케치 업로드를 하고 시리얼 모니터를 실행 시킵니다 (물론 이때 보드레이트는 당연히 115200 으로 되어 있어야 합니다)
그러면 WIFI 와 연결된 URL http://192.168.0.X/ 을 확인할수 있습니다



인터넷창을 열고 주소창에 URL 주소를 입력해 줍니다 그러면 아래처럼 LED 핀을 on, OFF 시킬수 있는 화면이 나옵니다



HTML 로 화면을 출력해 주는데 예제코드의 맨 아래부분 아래와 같습니다


-------------------------------------------------------------------------------
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Led pin is now: ");
 
  if(value == HIGH) {
    client.print(on");
  } else {
    client.print("Off");
  }
  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("</html>");
 --------------------------------------------------------------------------------

Turn on 버튼을 누르면 LED가 점등되고 Turn Off 버튼을 누르면 LED가 꺼집니다


조도센서를 추가로 배선하고 웹으로 출력값을 확인해 보는것 역시 위와 마찬가지로 진행하면 됩니다

두번째 배선도를 참고해서 배선후 위에 첨부된 Node MCU_LED_Photoresistor 예제 파일을 열어서
마찬가지로 자신의 WIFI 이름과 비밀번호를 수정후 업로드해 줍니다
시리얼 모니터를 실행후 마찬가지로 URL를 확인해서 인터넷 주소창에 URL를 입력해 주면 아래와 같은 화면이 나옵니다


기존 화면에서 조도센서 출력값을 확인하는 부분이 추가 되었습니다
조도센를 손으로 가리거나 해서 조광 환경을 변화시킨후 체크 버튼을 누르면 변화된 출력값을 확인할 수 있습니다
조도센서 배선시 처음엔 GND 쪽에 10K Ohm 을 배선하였으나 변화값이 너무 적어서 1K Ohm 으로 배선하였습니다
정확한 조도 측정값 보다는 조도 측정값의 변화를 웹으로 확인해 보는 것이기 때문에

본이이 가지고 있는 조도센서 사양에 맞춰서 적당하게 배선 하도록 하면 됩니다

PC의 웹 뿐만아니라 와이파이가 연결되어 있다면 스마트폰으로도 브라우저를 띄워서 제어할 수 있습니다


프로젝트 동영상-웹으로 LED 제어해 보기


프로젝트 동영상-웹으로 조도센서 출력값 확인해 보기


ESP8266 NodeMcu Lua Wifi 모듈을 사용해서 웹으로 전등, 센서, LCD 등을 제어하는 다양한 레퍼런스들이 개발자 커뮤니티에 오픈소스로

공유되고 있으니 잘 활용하면 괜찮은 IOT 프로젝트를 진행할수 있을것 같습니다