'컨버젼스'에 해당되는 글 18건

  1. 2014.06.03 RN42 블루트스 모듈 사용기
  2. 2014.05.02 node.js 로 raspberry sound system 만들기
  3. 2014.04.22 how to arduino wifi-shield firmware upgrade (for macOS 10.9)
  4. 2013.11.25 dunio 사용법
  5. 2013.04.30 아이폰으로 주파수분석해보기 - 1
  6. 2013.01.17 pc 또는 맥에서 아두이노 BT Shiled 세팅하기 2
  7. 2012.11.20 node.js 용 opencv 와 camera 모듈 설치하기
  8. 2012.11.09 node.js로 arduino board 제어하기 1강.Noduino 설치하기

RN42 블루트스 모듈 사용기

|






초기 설정은 다음과 같습니다.




블루투스를 잡으신 다음에 연결 테스트 하실려면 이와 같이 설정 해줍니다.


명령어 관련 문서는....

bluetooth_cr_UG-v1.0r.pdf





UART 에 연결하실때에는 반드시 3.3 V 에 연결하셔야하며 rx,tx 는 서로 교차되어 연결해주어야합니다.









And

node.js 로 raspberry sound system 만들기

|

1. 싸운드 환경 설치


다음과 같은 순서로 유틸리티들을 설치합니다.

  • The ALSA utilities:
    sudo apt-get install alsa-utils
  • MP3 tools:
    sudo apt-get install mpg321
  • WAV to MP3 conversion tool:
    sudo apt-get install lame


사운드 드라이버를 로드해줍니다.


  • sudo modprobe snd-bcm2835

제대로 설치 됐는지 확인하려면


  • sudo lsmod | grep 2835

출력디바이스를 지정합니다.

Select the output device for sound (0=auto, 1=analog, 2=HDMI):

  • sudo amixer cset numid=3 1

1번은 일반핀입니다. 2번은 hdhi단자로 출력하고싶을때 사용합니다.


혹시 소리가 나지 않앗다면 다음과 같이해서 볼륨을 조절합니다.


sudo amixer cset numid=1 n



n 이 볼륨값입니다. 퍼센테이지로 0~100%  사의 값을 넣어 주거나 0~400사이 값을 넣어줄수있습니다.


테스트는 다음과 같이 합니다. 커멘드 창에서 아래 명령어들을 입력 해봅니다.


  • aplay /usr/share/sounds/alsa/Front_Center.wav
  • speaker-test -t sine -f 440 -c 2 -s 1
  • mpg321 “Mannish Boy.mp3″

aplay 로는 wav 만 연주 가능합니다. mp3 는 mpg321 로 하셔야합니다.


기타 사항입니다.


It you get the following error message:

  • ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front

Edit the file /usr/share/alsa/alsa.conf:

  • sudo nano /usr/share/alsa/alsa.conf
  • change the line “pcm.front cards.pcm.front” to “pcm.front cards.pcm.default”

If you are using HDMI and cannot hear any audio at all change the following PIconfiguration setting:

  • edit the RasPI configuration file:
    sudo nano /boot/config.txt
  • uncomment the line:
    hdmi_drive=2
  • save the file and reboot the PI


출처 : 

http://cagewebdev.com/index.php/raspberry-pi-getting-audio-working/

http://www.raspberrypi-spy.co.uk/2013/06/raspberry-pi-command-line-audio/




2. 노드 플러그인 설치


alsa 개발 sdk 를 먼저 설치합니다.

sudo apt-get install libasound2-dev

npm install -g lame
npm install -g wav
npm install -g speaker


출처 :

http://nmecdesign.com/blog/audio-on-the-raspberry-pi-with-node-js/


3. 예제


var lame = require(theApp.module_path +'lame');

var wav = require(theApp.module_path +'wav');

var Speaker = require(theApp.module_path + 'speaker');


var wav_obj = {

                    file : fs.createReadStream('./effectsound/hit1.wav' ),

                    reader : new wav.Reader()

                };


                wav_obj.reader.on('format',function(format) {


                    //console.log(format);

                    wav_obj.speaker = new Speaker(format);


                    wav_obj.reader.pipe(wav_obj.speaker);




                });


                wav_obj.file.pipe(wav_obj.reader);


mp 의 경우는 reader stream을 lame 으로 하면된다.



And

how to arduino wifi-shield firmware upgrade (for macOS 10.9)

|

1. 맥포트가 설치되어있다고 가정하고 dfu-programmer 를 설치 합니다.


sudo port install dfu-programmer

sudo port selfupdate

sudo port upgrade outdated



2. 사진처럼 와이파이쉴드만 따로 떼어내서 쉴드에 달린 마이크로 USB포트에 usb 캐이블로 직접 피씨에합니다.


빨간색으로 동그라미된 부분이 3번점퍼입니다. 이것을 close 시켜주여야 펌웨어 업데이트 됩니다



아두이노 보드에 붙이지말고 따로 떼낸상태에서 업그래이드합니다.



제손입니다. 손톱이 좀 기네요^^;




2. 깃허브의 아두이노 프로잭트 소스를 다운로드 받습니다.

https://github.com/arduino/Arduino


받은소스의 압축을 푸시고  스크립트폴더로 들어갑니다.

cd [압축파일이름]/hardware/arduino/firmwares/wifishield/scripts


3. 루트권한으로스크립트를 실행시켜줍니다. 


아두이노 가 /Applications/Arduino.app 에 설치 되어있다고 가정하면 다음과 같이 터미널에 입력합니다.

sudo ./ArduinoWifiShield_upgrade.sh  -a /Applications/Arduino.app/Contents/Resources/Java -f all








참고 :

http://arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading

http://forum.arduino.cc/index.php/topic,130124.0.html

http://arduino.cc/en/Hacking/DFUProgramming8U2

And

dunio 사용법

|

듀이노는 아두이노를 노드로 제어하기 위한 클라이언트 프래임웍입니다.


https://github.com/ecto/duino



듀이노에는 가상머신 코드가 구현 되어 있습니다. 사실 노드용 라이브러리를 사용하는것보다는 이 코드 체계만 그대로 사용하는편이 더 낫습니다.

시리얼포트로 직접 명령코드를 날려 사용하면 됩니다.


다운로드 받은후 src/du.ino 파일을 아두이노에 올려 사용합니다.


코드 정리

명령어는 다음과 같습니다.

  • 00 pinMode
  • 01 digitalWrite
  • 02 digitalRead
  • 03 analogWrite
  • 04 analogRead
  • 97 ping
  • 98 servo
  • 99 debug


한번에 9~11바이트 단위로 명령어가 전달됩니다.


!로 시작 하고 그다음 2바이트는 명령어코드 그다음 2바이트는 핀번호 다음 3바이트는 입력값(0~255)입니다.

디지털의 경우는 0이면 low, 0이상이면 high입니다.

마지막은 마침표로 명령어가 끝났다는것을 알립니다.



void loop() {
  while(Serial.available() > 0) {
    char x = Serial.read();
    if (x == '!') index = 0; // start
    else if (x == '.') process(); // end
    else messageBuffer[index++] = x;
  }
}



.표 까지 씨리얼포트에서 값을 얻어온 다음 process() 에서 전송받은 문자열을 해석합니다.


다음은 가장 핵심이 되는 process함수의 소스 부분입니다.


-------------------

/*
* Deal with a full message and determine function to call
*/
void process() {
  index = 0;

  strncpy(cmd, messageBuffer, 2);
  cmd[2] = '\0';
  strncpy(pin, messageBuffer + 2, 2);
  pin[2] = '\0';

  if (atoi(cmd) > 90) {
    strncpy(val, messageBuffer + 4, 2);
    val[2] = '\0';
    strncpy(aux, messageBuffer + 6, 3);
    aux[3] = '\0';
  } else {
    strncpy(val, messageBuffer + 4, 3);
    val[3] = '\0';
    strncpy(aux, messageBuffer + 7, 3);
    aux[3] = '\0';
  }

  if (debug) {
    Serial.println(messageBuffer);
  }
  int cmdid = atoi(cmd);

  // Serial.println(cmd);
  // Serial.println(pin);
  // Serial.println(val);
  // Serial.println(aux);

  switch(cmdid) {
    case 0: sm(pin,val); break;
    case 1: dw(pin,val); break;
    case 2: dr(pin,val); break;
    case 3: aw(pin,val); break;
    case 4: ar(pin,val); break;
    case 97: handlePing(pin,val,aux); break;
    case 98: handleServo(pin,val,aux); break;
    case 99: toggleDebug(val); break;
    default: break;
  }
}

------------------


98 서보의 경우 val 값은 서보 명령어가 되고 aux 값이 데이터 값이 됩니다.


서보를 포함 핑,디버그 등 90번대 이상명령어의 경우는 

cmd(2)pin(2)val(2)aux(3)

9 바이트 명령어가 됩니다.


서보의 val 값의 종류는 아래와 같습니다.

00: detach

01: attach

02:write

03:read


서보 다루기 예>

9번 포트 제어

!980901000. 포트 깨우기(attach)

!980902045. 45 각도로 이동

!980900000. 포트 잠자기(detach)



99 디버거는 처음명령어코드 중간 val(빨간 배경) 값만 사용됩니다.

디버거 켜기 !990011000.

디버거 끄기 !990000000.



pinMode 의 경우는 0이면 OUTPUT, 0이 아니면 INPUT 입니다.

구현 함수는 다음과 같습니다.


/*
* Set pin mode
*/
void sm(char *pin, char *val) {
  if (debug) Serial.println("sm");
  int p = getPin(pin);
  if(p == -1) { if(debug) Serial.println("badpin"); return; }
  if (atoi(val) == 0) {
    pinMode(p, OUTPUT);
  } else {
    pinMode(p, INPUT);
  }
}





예>

!0113001.


! : 시작

01 : digitalWrite

13 : 핀번호

001 : high

. : 명령 종료 








And

아이폰으로 주파수분석해보기 - 1

| 2013. 4. 30. 14:52
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

pc 또는 맥에서 아두이노 BT Shiled 세팅하기

|


일단 여기서 아두이노용 블루투스 쉴드를 구입했습니다.


http://www.eleparts.co.kr/EPX7NVUD


제품 설명에 슬래이브 모드를 지원한다고 되어있는데 상호두개 동시에 페어링할필요없이 한쪽(pc,안드로이드)에서 일방적으로 페어링을 걸어 사용할수있다는 뜻인듯합니다.


AT설정이라는것이있는데 그것으로 페스워드나 이름을 바꿀수 있는거같습니다.

그걸 하려면 좌측 딥스위치를 To FT232로 맞추어야하나봅니다.


그건 나중에 하고 일단은 암호가 기본으로 1234되어있다고 해서 To board(통신, 페어링모드)로 맞춰놓고 작업을 시작했습니다.


아두이노 우노에 붙일거라서 5v세팅을 했습니다.








To Board , 5V 세팅 하고 우노에 장착!








9V~12V 사이의 외부 전원연결  이렇게 하면 일단 하드웨어는 세팅완료



일단 목표는 씨리얼로 'a' 를 전송하면 13번 핀을 high 로하고 'b'를 전송하면 low로 하는 간단한 테스트를 해보려합니다.


맥에서 장비설정을 엽니다.






쉴드이름이 초기값은  itead입니다. 이것을 선택해줍니다.





위와 같이 연결실패했다고 나오면 암호 옵션을 클릭합니다.





특정 암호 사용을 선택하고 암호는 초기값인 '1234' 를 입력해 줍니다.




환경설정에 블루투스에들어가 보면 연결이 안됨으로 나오는데 걱정하실 필요없습니다. 

이러면정상입니다. 맥에서는 씨리얼 통신프로그램을 켜고 접속을 하면 그때 연결이라고 뜨게됩니다.



이렇게 하면 몇가지 설치를 한후 bt쉴드가 시리얼포트로 잡히게 됩니다. 


그럼 이제부터는 씨리얼포트처럼 사용하면 되는겁니다. 참 쉽겠죠?


이제 연결만 하면됩니다.


일단 아두이노에 다음 코드를 주입합니다.

(참고로 업로드할때는 FT232로 해놓으시고 하셔야합니다.)


/*


basic serial i/o tutorial

created by gbox3d 2012 12 23


*/


void setup() {

  // initialize serial:

  Serial.begin(9600);

  pinMode(13,OUTPUT);

  digitalWrite(13,HIGH);

  

}


void loop() {

  // if there's any serial available, read it:

  while (Serial.available() > 0) {

    

    char flag = Serial.read();

    

    if(flag == 'a') {

      digitalWrite(13,HIGH);

    }

    else if(flag == 'b') {

      digitalWrite(13,LOW);

    }

    

  }

}






방금 잡은 씨리얼로 잡힌 블루투스 쉴드를 선택합니다. 이름은 기기에 따라 달라 질수있습니다.

맥에서는 tty로 잡으셔야합니다.



시연 동영상





- AT커멘드 진입하기


FT232로 딥스위치를 세팅합니다. 그리고 연결된 아두이노의 씨리얼포트로 접속합니다.(아주중요. 블루투스포트가 아님)

보드레이트9600입니다. 

No line ending을 선택합니다.(다른거선택하면 OK가 보이지않습니다.)


AT 커멘드가 제대로먹히면 다음과같이 OK 메씨지가 뜸니다.

나머지 명령어는 첨부파일을 참고하세요.







참고자료 



메뉴얼 :  

BTShieldV2.1.pdf
















And

node.js 용 opencv 와 camera 모듈 설치하기

|



노드에서 웹캡에 접근하여 캡쳐화면을 받거나 영상인식을 할수있도록 도와주는 opencv 모듈을 사용하는 방법에 대해서 알아보자

노드 카메라 모듈 아래 싸이트에서 찾을 수 있다.
https://github.com/wearefractal/camera/tree/master

카메라 모듈은 커피스크립트로 되어있다. 커피 스크립트에 잘모른다면 자료는 이것을 보도록하자
http://www.ibm.com/developerworks/kr/library/wa-coffee1/index.html

일단 카메라모듈을 설치하기 위해서 선행되어야할것이 opencv의 설치이다.


-맥용 설치법-


node camera 모듈 맥에서 세팅하기

1. 맥포트설치(첨부파일확인)


2. 맥포트 업글
sudo port selfupdate
sudo port install pkgconfig

3. opencv설치
sudo port install opencv

4. 카메라 모듈 설치
npm install opencv
npm install camera


참고자료:
http://blog.secmem.org/46



-윈도우즈용

준비중...

-리눅스용



And

node.js로 arduino board 제어하기 1강.Noduino 설치하기

|


1. node.js 확인


먼저 노드를 설치합니다.(노드에 대한 약간의 선행학습이 필요합니다.)


터미널창을 여시고 node 와 npm이 제데로 동작하는 확인합니다.


npm이라는것이 있는데요. 이것은 노드를설치하면 같이 깔립니다.

노드 플러그인을 설치해주는 유틸입니다. 


node 실행해서 간단하게 핼로월드 찍어보기



터미널에서 npm 실행화면




2. 노드위노설치하기


노드위노(noduino )는 듀이노(duino)를 사용한 서버 프레임웍입니다. 


터미널에서 다음을 입력해봅니다.

ls /dev | grep usb


아무것도 출력되지않으면 아두이노보드가 피씨와 연결이 안된겁니다. 연결설정을 확인하시고(리눅스, macosx 용)



  1. crw-rw-rw- 1 root wheel 18, 17 24 Feb 22:54 cu.usbmodem1d11
  2. crw-rw-rw- 1 root wheel 18, 16 24 Feb 22:00 tty.usbmodem1d11


가 출력되었다면 정상적으로 보드가 잡힌겁니다.( 윈도우는 설정에서 확인하세요.)


http://semu.github.com/noduino/ 에 접속하셔셔 파일을 다운 받거나..



git clone git://github.com/semu/noduino.git 으로 프로잭트저장소를 끌어 옵니다.


파일첨부합니다. 그러나 되도록 최신버전을 받아서 하시는것이 좋을듯^^;


noduino-master.zip



암튼 다운받은 파일의 압축을 푸시고 터미널창을 여신다음 cd 를 입력하시고 압축을 푼 폴더를 터미널창에 끌어다 놓습니다.







ls 로 폴더로 제데로 이동했는지 확인합니다.




그다음 npm으로 노드위노(nodeuino)에 필요한 노드확장플러그인들을 설치합니다.


npm install 을 쳐줍니다.






3. 노드위노 전용 듀이노(duino) 설치하기


듀이노는 노드위노와는 다른것입니다. 듀이노는 단순히 자바스크립트로 아두이노를 제어하는 프로잭트이고 여기에 노드를 붙이는것은 노드위노가 해주게됩니다. 

그래서 노드위노용 듀이노가 필요합니다. 그냥 듀이노를 설치하시면 안됩니다.

여러 버전의 듀이노가 있지만 꼭 여기서 듀이노를 다운받아서 해야합니다.

https://github.com/semu/duino



duino-master.zip



마찬가지로 압축을 풀어 듀이노(duino) 폴더에 넣어줍니다.

node_modules 폴더 안에 있는 듀이노와는 다르므로 이것을 카피하시면 안되고 새로 받으셔야 합니다.




duino/src/du.ino 파일을 아두이노 보드에 업로드합니다.






3. 예제 실행하기


텍스트 편집기로 다음과 같이 간단한 예제를 만들어봅니다.


var requirejs = require('requirejs');

requirejs.config({nodeRequire: require});


requirejs(['./public/scripts/libs/Noduino','./public/scripts/libs/Noduino.Serial','./public/scripts/libs/Logger'],

        function(NoduinoObj,NoduinoConnector,logger) {

            console.log('load success NoduinoObj module');

            var Noduino = new NoduinoObj({debug: true, host: 'http://localhost:8090'}, NoduinoConnector,logger);

            Noduino.connect(function(err, board) {

                if (err) {

                    console.log('************device not ready');

                    return console.log(err);

                }


                console.log('Connected to board');

            });



        });


그리고 1.js 저장합니다.



1.js






터미널에서 node 1.js 를 타이핑해줍니다.



다음과 같이 설정이 초기화되고 제데로 모듈이 동작하지만 아두이노 보드가 없기 때문에 디바이스 못찾는다고 나옵니다.

물론 아두이노 보드가 있으면 커넥트 됐다는 메쎄지가 나오겠죠

암튼 노드에 아두이노 제어모듈은 제데로 설치된것입니다. 이제 쇼핑몰로 가서 아두이노 구매 하시고 즐겨보시길 바람니다.



보드구입 하고 다시 실행해보면...

다음과 같이 나옵니다.


















And
prev | 1 | 2 | next