기본 콘텐츠로 건너뛰기

ESP8266 Arduino 정식지원 - 설치 및 Compile

https://github.com/esp8266/Arduino

드디어 ESP8266에서도 Arduino를 정식지원한다.

윈도우즈에서도 잘 동작하는 걸 확인하고 포스팅.

1. ESP 하드웨어를 설정하고
2. 드라이버를 잡고
3. Arduino를 사용하여 업로드

하는 것 까지 살펴보겠다.

먼저 지난 글에서 처럼 ESP8266 핀설정을 확인하고 Serial Driver를 설정하는 것부터 되짚어 보자.

0 [*] GPIO16 8 GPIO15
1 GPIO5 9 GPIO3
2 GPIO4 10 GPIO1
3 GPIO0 11 GPIO9
4 GPIO2 12 GPIO10
5 GPIO14
6 GPIO12
7 GPIO13
실제 사용하는 매핑표는 이렇다.
ESP-01 Pinouts

ESP-12 Pinouts
REST는 RESET과 같음
Pin0~pin10까지는 무시하자. servo 관련 게시물에서 잘못 퍼왔다.
REST TXD 
ADC RXD
CH_PD GPIO4 - 2
GPIO16 - 0[*] GPIO5 - 1
GPIO14 - 5 GPIO0 - 3
GPIO12 - 6 GPIO1 - 10
GPIO13 - 7 GPIO15 - 8
VCC GND

실제 핀 배열은 이렇다. 
GPIO16은 R/W전용이다. 즉, 인터럽트/pwm/i2c/ow 다 안된다는 소리.

ESP-01과 ESP-12는 핀수가 다른데 공통으로 CH_PD를 VCC로 연결하고
ESP-12는 추가로 GPIO15번 핀을 GND에 연결한다.

한가지 알아두어야 할 것은 ESP시리즈는 Flash 모드와 일반모드 두가지가 있는데 실제로 업로드를 할때엔 Flash모드로 해놓아야된다.

GPIO0 핀을 GND로 연결하고 RESET 해준다. RESET은 RESET/REST핀을 GND에 연결했다가 끊으면 된다. 스위치가 있으면 확실히 편하지만 없어도 점퍼로 하자.

ESP8266은 별도의 USB 포트가 없으므로 PL2303같은 도구를 사용하자.

설치를 하고 난 다음엔 다시 뺏다 꽂아서 인식을 확인하고 Arduino를 설치해보자.

간단한 방법은 https://github.com/esp8266/Arduino#downloads 에서 항에서 각자 맞는 버전을 받자.

현재 Arduino 1.6.1 버전을 받을 수 있다.

하지만 내 경우엔 여러개의 버전이 있는 것이 싫어서 1.6.3 정식을 받고 별도로 보드를 추가하는 방식을 택했다. Arduino 1.6.2버전부터는 Third-party 보드를 지원한다!

1.6.3 설치 후 https://github.com/sandeepmistry/esp8266-Arduino 에서 다운 받고 압축해제 후  ~/Documents/Arduino/hardware (windows에서 내문서/Documents/Arduino/hardware) 아래에 esp8266com 이란 폴더를 복사해 넣자.

한방에 잘 된다면 다행인데 몇가지 점검해볼 내용이 있다.

1. 업로드 포트와 프로그래머를 잘 못찾을 경우가 있다. 디폴트로 해도 되게끔 Programmer 부분을 비워놓았는데 사용자 홈/Documents/Arduino/hardware/esp8266com/esp8266/programmers.txt가 텅텅 비어다면 아래의 내용을 추가하자.

esptool.name=esptool
esptool.communication=serial
esptool.protocol=esp
esptool.program.protocol=esp
esptool.program.tool=esptool
esptool.program.extra_params=

2. 윈도우의 경우 libiconv-2.dll 파일이 없어서 컴파일이 안될 수도 있는데 https://github.com/igrr/Arduino/releases/download/1.6.1-esp8266-1/arduino-1.6.1-p1-windows.zip 에 있는 내용을 찾아서 Arduino.exe 가 있는 경로에 해당파일을 복사하면 된다.

3. OS X의 경우 esptool이라는 업로딩 툴이 문제를 일으키는 경우가 있다.
OS X용 플래싱툴인 https://github.com/themadinventor/esptool 를 사용하여 임시로 올리자.
패치가 시급한 녀석이다.

갓나온지 얼마 안되어서 firmata, servo 등 주요 라이브러리등 작동하지 않는 것들도 몇몇 있지만 가능성 만큼은 최고인 ESP이다.
두려워 말고 당장 사용하자!





댓글

이 블로그의 인기 게시물

cURL로 cookie를 다루는 법

http://stackoverflow.com/questions/22252226/passport-local-strategy-and-curl 레거시 소스를 보다보면 인증 관련해서 cookie를 사용하는 경우가 있는데 가령 REST 서버인 경우 curl -H "Content-Type: application/json" -X POST -d '{"email": "aaa@bbb.com", "pw": "cccc"}' "http://localhost/login" 이렇게 로그인이 성공이 했더라도 curl -H "Content-Type: application/json" -X GET -d '' "http://localhost/accounts/" 이런 식으로 했을 때 쿠키를 사용한다면 당연히 인증 오류가 날 것이다. curl의 --cookie-jar 와 --cookie 옵션을 사용해서 cookie를 저장하고 꺼내쓰자. 각각 옵션 뒤엔 저장하고 꺼내쓸 파일이름을 임의로 지정하면 된다. 위의 과정을 다시 수정해서 적용하면 curl -H --cookie-jar jarfile "Content-Type: application/json" -X POST -d '{"email": "aaa@bbb.com", "pw": "cccc"}' "http://localhost/login" curl -H --cookie jarfile "Content-Type: application/json" -X GET -d '' "http://localhost/accounts/" 이렇게 사용하면

MQTT Broker Mosquitto 설치 후 설정

우분투 기준 $ sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa $ sudo apt-get update 하고 $ sudo apt-get install mosquitto 으로 설치하면 서비스까지 착실하게 올라간다. 설치는 간단한데 사용자를 만들어야한다. /etc/mosquitto/mosquitto.conf 파일에서 권한 설정을 변경하자. allow_anonymous false 를 추가해서 아무나 못들어오게 하자. $ service mosquitto restart 서비스를 재시작. 이제 사용자를 추가하자. mosquitto_passwd <암호파일 경로명> <사용자명> 하면 쉽게 만들 수 있다. # mosquitto_passwd /etc/mosquitto/passwd admin Password:  Reenter password:  암호 넣어준다. 두번 넣어준다. 이제 MQTT 약을 열심히 팔아서 Broker 사글세방 임대업을 하자.

MQTT 접속해제 - LWT(Last will and testament)

통신에서 중요하지만 구현이 까다로운 문제로 "상대방이 예상치 못한 상황으로 인하여 접속이 끊어졌을때"의 처리가 있다. 이것이 까다로운 이유는 상대방이 의도적으로 접속을 종료한 경우는 접속 종료 직전에 자신의 종료 여부를 알리고 나갈 수 있지만 프로그램 오류/네트웍 연결 강제 종료와 같은 의도치 않은 상황에선 자신의 종료를 알릴 수 있는 방법 자체가 없기 때문이다. 그래서 전통적 방식으로는 자신의 생존 여부를 계속 ping을 통해 서버가 물어보고 timeout 시간안에 pong이 안올 경우 서버에서 접속 종료를 인식하는 번거로운 방식을 취하는데 MQTT의 경우 subscribe 시점에서 자신이 접속 종료가 되었을 때 특정 topic으로 지정한 메시지를 보내도록 미리 설정할 수 있다. 이를 LWT(Last will and testament) 라고 한다. 선언을 먼저하고 브로커가 처리하게 하는 방식인 것이다. Last Will And Testament 라는 말 자체도 흥미롭다. 법률용어인데  http://www.investopedia.com/terms/l/last-will-and-testament.asp 대략 내가 죽으면 뒷산 xx평은 작은 아들에게 물려주고 어쩌고 하는 상속 문서 같은 내용이다. 즉, 내가 죽었을(연결이 끊어졌을) 때에 변호사(MQTT Broker - ex. mosquitto/mosca/rabbitMQ등)로 하여금 나의 유언(메시지)를 상속자(해당 토픽에 가입한 subscriber)에게 전달한다라는 의미가 된다. MQTT Client 가 있다면 한번 실습해보자. 여러가지가 있겠지만 다른 글에서처럼  https://www.npmjs.com/package/mqtt  을 사용하도록 한다. npm install mqtt --save 로 설치해도 되고 내 경우는 자주 사용하는 편이어서 npm install -g mqtt 로 전역설치를 했다. 호스트는 무료 제공하고 있는 test.mosquitto.org 를