기본 콘텐츠로 건너뛰기

글

초저가 Bluetooth LE CC2540모듈 OYOU-V100C 사용기

를 시작하기 전에 싸다고 덥석 RF-BM-S02를 안 산걸 후회했다. 왜냐면 핀 피치가 아래와 같이 0.75mm( (0.8+0.7)/2 )라는 듣도 보도 못한 구성이었기 때문이다. 핀은 이런 순서라고 했을 때 순서대로 메뉴얼( http://pan.baidu.com/s/1kTxfwEV )을 보면서 독짓는 늙은이처럼 중국어를 한땀한땀 번역해보도록 하겠다. 그렇다. 나는 지금 매우 혼란스럽다. 1 GND 2 VDD 3 REST - RESET 4 OUT2 - P22 - DC 5 OUT1 - P21 - DD 6 OUT0 - P20 7 INPUT2 - P17 8 INPUT3 - P16 9 INPUT1 - P14 10 VDD 11 GND 12 SCL - IIC SYNC CLOCK 13 SDA - IIC DATA 14 IIC_STATUS - P15 - IIC 데이터 수신시 LOW, 아닐 때 HIGH - 불명확함 원문은 아래 表示模块已经接收到手机发来的数据 , 未收到数据时为高电平 , 当从高电平变到低电平时 , 表示已经接收到到手机发来的数据 ( 此功能在 IIC 通信时使用 , 出口通信时可以不连接 ) 15 PWR - P00 - WAKEUP PIN, LOW/FLOAT일때 WakeUp .원문은 아래 模块睡眠唤醒,低电平唤醒 16 RXD - P02 17 TXD - P03 18 OUT3 - P12 19 PWM1 - P11 20 PWM2 - P10 21 PWM3 - P07 22 PWM4 - P06 23 UART_IIC_BIT - P05 - LOW(GND 접지)일때 IIC통신, 아닐(HIGH/FLOAT) 때 UART 24 ADC1 - P04 25 ADC2 - P01 26 OUT4 - P13 I2C 지원을 위한 핀을 따로 할당하는게 특이하다고 해야하나 아니면 원래 BLE들이 그런 건지는 잘 모르겠다. 검증 응용사례를 친절하게 예를 들어놓았는데 VDD, GND를 연결했다고 가정했을 때 UART 사용 - (16,...

STM32계열을 Arduino에서 사용하기(OS X 주의)

ESP-8266이나 CC2540/1 계열의 모듈을 사용할 때 독립적으로 사용하여 전력소모 및 복잡도를 낮추는게 좋다고 생각하지만 5v 전압을 사용하거나 좀 더 많은 IO가 필요할 때는 Driver와 MCU사이에서 고민을 하게된다. Arduino Pro Mini( http://www.aliexpress.com/item/Pro-Mini-Module-Atmega328-5V-16M-For-Arduino-Compatible-With-Nano/2021666535.html ) 같은 것도 좋은 선택이겠지만 PWM 드라이버 및 범용 제어 목적으로 만만한 Cortex ARM을 선택. STM32F103C8T6 개발보드인데 가격이 매우 착하다. 사양도 빵빵함. http://tw.taobao.com/item/39459211142.htm?fromSite=main&spm=a1z0k.7385961.1997985097.d4918997.dlMnQK&_u=927p8v9r04fd 이렇게 생겼다. 두줄로 되어있어 한꺼번에 두개를 쓰기엔 ESP-01처럼 브레드보드 호환성이 좋지는 않지만 그야 소켓을 만들던 하면 되고 A0~A15까지 16핀으로도 테스트하는데는 아무 문제가 없어서 만족. 역시나 연결은 PL2303으로 하는데 전면의 RX,TX핀만 교차해주고 3.3v나 5v중 필요한 걸 연결하면 된다. GND도 앞뒤로 두개가 있어 편리. 업로드를 위해 BOOT점퍼들을 설정하자. BOOT0 - LOW BOOT1 - HIGH 요렇게 놓으면 끝. 타이밍 좋게도  https://github.com/rogerclarkmelbourne/Arduino_STM32  요런게 있어서 Documents/Arduino/hardware 에 다운로드 하고 바로 쓸 수 있는데. OS X용 Arduino는 PL2303의 tty.usbserial 을 인식을 못한다. 실제로 업로드를 하는 serial_upload 툴에서 못씀. Ca...

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 ../...

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 : (Out...

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이 삽질한다. 언제 고쳐주려나 ㅜㅜ