Posts

Showing posts with the label coding

ASRock BC-250 보드 RAZER CORE X CHROMA 에 설치하기 5

주문 제작 하였던 브라켓이 도착하였다.  재질은 철이 아니고 알루미늄이라 그런지 상당히 가볍고 잘못하면 휘어질 것 같은 느낌이 든다. 제작하고 수령하기 까지 거의 3주라는 긴 시간이 걸렸다. 원래 이렇게 까지 걸리진 않는데 원인은 가공 엔지니어로 부터 온 메일을 확인하지 않고 3일이나 흐른 뒤에 답장을 하였고, 연말 기간도 걸려서 늦어져 버렸다. BC-250 카드에 기존 브라켓을 제거하고 새로 설계한 브라켓을 달아보니 아주 잘 맞았다. 버튼도 잘 눌리고 이더넷, USB, DP 포트 모두 사용에 문제가 없다. 이렇게 보고 나서 알아차린 부분이지만 하단 쪽에 고정 다리를 추가한다는 것을 빼먹었다. 다시 만드는 건 금액도 만만치 않았기 때문에 수정해서 발주를 다시 넣지는 않을 예정이고 튼튼하게 고정하기 위해 다른 솔루션을 찾아 보려고 한다. 사실 브라켓을 설계한 건 설치 문제도 있지만 완성된 시스템이 외관상으로 봤을 때 튀는 부분 없이 완성도가 높아 보이길 원했기 때문이다. 이렇게 보니 모양도 그럴싸하고 원래 이런 제품일지도 모른다는 착각도 든다. 타공 모양도 벌집 모양으로 했으면 더 완벽했겠지만 만드는 동안에는 그런 생각 없이 만들었기 때문에 큰 후회는 없다. 장착 되어있던 USB 허브 보드 대신 사용될 PCB도 도착하였다. 기존 허브 보드와 비교하자면 사이즈만 많이 커졌지만 브라켓과 호환이 되는지 확인하였고 장착하는 데는 문제가 없을 것으로 예상하고 있다.  지금 보니 오디오 앰프가 꼭 있어야 했는지 살짝 욕심이 과했다는 생각도 든다. 조립에 사용될 부품들은 아직 수급 중이며 차근차근 조립을 해 나갈 예정이다. 먼저 설계했던 PSU 전원 컨트롤 보드는 다음과 같이 장착 되었고 주요 동작에는 큰 이상이 없으나 몇 가지 수정 사항이 생겼다. 수정 사항은 허브 보드을 새로 설계하면서 발생한 것으로 두 보드 간에 별도의 통신 선이 연결된다. 사실 이렇게 기능을 분리할 필요는 없었는데 첫 번째로 만든 보드에서 하드웨어 적으로 누락된 기능이 있기 때문에 허...

[Arduino] - 파이썬을 이용한 아두이노와 PC 시리얼 통신

파이썬의 시리얼 통신모듈인 pyserial 은 윈도우에서는 커뮤니테이션 포트(com port)를 이용해 장치와 통신을 할수 있게 해준다. 이 모듈을 사용하기 위해서는 pyserial 이 설치되어있어야 한다. pip install pyserial  다음은  class serial.Serial 의 입력 인수들이다. port  – 장치 이름 (ex. COM17, dev/tty.usbserial 또는  tty. usbmodem 등) baudrate  ( int ) – 전송속도(baud rate) (ex. 9600, 115200 등) bytesize  – 데이터 비트수 (   FIVEBITS ,  SIXBITS ,  SEVENBITS ,  EIGHTBITS   ) parity  – 패리티 검사 (  PARITY_NONE ,  PARITY_EVEN ,  PARITY_ODD PARITY_MARK ,  PARITY_SPACE  ) stopbits  – 정지비트 (  STOPBITS_ONE ,  STOPBITS_ONE_POINT_FIVE , STOPBITS_TWO  ) timeout  ( float ) – 수신 제한시간 설정 xonxoff  ( bool ) – (xon/xoff) 소프트웨어 흐름제어 rtscts  ( bool ) – 하드웨어 흐름제어 (RTS/CTS) dsrdtr  ( bool ) – 하드웨어 흐름제어 (DSR/DTR) write_timeout  ( float ) – 송신 세한시간 설정 inter_byte_timeout  ( float ) – Inter-character timeout,  None  to disable (default). exclusive  ( boo...

[Python] - 블루투스 모듈 HC-06의 MAC 주소를 이용하여 통신 포트 찾기

Image
BlunoBeetle 버전 의 경우는 BlunoBeetle(피버시노) 과 BlunoLink(PC쪽 수신기) 가 무선을 해결해 주었기 때문에 PC가 직접 블루투스로 연결되지 않았다. 게다가 BlunoLink 의 시리얼 넘버도 한 자리로 잡혔었기 때문에 반쪽짜리 성공이였다. 하지만 지난번에 만든  블루투스 모듈(HC-06)을 이용한 피버시노 는 PC와 직접 블루투스로 연결된다. 초기 버전의 피버시노가 시리얼 넘버를 이용하여 통신포트를 찾았다면 이번에는 블루투스 장치의 MAC 주소를 이용하여 통신 포트를 찾아 보려고 한다. HC-06의 MAC 주소 알아내기 우선 블루투스 모듈의 MAC 주소를 알아내야한다. MAC 주소는 생각보다 어렵지 않게 알아낼 수 있는데 바로 장치관리자 에서 알아낼 수 있다. 이 방법 말고도 파이썬을 이용해서 알아내는 방법도 있다. 하지만 파이썬에서는 뭐가 MAC주소인지 알기 어려우니  장치관리자 에서 알아보는 것이 좋다. HC-06을 PC에 설치한 후 장치관리자에 보면 위와같이 2개의 직렬 포트가 열린것을 확인 할수 있다. 각각 송신과 수신이라고 보면 된다. 간혹 장치를 제거하고 재연결 했을때 두 포트의 역활이 바뀌는 경우도 있다. 재미있는건 한 포트에서만 MAC주소가 검출된다는 것이다. 내 경우에는 COM7으로 부터 아두이노의 시리얼 신호를 수신하는데, 바로 이 수신 포트만 MAC 주소를 가지고 있다. 참고로 HC-06의 패스워드는 "1234" 이다. 해당 포트의  속성 > 자세히 > Bluetooth Device Address  로 이동하면 나오는 값이 MAC주소이다. 뭔가 의심스러운 사람은 스마트폰과 연결해보면 쉽게 확인 할 수 있다. 아래 사진은 스마트폰에서 잡히는 MAC 주소이다. MAC 주소를 이용해 HC-06 통신 포트 찾기 장치관리자나 파이썬을 이용해 hwid(하드웨어ID) 를 찾아보면 다음과 같은 값...

[Arduino] - 아두이노 프로 미니를 이용해 피버시노 만들기

Image
피버시노는 매우 간단한 장치이기 때문에 누구나 손쉽고 저렴하게 만들어 볼 수 있다. 지난번에  HC-06 을 이용해 PC와 아두이노 우노의 블루투스 연결을 테스트 해보았다. 이번에는 Arduino Pro mini 3.3v, MPU6050(가속도 센서), HC-06(블루투스) 를 이용해 피버시노( PivotIno )를 만들어보려고 한다. 아두이노 소스코드는 피버시노 1.1.3 에서 사용한 코드를 그대로 사용했다. 만들기에 앞서 잘 작동이 되는지 테스트를 해보았다. 테스트 모델은 MPU6050의 여분이 없기때문에 ADXL335을 이용해서 라이브러리에 있는 예제를 업로드해서 결과를 블루투스를 통해 받아보았다. 장치를 서로 연결하기 앞서 아두이노에 프로그램을 업로드해야한다. 아두이노의 Rx Tx에 직접 블루투스를 연결하기 때문에 무선 업로드를 고려해 볼 수도 있지만, 혈압이 상승 할 수 도 있다. 그렇기 때문에 블루투스 모듈을 연결하기 전에 업로드는 유선으로 하는것이 좋다. 무선 업로드를 알아보고 있다면  이 포스트 가 도움이 될 것이다. 이번 피버시노는 시리얼 넘버가 없고 블루투스를 이용한다. 피버시노 1.1.3  의 파이썬 코드에서 시리얼 넘버를 이용해 피버시노의 포트를 자동으로 찾아 연결하도록 만들었는데 블루투스로 PC와 직접 연결하기 때문에 필요가 없어졌다. MAC 주소가 있기 때문이다. 다음에는 MAC주소를 이용해서 탐색하도록 만들어야겠다. 만약 이 방법이 잘 안되면 사용자가 프로그램에서 포트를 선택 할 수 있게 하는것도 좋은 생각이다. 지금은 아래의 코드를 사용하고있다. 파이썬 소스코드 수정 시리얼 포트 탐색기능 제거 def  waitForSerialInit():     com_Port  =  [ "COM7" ]      while  Tr...

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결

Image
아날로그 자이로 센서의 값을 블루투스 HC-06를 통해 컴퓨터로 전달 받을 수 있게 하려고 한다.  블루투스로 통신을 하기 위해서 지난번과 같은 문제 를 방지하기 위해 HC-06 의 baud rate를 115200로 변경해야한다.  115200로 사용해야 정상적으로 업로드가 된다. baud rate 수정 우선 아래의 코드를 아두이노에 업로드한다. #include  SoftwareSerial BTSerial( 2 ,  3 );    / / Tx:Digital 2pin, Rx:Digital 3pin void setup() {   Serial.begin( 9600 );   BTSerial.begin( 9600 );   Serial.println( "Annajin AT" ); } void loop() {    if  (BTSerial.available())     Serial.write(BTSerial.read());    if  (Serial.available())     BTSerial.write(Serial.read()); } Colored by Color Scripter cs AT 커맨드를 순서대로 입력한다. AT+BAUD8 을 입력하면 baud rate 가 115200로 바뀐다 다시 9600으로 바꾸려면 다음과 같이 수정하고 AT+BAUD4 를 입력하면 된다. void setup() {   Serial.begin( 115200 );   BTSerial.begin(...

[macOS] - 맥의 화면을 회전해보자 (programmatic way)

Image
피버시노를 만들고나서 다른 OS에서도 사용하기위한 준비를 하고있다. 예전에 들었던 소문 중에 Macbook을 태블릿PC 로 모딩해주는 모드북 이 있어 알아보던 중 macOS  에서 프로그램 방식으로 디스플레이 화면을 회전시킬 수 있는 fb-rotate 을 발견했다. #macOS 환경에서의 디스플레이 로테이션. macOS 환경에서 디스플레이 회전은 iPad 처럼 작동하지 않는다. (애니메이션 효과 X) 심지어 Windows만큼 빠릿한 경험을 제공해주지도 않는다. 화면 회전 할 때마다 다른 모니터들까지 깜빡이면서 기본 설정으로 원복이 되는데, 만약 해당 모니터의 기본 설정이 맥에서 사용 할 수 없는 경우에는 화면이 출력되지 않는 당황스러운 문제도 발생한다. (macOS에서 사용 할 수 없는 주사율의 모니터일 경우 블랙스크린이된다.) 이런 상황의 사용자는 모든 방향으로 한번씩 회전 시켜서 커스텀 설정을 저장해줄 필요가있다. 한번만 해주면 로테이션 값이 바뀌어도 그대로 유지가 된다. 2대의 모니터를 사용하는 Windows의 경우 평소와 다른 순서로 모니터가 연결되면 2번모니터와 1번모니터를 혼동하여 비정상적인 작동을 보여주었는데 macOS 에서는 이런방식 덕분인지 그런 문제는 발생하지 않았다. 단점 같지만 장점이 되기도 한다. macOS는 com.apple.windowserver.plist에 모든 상황의 유저 설정 리스트를 따로 만들어 관리한다. 나는 Windows가 어떻게 모니터 설정 리스트를 관리하는진 모른다. 하지만 추측해보건데 이런식으로 관리하진 않는것 같다. 그랬으면 프로그램에서 주 모니터와 보조 모니터를 혼동하는 일이 발생하지 않았을 것이다. #시작하기전 컴파일 은 반드시 해주어야한다. fb-rotate 사용법 은 다음과 같다. 1. 모니터 리스트 : fb-rotate -l  현재 사용중인 모니터의 리스트를 보여준다. $ ./fb-rotate -l Display ID ...

[Python] - altgraph

Image
macholib 1.11 has requirement altgraph>=0.15, but you'll have altgraph 0.10.2 which is incompatible. 문제가 되는  altgraph을 업그레이드 하거나 재설치를  해서 해결 할 수 있다. pip install --upgrade altgraph 또는 sudo pip uninstall altgraph sudo pip install altgraph

[Arduino] - 피버시노가 연결된 포트 자동 탐색기능 추가 (피버시노 v.1.1.3)

Image
USB 포트가 바뀌어도 프로그램이 피버시노를 자동으로 찾을 수 있도록 해보자. Bluno Link와 Bluno Beetle은 아두이노 IDE 보드 정보에서 시리얼 넘버가 출력되지 않는다. 그래도 무언가 나오지 않을까 해서 파이썬으로 시리얼 넘버를 읽어보았다. 다음은 현재 컴퓨터에 연결된 모든 COM 포트 리스트를 출력해준다. import  serial.tools.list_ports   # For listing available serial ports dev  =  serial.tools.list_ports.comports() ports = [] for  d  in  dev:     ports.append((d.device, d.serial_number)) print ( '\nDetected serial ports:' ) for  d  in  ports:      print ( "Port:"   +   str (d[ 0 ])  +   "\tSerial Number:"   +   str (d[ 1 ])) cs 포트 넘버와 시리얼 넘버가 중요하기 때문에 이 둘 만 출력하도록 했다. 결과는 다음과 같다.  여기서 내가 찾아 할 디바이스는 COM27에 있다. 결과과 딸랑 '6'만 나왔다. 과연 이게 시리얼 넘버인가? "장치 관리자"에서도 시리얼 넘버를 알 수 있는지 확인해보았다. 지난번에도 말했지만 디바이스의 시리얼 넘버는 장치관리자 > 포트(COM & LPT) > 장치속성 > 이벤트 탭 에서 볼 수 있다. CO...

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[AD보드] - 맥북 패널을 모니터로 만들기 ( LP154WP4-TLA1 )

짱구개미 사육장에 위치한 브리기테 동상