목록하드웨어 (79)
마음 속 하늘은 항상 맑음~!
HID장치를 간단하게 시리얼 통신처럼 이용할 수 있는 방법은 CDC ACM 방법이 운영체제가 막아서 생기는 문제는 해결할 수 있다. 이 방법이 꼭 장점이 강한 것은 아니지만, 간단한 테스트를 위한 하드웨어에서의 응용은 나쁘지 않을거라고 생각된다. 기본적으로 HID의 사용되는 프로그래밍 방법은 같고 단지 주의할 점만 존재한다. 호스트 컴퓨터에서 장치로 USB통해 정보는 받는 부분에 control전송과 인터럽트 전송을 모두 거치는 usbFunctionWriteOut을 쓰는데, 이것은 별로 문제가 되지 않는다. 단지 가끔 NULL데이터를 보내므로 펌웨어에서 체크를 하면 된다. 그리고 데이터의 길이가 버퍼의 길이와 맞추는 작업도 필요하다. 이것은 각각의 구현에 따른 변경이 다르므로 다른 게시물에 업로드한 소스를..
AVR의 소프트웨어 CDC는 운영체제에서 저속이기 때문에 장치의 연결을 끊는 것으로 확인. 그래서 cdc-io를 포기하려 했으나 YAT란 터미널 프로그램에 Serial HID라는 기능이 존재. 구현을 아무리 찾아봐도 없고 결국 삽질을 해가며 직접 구현. 입으로 설명하기엔 너무 많이 모르기 때문에 곤란하고 완성된 소스를 첨부. 이 소스에는 V-USB에서 인터럽트 OUT이 가능한 수정이 담겨있다. 이 수정이 약간 틀려서 교정을 봤다. 예제 4번만 수정되어 있고 출처는 http://lackawanna.hackhut.com/2011/10/06/using-v-usb-and-the-hid-class-part-iiiiii/ USB HID의 레포트를 만드는게 어렵다면 그냥 복사해서 사용하면 된다. 설정시 압축파일에 들..
USB 구현에 CDC라는게 있는데 통신장치 구현에 사용되는 표준으로 USB의 장치에 기입되는 정보는 바탕으로 ACM으로 모뎀처럼 사용할 수 있는게 있었는데, 최신의 운영체제에서는 막힌 것 같다. 윈도우즈의 경우에는 usbser.sys라는 표준 드라이버가 있는데 인식을 못하는 현상이 발생. 망했다. 이 문제는 해결하는 가장 좋은 방법은 HID로 설정을 변경하는 것. 마우스나 키보드, 조이스틱이 구현이 가능하다. USBTinyISP 조차도 드라이버는 libusb를 통해서 사용을 하고 있다. USB-Serial의 경우도 대부분 CDC-ACM은 피하고 있는 것을 보니 안되나보다. 좀 더 확인을 해보고 설정을 바꿔야 할 듯.
ATTiny4313에 cdc-io라는 펌웨어를 2313용을 4313으로 확장해서 기능을 추가한 펌웨어를 실험삼아 구워봤다. cdc-io는 정리대는 대로 소스를 업로드할 예정. 대화형식으로 AVR의 기능을 접근하는 것인데 레지스터와 기능들(인터럽트등은 제외)을 활성화할 수 있다. 대부분의 레지스터의 접근이 가능. 주로 데이터 신호의 ON/OFF이니 복잡한 기능은 사용하지 않을 것이지만 문자 명령으로 조정할 수 있다는 뭔가 매력적인 부분이 있다. 처음 시도에서는 칩을 프로그램하는데 몇몇 문제가 생겼다. 구워지기는 하는데 검증과정에서 어느 부분에 자꾸 오류가 생기는 것 그래서 새로 도착한 0.5W 제너로 교체하고 연결저항을 62(원래는 68)로 풀업을 1.5K로 다시 교체하니 정상적으로 동작. 브레드보드에 올..
우짜다보니 avr-gcc 까지 최신을 찾게 되었다. =_=; mikro 제품처럼 2k워드 제한은 avr쪽에서는 약간 답답한 면이 있을 듯 싶어 avr-studio 4.1x버전과 같이 찾아서 사용. 프로젝트 옵션에 보면 avr-gcc를 따로 선택할 수 있게 되어있다. http://sourceforge.net/projects/mobilechessboar/files/avr-gcc%20snapshots%20%28Win32%29/ 4.8버전이하는 컴파일러 버그에 대한 이야기가 있고 avr-libc가 1.8.0이하여서 그냥 4.9.2로 선택. 펌웨어 크기로는 4.8버전이 더 작다는 비교도 있었지만 tiny2313과 4313의 버그가 없는 것은 avr-libc 1.8.1버전이라서 어쩔 수가 없는 것 같다. USB장난..
이런저런 내용을 뒤지다가 새로운 것을 발견. AVR을 프로그래밍하는 도구로 AVR로 만드는 것으로 저렴하고 몇몇 프로그램이 지원된다. 아두이노도 지원한다는 이야기를 읽은 것도 같다. 1.0.5에서 부트로더를 굽는데 사용한다는 이야기가 있었다. 여튼 새로움과 삽질의 시작이었다. 홈페이지 : https://learn.adafruit.com/usbtinyisp/overview 일단 부품은 간단한데, 2.0리버전은 ATTiny2313과 74AHC125의 칩셋, 그리고 부수적인 부품들이 필요했다. 이 회로의 장점은 ATTiny2313을 이용해서 따로 인터페이스가 없이 USB통신이 가능한 것으로 가격이 저렴한 편. ATTiny2313과 ATTiny2313A은 약간 다르다. 하지만 USBTinyISP는 부가적인 기능..
아두이노로 원격리모트 컨트롤을 만들려니 몇가지 문제에 봉착. >> 과연 꺼진 것은 어떻게 확인할 것인가? 이는 단순하게 전원을 제어할 수 있는 릴레이를 추가. 전원 컨트롤 기능도 넣었다. 하지만 또다른 문제가 생겨났으니. >> 220VAC 5A의 12V구동 텍셀 릴레이의 전원부를 구성과 외부구성 사용으로 인한 아두이노 전원부의 큰 발열. 그냥 연결만 해도 열이 폴폴. 12릴레이는 Vin을 사용하기에 문제가 없지만, 아두이노 자체의 5V와 3.3V의 전원은 문제가 심각했다. 이는 어쩔 수 없이 2개의 전압을 출력하는 새로운 전원 공급기를 제작했다. 그렇게 문제는 해결되는 듯 싶었으나, 말도 못하게 심한 발열이 나는 전원 공급기. 달랑 7805와 3055트랜지스터를 붙였는데, 7805는 열도 안나는데 305..
카페의 질문에 만들게된 스위치를 누르면 순차적으로 점등되는 회로. Q1은 2222나 3904를 사용하면 된다. 스위치가 채터링이 약간 있지만 심하지는 않은 정도. 7414로 보완할 수 있겠지만 가장 큰 단순함에 항상 중점을 =ㅅ=; 테스트해서 실험한 회로. 단수를 늘리고 싶다면 Qd를 옮기면 된다. 너무나 간단해서 설명이 필요가; 74HC164를 쓰면 낮은 전압의 전원으로도 사용할 수 있다. R7부터 R20까지는 전원에 맞는 저항치 계산이 필요하다.
갑작스레 원격 컨트롤 이야기가 나와서 만들게 된 원격 리모트컨트롤 모듈. 이더넷 보드인 enc28j60을 결합하고 적외선 LED를 3번에 연결하면 끝난다. 이더넷 모듈은 13번부터 8번까지를 사용하는데, 9번과 10번은 연결하지 않는다. 하드웨어는 비교적 간단하고 중요한 부분은 프로그래밍 부분이었다. 일단 라이브러리를 구해야 하는데, https://github.com/shirriff/Arduino-IRremotehttps://github.com/jcw/ethercard에서 받을 수 있다. 주의할 점은 enc28j60은 전원이 3.3v라서 5v를 연결하면 큰일난다. 신호입력은 큰 문제가 없는 것 같고, 칩이 구동시에 약간 따끈한 정도로 아마 발열이 조금 있는 듯 싶다. IR Remote모듈의 수신은 이더넷..
인터넷에 돌아다니던 초간단 전류 증폭회로를 구성해서 실험을 해보았다. 아주 간단한 컨셉으로 부품도 몇개 필요없다. 마침 몇개 가지고 있던 MJE3055T가 효자 역할을 단단히 하고 있다. 7805의 정전압 IC를 트랜지스터에 연결시키는 방법인데, 묘하게 작동한다. 가변저항 R1을 없애고 바로 접지에 연결하면 4.5V정도의 전압이 나오고 1k 가변저항을 연결해서 어느 정도 조정을 하면 5V에 가까운 전압을 설정할 수 있다. 7805단까지는 왜 그런 줄 알겠는데, 트랜지스터 MJE3055T단에서는 왜 그런지는 모르겠다. 일단 출력에 저항을 걸어서 전압을 측정해보니 제대로 값이 나왔다. 전력소비가 MJE3055T와 함께 7805가 같이 걸려 발열이 증가하는지는 확실히 모르겠고, 역시 부하에 비례해서 안정적으로..