기본 콘텐츠로 건너뛰기

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이다.
두려워 말고 당장 사용하자!





이 블로그의 인기 게시물

vulcanJS - 10. Posts Update/Delete

마지막으로 수정과 삭제를 구현해보면 목록 조회(List), 상세 조회, 쓰기, 수정, 삭제까지 모든 필요한 요소를 아우를 수 있을 것이다.
감이 좋은 분들은 눈치 챘을지도 모르겠지만 사실 수정이란 건 UI면에서 볼때 이미 양식이 채워져있는 신규 쓰기와 별반 다르지 않다.

먼저 해야할 것은 역시나 Component를 만드는 일이다.
$ vulcan g component
? Package name spectrum-simplebb
? Component name PostsEditComponent
? Component type Class Component
? Register component Yes
   create packages/spectrum-simplebb/lib/components/PostsEditComponent.jsx
 conflict packages/spectrum-simplebb/lib/components/index.js
? Overwrite packages/spectrum-simplebb/lib/components/index.js? overwrite
    force packages/spectrum-simplebb/lib/components/index.js PostsEditComponent를 만들었다.
route도 만들자. /posts/edit/:id 이렇게 경로를 만들면 좋겠다. 그러고보니 이전 글에서 만든 상세보기도 /posts/view/:id 형식으로 만들껄 그랬다.
$ vulcan g route
? Package name spectrum-simplebb
? Route name postsEdit
? Route path /posts/edit/:_id
? Component name PostsEditComponent
? Layout name
 conflict packages/spectrum-simplebb/lib/modules/routes.js
? Overwrite packages/spectrum-simplebb/lib/modules/routes.js? overwrite
   …

vulcanJS - 1. vulcan-cli 설치하고 프로젝트 만들기

vulcanJS를 학습하면서 알아낸 점을 기록하는 의미의 튜토리얼을 써본다.

Telescope도 그랬지만 forum 형태의 예제에서 embedly를 사용하는 URL 요소가 글에 들어가는 점이나 일반인들에게는 익숙하지 않은 Markdown 문법 등을 걷어내고 최소형태에서부터 접근해야할 필요성을 느껴서 단순 post만 목록 열람하고 읽고 쓰는 구현을 해보기로 했다.

먼저, vulcanJS를 github를 통해 clone 하고 meteor create --package를 통해 만들수도 있지만 Vulcan-Cli(https://github.com/VulcanJS/vulcanjs-cli)가 있어서 이걸 일단 사용해보기로 한다.

대충 내용을 읽어보니 Rails 생각이 나기도 하고 재밌어 보인다.
npm install -g vulcanjs-cli 혹은 meteor 에서만 한다면
meteor npm install -g vulcanjs-cli 이런 식으로 설치하고 쓰면 된다.
npm 에 global로 설치한 첫번째 경우 기준으로 진행해보겠다.
설치하고 난 뒤 vulcan 을 실행해보면
$ vulcan
vulcan usage:
Synopsis
  vulcan <action> <object> <...>
    <action>   Operation to perform
    <object>   Asset type (contextual to action)
    <...>      Parameters. If not provided, interactively entered
Project initialisation
  vulcan create <appName>
  vulcan init <appName>
Assets creation
  vulcan (generate|g) package <packageName>
  vulcan (generate|g) model <packageName>…

Troubleshooting - Meteor package가 적용이 되지 않을 때

버전 1.5 기준 package.js에서 Package.onUse 에 새 패키지를 추가했는데 인식하지 못하는 경우가 있다.
Package.onUse((api) => {
  api.use([
    'vulcan:core',
    'vulcan:forms',
    'vulcan:accounts' /* <-- 추가함! */
  ]);
...
} 내부패키지건 원격패키지건 안되는 안된다. 이럴 때 meteor add 후 meteor remove 해도 되지만 더 간단한 방법이 있다. meteor update vulcan:accounts 이렇게 update 해주는 방법이 있다. .meteor/package 파일을 건들지 않아서 좋다. 그래도 역시 좋지 않다. Meteor 스럽지 않다. https://github.com/meteor/meteor/issues/7721 현재 1.5.2에서도 해결이 안되었군요. 해결되어 적용되면 다시 글 올리겠습니다.