기본 콘텐츠로 건너뛰기

4월, 2015의 게시물 표시

cc-tool (8051 SoC Programmer) for OSX 빌드

SmartRF04EB를 구했다.
CC2540을 리프로그래밍하기 위해서인데 TI에서는 윈도우 프로그램만 제공한다.

찾아보니 http://sourceforge.net/projects/cctool/ 라는게 있고
빌드를 해서 http://pan.baidu.com/s/1kT02YMV 이곳에 올려놓았다.

먼저 ./configure를 하는데 오류가 난다.
README를 읽어보니
#### Building from source, dependencies: Ubuntu: libusb-1.0, libboost-all-dev,  Fedora: boost-devel, libusb1-devel
Mac OS 10.6.7, from ports: libusb boost pkgconfig 이런 내용이 있다.
port를 사용하라는 식으로 써있지만 brew로 설치해줬다. brew install libusb boost pkgconfig
그리고 make 한다. 역시 또 오류 http://sourceforge.net/p/cctool/discussion/general/thread/544eec39/ 내용을 참조하니 Makefile 중 227줄 내용을 수정해야한단다.
LIBS = -s \  요걸 LIBS = \ 요렇게 다시 make. cc-tool 파일이 생성이 되었다.

ESP8266/nodemcu에서 servo사용하기

https://github.com/milikiller/nodemcu-firmware 에 보니 servo 객체가 있다.

servo를 다루는 것은 프로그램으로 pwm을 구현해도 되지만 잡음 문제도 있고 신경쓰이는 부분이 많으므로 저수준에서 구현된 것을 쓰도록 하자.

일단 firmware 를 다시 빌드하려고 보니

make
DEPEND: xtensa-lx106-elf-gcc -M -Os -Os -ffunction-sections -fno-jump-tables -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -DLWIP_OPEN_SRC -DPBUF_RSV_FOR_WLAN -DEBUF_LWIP -I include -I ./ -I ../../include/ets -I ../libc -I ../platform -I ../lua -I ../wofs -I ../include -I ./ -I ../../include -I ../../include/eagle user_main.c
/bin/sh: xtensa-lx106-elf-gcc: command not found
xtensa-lx106-elf-gcc -Os -Os -ffunction-sections -fno-jump-tables -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals  -D__ets__ -DICACHE_FLASH -DLWIP_OPEN_SRC -DPBUF_RSV_FOR_WLAN -DEBUF_LWIP   -I include -I ./ -I ../../include/ets -I ../libc -I ../platform -I ../lua -I ../wofs -I ../in…

CircuitScribe + Silhouette Cameo 를 이용한 SMD Prototyping

the 개인적으로 납땜을 너무너무 싫어하는데 (못하진 않는다) 빵판에 주렁주렁 듀퐁 케이블 스파게티 무침을 무치는 것도 매우 별로다. 기판을 제작해서 솔더크림을 뿌려서 굽는게 사실 궁극적인 제작 방식인데 에칭 만지는 것도 건강에 안좋고 공간도 필요하고 지저분하고 뭐 답이 없다.
종이 같은데 회로를 그리거나 기계적으로(화학적 방식X) 만들어서 ZAxis 전도성 테이프 같은 걸로 붙여서 작업하고 싶었다. 자료랑 장비를 어느정도 모아서 연습삼아 Silhouette Studio를 열고 원과 직선들을 그어댔다. 그렇다. 펜홀더를 커팅머신인 Silhouette Cameo에 달아서 Plotter처럼 쓰는 것이다. 일단 볼펜을 꽂고 테스트.
오오 매끄러워! 프린터 따위와는 다르다 프린터 따위완.. 해상도라는 개념이 아예 없다. 어째선지 E자가 잘 안나온다. 심지어 맨 마지막에 쓴 글자인데도.
불안한 마음을 뒤로 하고 초 불편한 번들 소프트웨어로 동그라미와 직선을 그었다. 우와아앙 망했네 ㅋ 외곽선 따기모드로 그려서 죄다 쇼트 나버렸다. 대충보니 1.27mm는 무리겠다. 꽤 선이 굵다.
설정에서 두께도 줄이고 외곽선 모드도 해제하고 조정을 좀 했다. 무엇보다 롤러가 안닿고록 오른쪽으로 회로를 다소 이동. 결과물이 나쁘지 않았다. 접점용으로 동네사무용품점에서 산 5mmx5mm짜리 네오디뮴 자석을 접점에 붙이고 ESP8266을 안착하기 위해 양면테이프인 Conductive Tape을 준비. 취급을 상당히 조심해야한다. 잘못하면 테이프가 울어버리고 그러면 전도성을 보장할 수 없으니 모든게 헛수고로 돌아간다. 핀이 있는 곳에 잘 펴발펴발해서 붙이고 3.7v Li-poly 배터리를 연결하여 파란불이 점멸하는 것으로 부팅여부를 확인.
TX/RX부분은 너무 좁게 붙여서 자석끼리 들러붙는다. 수정을 해야할듯. 중간에 테이프껍질을 집어넣어 통전을 막았다.
첨 해보는 거라서 다소 헤메기는 했는데 신기하기도 하고 재미있었음. 본격적인 SMD작업은 무리겠지만 적당한 선에서 검증해보기엔 꽤 괜찮은 방법이라는 생각이 든다. 가는 동테이프가 있으면 …

RF-BM-S02 Pinouts (CC2540/CC2541 Bluetooth LE Module)

* PinOuts


* Pin설명
GND : -
VCC : + 전원 (2~3.6v)
P22 : (Output) Sleep indication
P21 : (Output) connection status indication (low level인지 square wave인지 확인인. module parameter settings 참조)
RES : Reset - GND 연결시
P20 : (INPUT) Level Trigger (Default) / Pulse Triggering Mode
      * Level Trigger Mode 
      GND 일때 활성화 (자체 Pullup)
      0: 장비와 접속될때까지 브로드캐스팅 시작.
      1: 즉시 sleep 모드로 전환. 
      * Pulse Triggering
      매번 Pulse를 받을 때 마다 Boot-up/Shutdown 모드를 전환
      * 모드 전환에 대해선 module parameter settings 참조
P17 : (Input/Output) PWM Input/Output
U+, U- : USB + -, 사용 안함
P12 : (Input/Outpu) Factory Reset. 
      전원을 넣고 30초안에 
      5초간 GND와 연결하면 매개변수 초기화 (Shallow Recovery)
      20초이상 연결시 공장초기화 (Deep Recovery)
      30초이후론 보통의 I/O로 작동.
P11 : (Output) PWM 1out
P07 : (Output) PWM 3out
P06 : (Output) PWM 4out (EN)- High 일때 Sleep, Low 일때 200ms 간격으로 broadcasting. 
P05 : (Input) BRTS 입력 - 모듈 Wake up을 위한 데이터 전송 요청
      0: 호스트에서 데이터를 보냈고 모듈은 호스트로부터 데이터 전송을 기다릴 것이다. 따라서 Sleep 모드로 들어가지 않는다.
      1: 호스트가 데이터를 보내지 않았거나 이미 보냈다. 신호값은…

Arduino 1.6.3에서 ESP8266과 Adafruit 보드들을 추가하자.

ESP8266을 위해 전용 Arduino 1.6.1을 쓰는 방법도 있지만

내 경우엔 Gemma, Flora, Trinket 다 쓰고 있어서 하나하나 Hardware 폴더에 옮기다가

Adafruit에서 https://learn.adafruit.com/adding-custom-boards-to-the-arduino-v1-6-board-manager/adding-the-proxy 이런 훌륭한 대책을 내놓았다.

Arduino 1.6.2 부터 Boards Manager를 통해 3rd party 보드들을 추가할 수 있는데
Proxy로 Adafruit 에 가도록 하는 꼼수를 쓰셨다.

방법은 간단.

설정(Preferences) > Proxy Settings 에

Sever (HTTP) : apt.adafruit.com
Port (HTTP) : 5050

두개를 넣어준다.

참 쉽죠?
그리고 도구(Tools)>Board>Boards Manager를 보자
아주 좋다.
역시나 OS X에선 esptool이 삽질한다. 언제 고쳐주려나 ㅜㅜ



ESP8266 Arduino 정식지원 - 설치 및 Compile

https://github.com/esp8266/Arduino

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

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

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

하는 것 까지 살펴보겠다.

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

0 [*]GPIO168GPIO15 1GPIO59GPIO3 2GPIO410GPIO1 3GPIO011GPIO9 4GPIO212GPIO10 5GPIO14 6GPIO12 7GPIO13 실제 사용하는 매핑표는 이렇다. ESP-01 Pinouts
ESP-12 Pinouts REST는 RESET과 같음 Pin0~pin10까지는 무시하자. servo 관련 게시물에서 잘못 퍼왔다. RESTTXD  ADCRXD CH_PDGPIO4 - 2 GPIO16 - 0[*]GPIO5 - 1 GPIO14 - 5GPIO0 - 3 GPIO12 - 6GPIO1 - 10 GPIO13 - 7GPIO15 - 8 VCCGND
실제 핀 배열은 이렇다.  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같은 도구를 사용하자. 윈도우 드라이버는 이쪽(http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41) 맥용…