2017년 4월 2일 일요일

ESP-01 WiFi Module 연결 회로 만들기

ESP-01 WiFi Module을 사용하는 방법은 2가지 방법이 있으며, 각각의 경우 추가 회로가 필요한다.
1. ESP-01을 단독으로 사용하는 방법.
   - 3.3V 전원부가 필요하다.
   - Button 입력 회로가 필요하다.
   - GPIO_0/2 포트 사용을 위한 회로가 필요하다.
2. Arduino Uno(또는 Nano)에 ESP-01을 연결해서 사용하는 방법.

ESP-01 WiFi Module을 다양하게 활용하기 위한 회로(보드)를 제작해 보자!

USBtoSerial 장치와 연결시에 3.3V전원이 없기 때문에 5V전원을 사용하도록 한다.
 
Arduino Uno 또는 Nano, USBtoSerial을 사용하는 각각의 경우에 대한 ESP-01 Module연결을 구성한다.

 
회로와 같이 보드를 만들면, Arduino Uno 또는 Nano, USBtoSerial 장치와 연결하여 ESP-01 WiFi Module을 사용할 수 있다.

Fritzing Code

2017년 4월 1일 토요일

ESP-01 Module 단독 사용 방법.

ESP-01 WiFi Module은 Internet접속 기능이 없는 장치를 Internet에 연결할 수 있게하여 원격제거가 가능하도록 한다. 특히, Blynk Server등을 통해서 핸드폰 어플을 통해서 쉬게 장치를 제어할 수 있다.
ESP-01 WiFi Module은 단독으로도 간단한 장치를 제어할 수 있고, Arduino Uno/Nano등의 Control Board와 연결하여 다양한 장치를 제어할 수 있다.

예로써, 거실 전구를 원격에서 핸드폰을 통해서 제어하는 방법을 구현해 보자!

1. ESP-01 WiFi Module을 단독으로 사용하는 방법.
ESP-01 WiFi Module을 단독으로 사용하기 위해서는 PC와 연결하기 위해서 약간의 추가 장치가 필요하다.
PC에서 ESP8266 Firmware를 작성하고 Build할 수는 있지만, ESP-01 WiFi Module에 수정된  Firmware를 Upload하기 위해서는 COM연결을 설정할 필요가 있다. 일반적으로 많이 사용되는 USBtoSerial(FDTI 또는 CP2102)같은 장치가 있어야 한다.



[ 준비물 ]
  • 아두이노 개발 환경이 설치된 PC
  • USBtoSerial 장치
  • ESP-01 WiFi Module

먼저 "Fritzing"을 실행하고, "브레드 보드"를 작성해 보자.
 

GPIO2에 "LED + Pull-down 저항"을 연결하면 문제가 발생한다.(원인은 모름)
그림과 같이 USBtoSerial장치와 ESP-01 Module을 연결한다. 중간에 연결된 LDO는 USB 출력전원이 5V인데, ESP-01의 입력전원은 3.3V이므로 ESP-01의 동작 전압을 맞추기 위해서 3.3V LDO를 연결하였다.(커게 문제가 되지않는다면, LDO 대신에 저항을 연결해도 누가 죽지는 않을 것 같다.)
ESP-01의 Firmware Update Mode로 진입하기 위해서는 ESP-01이 reset 구간에서 GPIO_0 (3번 핀)이 LOW이어야 한다. 그래서, 2개의 버튼을 통해서 Reset과 GPIO_0 입력을 인가할 수 있도록 구현하였다.

"브레드 보드"연결에 맞추어서 "스케메틱(Schematic)"과 "PCB"연결을 아래와 같이 구현한다.
 
지금 우리 프로젝트에서는 따로 PCB를 제작할 필요가 없기 때문에 "PCB"연결이나 "스케메틱(Schematic)"작성은 의미가 없어 보인다.

ESP-01 Module의 default baud-rate은 115200-bps이므로, 연결확인을 위해서 USBtoSerial 장치를 PC와 연결하고 Terminal Program(Tera-term)이나 Arduino IDE의 "시리얼 모니터"를 연결해서 "AT" command에 대해서 "OK"가 Return되는지 확인한다.(Arduino IDE의 "시리얼 모니터"에서는 "Both NL & CR"로 설정해야 한다.)

ESP8266 AT Command에 대해서는 확인해 보시기 바랍니다.

Arduino IDE를 실행하고, Blynk 예제 중에서 ESP8266 Standalone 예제를 사용한다.
"파일" -> "예제" -> "Blynk" -> "Boards_WIFI" -> "ESP8266_Standalone"을 수정해서 검토한다. 만약 본인의 Arduino IDE에서 Blynk 예제가 없다면, 먼저 Blynk Library를 설치하여야 한다. Blynk 관련해서는 향후 블로그를 만들 예정이다.

Arduino IDE에서 "보드"는 "Generic ESP8266 Module"을 선택한다. 만약 자신의 Arduino IDE에서 관련 보드 메뉴가 없다면, "Arduino 보드 관리자에 추가 보드 설치"를 먼저 진행해야 한다.

선택된 예제에서 auth[], ssid[], pass[]는 자신의 환경에 맞게 수정되어야 한다.
특히, auth[]는 핸드폰에서 생성된 Blynk 어플에서 제공된 auth를 사용하여야 한다.
PC에 연결된 USBtoSerial 장치의 COM 포트를 지정한다.

예제 스케치를 ESP-01 Module보드에 올린다. 여기서 주의할 점은 ESP-01의 Reset버튼과 GPIO_0버튼을 함께 누른 상태에서 Reset 버튼을 먼저 Open하고, 잠시 후에 GPIO_0버튼을 Open해서 ESP8266을 Firmware Upload Mode로 진입시켜야 한다.

새로운 Firmware가 동작하는 것을 확인하기 위해서는 Reset이 인가되어야 한다.
Arduino IDE의 "시리얼 모니터"를 통해서 동작을 확인할 수 있다.

Blynk Server와 연결되었기 때문에 핸드폰 어플을 통해서 ESP-01 Module의 GPIO_2을 Toggle되는지 확인한다.(참고로, 핸드폰에는 Blynk 어플이 만들어져 있고, 이 어플에서는 GPIO_2(ESP-01 Module의 5번핀, ESP8266의 GP2)가 Toggle되는지 확인한다.


여기까지 동작 확인이 완료되었다면, ESP-01 WiFi Module을 단독으로 분리해서 3.3V 전원을 연결하고, GPIO_2에 LED등을 연결해서 동작을 확인할 수 있다. 단, Firmware가 수정되어야 한다면, 다시 USBtoSerial 및 Button회로를 연결하여야 한다.


USBtoSerial 장치가 없고, Arduino Uno가 있다면, Arduino Uno를 사용해서 ESP-01 Module의 Firmware를 Upload할 수 있다.

Fritzing Code
Arduino Code

ESP-01 WiFi Module 연결 회로 만들기

ESP-01 WiFi Module을 사용하는 방법은 2가지 방법이 있으며, 각각의 경우 추가 회로가 필요한다. 1. ESP-01을 단독으로 사용하는 방법.    - 3.3V 전원부가 필요하다.    - Button 입력 회로가 필요하다.    ...