기본 콘텐츠로 건너뛰기

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





이 블로그의 인기 게시물

Mac 주의 - 약간 빡치는 git 대소문자 변환 파일명 변환(renaming)하는 법

Mac에서 종종 화나는 일 중 하나가 파일 시스템이 대소문자를 구분하지 않는 점이다.
가령, A.png를 a.png로 바꿔야할 경우 HFS 기준으론 전혀 바뀐 점이 없는 걸로 인식하는데 다소 화가난다.
하지만, 방법이 없는 것은 아닌데

A.png를 임의의 다른 파일로 바꾼다. (ex. A_.png)1에서 바꾼 상태에서 staging 한다. (git add A_.png)1의 파일을 다시 원래 바꾸려고 했던 파일로 바꾼다. (mv A_.png a.png)3을 다시 staging 한다. (git add a.png)commit 한다.https://stackoverflow.com/a/40307511/880991 에서 답변해준 Chris Barr 님에게 감사를.
* 추가

실제로 해보니 git mv --force A.png a.png 가 더 간단하다. 이는 바로 staging 영역에 add까지 해준다.

graphql 연습 /w launchpad

https://launchpad.graphql.com/mw9wkzv99
단순 전체쿼리+조건쿼리+추가

http://graphql.org/graphql-js/passing-arguments/
참고. random ID는 crypto 1.0.1 사용
  type Query {
    Members: [member]
    getMember(id: ID!): member
  }
  type member {
    id: ID!
    text: String
  }
  input memberInput {
    text: String
  }
  type Mutation {
    addMember(member: memberInput): member
  } SQL 정의. facebook 쪽은 스트링에 지지는 거 진짜 좋아하네. *.gql 파일이 있다고 하니 이해해주자.
resolver는 var buffer = [];
const resolvers = {
  Query: {
    Members: (root, args, context) => {
      return buffer;
    },
    getMember: (id)=> {
      return buffer.find(o=>o.id)
    }
  },
  Mutation: {
    addMember(_, {member}) {
      const mm = { ...member, id:randomBytes(10).toString('hex') };
      buffer.push(mm);
      return mm;
    }
  }
}; 평범 평범.
https://dev-blog.apollodata.com/tutorial-graphql-subscriptions-server-side-e51c32dc2951 다음으로 pub/sub 연습.
https://launchpad.graphql.com/xvn94n3ql   type Subscription {
    memberAdded: member
  } member가 added되는 순간을 감시. imp…

즐거운 Online Prototyping Tool 들

jsbin, codepen, jsfiddle 이런 것들은 일단 생략. 너무 유명한 것들이라.

https://launchpad.graphql.com - node.js 기반 graphQL 연습장. 이것만으로도 충분히 훌륭한 백엔드
https://codesandbox.io/ npm 사용이 가능한 클라이언트 사이드 연습장. webpackbin이 너무 문제가 많아서 찾아본 것.

https://scrimba.com 이건 codesandbox+ asciinema(https://asciinema.org/) 같은 느낌인데 키 녹화와 음성 녹화 기능이 추가되었다. 다 좋은데 화살표 키로 빨리감기 뒤로감기 기능이 안되고 익스포트(youtube등)으로 지원이 없는게 아쉽다.

이 둘이 만나면? https://codesandbox.io/s/jvlrl98xw3?from-embed
뭐야 이거 무서워 하지마 ㄷㄷ;  graphql+react-native-web(부왘ㅋㅋ)

https://repl.it/languages 전통을 자랑하는 REPL 도구. 지원 언어 종류가 -_-;;;;;

https://tio.run/# repl.it? 장난함? 얘는 지원 언어가 무려 386종류. J랑 아희도 있다.

https://play.golang.org/ 즐거운 go playground. 소스 포멧팅 넘 좋아.

http://decaffeinate-project.org/repl/ 최고의 coffeescript REPL. 원래 용도는 coffee를 ecma6코드로 바꾸는 것이지만...

https://scaphold.io
https://www.graph.cool/ graphql backend service. scaphold.io는 설치도 필요없는 클라우드. graphcool은 호스팅+클라우드 다있음. 둘 다 막상막하. 푸쉬서버도 되고 뭐 미친득.

https://glitch.com/ gomix에서 결국 glitch로 안착.  node.js

https://www.shadertoy.com 잘하고 싶다! 쉐이다! 오디오도 된다!

http:/…