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

Arduino - робот с манипулятором через Интернет

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

Arduino UNO
× 1
PHPoC WiFi Shield для Arduino
× 1
6DOF Arm Robot
× 1

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

Если вы новичок, рекомендую прочитать следующие уроки:

  • Arduino - Мотор
  • Arduino - сервомотор
  • Arduino - Wi-Fi

1. Демонстрация

2. Пользовательский интерфейс

Рука робота имеет 6 двигателей.

  • Зона A:управление двигателем 2, 3, 4 (управление тремя суставами рук)
  • Зона B:управляющий двигатель 1 (управляющая база)
  • Зона C:управляющий двигатель 5 (управление вращением захвата)
  • Зона D:управляющий двигатель 6 (управляющий захват)

3. Архитектура системы

4. Рабочий процесс

Клиентская сторона (пользовательский веб-интерфейс - написан на JavaScript + HTML + CSS)

Когда пользователь касается пальцем или движется пальцем (либо щелкает, либо перемещает мышь), мы можем получить координаты (x, y). Рабочий процесс выглядит следующим образом:

В случае зоны A, чтобы рассчитать углы двигателя 2, 3, 4, нам нужно выполнить некоторые геометрические вычисления . . Вы можете сослаться на него в конце этой страницы.

На стороне сервера (Код Arduino) :

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

  • Двигайте мотор с небольшим шагом.
  • Сделайте небольшую паузу, а затем сделайте еще один шаг.

Следующая диаграмма иллюстрирует вышеуказанную схему в случае, если новый угол больше текущего:

Wherestep_numis количество шагов, которые должен сделать двигатель. шаг и время - предопределенные значения. Два последних определяют скорость и плавность. Вышеуказанное относится только к одному роботу. Чтобы заставить роботов начать движение и одновременно достичь пункта назначения, мы можем сделать следующее:Шесть двигателей занимают одинаковое step_num , но step каждого двигателя отличается друг от друга. Итак, мы должны выбрать step_num в этом проекте максимум.

Обычно рабочий процесс Arduino выглядит следующим образом:

5. Геометрический расчет

Давайте превратим расчет манипулятора робота в следующую геометрическую задачу:

Известно

  • C исправлен
  • Известная точка - D - ввод пользователя
  • Известная точка - CB, BA, AD (обозначается b, a, d соответственно)
  • Длина каждого сегмента руки Найти: углы C, B, A Решение:
  • Предположим, что угол B и A одинаковы.
  • Добавьте дополнительные точки и сегмент

Расчет

  • Мы знали точки C и D => мы можем вычислить длину DC (обозначена c)
  • Мы также можем вычислить δ
  • Взглянув на треугольник ABE, мы можем сделать вывод, что AE =BE и ∠E =π - 2α.
  • Итак:
  • Закон косинусов в треугольнике CDE:
  • Заменим (1) и (2) на (3), мы получим:

Упростить

  • Упростите сказанное выше:
  • Поскольку мы знаем a, b, c и d, решаем вышеуказанное квадратное уравнение, мы можем вычислить значение α. - И β =π - α - До сих пор мы нашли β, давайте найдем γ - Закон косинусов в треугольниках BDC и BDA:
  • Решив эту систему уравнений, мы можем вычислить γ.
  • Итак, их требуемые углы:(δ + γ), β и β. Это углы двигателей 2, 3 и 4 соответственно.

6. Исходный код

Исходный код включает два файла:

  • RobotArmWeb.ino :Код Arduino
  • Remote_arm.php :Код веб-приложения, который загружается в PHPoC WiFi Shield или PHPoC Shield. (См. Инструкцию в этой статье.)

Вам также необходимо загрузить файл изображения flywheel.png в PHPoC Shield.

Лучший стартовый комплект Arduino для начинающих

Если вы ищете комплект Arduino, см. «Лучший комплект Arduino для начинающих»


  • Arduino - серво-библиотека
  • Servo.attach ()
  • Servo.write ()
  • Servo.writeMicroseconds ()
  • Servo.read ()
  • Servo.attached ()
  • Servo.detach ()
  • Serial.begin ()
  • Serial.println ()

Код

  • RobotArmWeb
  • remote_arm.php
RobotArmWeb Arduino
Это код Arduino
 #include  #include  int angle_init [] ={90, 101, 165, 153, 90, 120}; // когда мотор стоит прямо. В сети угол, когда двигатель стоит прямо, равен {0, 90, 130, 180, 0, 0}; int angle_offset [] ={0, 11, -15, -27, 0, 137}; // смещение между реальным серводвигателем и углом в webint cur_angles [] ={90, 101, 165, 153, 90, 120}; // текущие углы шести двигателей (градусы) int dest_angles [] ={0, 0, 0, 0, 0, 0}; // предполагаемые углы int angle_max [] ={180, 180, 160, 120, 180, 137}; int angle_min [] ={0, 0, 0, 20, 0, 75}; int direction [] ={1, 1 , 1, 1, 1, -1}; int angleSteps [] ={3, 2, 2, 2, 4, 4}; // шаги перемещения каждого двигателя (градусы) Servo servo1; Servo servo2; Servo servo3; Servo servo4; Servo servo5; Servo servo6; Servo servo [6] ={servo1, servo2, servo3, servo4, servo5, servo6}; Сервер PhpocServer (80); клиент PhpocClient; int stepNum =0; void setup () {Serial.begin (9600); Phpoc.begin (PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket ("удаленная_арма"); servo1.attach (2); // подключает сервопривод на выводе 2 к сервообъекту servo2.attach (3); // подключает сервопривод на выводе 3 к сервообъекту servo3.attach (4); // подключает сервопривод на выводе 4 к сервообъекту servo4.attach (5); // подключает сервопривод на выводе 5 к сервообъекту servo5.attach (6); // присоединяет сервопривод на выводе 6 к сервообъекту servo6.attach (7); // подключает сервопривод на выводе 7 к сервообъекту для (int i =0; i <6; i ++) servo [i] .write (angle_init [i]);} void loop () {PhpocClient client =server.available (); если (клиент) {String angleStr =client.readLine (); если (angleStr) {Serial.println (angleStr); int commaPos1 =-1; int commaPos2; для (int i =0; i <5; i ++) {commaPos2 =angleStr.indexOf (',', commaPos1 + 1); int angle =angleStr.substring (commaPos1 + 1, commaPos2) .toInt (); dest_angles [i] =угол * направление [i] + angle_offset [i]; commaPos1 =commaPos2; } int angle5 =angleStr.substring (commaPos1 + 1) .toInt (); dest_angles [5] =angle5 * направление [5] + angle_offset [5]; stepNum =0; // двигать двигатели многими небольшими шагами, чтобы двигатель двигался плавно, избегая внезапного перемещения двигателя. Ниже приводится расчет шага для (int i =0; i <6; i ++) {int dif =abs (cur_angles [i] - dest_angles [i]); int step =dif / angleSteps [я]; если (stepNum  0) {for (int i =0; i <6; i ++) {int angleStepMove =(dest_angles [i] - cur_angles [i]) / stepNum; cur_angles [i] + =angleStepMove; если (cur_angles [i]> angle_max [i]) cur_angles [i] =angle_max [i]; иначе, если (cur_angles [i]  
remote_arm.php PHP
Этот код представляет собой веб-приложение.
     Arduino - Arm Robot - Web       

Arduino - робот с манипулятором через Интернет

WebSocket: null

Схема

Необходимо обеспечить внешний источник питания для 6 двигателей.

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

  1. Простой робот Pi
  2. Центр управления Arduino
  3. Использование Интернета вещей для удаленного управления манипулятором
  4. Робот с сервомотором избегает препятствий
  5. Робот-последователь линии
  6. Управление увлажнителем Arduino
  7. Arduino - отправка температуры в Интернет через последовательный
  8. Littlearm 2C:создание напечатанной на 3D-принтере руки робота Arduino
  9. Автономный домашний робот-помощник
  10. Робот для супер-крутой навигации внутри помещений