Posts

Showing posts with the label Arduino

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

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

HC-05 모듈을 사용한 아두이노 스케치 무선 업로드 (블루투스 SPP)

Image
지금부터 소개하는 방법은 상당히 오래된 방법이지만 아직도 유용하게 사용할수 있는 방법으로 ArduinoIDE 스케치 업로드 버튼을 누르고 사용자가 직접 하드리셋을 시켜줄 필요도 없다.  HC-05 와 같은 저렴한 블루투스 클래식 모듈은 SPP 통신을 지원한다.   HC-05에 적절한 펌웨어 설정과 적절한 회로구성만 있다면 마치 USB 를 통해 스케치를 업로드하는것 처럼 사용할수 있다. 위 이미지 처럼 온보드 형태로 PCB 로 만들고자 할때 모듈을 잘 골라야하는데 펌웨어 버전이 다른거나 HC-05 와 비슷한 BC04 라는 제품이 있다.  좀 더 다양한 테스트를 받았고 상위 호환의 제품으로 보이지만 이 모듈은 사용하면 안된다.  비슷한 제품인 BC04은 HC-05 제품과 비교하여 AT 명령어 셋의 일부가 누락되어 있으며 핀 아웃 마저 다르다.  따라서 온보드 형태의 PCB 를 만들어야하는 경우 HC-05 그대로 사용하거나 모듈 부분만 떼어내서 사용하는 방법이 확실하다. 먼저 아두이노와 HC-05의 하드웨어 결선 방법이다. HC-05 의 핀아웃을 보자면 정변 기준 왼쪽부터 STATE, RxD, TxD, GND, VCC, EN 이 있다. 핀 들의 순서를 기준으로 필요한 회로도를 작성하면 다음과 같다. HC-05 는 3.3V 로 동작하는 모듈로 이보다 높은 전압에 노출되면 회로가 손상되거나 오작동 할 가능성이 높아진다. 때문에 이렇게 전압이 다른 두 컨트롤러를 통신할때는 전압 레벨을 맞춰줄수 있는 레벨 컨버터 를 사용하는것이 좋다. 레벨 컨버터의 경우 모스펫을 사용하는방법 저항을 사용하는 방법 다이오드를 사용하는 방법 등 여러가지가 있지만 가장 빠르고 안정적이며 범용적으로 사용할수 있는 모스펫을 사용하는 방법을 추천한다. 보통은 RX TX 에 모두 설계를 적용하지만 HC-05 기준 RX 만 모스펫을 적용하였다 아래 회로는 모스펫을 이용한 로직 레벨 컨버터 설계로 안정적으로 신호를 변환할 수 있는 방법중 하나이...

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

[Raspberry Pi] - 라즈베리 파이 3 B+ 에서 아두이노 IDE 사용하기

데스크탑 PC 를 사용하지 않고 아두이노 프로그래밍을 해보고 싶었는데 아쉽게도 나에게 노트북이 없다. 되도록이면 노트북에 리눅스 환경이면 좋겠다고 생각해 한 동안 잘 사용했었던 라즈베리파이의 신제품을 찾아봤다. 성능이 올라간 만큼가격도 올라간건지 전 보다 1만원정도 더 들여서 라즈베리파이 3 B + 모델을 선택했다. 사실 똑같이 구형을 구입하려 했으나 듀얼 밴드가 상당히 매력적이어서 최신 버전으로 구매 했다. 이번에는 정성스럽게 사용할 예정이다. 이번에는 딱히 라즈베리파이에 센서와 엑추에이터를 달아서 뭔가로 만들기 보다는 아두이노 프로그래밍 용도로 사용하기위해 구매했다. 아두이노 IDE는 윈도우 뿐만아니라 ARM 버전도 있기때문에 라즈베리 파이에서 사용할수 있다. 첫번째 방법 아두이노는 다음의 명령어로 설치 할 수 있는데 설치가 완료되면 개발 항목에 추가가된다. sudo apt-get install arduino 만약 사용자가 시스템 언어를 한글로 사용하고 있다면 시스템에 한글이 정상적으로 나타나는 상황이라도 아두이노를 설치를 완료하고 실행해보면 한글이 깨질수가 있는데 이는 폰트가 없어서 그런것이다. 나눔 폰트가 무난하고 좋다. sudo apt-get install fonts-nanum 하지만 이 방법은 구버전이 설치되고 라이브러리 매니저가 없다. 두번째 방법 최신버전을  아두이노  에서 ARM 버젼을 받으면 된다. 이 글을 작성하는 시점에서 최신버전은 1.8.9  버전이다. 참고로 라즈비안은 32비트 운영체제이다. 설치방법은 다음과 같다. 터미널에 순서대로 입력하면된다. mkdir Arduino cd ~/Downloads cp ./arduino-1.8.9-linuxarm.tar.xz ~/Arduino cd ~/Arduino tar xvf arduino-1.8.9-linuxarm.tar.xz cd arduino-1.8.9 ./install ...

[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(...

[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 )

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