프로젝트

아두이노와 파이썬으로 컴퓨터 음량 조절하기 (pyserial, ctypes)

페이지 정보

작성자 홍예브 작성일16-07-27 11:29 조회9,636회 댓글1건

본문

안녕하세요 메카솔루션입니다.

이번에는 아두이노와 파이썬으로 서로 통신을 하면서 컴퓨터의 음량을 제어하는것을 알아보도록 하겠습니다.


파이썬으로 키보드 입력 제어하기!
본 프로젝트에서 사용될 파이썬 명령중 키보드 입력을 제어하는 방법에 대해서 알아보도록 하겠습니다.

 import ctypes

user = ctypes.windll.user32 HEX = 0xAD #가상키 코드 user.keybd_event(HEX,0,1,0) #키 내리기 user.keybd_event(HEX,0,2,0) #키 올리기
가장 기본적이게 python에서 컴퓨터의 소리를 켜고 끄는 소스코드입니다.

ctypes 는 파이썬의 기본함수가 아닌 외부함수를 사용할 수 있도록 해주는 라이브러리로, 윈도우즈의 DLL(동적 링크 라이브러리)에있는 함수를 불러다가 사용할 수 있습니다.

이러한 원리로 윈도우의 user32.dll 내부의 함수인 keybd_event 함수를 가져다 사용할 수 있습니다.
keybd_event함수와, 가상키 코드 목록에 대한 링크 입니다.

--------------------------------------------------------------
볼륨 조절에 사용하는 키보드 입력 알아보기
b3ca04247bdd117d448d26cf39d68cb1_1469582
가상키 코드 목록을 보시면 가상 key를 제어하기위한 목록표가 있습니다.

volume을 검색해보니 음소거, 음량조절 등의 키보드입력을 찾아보았습니다.

이를 이용해서 아두이노가 해당 코드를 입력하면 가상키보드입력이 이루어지도록 코드를 작성하면 되겠습니다.
--------------------------------------------------------------
파이썬으로 시리얼 통신하기
파이썬에서 시리얼 통신을 하기위해서는 pyserial이라는 라이브러리를 설치해주셔야합니다.
(라즈베리 파이 환경에서는 이미 설치 되어 있지만 윈도우에서는 설치 되어있지 않습니다.)

win+r 을 눌러주시고, CMD를 입력해 명령 프롬포트를 실행 해 주도록 합니다.
b3ca04247bdd117d448d26cf39d68cb1_1469582

CMD 창에 다음 명령을 입력해줍니다.

pip install pyserial
설치가 완료되면 python에서 pyserial을 사용가능합니다.

다음의 소스코드로 테스트해봅시다.

import serial

ser = serial.Serial() ser.port = 'COM33' #시리얼 포트 선택 ser.baudrate = 9600 #통신속도 선택 ser.open() #시리얼 포트 열기 while(True): #무한반복 if(ser.inWaiting() > 0): #수신받은 데이터가 0개 보다 많으면 ser.write(ser.read())#읽어들인 값을 출력함

--------------------------------------------------------------

아두이노 소스코드 작성하기

저는 음량조절과 음소거를 제어하기 위해, 엔코더를 사용하고자 합니다.

http://blog.naver.com/roboholic84/220771287560 

위 링크에서 엔코더의 기본 소스코드와 회로도를 확인할 수 있습니다.

 

본예제에서 사용되는 소스코드는 다음 링크에서 보실 수 있습니다.

 

https://github.com/mechasolution/Serial-to-virtual-key-with-python/blob/master/example/Voluem/Voluem.ino 

 

-------------------------------------------------------------- 

파이썬 아두이노 통신 소스코드
본 소스코드는 다음 링크에서 확인 할 수 있습다.

--------------------------------------------------------

동작확인

 

 

댓글목록

홍예브님의 댓글

홍예브 작성일

ㅠㅠ 글 작성한게 뒷부분이 잘려서 올라갈때가 있는거같아요 ㅠㅠ


모바일 버전으로 보기