Posts

Showing posts from February, 2019

LoRa 모듈 E22-900T22S Breakout Board 설계 2

Image
지난번 설계 에서 두 가지 업데이트 사항이 있다. 첫 번째로 3.3V 로 로직 컨버터를 거치지 않고 직접 통신할수 있는 포트를 구성하였다.  이 포트를 통해 3.3V 동작의 MCU를 사용할때 좀 더 빠르게 회로를 구성  할수 있을것으로 기대한다. 두 번째로 동작 전압 레벨이 서로 다른 MCU 와 Lora 모듈이 통신할때 사용할 기준전압을 직접 인가 할 수 있도록 하였다. 보드에는 위 와같은 점퍼가 주어지는데 3.3V 나 5V 로 점프 시키지 않을 경우 VREF 핀에 사용할 소스전압을 직접 인가해 주어야한다. 특수한 경우가 아니라면 Vref를 사용하는일은 없을것 같다. 위사 진들은 이번에 제작한 테스트 모듈이다.  왼쪽은 E22-900T22S 모듈이고 오른쪽은 ATmega328P/PB 3.3V 8Mhz 보드를 준비했다. 오른쪽의 보드는 ATmega328P/PB 를 모두 장착하여 사용할 수 있도록 설계했다. E22-900T22S 보드의 전체 회로는 다음과 같다. 동작 전압 레벨이 서로 다른 장치와 통신 할 수 있도록 레벨 컨버터를 추가 하였고, 핀 헤더를 장착하여 다른 MCU 보드와 통신하거나 점퍼를 수정해서 USB 시리얼 통신을 할수 있도록 했다. 모듈의 테스트는 mischianti의 E22 라이브러리 를 사용했다. 정리가 아주 잘 되어있는 라이브러리로 생각된다. 아래 코드는 라이브러리에 포함된 시리얼 입력을 LoRa 통신으로 전송하는 예제이다. Lora ATmega328p AUX D3 RX D4 TX D5 M1 D6/GND M0 D7/GND 송신측 코드 #include "Arduino.h" #include "LoRa_E22.h" LoRa_E22 e22ttl(4, 5, 3, 7, 6); void setup() { Serial.begin(9600); delay(500); // Startup all pins and UART e22ttl.begin(); Serial.println(&q

[AU Tech] - 2in1 태블릿 PC 드라이버

Image
AU테크 리얼북 WiFi 64GB 10.1" 예전에 10만원 조금넘는 가격에 구입한 저가형 태블릿이다. 내부에 배터리로 느껴지는 것이 덜컹 거리면서 흔들리지만 쓸만했다. CPU : 아톰 체리트레일 Z8350 4-Core [1.44GHz+1.92GHz] RAM : 4 GB (ddr3l) eMMC :  64 GB Battery : 4,000 mAh Mini HDMI, USB-A3.0, microUSB, microSD, WiFi 2.4Ghz, Blutooth 4.0 지원 그냥 저냥 가끔씩 들고나가면서 사용하다가 최근 컴퓨터들을 정리하면서 이 태블릿도 윈도우를 다시 설치 했는데, 드라이버가 잡히지 않는 문제가 발생하였다. 소리도 안나와 터치도 안돼 등등...이상한건 홈페이지에 드라이버가 올려져 있지도 않았다. 직접 찾는 것 보다 제조사에 문의해서 정확한 드라이버를 받으려고 했으나 드라이버를 보내주는 것이 어렵다나 그렇다고 한다. 구매 확인을 위해 전화를 달라고 했는데 전화하면 귀찮게 AS 보내라고 할 것 같았다. 드라이버 아래는 자동으로 드라이버가 설치되지 않는 장치들이다. 이 6개의 장치들 말고는 자동으로 드라이버가 설치 된다. 링크를 걸어두었으니 들어가서 받으면된다. 이 드라이버들은 드라이브 명칭과 하드웨어 이름만으로 찾은것이다. 올바른 드라이버가 아닐수도 있다. 전원 온도관리 [Dynamic Platform and Thermal Framework] PCI\VEN_8086&DEV_22DC&SUBSYS_72708086&REV_36 터치센서 [KMDF HID Minidriver for Touch I2C Device] ACPI\MSSL1680 배터리 관리 [Intel(R) Battery Management Device] ACPI\INT33FE 사운드 카드 [Intel SST Audio Device (WDM)] ACPI\808622A8 3축 가

[Hackintosh] - 마더보드 내장 블루투스 비활성화하는 방법

Image
시중에는 Gigabyte WiFi 보드 처럼 CNVi 방식의 네트워크 카드가 내장된 보드들이 있다. 이 카드는 Intel 네트워크 장치로 WiFi 와 Blutooth 를 사용할 수 있게 해주는데, 해킨토시(macOS)에서 Intel Optane Memory 의 사용이 불가능한 것 처럼 Intel CNVi 카드도 사용 할 수 없다. 하지만, 이 Intel CNVi 카드의 Blutooth 는 System Information 에서 찾아 볼 수 있고, System Preferences 에서도 장치 검색이 가능하다. 이렇게 장치가 있다고 인식하는 이유는 Bluetooth HCI가 USB Bus로 연결되기 때문이다. 하지만 Blutooth On/Off 도 불가능하고 페어링은 정상적으로 되지않는다. 원인은 아래와 같이 macOS의 Blutooth MAC 주소를 알 수 없는것이 페어링 불가의 원인으로 보인다.  이렇게 해킨토시에서는 Intel CNVi 카드를 사용 할 수 없기 때문에 다른 Blutooth 장치를 사용해야한다. 가장 쉬운 방법은 Blutooth 동글을 사용하는 방법인데, 동글을 사용하려면 먼저 내장된 장치를 제거해야 한다. # 물리적인 장치 제거가 어려운 보드는 아래의 방법을 이용하면된다. 이 방법은 특정 USB 장치를 차단하는 방법으로 이를 이용해 재부팅 혹은 오랜부팅 시간을 유발시켜 부팅을 방해하는 장치를 차단 하거나 여기서 처럼 사용 할 수 없는 장치를 차단 할 수도 있다. Blutooth 제외하기  1. System Information > USB > Bluetooth HCI 에서 Location ID를 확인한다. 2. Terminal > ioreg 을 실행해서 해당 아이디를 찾는다. 3. 차단 할 장치의 HSxx 넘버를 기록한다. (ex. HS14)  4. 이제 Boot Arguments에 uia_exclude=HSxx 를 추가해주면 해당 장치는 작동하

[Xcode] - Xcode에서 소스 코드를 컬러로 인쇄하는 방법

Image
컴퓨터로 하다가 생각이 막히면 해당 부분을 인쇄하고 팬으로 직접 끄적여야 활로가 열리는 경우가 있다. 문제는 보통 인쇄는 흑백의 결과물로 소스코드가 너무 길어지면 본인이 작성했더라도 집중력이 빠른시간에 떨어진다. Xcode는 인쇄 환결성정( cmd + P )에서 Theme를 Default 로 해주면 결과물이 컬러로 인쇄된다. 일반적인 A4 에서는 Light로 하면된다. 재미있는건 이 폰트 설정에서 URL, 문자열, 키워드, 주석 등 을 개별적으로 커스텀 할 수 있다. 기본 폰트크기는 12 사이즈인데 결과물이 너무 크다면 Xcode 환경설정( cmd + , )에서 원하는 폰트 사이즈로 변경해주면된다. 개인적으로 11 사이즈가 좋다고 생각한다.

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

[Firefox] - 미디어 자동 재생

Image
파이어폭스 브라우저에도 자동재생 영상이나 음악에 대한 음소거 기능이 추가된다. 사용자의 행동에 따라 블랙 리스트를 작성하여 관리하는 것 같다. "소리 자동 재생"을 허용해주면 해당 사이트에서 미디어 자동 재생이 허용된다.

[Hackintosh] - Intel Optane 메모리가 시스템에 설치되어있는 경우

Image
앞서 말하지만 인텔 옵테인 메모리는 해킨토시 환경에서 사용 할 수 없다. 옵테인 메모리를 시스템에 장착하면, 해킨토시는 장치를 읽는 도중 부팅을 집어던지고 재부팅을 시전한다. 그렇다 시스템에 옵테인 메모리가 장착되어있으면 macOS 부팅조차 할 수 없다. 만약 해킨토시 환경이 꼭 필요하다면, 시스템에서 옵테인 메모리를  제거하는 것이 현명 하다. 제거하는 방법에는 두가지가 있다. 1. 해킨토시 만 사용하는 경우 옵테인 메모리를 시스템에서 물리적으로 제거한다. 현재로서는 사용이 불가능하고 자리만 차지하는 있으나 마나 한 녀석이다. 그러니 처음부터 구매 할 생각도 하면 안된다. 이미 구매 했다면, 어떤 실마리도 없으니 빼버린다. 2. 윈도우와 병행 사용하는 경우 윈도우 환경과 같이 사용하는 경우라면 이야기가 다르다. 사용자에 따라 윈도우 환경에서 옵테인 메모리를 사용해야하는 경우가 있다. 예를들어 옵테인 메모리에 윈도우가 설치 된 경우, 옵테인 메모리 기술을 활성화하여 사용하고 있는 경우 등이 있다. Q: 그렇다면, 매번 시스템에서 물리적으로 제거를 해야하는가? A: 그렇지 않다. 부팅시에 NVME 장치들을 읽어오지 않으면 된다. 1. 이미 옵테인 메모리를 부팅용이아닌 저장장치를 위해 활성화 시켜서 사용중인 경우 옵테인 메모리 기술을 비활성화 해야한다. (데이터가 손실될수 있음) 2. 메인보드 설정에서 AHCI로 변경한다 3. Boot Flags 에 nvme=-1 을 추가한다. 옵테인 메모리를 부팅용이나 저장 장치로서 사용하는 사용자는 3번만 해도 된다. 다만 이 방법은 다른 NVME 장치들도 사용 할 수 없게된다. 이 방법은 컴퓨터를 열어보지 않아도 되지만 매번 이런 저런 설정을 바꾸며 사용해야 하기에 여전히 편한 방법은 아니다. 그러니 옵테인 메모리는 반드시 사용해야하는 경우가 아니라면 해킨토시 환경에 있어 좋은 선택이 아니다.  그

[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

[Apple] - 오래된 맥북의 처분

Image
나도 한 동안 맥북을 사용하던 시절이있다. 맥북 프로 2010 mid 15' 지금은 커널패닉 때문에 사용 할 수 없는 수준이 되어버렸다. 커널패닉 내용을 보면 특정 그래픽 메모리 주소 접근시 무조건 커널 패닉이 발생한다. 아마도 GPU나 그래픽 메모리에 문제가 있는것 같다. GPU관련 이슈는 오븐에 굽거나 드라이어기 히팅건 등으로 집에서 해결을 봤다는 분들도 있는데, 정말 위험한 발상이라고 생각한다. 물론 고쳐질 수도 있지만 리스크가 높고, 다른 소자들이 떨어져 나가 는 일이 발생하면 큰일이다. GPU 커널 패닉 이슈의 경우 드라이버를 제거하여 효과를 볼수도 있다 하지만 최신 버전에서는 SIP(시스템 무결성 정책)이라고 시스템 파일을 임의로 바꿀수 없다. 1. 제거를 위해서는 우선 부팅시 리커버리 모드(command + R) 로 집입해야한다. 2. 리커버리모드로 들어오면 유틸리티 > 터미널 을 열어 " csrutil disable "을 입력해 SIP(시스템 무결성 정책)를 비활성 시킬 수 있다. 3. 재부팅 후 System/Library/Extensions 로 이동하여 외장그래픽 관련 kext 를 제거 하면 된다. 이러면 커널패닉은 발생하지 않았지만 동영상도 원활히 볼수 없는 수준이 된다. 그래픽 드라이버가 내외장 하나로 되어있는지 이런식으로 드라이버를 제거하면 매끄럽지 못한 부분이 상당히 많다. 워드는 충분히 할수 있다. 한 때 사설 수리라도 받을까 했지만, 오래된 제품이라 고쳐쓰는게 손해라고 생각했다. 이미 메모리나 하드 CD롬도 다른 컴퓨터 부품으로 입양 간 상황이다. 이제 남은건 디스플레이와 키보드 자판이다. 디스플레이는 휴대용으로 만들어 쓰면 좋을것 같다는 생각이 문득 떠올랐다. 맥북 프로 유니바디의 강화유리는 접착되어있기 때문에 열로 살살 녹이며 기타피크 같은 애들로 긁어주면 쉽게 분리가 된다. 깨지지 않게 조심해야한다. 분리 후 패널을 들어내면 뒷면

[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) > 장치속성 > 이벤트 탭 에서 볼 수 있다. COM4 로 연결된 이 디바이스의 정체는 아두이노 우노다. USB\VID_2341&PID_0043\757353037313519091C0 여기서 VID & PID 다음에 오는 "75735303731351

[Logitech] - MX Maser 마우스 logiOption에 디바이스가 표시 안되는 문제 해결됨

Image
MX Maser는 지금까지 사용해본 마우스 중에서 가장 훌륭 한 마우스라고 생각한다. 수시로 고장나는 싸구려 마우스의 내구도에 신물나서 홧김에 구입한 고가의 마우스였다. 때는 2017년  구입한지 2년이 되어가는 시점이었다. logiOption 소프트웨어를 업데이트했더니 아무리 가다려도 디바이스가 표시되지 않았다. 매킨토시를 오랜기간동안 사용해서그런지 윈도우의 휠 스크롤 방향은 매우 불편했었다. 소프트웨어에서 인식되지 않으니 스크롤방향도 못 바꾸고 배터리 시간도 알수 없었다. 때문에 logiOption 소프트웨어는 꼭 필요했다. 로지텍 포럼에서 해당 이슈를 찾아보니 많은 사람들이 같은 문제를 격고 있었다. 대부분 사용자들이 6.60와 6.40을 사용해야지만 정상적으로 사용이 가능했다. 그러나 그것 마저도 사용자마다 결과가 다 달랐다. 2018년 11월 16일 아직도 해결이 되지 않았고 3년도 안된 제품을 이렇게 버리는건지 몇 천원 몇 만원짜리도 아니고 10만원이 넘는 고가의 마우스인데 짜증이 나서 고객센터에 문의를 올렸다. 몇 일 후 스크롤 방향은 레지스트리를 편집해서 바꾸고, logiOption는 지워버렸다. 배터리 잔량은 마우스에도 LED로 표시가 되지만 배터리가 다 되어 꺼져서야 LED가 빨간색인 걸 보고 "아~ 배터리가 다 된거구나" 했다. 그냥 사용 할 때에는 괜찮지만 게임 할 때 이러면 진지하게 짜증난다. 휠 스크롤 방향보다 중요한건 사전에 배터리 부족 알림을 받을 수 없다는 것이였다. 2019년 1월 혹시나 하고 소프트웨어를 설치해보니 정상적으로 인식이되었다. 매일을 확인해보니 2018년 11월 26일에 문의내용을 본사에 전달하겠다는 답변이 달려있었다. 최신버전 이 2018년 11월 18일인 것을 보면 문제가 있다는걸 알고 있었나보다. 이제 배터리 부족 알림을 받을 수 있다. 다시 정상사용이 가능해서 기쁘다.

[피버시노] - 피버시노 문제점 해결방향 (피버시노 v.1.1.2)

Image
떠오르는 문제를 나열 해보았다. 지금까지 발견된 문제점 모니터가 유휴상태에서 복귀하거나 전원 상태에 따른 모니터 회면상태 채크가 필요하다. 시리얼 포트가 바뀌면 프로그램의 코드를 직접 변경해주어야 사용가능하다. 전원 공급원에 대한 새로운 방법이 필요하다.  1번의 경우 큰 문제없이 해결 할 수 있다. 2번의 경우 자동으로 아두이노가 연결된 포트를 찾을 수 있어야 한다. 각각의 블루투스 모듈을 사용해 아두이노 끼리 통신을 하고 수신을 받은 아두이노 쪽에서 PC와 유선 통신으로 작동하는 방식이라면 문제가 없다. "툴" -> "보드정보"를 보면 이렇게 시리얼 넘버를 알 수 있다. VID와 PID도 있지만 목적은 특정 장비만 찾는것이기에 적합하지 않다. 시리얼 넘버는 "장치관리자"에서도 찾을 수 있다. 다음 소스 코드를 확인해보자 import  serial.tools.list_ports def  findTo(serial_number):      for  arduino  in  serial.tools.list_ports.comports():          if  arduino.serial_number  = =  serial_number:              return  (arduino.device)      raise  IOError( "There was no such thing." )          sn  =  findTo( '95635333530351F0A060' ) print ( "The device you are looking for "   +   str (sn)) cs serial.tools.list_ports.comports()는 시리얼 포트에 연결된 디바이스 리스트를 보여준다. findTo(serial_number)