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

Мышь, управляемая смартфоном

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

Arduino UNO
× 1
Модуль Bluetooth HC-05
× 1
Перемычки (общие)
× 1

Приложения и онлайн-сервисы

IDE Arduino
IDLE (графический интерфейс Python)
Управление мышью Bluetooth Inventor в приложении MIT

Об этом проекте

Этот проект похож на мою предыдущую работу, где я использовал джойстик для управления курсором ПК. Ключевое отличие состоит в том, что я создал приложение для смартфона, которое содержит 2 виртуальных джойстика для перемещения курсора, а также для прокрутки экрана, а также делает левый и правый щелчок, как обычный трекпад.

Работает

Проект включает в себя приложение для смартфона, которое отправляет данные осей x и y джойстика, статус прокрутки, статус левого и правого щелчка через Bluetooth на Arduino Uno, подключенный к модулю Bluetooth HC-05. Эти данные при приеме в Arduino обрабатываются, чтобы внести изменения в текущую позицию курсора для получения новой позиции. Полученные данные вместе со статусом прокрутки и кнопки затем распечатываются как выходные данные, которые распознаются скетчем Python для чтения. Эскиз Python предназначен для выполнения действий мыши с помощью модуля мыши.

О приложении

Приложение для смартфона создано с помощью MIT-App Inventor. Создать приложение просто, вам просто нужно добавить нужные блоки для создания необходимого приложения. Я сослался на руководство по настольной робототехнике по их созданию. Главный экран приложения выглядит следующим образом:

Перед отправкой основной информации в модуль HC-05 приложение сначала отправляет однобайтовое число (255) для обозначения начала информации. Последовательность передачи данных следующая-

1. Отправьте "255" для обозначения начала

2. Отправить 1 байтовое значение оси X джойстика

3. Отправьте 1 байтовое значение оси Y джойстика

4. Отправить статус щелчка левой кнопкой мыши, кнопки щелчка правой кнопкой мыши и статус прокрутки (1 байт).

Данные из приложения отправляются каждые 20 миллисекунд в Arduino UNO.

Сторона Ардуино

Байты данных из приложения принимаются Arduino с помощью модуля Bluetooth HC-05. Arduino содержит текущие координаты курсора, где диапазон координат x составляет от 0 до 1279, а диапазон координат y - от 0 до 799. Я получил эти крайние координаты из функции python mouse.get_position () который возвращает координаты при перемещении курсора (не используется в основном эскизе).

На основе данных, полученных при перемещении джойстика, текущая позиция курсора (координаты x и y) затем добавляется / вычитается с данными, полученными приложением, чтобы переместить курсор в новую желаемую координату. Окончательные данные затем печатаются на последовательном мониторе в последовательности, указанной ниже.

Следующая последовательность данных, наконец, считывается программой python для ее выполнения. Для этого нам нужно будет загрузить дополнительные модули, а именно мышь и pyserial, как описано ниже.

Программирование на Python

У пользователя должен быть установлен Python 3 на своем ноутбуке / компьютере. Его можно скачать здесь.

(Для Windows)

После установки скопируйте путь к расположению файла python.

Следующие шаги необходимо выполнить в командной строке. Откройте командную строку и введите следующее:

1. cd <вставьте путь к файлу Python>

2. py –m pip install –-upgrade pip

3. py –m pip install mouse

4. py -m pip install pyserial

мышь модуль используется для выполнения действий мыши и pyserial модуль используется для отправки / получения данных от Arduino. Я уже установил необходимые модули, поэтому получил это

Исполнение

Установите приложение Bluetooth Mouse Control на свой смартфон.

Загрузите эскиз Arduino в Arduino UNO и следуйте схеме, указанной на схеме.

Сторона Python -

1. Скопируйте и вставьте код Python в файл блокнота. Измените COM-порт на COM-порт вашего Arduino UNO и сохраните его как '.py'.

2. Откройте python IDLE и откройте из него файл блокнота.

3. Запустите эскиз.

После этого вы вернетесь к экрану, показанному на рис. 2.2.

Откройте приложение для смартфона и подключитесь к модулю bluetooth, и вы заметите движение курсора при изменении направления джойстика.

Код

  • Код Arduino
  • Код Python
Код Arduino Arduino
 получено данных int [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; int чувствительность =20; // вы можете настроить чувствительность int xpos =0, ypos =0; if (Serial.available ()> 0) {// получить байт с телефона in_byte =Serial.read (); // записываем в байтах в переменную if (in_byte ==(255)) {// если переменная равна 0, то массив вставляется в 0. array_index =0; } полученные данные [array_index] =in_byte; // сохранить номер в массиве array_index =array_index +1; if (получено данных [1]> =110) xpos =map (получено данных [1], 110,172,0, чувствительность); // При перемещении вправоtif (datareceived [1] <=70) xpos =map (datareceived [1], 60,1,0, -sensitivity); // При перемещении leftif (datareceived [2]> =110) ypos =map (datareceived [2], 110,255,0, чувствительность); // При перемещении вниз if (datareceived [2] <=60) ypos =map (datareceived [2], 70,1,0, -sensitivity); // При перемещении вверхif (datareceived [3] ==1 &&l_prev ==0) // ЧТОБЫ распознать одно нажатие кнопки clicks =1; else if (datareceived [3] ==2 &&r_prev ==0) clicks =2; иначе if (dataareceived [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) // когда один из джойстиков перемещается, или кнопка нажимается или прокручивается { height =height + ypos; width =width + xpos; if (height> =799) height =799; if (height <=0) height =0; if (width> =1279) width =1279; if (width <=0) width =0; Serial.print (ширина); Serial.print (":"); Serial.print (высота); Serial.print (":"); Serial.println (клики); clicks =0;} }} 
Код Python Python
 import mouse, sysimport time import 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' в z:mouse.click (button ="left") # щелкает кнопкой мыши elif '2' в z:mouse. click (button ="right") elif '3' в z:mouse.wheel (delta =-1) # Прокрутить вниз elif '4' в z:mouse.wheel (delta =1) # Прокрутить вверх 

Схема


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

  1. Робот Raspberry Pi, управляемый через Bluetooth
  2. Интерактивный настольный светильник, управляемый жестами
  3. Вольтметр своими руками с использованием Arduino и смартфона
  4. Светодиоды, управляемые Alexa через Raspberry Pi
  5. Радиоуправляемая машина с джойстиком
  6. Arduino с Bluetooth для управления светодиодом!
  7. Роботизированная рука, управляемая нунчук (с Arduino)
  8. Робот, управляемый речью
  9. MobBob:самостоятельный робот Arduino, управляемый смартфоном Android
  10. Устройства с голосовым управлением Bluetooth с OK Google