見出し画像

遠隔地にある機械に取り付けたマウスをリモート操作できるようにした話

WidnowsやMacなどのパソコンであればリモート操作ソフトウェアを使って簡単に遠隔操作ができるのですが、専用機となるとそうもいかず、例えばゲーム機や監視カメラレコーダーなどマウスが接続できるけど、遠隔操作のソフトなどがないものの遠隔操作を実現してみました。

使ったもの

  • Pro Micro

  • Raspberry Pi 400

  • HDMIキャプチャー

  • Python

  • MJPG-Streamer

接続方法

専用機のUSB端子にPro Microを接続し、Raspberry PiとPro MicroをUARTで接続、専用機の画面出力をHDMIキャプチャーを使ってUSBカメラとして取り込む

プログラミング

Pro Microに以下のコードを書き込みます。

#include "Mouse.h"
#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 9); // RX, TX

const int switchPin = 5;
const int d = 10;

boolean mouseIsActive = false;
 
int count = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(switchPin, INPUT);
  Mouse.begin();

  mySerial.begin(115200);

}

void loop() {

  int switchState = digitalRead(switchPin);
  
  if (mySerial.available()>0) {
    
    String sstr = mySerial.readString();
    sstr.trim();

    mySerial.println(sstr);

    if (switchState == HIGH) {
    
      if (sstr == "u") {
        Mouse.move(0, -d, 0);
        mySerial.println("move up");
      }

      if (sstr == "d") {
        Mouse.move(0, d, 0);
        mySerial.println("move down");
      }

      if (sstr == "r") {
        Mouse.move(d, 0, 0);
        mySerial.println("move right");
      }
    
      if (sstr == "l") {
        Mouse.move(-d, 0, 0);
        mySerial.println("move left");
      }

      if (sstr == "L") {
        Mouse.click(MOUSE_LEFT);
        mySerial.println("left press");
      }

      if (sstr == "R") {
        Mouse.click(MOUSE_RIGHT);
        mySerial.println("right press");
      }
    
    }

  }

  delay(200);

}

Webアプリケーションで、MJPG-Streamerの画面を読み込み、PySerialを使って、マウス操作のコマンドをそれぞれに送信。

時間を作ってもう少し追記ます。

いいなと思ったら応援しよう!