offfff

3. 아두이노+ESP8266 본문

프로그래밍

3. 아두이노+ESP8266

offfff 2017. 2. 15. 14:40

A. 사용부품


ESP8266, 아두이노 프로미니



B. 진행사항

1. ESP8266 펌웨어 업그레이드


2. 아두이노와 ESP8266 연결 방법(참고)


3. ESP8266 라이브러리 설치

https://github.com/itead/ITEADLIB_Arduino_WeeESP8266 에서 다운로드

아두이노에서 라이브러리 추가하는 방법(압축파일 형태)

아래 메뉴 클릭해서라이브러리 압축파일이 있는 경로에서 파일을 추가







라이브러리 수정

ESP9266.h 파일에서아래 주석처리 된 라인 1줄을 해제해야 사용 가능

ESP8266 모듈 펌웨어 용 라이브러리 사용 중일 경우클래스 이름을 변경해줘야 함

(Ctrl+F, Replace 사용해서 ESP8266을 A_ESP8266으로 변경 함기존 라이브러리와 충돌 방지)



4. 테스트용 서버 유틸리티(Hercules SETUP utility)

- http://new.hwg.cz/files/download/sw/version/hercules_3-2-8.exe 에서 다운로드

- TCP Server 탭에서 Listen 버튼 클릭하여 서버 구동(포트번호 원하는 값 지정 가능)




5. 아두이노, ESP8266 연결 및 구동


(1) 아두이노, ESP8266 회로 구성


- 아래는 인터넷에서 흔히 구할수 있는 연결 방법, 아두이노 프로미니에서는 잘 동작하지 않았다.




※ 아두이노 프로미니에 연결할 때, 알아야 할 점


1. ESP8266의 동작전압

검색해 보면 3.3V에서 동작한다고 나와있으나, 5V에 연결해야 동작 함

VCC와 CH_PD를 5V에 연결하여 pull-up 시킨다


2. ESP8266의 RX에는 3.3V의 전압을 1로 인식

따라서 아두이노 프로미니 TX단에서 나오는 5V 전압은

Voltage divider로 3.3V언저리로 전압강하 해야 함






(2) 예제 소스코드

- SSID, PASSWORD, HOST_NAME, HOST_PORT 번호 알맞게 수정


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "A_ESP8266.h"  
#include <SoftwareSerial.h>  
  
#define SSID "apple"  
#define PASSWORD     "12345678"  
#define HOST_NAME   "192.168.0.7"  
#define HOST_PORT    (23)  
  
SoftwareSerial mySerial(1110); //RX 11, TX 10
A_ESP8266 wifi(mySerial);  
  
void setup(void)  
{  
    Serial.begin(9600);  
    Serial.print("setup begin\r\n");  
      
    Serial.print("FW Version:");  
    Serial.println(wifi.getVersion().c_str());  
        
    if (wifi.setOprToStationSoftAP()) {  
        Serial.print("to station + softap ok\r\n");  
    } else {  
        Serial.print("to station + softap err\r\n");  
    }  
   
    if (wifi.joinAP(SSID, PASSWORD)) {  
        Serial.print("Join AP success\r\n");  
        Serial.print("IP:");  
        Serial.println( wifi.getLocalIP().c_str());         
    } else {  
        Serial.print("Join AP failure\r\n");  
    }  
      
    if (wifi.disableMUX()) {  
        Serial.print("single ok\r\n");  
    } else {  
        Serial.print("single err\r\n");  
    }  
      
    Serial.print("setup end\r\n");  
  
    if (wifi.createTCP(HOST_NAME, HOST_PORT)) {  
        Serial.print("create tcp ok\r\n");  
    } else {  
        Serial.print("create tcp err\r\n");  
    }  
  
    pinMode( 13, OUTPUT );  
}  
   
void loop(void)  
{  
    uint8_t buffer[128= {0};  
      
    uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000);  
    if (len > 0) {  
        Serial.print("Received:[");  
        for(uint32_t i = 0; i < len; i++) {  
            Serial.print((char)buffer[i]);  
        }  
        Serial.print("]\r\n");  
    }  
  
    if ( buffer[0== '1' ) digitalWrite( 13, HIGH );  
    else if ( buffer[0== '0' ) digitalWrite( 13, LOW );  
}
 
cs



(3) 클라이언트 접속




C. 참고자료


'프로그래밍' 카테고리의 다른 글

[Linux] 사용자 계정 관리  (0) 2017.09.03
[Linux] VIM 설정 : 키 맵 사용/ 토글키 만들기  (0) 2017.08.31
2. ESP8266 IDE 구축  (0) 2017.02.14
1. ESP8266(WiFi Module)  (0) 2017.02.13
0. 아두이노 프로미니 시작  (0) 2017.02.12