산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

스마트폰 제어 마우스

구성품 및 소모품

Arduino UNO
× 1
HC-05 블루투스 모듈
× 1
점퍼 와이어(일반)
× 1

앱 및 온라인 서비스

Arduino IDE
IDLE(파이썬 GUI)
MIT 앱 인벤터 블루투스 마우스 컨트롤

이 프로젝트 정보

이 프로젝트는 조이스틱을 사용하여 PC 커서를 제어했던 이전 작업과 유사합니다. 주요 차이점은 커서를 이동하고 화면을 스크롤하고 일반 트랙패드처럼 왼쪽 및 오른쪽 클릭도 하는 2개의 가상 조이스틱이 포함된 스마트폰 애플리케이션을 만들었다는 것입니다.

작업

이 프로젝트는 HC-05 블루투스 모듈에 연결된 Arduino Uno에 블루투스를 사용하여 조이스틱의 x 및 y 축 데이터, 스크롤 상태, 왼쪽 및 오른쪽 클릭 상태를 보내는 스마트폰 응용 프로그램과 관련이 있습니다. Arduino에 수신된 이러한 데이터는 새 위치를 얻기 위해 현재 커서의 위치를 ​​변경하도록 조작됩니다. 스크롤 및 버튼 상태와 함께 결과 데이터는 Python 스케치에서 읽을 수 있는 것으로 인식되는 출력으로 인쇄됩니다. Python 스케치는 마우스 모듈을 사용하여 마우스 동작을 실행하도록 만들어졌습니다.

애플리케이션 정보

스마트폰 애플리케이션은 MIT-App Inventor를 사용하여 생성됩니다. 필요한 애플리케이션을 구축하기 위해 원하는 블록을 추가하기만 하면 되므로 앱을 만드는 것은 간단합니다. 나는 그것들을 만드는 것에 대해 Tabletop 로봇 공학 튜토리얼을 참조했습니다. 어플리케이션의 메인 화면은 다음과 같습니다-

주요 정보를 HC-05 모듈로 보내기 전에 응용 프로그램은 먼저 정보의 시작을 나타내는 1바이트 숫자(255)를 보냅니다. 데이터 전송 순서는 다음과 같습니다-

1. 시작을 나타내기 위해 '255'를 보냅니다.

2. 1바이트 조이스틱 x축 값 전송

3. 1바이트 조이스틱 y축 값 전송

4. 좌클릭, 우클릭, 스크롤 상태(1byte)의 상태를 전송합니다.

애플리케이션의 데이터는 20밀리초마다 Arduino UNO로 전송됩니다.

Arduino의 측면

응용 프로그램의 데이터 바이트는 HC-05 Bluetooth 모듈을 사용하여 Arduino에서 수신합니다. Arduino는 x 좌표 범위가 0에서 1279이고 y 좌표 범위가 0에서 799인 커서의 현재 좌표를 포함합니다. 파이썬 함수 mouse.get_position()에서 이러한 극한 좌표를 얻었습니다. 커서가 이동할 때 좌표를 반환합니다(메인 스케치에서는 사용되지 않음).

조이스틱을 움직일 때 수신된 데이터를 기반으로 현재 커서의 위치(x 및 y 좌표)를 애플리케이션에서 수신한 데이터와 더하거나 빼서 커서를 원하는 새 좌표로 이동합니다. 그러면 아래와 같은 순서로 시리얼 모니터에 최종 데이터가 출력됩니다.

다음 데이터 시퀀스는 파이썬 프로그램이 최종적으로 읽어서 이를 실행합니다. 이를 위해 아래에 제공된 단계에서 마우스 및 pyserial과 같은 추가 모듈을 다운로드해야 합니다.

파이썬 프로그래밍

사용자는 랩톱/컴퓨터에 python 3이 설치되어 있어야 합니다. 여기에서 다운로드할 수 있습니다.

(Windows용)

설치 후 python 파일 위치의 경로를 복사합니다.

다음 단계는 명령 프롬프트에서 수행해야 합니다. 명령 프롬프트를 열고 다음을 입력하십시오-

1. cd

2. py –m pip 설치 –-upgrade pip

3. py –m pip 설치 마우스

4. py -m pip 설치 pyserial

마우스 모듈은 마우스 동작과 pyserial을 수행하는 데 사용됩니다. 모듈은 arduino에서 데이터를 주고받는 데 사용됩니다. 필요한 모듈을 이미 설치했기 때문에 이것을 얻었습니다.

실행

스마트폰 기기에 블루투스 마우스 컨트롤 앱을 설치하세요.

Arduino 스케치를 Arduino UNO에 업로드하고 회로도에 제공된 대로 회로를 따릅니다.

Python 측 -

1. 메모장 파일에 파이썬 코드를 복사하여 붙여넣습니다. COM 포트를 Arduino UNO의 COM 포트로 변경하고 '.py'로 저장합니다.

2. python IDLE을 열고 메모장 파일을 엽니다.

3. 스케치를 실행합니다.

그러면 그림 2.2의 화면으로 돌아갑니다.

스마트폰 애플리케이션을 열고 블루투스 모듈에 연결하면 조이스틱의 방향을 바꿀 때 커서가 움직이는 것을 알 수 있습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • Arduino 코드
  • 파이썬 코드
  • Arduino 코드Arduino
    int datareceived[5] {0,0,0,0}; // phoneint에서 바이트를 저장하려면 in_byte =0;int array_index =0;int l_prev=0,r_prev=0; // 마우스 좌우 클릭 이전 상태 void setup() {Serial.begin (9600); // 직렬 모니터 시작} int height=0,width=0;void loop() { int clicks=0; 정수 감도=20; // 감도를 조정할 수 있습니다. int xpos=0,ypos=0;if (Serial.available()> 0) { //전화에서 바이트 수신 in_byte=Serial.read(); // 바이트를 변수에 저장 if (in_byte ==(255)) { // 변수가 0이면 배열을 0으로 inxed합니다. array_index =0; } 데이터 수신[배열 인덱스] =in_byte; // 배열에 숫자 저장 array_index =array_index +1; if(datareceived[1]>=110)xpos=map(datareceived[1],110,172,0,감도); // 이동할 때 rightif(datareceived[1]<=70)xpos=map(datareceived[1],60,1,0,-sensitivity); // 왼쪽으로 이동할 때if(datareceived[2]>=110)ypos=map(datareceived[2],110,255,0,sensitivity); // 아래로 이동할 때if(datareceived[2]<=60)ypos=map(datareceived[2],70,1,0,-sensitivity); // 움직일 때 upif(datareceived[3]==1 &&l_prev==0) // 단일 버튼 누름을 인식하려면 clicks=1;else if(datareceived[3]==2 &&r_prev==0)clicks=2;else if(datareceived[3]==3 || datareceived[3]==4)clicks=datareceived[3]; // scrolll_prev=datareceived[3];r_prev=datareceived[3];if(xpos!=0 or ypos!=0 or clicks!=0) // 조이스틱이 움직이거나 버튼이 눌리거나 스크롤될 때{ 높이=높이+ypos;너비=너비+xpos;if(높이>=799)높이=799;if(높이<=0)높이=0;if(너비>=1279)너비=1279;if(너비<=0)너비=0;Serial.print(너비);Serial.print(":");Serial.print(높이);Serial.print(":");Serial.println(클릭);클릭=0;} }}
    파이썬 코드파이썬
    <사전>마우스 가져오기, 시스템 가져오기 시간 가져오기 serialmouse.FAILSAFE=FalseArduinoSerial=serial.Serial('com3',9600) #올바른 COM porttime.sleep(1) 지정 #1초 동안 1초 지연:data=str(ArduinoSerial.readline ().decode('ascii')) (x,y,z)=data.split(":") # x 및 y 축 데이터 읽기 (x,y)=(int(x),int(y) ) # int로 변환 mouse.move(x,y) # '1' in z:mouse.click(button="left") #마우스 버튼 클릭 elif '2' in z:mouse. click(button="right") elif '3' in z:mouse.wheel(delta=-1) # 아래로 스크롤 elif '4' in z:mouse.wheel(delta=1) # 위로 스크롤

    회로도


    제조공정

    1. Bluetooth를 통해 제어되는 Raspberry Pi Robot
    2. 제스처 제어 대화형 테이블 조명
    3. Arduino와 스마트폰을 사용한 DIY 전압계
    4. Raspberry Pi를 통한 Alexa 제어 LED
    5. 조이스틱 제어 RC 자동차
    6. Bluetooth가 탑재된 Arduino로 LED 제어!
    7. Nunchuk 제어 로봇 팔(Arduino 포함)
    8. 음성 제어 로봇
    9. MobBob:Android 스마트폰으로 제어되는 DIY Arduino 로봇
    10. OK Google이 포함된 Bluetooth 음성 제어 기기