Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050

Компоненты и материалы

Arduino Micro×1
MPU-6050 (акселерометр + гироскоп)×1

Инструменты

Программное обеспечение

О проекте

ThimbleKrox — наперсток, позволяющий управлять курсором мыши движениями указательного (или любого другого) пальца.

Шаг 1: Материалы и инструменты

Материалы: Arduino Micro, MPU-6050, кабель micro USB, перемычки, резинка для крепления на руку.

Инструменты: компьютер с Arduino IDE, паяльник (если нет ножек), 3D-принтер (для корпуса).

Шаг 2: Подключение

Соедините контакты Arduino и MPU-6050:

ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050

Шаг 3: 3D-печать (опционально)

Две версии корпуса: прозрачная (без поддержек) и стимпанк (требует поддержек, лучше смотрится покрашенной). Печатать нужно с выступами вниз.

ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050
ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050

Шаг 4: Сборка

С корпусом: вставьте MPU-6050 в верхнюю полость, провода — в нижнюю.

Без корпуса: закрепите датчик на последней фаланге пальца скотчем или резинкой.

Шаг 5: Код и калибровка

Установите библиотеки: Wire.h, I2Cdev.h, MPU6050.h, Mouse.h.

Сначала загрузите код калибровки, откройте Serial Monitor (Ctrl+Shift+M). Вы увидите строки вида:

right | gx = 3165 gy = 469 gz = -1055 | ax = 15232 ay = 2064 az = -4496

Направление (right/left/up/down) и сырые данные. Измените значения в строках, помеченных // calibration line, чтобы направление совпадало с реальным движением. После каждого изменения перезагружайте скетч.

Пример: если монитор показывает «left», а код ждёт ax >= 15000 для «right», измените порог на 5000 (так как текущий ax=5232).

Когда калибровка готова, перенесите значения в основной код и загрузите его.

Шаг 6: Завершение

Наденьте наперсток и управляйте курсором движениями пальца!

Исходный код

Основной скетч (Arduino)

// Code to control the mouse pointer through the movement of a finger
// To calibrate run "ThimbleKrox calibration code" and follow tutorial at hackster.io
// Lines to change for calibration marked "//calibration line"
// code write by Magform
#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
#include <Mouse.h>

MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
int sensibility = 10; // Чувствительность

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu.initialize();
  if (!mpu.testConnection()) { while (1); }
}

void up()   { Mouse.move(0, -sensibility); }
void down() { Mouse.move(0, sensibility); }
void left() { Mouse.move(-sensibility, 0); }
void right(){ Mouse.move(sensibility, 0); }

void loop() {
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  if (ax >= 15000) { right(); }          // calibration line
  if (ax <= -9000) { left(); }           // calibration line
  if (ay <= -8000) { up(); }             // calibration line
  if (ay >= 10000) { down(); }           // calibration line
  // Клики (в разработке)
  /* if (gy >= 20000) { Mouse.click(MOUSE_RIGHT); delay(100); }
  if (gy <= -20000) { Mouse.click(MOUSE_LEFT); delay(100); } */
  delay(10);
}

Код калибровки (Arduino)

// Code to calibrate the ThimbleKrox
// Lines to change marked "//calibration line"
// code write by Magform
#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
#include <Mouse.h>

MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
int Nwrong = 1;

void setup() {
  Nwrong = 1;
  Serial.begin(9600);
  Wire.begin();
  mpu.initialize();
  while (Nwrong != 0) {
    if (!mpu.testConnection()) {
      Serial.print("Wrong connection number: "); Serial.print(Nwrong);
      Nwrong++; delay(1000);
    } else { Nwrong = 0; }
  }
}

void up()   { Serial.print(" up "); }
void down() { Serial.print(" down "); }
void left() { Serial.print(" left "); }
void right(){ Serial.print(" right "); }
void rightclick(){ Serial.print(" RightClick "); }
void leftclick(){ Serial.print(" LeftClick "); }

void loop() {
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  if (ax >= 15000) { right(); }          // calibration line
  if (ax <= -9000) { left(); }           // calibration line
  if (ay <= -8000) { up(); }             // calibration line
  if (ay >= 10000) { down(); }           // calibration line
  /* if (gy >= 20000) { rightclick(); delay(100); }
  if (gy <= -20000) { leftclick(); delay(100); } */
  Serial.print(" | gx= "); Serial.print(gx);
  Serial.print(" gy= "); Serial.print(gy);
  Serial.print(" gz= "); Serial.print(gz);
  Serial.print(" | ax= "); Serial.print(ax);
  Serial.print(" ay= "); Serial.print(ay);
  Serial.print(" az= "); Serial.print(az);
  Serial.print("\n");
  delay(5000);
}

Репозиторий: GitHub

3D-модели

Файлы на Thingiverse: ThimbleKrox 3D printable model (поддержки не требуются для прозрачной версии).

Схема

ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050

Производственный процесс

  1. Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
  2. Управление потолочным вентилятором через Alexa: пошаговое руководство
  3. Умная копилка: управление монетоприёмником на Arduino Nano
  4. Arduino Power Control Center: N-FET, P-FET, реле и RTC
  5. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  6. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  7. Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
  8. Управление светодиодом Arduino через Cortana по Bluetooth в Windows 10
  9. Управление телевизором через Alexa и Arduino IoT Cloud — пошаговое руководство
  10. Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты