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

2017년 3월 31일 금요일

Arduino에 ESP-01 WiFi Module 연결 방법.

Arduino Uno에 ESP-01 Module을 연결하는 방법을 소개한다.
여기서는 "Fritzing"사용에 대한 연습이다.
관련해서는 Arduino Blug를 참조하기 바란다.

Arduino Uno에 ESP-01 WiFi Module을 연결해서 사용하는 경우에는 Arduino Uno의 Firmware를 Upload해서 ESP-01 WiFi Module은 인터넷 연결도구로써 사용된다.
앞서 ESP-01 단독 실행에서는 ESP8266 Firmware를 Upload하여야 한다.

"Fritzing"에서는 "브레드 보드"와 "스케메틱", "PCB", "Code"탭을 작성할 수 있다.
"Code"탭을 제외한 3개의 탭은 모두 연결되어 있기 때문에 3개 중에 1개만 작성해도 모두 연결이 구현된다.( 단, 각각의 탭이 다르게 연결되어있다면, 서로 충돌이 발생할 수 있기 때문에 연결에 주의하여야 한다.)


"Fritzing"에서 Arduino Code를 Build하고, Download하기 위해서는 Arduino IDE에 대한 설정이 되어 있어야 한다.
"Fritzing"을 실행하고, "편집" -> "환경설정..."을 클릭한다.
 
"Code View"탭으로 이동해서 설치된 "Arduino IDE"를 등록한다.
 
Arduino IDE를 설정한 후에는 "Code"탭에서 Arduino Uno 보드에 대한 설정이 되어야만 한다.

"Fritzing"의 "Code"탭에서 하단에 Platform, 보드, Port를 설정해야 한다.
"Platform"은 Arduino IDE가 설정되어 있기 때문에 Arduino가 선택되고, "보드"는 현재 사용하고 있는 보드를 선택한다.
"Port"는 PC에 연결된 Arduino의 COM Port를 선택한다.
"Upload"버튼을 클릭하면, 작성된 code(스케치)를 Arduino 보드에 Upload한다.
"Serial Monitor"버튼을 클릭하면, Arduino 보드와 연결된 COM Port를 open한다.


Arduino Uno와 Serial 통신으로 ESP-01 WiFi Module을 제어하고, WiFi를 통해서 Arduino Uno를 제어하거나 상태를 확인할 수 있다.
Arduino Uno의 2번 핀과 ESP-01의 8번 핀(TX)이 연결되고, Arduino Uno의 3번 핀은 ESP-01의 1번 핀(RX)와 연결한다. 즉, Arduino Uno의 Software Serial에서 Rx는 2번 핀으로 할당하고, Tx는 3번 핀으로 할당해야만 한다.
자세한 내용은 Arduino Uno 스케치를 확인하기 바란다.

1. 브레드 보드 연결하기.
"Fritzing"을 실행하고, 부품창에서 "Arduino Uno"와 "ESP-01" Module을 가져와서 아래와 같이 연결한다. 연결이 완료되면, "파일" -> "내보내기" -> "이미지" -> "PNG"를 선택해서 그림 파일로 저장할 수 있다.

 

2. 회로 설계.
"스케메틱(Schematic)"탭에서 아래와 같이 회로를 연결한다.
 

3. PCB Layout.
"PCB"탭에서 아래와 같이 Layout을 연결한다. PCB Layout은 기본적으로 양면 PCB를 기준으로 진행되고, 부품이 Hole을 갖는 경우에는 Top과 Bottom으로 모두 배선 할 수 있다.
 

4. Code 작성.
Blynk Server를 통해서 핸드폰 어플을 통해서 Arduino를 제어하거나 상태를 확인할 수 있는 code를 작성한다. 아래 Code는 Arduino Uno가 ESP-01 WiFi Module을 통해서 Blynk Server에 접속하는 기능은 제공한다.(단, auth[]와 ssid[], pass[]는 각자의 환경에 맞게 설정되어야 한다.)
Blynk 어플 작성 및 사용에 대해서는 향후 Blynk 블로그를 작성할 계획이다.
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space

#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxx";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "wifi_name";
char pass[] = "wifi_password";

// Software Serial on Uno, Nano...
#include <SoftwareSerial.h>

SoftwareSerial EspSerial(3, 2); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

Blynk.begin(auth, wifi, ssid, pass);
delay(100); }
void loop() { Blynk.run(); }
"Fritzing"의 "Code"탭에서 "Platform", "보드", "Port"가 설정되었다면, "Upload"버튼을 클릭해서 작성된 code의 동작을 확인할 수 있다.

Fritzing Code

Fritzing 설치 및 부품 추가하기.

Fritzing은 회로 설계 및 PCB 제작을 쉽게 할 수 있는 Open Tool이다.

1. Fritzing 설치하기.
먼저, Home Page에 젒속해서 설치 파일을 Download받는다.


Download Site로 접속하고, 기부 여부를 선택하고, 자신의 PC 환경에 맞는 설치 파일을 Download받는다.


설치 파일을 설치한다.(별다른 어려움이 없기 때문에 따로 기술하지 않는다.)

2. 개별 부품(Library) 추가하기.
참고로, ESP-01 모듈 부품이 기본적으로 제공되지 않는다. 따라서 해당 부품을 인터넷에서 찾아서 Fritzing에 추가해야만 한다.
파일확정자가 xxx.fzpz이면, 단일 부품이고, xxx.fzbz이면 부품 그룹을 나타낸다.

Google에서 ESP8266 부품을 찾는다. 검색할때 "Fritzing ESP8266"등으로 검색한다.

4번째 사이트로 접속한다.

오른쪽 "Clone or download" 버튼을 클릭해서 Library를 Download받는다.

download 받은 파일을 "C:\Users\khjung\Documents\Fritzing\parts"폴더에 압축 해제한다.

"Fritzing"을 실행한다.

오른쪽 부품창에서 "MINE"항목을 선택한다.(다른 부분에 넣어도 되지만, 부품 관리를 위해서 MINE 부품 목록에 추가한다.)
"My Parts" 화면에서 마우스 우클릭하거나, 오른쪽 구석에 화살표와 목록 아이콘을 클릭한다.
 
"Import"를 선택하고, 팝업 탐색기에서 추가할 부품을 선택하고, "열기"를 클릭한다.
 
"Fritzing"의 "부품창"에 "ESP8266 WiFi Module"이 추가된 것을 확인할 수 있다.
부품이 추가됨과 동시에 추가된 부품이 "C:\Users\khjung\Documents\Fritzing\parts\user" 폴더에 복사된다.

나머지 7개의 부품을 동일한 방법으로 추가한다.

부품을 추가한 후에 "Fritzing"을 닫을 경우 아래와 같은 팝업창이 발생한다.
 
즉, 추가한 부품 정보를 저장해야만 향후 지속적으로 사용할 수 있다.

3. 패키지 부품(Library) 추가하기.
Adafruit 부품들을 추가해 보도록 하자!
Google에서 "fritzing adafruit library"를 검색한다.

첫번째 항목에 접속한다.(GitHub이므로 저장소라고 판단됨)

화면의 오른쪽 "Clone or Download"를 클릭해서 Download 받고, "C:\Users\khjung\Documents\Fritzing\parts" 폴더에 압축해제한다.


"Fritzing"을 실행하고, 아래와 같은 과정으로 부품을 추가한다.
앞서와 동일하게 "부품창"의 "MINE" 항목에서 마우스 우클릭으로 "Import"를 클릭하고, "Fritzing-Library-master"폴더에서 "Adafruit Arduino.fzbz"을 선택한다.
 
확정자가 xxxx.fzbz 파일은 개별 부품이 아닌 부품 그룹이므로 부품창에 새로운 그룹이 생성되고, 여기에 관련 부품들이 모두 추가된다.

즉, 부품창에 "Adafruit Arduino" 항목이 생성되고, 관련된 부품이 모두 추가된다.
같은 방법으로 7개의 그룹을 모두 추가한다.
...
모두 추가한 후에 "Fritzing"을 닫을때 아래와 같이 추가된 부품을 저장하기 위한 팝업창이 뜬다.
 
모두 저장되어야만 이후로 계속 추가된 부품을 사용할 수 있다. 저장되는 부품의 확정자는 xxx.fzb로 저장되고, 저장 폴더는 "C:\Users\khjung\Documents\Fritzing\bins"이다.

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

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