IoT를 이용하는 (솔직히 이 단어 매우 싫어한다. V=IR도 모르는 저기 정치-경영쪽 사람들이 맨날 떠드는게 볼썽사나워서) 전등 스위치를 동생 생일 선물 대신 만들어주기로 하였다. 


기존에 파는 제품들도 있으나 가격도 비싸고 기능도 별로 없는듯 하여 직접 제작에 들어갔다.


컨트롤러야 아두이노 나노를 쓰면 되고, 전등은 100V 이상의 고압을 사용하니 릴레이로 컨트롤, 

문제는 무선 방식을 택했기에 Wifi든 Bluetooth든 지그비 통신이든 통신 모듈을 아두이노와 연결해야했다.


통신거리가 길어봐야 수m 이고 Bluetooth라면 시리얼 통신 앱이 어떤 OS든 하나는 있을 것 같았기에 Bluetooth 로 개발을 하기로 결정.


전기회로를 설계할 때 가능하면 중국제 제품을 안쓰려고 하는데, 품질이 의심되기 보다는 주로 datasheet를 찾기 어렵거나, 있다고 해도 중국어로만 되어 있는 경우가 간간히 있어서 그렇다.


가격을 생각해서 Devicemart에서 중국제 HC-08 Bluetooth 모듈을 일단 구매 했으나, 다양한 제품들을 만드는 회사라 검색어 오염이 있고, 다른 제품군에 대한 설명은 많으나 HC-08 제품에 대한 설명은 거의 전무했다. 


다른 제품들과 중국어로된 회사 홈페이지를 뒤져서 결국 통신에 성공했다. 


Bluetooth 모듈 사용은 이번이 처음이기에 연결을 시키면서 다양한 것을 배웠다.






1. Arduino와 HC-08의 연결


일단 부품은 잘 모르면 무조건 모듈로 된 제품을 사야한다. 


그냥 덜렁 센서만 툭 샀다가 어떻게 연결하는지도 모르고 고생하기 쉽다.


생으로된 HC-08 모듈을 구매하고 길을 찾고자 여기로 오신 분은 얼른 가서 모듈로된 부품을 구매하기 바란다.


하지만 안타깝게도 부품을 구매한 Devicemart에도 제대로된 모듈 연결방법 설명이 없었다. 


연결방법은 간단하다. 핀은 총 6개가 나와있는데 실질적으로 4개만 사용하면 된다.



* Serial 통신


거의 대부분의 Serial 통신, 직렬 통신은 핀이 네개 필요하다.


VCC, GND, TX, RX


VCC와 GND는 말 그대로 전극의 +와 -. 장치에 전력을 공급해주는 핀이다.


나머지 둘이 통신을 위해서 필요한 핀인데, TX는 데이터 전송용, RX는 데이터 수신용으로 필요하다. 


중요한 것은 두 장치를 서로 연결할때 VCC와 GND는 극성 잘 보고 꼽으면 되지만 RX와 TX는 정 반대로 연결을 해주어야 한다는 것이다.


VCC핀은 보드의 5V 핀에 그대로 연결. GND 핀도 보드의 GND 핀에 그대로 연결을 하면 되지만, 


통신 모듈의 RX핀은 보드의 TX 핀에,

통신 모듈의 TX핀은 보드의 RX 핀에 연결을 해주어야 한다.


Arduino 보드에도 Digital 0번, 1번 핀이 이러한 기능을 수행해 주는데, 이경우 아두이노인지 블루투스 모듈인지 둘중에 하나와 통신이 안되었던 것으로 기억한다.


아, 아마 아두이노의 Serial Monitor 창에서 입력하는 값이 TX가 안되었던 것 같은데...


여튼 아두이노의 D0 D1핀은 앵간하면 건드리지 않는 것이 좋다는게 경험이다.



문제는 그럼 어떻게 Serial 통신을 하느냐, 아두이노 자체적으로 있는 라이브러리인 <SoftwareSerial.h>를 사용하면 된다.


이 라이브러리를 사용하면 지정한 디지털 핀을 TX와 RX 핀으로 설정해서 Serial 통신을 가능하게 해준다.


최종적으로 연결은 이런식으로 하면 됩니다.



VCC와 GND는 알아서들 잘 연결하실꺼고, 


위의 사진에서 모듈의 RX는 아두이노의 D10에, TX는 D11에 연결을 했다.


2. AT(필드) 코드


이번에 처음 배운 것이다. 


왜 어디에도 AT 코드를 설정하는 방법에 대해서 나와있지 않는가....


either 너무 기본적인것이거나 다들 불친절한 것이거나.



AT 코드는 Serial 통신을 사용해서 모듈의 칩의 설정을 바꾸어 주는 코드이다.


이 블루투스 모듈에선는 아래의 AT 코드들이 있다.



펌웨어 버전 확인부터, 블루투스 이름 변경, 연결가능성 설정 등의 메뉴가 있다.


문제는.... 이 코드를 그래서 어디에 어떻게 입력하는지 몰랐다.


설마 그냥 Serial 통신을 연결해두고 "AT"라고 정말 입력하면 돼??



사전 준비가 조금 필요하지만 일단은 진짜 문자 그대로(= ASCII 코드로 ) 저 코멘드를 입력하면 되더라.



일단 HC-08 모듈은 조금 특수적으로 AT Mode에 들어가야 저 명령어가 먹는다.



HC-08아닌 다른 모듈의 경우 KEY를 누르거나 5V 전압을 인가하면 된다고 하던데 그냥 전원을 넣은 상태로 다른 기기와 Pairing이 안된 상태면 무조건 AT 모드에 있는 것 같다.


참고로 이때 이 모듈의 경우 LED가 깜박거린다. 



AT 모드에 진입한후 저 명령어를 입력하기 위해서는 아래의 코드가 필요하다. 


3. 소프트웨어 제작


#include <SoftwareSerial.h> // 가상 Serial 통신을 위해 헤더파일 불러오기


byte rxPin = 11; // 모듈에서의 RX는 D10번, TX는 D11에 넣었다.

byte txPin = 10; // 그렇기에 모듈의 RX와 연결된 D10번 핀은 TX핀으로 설정해야한다.

// 참고로 사용하는 아두이노 기종에 따라서 SoftwareSerial.h를 사용할 수 없는 핀들이 존재한다.

// 꼭 홈페이지에서 document를 읽고 오자. 

// Uno 기준으로는 10번, 11번 모두 해당이 없다.


SoftwareSerial BT(rxPin, txPin); // BT 라는 이름으로 설정.

char c = ' ';


void setup() { // 두 시리얼 포트를 모두 시작.

  Serial.begin(9600); // 시리얼 모니터용

  BT.begin(9600); // 블루투스 모듈용

}


void loop() {

  if(BT.available()){ // BT 모듈에서 응답을 받는 경우이다. BT의 TX에서 전송이 들어올 때.

    while(BT.available()){ // while문을 넣지 않으면 한줄에 한글자씩 출력된다.

      delay(10);

      c = BT.read();

      Serial.print(c);

    }

    Serial.println("");

  }

  

  if(Serial.available()){ // Serial 모니터에서 직접 값을 입력한 경우.

    c = Serial.read();

    BT.write(c); // 블루투스 모듈의 RX 핀으로 쏴준다.

  }

}


char 형식이 아니라 16진수 그대로 출력하게 해두고 가지고 놀다가 재미있는 사실을 발견했는데 값이 입력될때 내가 입력한 문자의 아스키 코드 뿐만 아니라 10진수로 10, 13 이 같이 입력이 되는 현상을 발견했다.


찾아보니 각각 Line Feed와 Carriage Return.


아무래도 시리얼 모니터에 값을 입력하고 엔터를 눌러 전송을 하면 엔터 값 자체도 전송이 되는 듯 하다. (이것도 기본적인 거겠지만 이번에 처음 배웠다.)





참고로 해당 설정은 시리얼 모니터의 아래에서 바꿀 수 있다.


4. 연결


아두이노 연결과 모듈 연결을 성공적으로 끝냈으면 위의 코드를 올리고 시리얼 모니터에 

AT 

라고 입력을 하면 

OK 

라고 뜨는 것을 확인할 수 있다.

(참고로 엔터를 눌러서 값을 전달하는 것과 전송 버튼을 눌러 값을 전달하는 것은 값이 다르다.)


두 HC-08 모듈을 연결하기 위해서는 하나는 마스터 모드, 하나는 슬레이브 모드여야 가능하다.


지그비 통신에서도 비슷한 것을 본 적이 있는데 여기서도 그렇게 작동하나 보다.


둘다 AT 모드에서 설정을 바꾸지 않았다면 둘다 Slave 로 되어 있을 것이다. 


AT+ROLE=M


커멘드를 입력하고


AT+RX 커멘드를 통해서 위의 시리얼 모니터처럼 값이 나오는지 확인한다.


Role : Master


라고 나올 것이다.


자... 이제 두 모듈을 어떻게 서로 연결해주지....


했는데 그냥 연결이 알아서 되더라.


여러 모듈이 동시에 존재하는 경우에는 어떻게 해야하는지는 모르겠으나, 같은 공간에 마스터 하나와 슬레이브 하나만 존재하고, 거리가 멀지 않으면(10미터 이하) 즉각 둘이 페어링이 되는 듯 하다.


일단 목적은 두 기기를 연결시키는 것이라 여러 모듈을 서로 연결시키는 것은 시도해보지 않았다.


나와 같이 HC-08을 사고 힘들어하는 누군가에게 도움이 되었기를 바라며...





Posted by Knowblesse

서지 관리 프로그램으로 EndNote를 써봤지만 왜인지 모르게 입맛에 맞지 않았고 Mendeley로 갈아탄지 2년.


본인은 데이터를 전부 개인 NAS에 올려서 보관을 하고 있기에 찾은 논문들도 클라우드에 올라가 있다. 


Mendeley에 있는 유용한 기능 셋을 나열하자면, 

- 클라우드 기능. 찾은 PDF를 자체 cloud에 업로드/다운로드 할 수 있다

- watched folder 기능. 폴더 하나를 지정하면 해당 폴더에 들어오는 새로운 pdf 파일을 인식해서 자동으로 등록해준다.

- organize 기능. 찾은 pdf를 하나의 폴더에 넣어준다.


목적은 단순했다.

기존의 PDF 파일들을 동기화 하던 방식(자체 NAS)을 유지하면서 Mendeley를 쓰고 싶었다.


개중에는 비슷한 연구자가 또 있을거라 생각한다. 

원래 드랍박스나 OneDrive로 논문을 관리하다가 Mendeley를 쓰게 되는 경우처럼.


Mendeley의 클라우드를 쓰기 싫은 이유는 

1. 내 NAS가 더 빠르다.

2. 거지같은 아이패드에서 쓰는 pdf 앱은 Mendeley의 cloud에는 접근하지 못한다. 

물론 iOS용 Mendeley 앱이 있으나 자기네 클라우드에서 파일을 받는 것만 가능한 것으로 앎. 

왜냐하면 Mendeley 앱에서 pdf를 받고 그걸 내가 쓰는 pdf 리더 앱으로 열고 수정한 다음에 닫으면 그게 Mendeley로 넘어가지 않아서 서버로 올려주지 못하거든.

물론 Mendeley 앱 내의 주석기능으로 수정하면 반영이 된 상태로 다시 업로드가 되지만.

3. 안에서 폴더를 나눠도 실제 파일 시스템에서는 폴더가 나뉘지 않는다.


결론적으로 

"내 PDF는 알아서 내가 관리할테니 Mendeley 너는 목차나 잘 만들고 비슷한 논문 뜨면 찾아줘" 


문제는....


Mendeley 자체적으로 cloud 기능이 있기에 

1. 새로운 장치에 mendeley를 설치한다.

2. 폴더를 자체적으로 만들고 Mendeley 클라우드에서 pdf 파일들을 다 내려받는다.

(이 pdf 파일들은 사실 이미 내 클라우드의 논문 폴더에 다 들어가 있다.)


Case A. Mendeley에서 pdf를 열고 수정할 경우 자체 폴더에 있는 pdf가 수정되고 내 클라우드에 있는 친구들은 수정이 안된다.


Case B. Mendeley에서 pdf를 열지 않고 클라우드에서 열어서 수정할 경우 Mendeley 앱에서 열었을 때 수정이 안된 버전이 보여진다.


온갖짓을 다 해봤는데 결국 안되는듯 하다. 

누가 멋대로 pdf 파일 가져가래.. PDF 동기화를 끄는 버튼도 없다. 


물론 한 컴퓨터를 정해서 지속적으로 Cloud 논문 파일을 Mendeley에 업로드 해주면서 다른 모든 기기에선 Mendeley 클라우드를 이용하는 방법도 있긴 하다. 귀찮아서 그렇지... 마치 pull이 한 컴퓨터에서만 되는 git의 느낌이려나.






Posted by Knowblesse

때는 작년 여름, 모종의 이유로 MMORPG를 본의아니게 시작하게 되었다.


같은 모종의 이유로 길드에 가입하게 되었는데 같이 던전을 돌거나 잡담을 하기 위해서는 디스코드를 필수로 사용해야했고, 마이크가 달린 헤드셋의 필요성이 생겼다.


이전에는 마이크가 달린 이어폰을 사용했었으나 핸드폰으로 계속 디스코드를 틀어놓기에는 한계가 있었기에..


처음으로 특정 품목의 상품을 구입하면, 특히 전자기기인 경우, 가장 비싸고 좋은 제품부터 시작해서 필요 없는 기능을 뺴면서 하위 기종으로 내려오는 경향이 있는데 이번에도 같은 방법으로 헤드셋을 알아보았다.


로지텍 제품을 벌써 4개나 구입하고 주변 사람들에게 3개를 더 판 로지텍 빠이기에 로지텍 게이밍 기어를 둘러보다가 마음에 드는 제품으로 G633 기종을 골랐다.


<https://www.logitechg.com/>

(그때는 G933이 없었던것 같은데.. )


구입 당시로부터 거의 1년이 지났는데 아직도 G633이 가장 최신 기종 라인으로 나와있다.

G933과의 차이점은 무선이냐 아니냐의 여부인 것으로 보인다.


그때도 G933이 있었는지는 기억이 나질 않는데 아마 있었다면 무선이 편하기는 하는데 선 정리만 잘하면 굳이 무선 기능을 쓸 이유가 없을듯 해서 + 괜한 딜레이 걱정 때문에 G633을 구입하지 않았을까 생각한다.


개봉기가 아니라 구입후 1년동안 쓴 후기, 제대로 된 리뷰를 시작합니다.



1. 사운드 : 하상 (가격에는 못미침)

안타깝게도 필자는 소위 '막귀'인 사람인지라 가격차이가 4~50만원씩 차이가 나지 않는 이상 오디오 제품의 성능을 구별하지 못한다. 해봐야 상중하로 구분할 수 있으려나.


하지만 G633은 18만원이라는 가격의 오디오 제품에 기대하는 성능 이하의 사운드를 보여주었다. 마이크와 기타 기능들이 달려있는 제품이기에 18만원이라는 가격이 나왔는지는 모르겠지만 음악 감상용의 18만원대 헤드폰에 비해서는 확실히 낮은 품질이었다.


어쩌면 게이밍 헤드셋과 음악 감상용 헤드폰을 1:1로 비교하는 것은 반칙인것 같지만 로지텍사에서 가장 비싼 라인으로 나와있는 헤드폰인데 가격을 더 높이더라도 사운드에 신경을 더 쓸 수 있지는 않았을까.


2. 기능 : 최상

가장 마음에 드는 기능은 접이식 마이크이다. 

마이크 부품에 스위치가 있어서 마이크를 올리고 내리는 동작으로 시스템적으로 마이크를 껐다 켰다 할 수 있다. 또한 멀티 플레이 게임중에 다른 사람들이 말해준 바로는 내 마이크에서 다른 잡음이 상대적으로 덜 들린다고 하더라. 


좌측 스피커 옆에 붙어있는 볼륨조절 버튼이나 기타 기능들도 유용하게 쓸 수 있을 것 같다.


<https://www.logitechg.com/>


눌러서 말하기 기능으로 쓰기에는 매번 헤드셋으로 손을 올리기 어려워서 사용하기 어려웠다.

하지만 직관적으로 사운드를 조절하거나 뮤트 버튼 등을 배정시켜서 편리하게 사용하고 있다.


로지텍 게이밍 기어 제품을 하나 이상 가지고 있다면 같은 프로그램으로 키 변경이나 EQ 등 잡다한 설정들을 변경할 수 있다.


참고로 난 제발 게이밍 기어에 색 좀 넣지 말았으면.. 컬러 LED 왜 넣는 거임...

커스터마이즈를 통해 뭔가 돋보이고 싶어하는건 알겠는데 이런거 커스터마이즈 할 시간에 얼굴을 커스터마이즈 해라


사진 맨 위에 보면 03 버튼 위에 파란색이 살짝 보이는 토글 버튼이 보인다. 


헤드폰에 USB 선, AUX 선을 두개를 꼽을 수 있는데 USB 선으로는 컴퓨터와 다이렉트하게 연결이 되고 AUX 선을 사용하면 핸드폰이나 다른 음향기기와 직접적으로 연결할 수 있다. 


믹싱 기능은 당연히 없고 저 토클 버튼을 사용해서 어디로부터 입력을 받을까를 결정할 수 있다. 


컴퓨터와 피아노에 연결해두고 음악 제작 작업을 해본적이 있는데 Ground 선이 서로 붙어있는지 AUX로 설정해두고 피아노를 치니 노이즈가 끼더라. 꺼진 컴퓨터에 연결되어있던 USB 선을 뽑았더니 노이즈가 사라지는 것을 확인했다.  이 부분에 있어서는 살짝 디테일이 부족한 것은 아닐까 싶다.



3. 내구도 : 최악

이 글을 쓴 이유이기도 하다. 내구도가 엉망이다.


이어폰을 사용하는 사람들이 단선을 가장 걱정한다면, 헤드셋을 사용하는 사람들은 헤드셋의 목이 잘리는 현상을 가장 걱정한다. 


이 빨간 부분이 끊어지는 현상. 헤드폰 부품중에서 가장 큰 압력이 걸리는 부분이기에 단단하게 만들어야 한다. <http://mofi.co.kr/>


이어폰 단선이나 헤드셋 목잘림이 그렇게 자주 있는 일은 아니지만, 가장 취약한 부분이기에 한번 크게 사고가 나거나 3년 이상 오래 쓰면 아무리 조심히 써도 신경을 쓰게 되는 부분이라고 생각한다.


필자도 젠하이저 접이식 헤드폰을 선물받아서 매일 사용하다가 1년을 못견디고 저 부분이 부러지는 사건이 두번이나 있었다. 


이후에 출시된 후속작에서는 해당 부분을 메탈 재질로 바꾸어서 출시했다.


그럼 G633 제품은?


금속 부품 하나 없이 전부 플라스틱 재질이다.


헤드셋의 아치 부분 안에는 메탈이 들어가 있지만 나사를 제외하곤 모두 플라스틱으로 만들어졌다.


그래서 무슨 일이 벌어졌느냐...



처음에 제품을 사서 착용할 때부터 플라스틱이 서로 부딪혀서 끼이익 거리는 소리가 나는 것이 내구도의 허접함을 소리치고 있었는데 결국 이런 일이 벌어졌다. 


저 부품 하나가 헤드셋 한쪽에 가해지는 압력을 모조리 받고 있는데 끊어진 부분 두께가 1.5mm 이다. 


세상에 이쑤시개 여러개를 동그랗게 말아서 쓰는 것이 더 튼튼하겠다


로지텍사에 연락을 했으나 타 블로그에서 외국인 리뷰어가 심하게 까는 것 처럼 서비스를 안해준다더라.


순간접착제로 부품을 붙여보거나 글루건으로 떨어진 부분을 통쨰로 접합하거나 했지만 역시나 압력이 크게 가해져서 1시간만에 떨어져나갔다. 


여기서 부터 수리기.


결국 일을 크게 벌렸다.


망할놈들이 안고쳐준다면 내가 부품을 하나 만들고 말지...


부서진 부품을 역설계 해서 3d 모델을 만들고 단선 없이도 부품을 선에 결착할 수 있도록 디자인을 수정했다.


처음에는 위파트 아래파트 만들어 선 위에서 붙이려 했으나 어려웠다.


결국 저렇게 단일 부품 구조로 엇갈린 형태의 홈을 만들어 선을 저 사이에 억지로 끼워넣도록 했다.





기어이 완성.


중간에 원래 붙어있던 부품을 빼낼때 니퍼로 조금씩 부수며 빼다가 선을 끊어먹을 뻔 했다...


다행히 기능에는 지장이 없는 것으로 봐서 선 겉의 피복만 끊어버린 것 같다.


이번 리뷰 및 수리기의 결론


1. 헤드셋을 살 때 가격 이전에 저 연결부가 충분히 두꺼운지, 혹은 플라스틱이 아니라 금속을 사용했는지를 꼭 확인하자.


2. 로지텍 개쓰레기(하지만 계속 쓰긴 할 것 같다. A/S 제대로 해주는 업체가 삼성 엘지 말고 어디있어. 대신 비싼 제품은 이제는 못살듯 싶다.)



Posted by Knowblesse