기본 콘텐츠로 건너뛰기

초저가 IoT WiFi 모듈 - ESP8266 사용기

알리가 춘절로 2달 걸릴 것 같아 두배정도 비싸게 주고 국내에서 구입 이틀만에 왔으니 위안을 삼아야지. ESP-12를 사고 싶었으나 5배 비싸서 못삼. 나도 부품 장나사 할까 (.....는 아니지 -_-) ESP8266은 그 자체로도 훌륭한 MCU를 가지고 있어서 굴러다니는 USB-Serial 케이블을 3.3v 전압으로 개조. (5v 넣었더니 엄청 뜨거워지더라;) http://www.adafruit.com/products/954  (PL2303 계열. 500mA로 전류가 안정적이다) 이렇게 생긴 놈인데 힘줘서 USB 커넥터 쪽을 쪼개면 요렇게 생겨먹었다. 현재는 빨간선이 5v로 되어있다. 3.3V로 옮겨주고 다시 재조립 제품이랑 연결했는데 다시는 ESP-1 사지 말아야지 싶은 것이 핀 숫자도 적고 배열이 아주 별로여서 핀을 롱노즈로 휘고 쌩쇼를 함. 앞면을 기준으로 위에서 아래로 왼쪽에서 오른쪽으로 USB-Serial 케이블 연결을 보면 * ESP8266 1 2 3 4 5 6 7 8 1: GND (-) 2: GPIO2 3: GPIO0 4: RX 5: TX 6: CH_PD 7: RESET 8: VCC (+) * USB-Serial R G W B (빨 녹 흰 검) R: VCC+ G: TX W: RX B: GND- 이라고 할때 1-B 2-x 3-x 4-G 5-W 6-x 7-x 8-R 순으로 대응을 하고 6번 CH_PD에도 VCC+를 넣어주면 된다. 얼기설기 엮어보자꾸나 펌웨어 개조를 하지 않은 상태에서 기본은 Arduino IDE 같은 곳에서 Tool>Serial Port>/dev/tty.usbserial을 선택하고 Tool>Serial Monitor에서 하단 Both NL & CR / 9600 baud를 체크하고 AT 명령을 테스트 해본다. 이상하다 싶을 땐 TX/RX가 반대로 껴져있는지 CH_PD가 VCC+를 ...

Meteor build farm 사용하기

Npm 사용하는 package 만들다보니 해당 패키지안에 c/c++ 소스 코드가 있어서 바이너리를 OS별로 빌드해야하는 경우가 있는데 package를 meteor publish 로 올리고 나서 OS별로 meteor publish-for-arch packagename@version 해야한다. 가령 나는 linux를 쓰고 친구는 OS X를 쓴다. 그럼 서로 나는 잘되는데 너는 안되냐 이런 소리가 나오기 마련이다. 왜냐면 바이너리가 없으니까. OS X 컴에서 publish-for-arch 해서 올려야한다. 하지만 나는 바이너리를 빌드해줄 친구도 없고 맥도 없다면 (크흐흑 ㅜ_ㅜ) 걱정마시라 meteor admin get-machine을 사용하면 된다. https://github.com/meteor/meteor/wiki/Build-Machines 뭐 이렇게까지 친절할 필요가 있나 싶은 서비스인데; Meteor developer 계정으로 로그인 한 뒤 # OS X meteor admin get-machine os.osx.x86_64 # Linux on 64-bit Intel meteor admin get-machine os.linux.x86_64 # Linux on 32-bit Intel meteor admin get-machine os.linux.x86_32 셋중 하나 필요한 걸로 골라잡니다. 눈치챘을지 모르겠지만 윈도우는 지원안한다. 지금은 윈도우도 된다. meteor admin get-machine os.windows.x86_32 로 접근 가능하다. 그러면 ssh 한것처럼 shell 원격접속이 된다. 작동 방식은 1. 머신을 요청한다. 2. 5분간 머신을 할당받는다. 3. 서버는 요청한 사용자의 로그인 정보를 넘겨받고 4. 5분안에 다시 들어오면 같은 머신을 할당해 준다. 당연히 제한이 있는데 1. 한번에 15분 이상 유지 안됨 2. 주당 한시간 이상 못씀 그래도 이게 어디냐. ...

Meteor Package 만들기

1.0 이후론 package를 만드는 과정이 아주 직관적으로 바뀌었다. 이번엔 photoswipe 를 가지고 만들어 보았다. 모바일에서도 pinch zoom in/out등이 잘 작동하는 의존성이 없는 좋은 javascript gallery다. 먼저 해당 meteor project의 root 에서 package를 생성해보자 meteor create --package spectrum:photoswipe cd packages/spectrum:photoswipe packages/ 경로 안에 해당 package경로로 들어가서 git init 으로 저장소를 초기화한 후 git submodule add https://github.com/dimsemenov/PhotoSwipe.git lib 으로 photoswipe 저장소를 submodule로 추가한다. 여기선 lib 경로아래로 받도록 하였다. packages.js 수정하여 설명, 버전, 저장소등을 수정한다. Package.describe({   name: 'spectrum:photoswipe',   summary: 'JavaScript gallery, no dependencies.',   version: '1.0.0',   git: ' https://github.com/acidsound/meteor-photoswipe.git ' }); Package.onUse(function(api) {   api.versionsFrom('1.0');   api.addFiles([     'lib/dist/photoswipe.css',     'lib/dist/default-skin/default-skin.css',     'lib/dist/default-skin/default-skin.png',     'lib/dist/default-skin/defau...

Meteor 1.0 - Android/iOS 앱을 만들기 위해 Cordova plugin을 사용해보자

Camera와 Gallery를 사용하는 앱을 Meteor로 만들자. 준비 meteor 설치 ( https://www.meteor.com/install ) 실행과정 : project를 생성하고 $ meteor create camera-practice $ cd camera-practice iOS, android 환경을 추가한다. $ meteor add-platform ios $ meteor add-platform android You must agree to the terms to proceed.        Do you agree (Y/n)?  에서 Y혹은 enter android: added platform  플랫폼 추가 완료. 플러그인 추가 $  meteor add cordova :org.apache.cordova.camera Must declare exact version of dependency: org.apache.cordova.camera@undefined https://github.com/apache/cordova-plugin-camera/blob/master/plugin.xml 에서 버전 정보를 확인해보니 0.3.4-dev 하지만 역시 빌드시 오류가 있으므로 안전한 0.3.2로 가자. $ meteor add cordova :org.apache.cordova.camera@0.3.2 added cordova plugin org.apache.cordova.camera@0.3.2 성공. cordova라는 namespace만 붙여주면 마치 원래 Meteor package인양 가져오는 모습이 아주 흐뭇하다 :) 나는 coffeescript를 좋아하니까 meteor add cofffeescript 일단 필요없는 초...

Meteor 1.0 - LocalMarket example - Direcctory 구조 분석

드디어 Meteor가 1.0을 찍었다. 감동 ;ㅅ;)/ Todo가 예쁘게 바뀐 건 봤고 새로운 예제 앱이 생겼다. 그 이름은 바로 LocalMarket. 동영상을 찍어서 보여주고 싶지만 귀찮기도 하고 어짜피 meteor create --example localmarket 치면 다 알테니까. 이전까지 실험적이었던 Mobile 정확히 말해 Cordova 와의 통합이 아주 멋지게 이루어졌다. 실행 옵션이 좀 많아졌는데 meteor run : 그냥 Meteor 웹서버만 기동. 이하 아래의 것들도 기본적으로 Meteor 서버를 실행한다. meteor run android meteor run ios : 안드로이드, iOS 시뮬레이션을 실행한다. 안드로이드의 경우 Hardware Accelerated Execution Manager (Intel HAXM) 을 설치한다. meteor run android-device meteor run ios-device : 실제 iOS/Android 장비에서 실행한다. 실행에 대해선 어짜피 해보면 되니까 여기쯤 해두고 Web과 Mobile(android/iOS)간의 차이를 어떻게 극복했는지가 궁금한 거니까 디렉토리 구조를 살펴보기로 하자. 먼저 디렉토리 구조를 보자. client 는 사용자가 실제로 보는 html+css+js+기타등등이고 server 는 backend 쪽인 것까지는 기존과 동일하다. lib는 client/server 양쪽에서 실행되는 Collection, Router등등의 코드가 있다. client 쪽에선 lib 아래에 jquery.touchwipe.js 를 쓴게 보인다. 그리고 head.html을 따로 분리하여 공통 헤더를 만들어 놓았고 init.js 에선 사용자가 앱/웹을 실행시 Geolocation.currentLocation(); 를 사용하여 위치정보를 수집할 수 있도록 해놓았다. package 는 atmosphere가 아닌 프로젝트별 custom...

Ubuntu 12.04 - RDP에서만 mount 권한이 없을때

Unable to mount USB, Not Authorized 오류가 날때가 있다. 직접 콘솔에서 들어가면 잘 되는데 RDP로 접근할 경우 해당 계정에 권한 문제가 있을 수 있다. http://ubuntuforums.org/showthread.php?t=1336847&page=7  에서 찾았다. sudo vi /usr/share/polkit-1/actions/org.freedesktop.udisks.policy 해서 보면 <allowed_any>no</allowed_any> 라는 부분이 있다 이부분을 <allowed_any> yes </allowed_any> 로 바꾸고 재부팅하자. 알아서 마운트까지 잘 된다.

Arduino+Bluetooth 연결 후 터미널에서 테스트하기

Arduino를 보고 있다. Bluetooth 모듈하고 연결은 tx,rx를 서로 교차연결하고 전원만 받아주면 만사 오케이더라. 이렇게 해서 이렇게 하긴 했는데 테스트 하기 위해선 nc 같은 터미널로 하면 쓸 수 없을까 싶었는데 그냥 screen 명령을 쓰면 되더라. Bluetooth Pairing 후 $ ls /dev/tty.* /dev/tty.Bluetooth-Incoming-Port /dev/tty.HC-06-DevB /dev/tty.Bluetooth-Modem 해보니 테스트 용으로 쓰고 있는 HC-06-DevB가 보이더라. $ screen /dev/tty.HC-06-DevB  으로 접근하면 시리얼 터미널로 돌입한다. 에코가 있으면 에코를 쏠테고 아니면 그냥 받아준다. 뒤에 전송속도를 써서 $ screen /dev/tty.HC-06-DevB 9600 이렇게 접근도 가능하다. 커맨드를 치고 enter를 치면 텍스트를 전달한다. 테스트를 마치고 나갈땐 ctrl+a, ctrl+\ 를 입력하면  Really quit and kill all your windows [y/n] 하고 물어본다. y를 눌러서 나가면 된다.