| 
 
 esp8266은 중국 Espressif Systems에서 생산한 저가형 와이파이 마이크로칩입니다. 이 칩을 이용한 여러 호환 모듈이 있는데 Ai-Thinker에서 만든 ESP-01이 그 중 하나입니다. 
 아두이노 와이파이 실드는 고가임에 비해 esp 보드는 저렴하기때문에 폭넓게 사용됩니다. 
 
 
 ESP-01을 이용하여 아두이노 UNO와 통신을 해보도록 하겠습니다. 
 
 1. 사양 
 
|  모듈 |  Espressif ESP8266 |  |  ESP8266 버전 |  ESP-01 |  |  동작명령 |  UART AT command  |  |  안테나 |  On-board ceramic antenna |  |  통신방식 |  802.11 b/g/n 지원 |  |  통신속도 |  9600 bps |  |  플래쉬 메모리 |  16M Byte |  |  프로세서 스피드 |  80-160 Mhz |  |  크기 |  14.5 x 24.8 mm |  |  동작전압 |  3.3V |  
 
 2. 핀맵  
 
 3. 펌웨어 업데이트 
 ESP-01의 경우 초기 통신속도가 115200bps이지만 아두이노UNO의 소프트웨어 시리얼 통신 속도는 57600bps까지만 지원되므로 통신속도를 9600bps로 변경해야합니다. 
 하드웨어 시리얼이 2개 이상인 아두이노 MEGA 또는 DUE의 경우 생략가능합니다. 
 ESP-01의 펌웨어 업데이트는 USB to TTL 시리얼 케이블을 이용하거나 아두이노를 이용하여 업데이트 할 수 있습니다. 
 다음 배선도에 따라 배선합니다.  아두이노 UNO는 시리얼 통신장치로 이용되므로 RESET을 GND에 연결합니다. 
| 아두이노 UNO | ESP-01 |  | GND | GND / GPIO0 |  | GND - RESET | 
 |  | 3.3V | VCC / CH_PD  |  | TX | TX  |  | RX | RX  |  
 주의 : ESP 모듈은 3.3V의 전압으로 작동합니다. 5V 전압을 공급하면 고장납니다. 
  
 아두이노에 전원을 연결하고 장치관리자에서 포트번호를 확인합니다.  
 첨부한 플래셔를 다운로드합니다. (ESP8266_flasher.zip) 압축을 해제하면 펌웨어 파일과 플래셔 파일이 있습니다. 첨부한 펌웨어는 AT 명령어를 이용가능한 ai-thinker 펌웨어입니다.  
 
 플래셔를 실행시키고 Bin을 눌러 ai-thinker-0.9.5.2-9600.bin을 선택하고 포트번호를 변경한뒤 Download를 누릅니다.  
 업데이트에 성공하면 Leaving...이 출력됩니다.  이제 아두이노 UNO와 9600bps 속도로 시리얼 통신이 가능합니다.
 
 
 4. 통신 이제 다음 배선도와 같이 배선합니다. 
| 아두이노 UNO | ESP-01 |  | GND | GND   |  | 3.3V | VCC / CH_PD  |  | TX(GPIO3) | RX |  | RX(GPIO2) | TX |  
 
  
 주의 : 전원은 3.3V를 넣어주세요. 
 아두이노 UNO에서 GPIO0과 GPIO1은 하드웨어 시리얼 통신에 이용되므로 GPIO2와 GPIO3을 소프트웨어 시리얼 통신에 이용합니다. 
 이때 아두이노 UNO에서는 시리얼 통신으로 5V가 출력되는데 ESP-01은 RX에서 3.3V를 받아야하므로 전압 분배 법칙에 의해 위의 배선도같이 1k옴 저항을 1:2로 나누어 분배합니다. (5V * 2/3 = 3.3V가 됩니다.) 
 복잡합니다.. 이런 복잡한 배선을 줄이기 위한 어댑터도 존재합니다.  
  
 
| 아두이노 UNO | ESP-01 어댑터 |  | VCC(5V) | VCC  |  | GND | GND  |  | RX(GPIO2) | TX  |  | TX(GPIO3) | RX  |  
 
 다음과 같이 프로그래밍합니다. 
| #include <SoftwareSerial.h> 
 #define RXD 2 #define TXD 3 
 SoftwareSerial wifi(RXD, TXD); 
 void setup() {   Serial.begin(9600);   wifi.begin(9600);   wifi.setTimeout(5000);   delay(1000); } 
 void loop() {   if (Serial.available()) {     wifi.write(Serial.read());   }   if (wifi.available()) {     Serial.write(wifi.read());   } } |  
 
 아두이노 UNO에 업로드하고 시리얼 모니터를 열어 AT를 입력합니다.  
 다음과 같이 OK라고 뜨면 통신이 되고 있는 겁니다.  
 AT+CWMODE=1을 입력합니다.  와이파이 모드 선택인데 1은 Station모드, 2는 AP모드, 3은 Station + AP모드입니다.  
 AT+CWLAP라고 입력하면 연결가능한 와이파이 목록이 뜹니다. 
 AT+CWJAP="와이파이 이름","비밀번호"를 입력하면 와이파이 연결이 가능합니다.
  
 자세한 AT 명령은 첨부파일을 참고하세요. |