Как да си направя роботизирана ръка Arduino и Bluetooth контролирана?

През последния век роботиката е най-нововъзникващата област на изследване. Роботите са поели контрола над почти всичко, което хората са правили. Можем да видим автономни роботи, изпълняващи различни задачи в нашето общество. Има и някои роботизирани с дистанционно управление, които ни помагат да извършваме различни операции. От създаването на Nano схеми в областта на инженерството до извършването на сложни операции в областта на медицината, роботите са по-надеждни от хората.



Роботизирана ръка

В този проект ще направим роботизирана ръка, която ще се управлява от микроконтролер Arduino. Той ще се контролира чрез Bluetooth с помощта на приложение за дистанционно управление за Android.



Как да управлявате роботизирана ръка с помощта на Arduino?

Сега, тъй като знаем резюмето на нашия проект. Нека съберем още малко информация за веригата и започнем да изграждаме роботизирана ръка, контролирана от Bluetooth, и да я управляваме чрез Bluetooth.



Стъпка 1: Събиране на компонентите

Най-добрият подход за стартиране на всеки проект е да се направи пълен списък на компонентите. Това е не само интелигентен начин за стартиране на проект, но също така ни спасява от много неудобства в средата на проекта. Списък на компонентите на този проект е даден по-долу:



  • HC-05 безжичен Bluetooth сериен трансивър
  • 6V адаптер
  • Джъмперни проводници
  • Макет

Стъпка 2: Изучаване на компонентите

Тъй като имаме пълен списък на всички компоненти, които ще използваме, нека преминем крачка напред и да преминем през кратко проучване на всички компоненти.

Arduino Nano е платка за микроконтролер, която извършва различни операции в различни вериги. Това изисква a C код което казва на дъската какви задачи да изпълнява и как. Той има 13 цифрови I / O щифта, което означава, че можем да работим с 13 различни устройства. Arduino Nano има точно същата функционалност като Arduino Uno, но в доста малък размер. Микроконтролерът на платката Arduino Nano е ATmega328p. Ако искате да контролирате повече от 13 устройства, използвайте Arduino Mega.

Arduino Nano



HC-05 безжичен Bluetooth сериен трансивър : В този проект се нуждаем от безжична комуникация, така че ще използваме технологията Bluetooth и за този модул, който ще се използва, е HC-05. Този модул има няколко програмируеми скорости на предаване, но скоростта на предаване по подразбиране е 9600 bps. Той може да бъде конфигуриран като главен или подчинен, докато друг модул HC-06 може да работи само в подчинен режим. Този модул има четири щифта. Един за VCC (5V), а останалите три за GND, TX и RX. Паролата по подразбиране за този модул е 1234 или 0000 . Ако искаме да комуникираме между два микроконтролера или да комуникираме с всяко устройство с Bluetooth функционалност като Телефон или Лаптоп HC-05 ни помага да направим това. Вече са налични няколко приложения за Android, което значително улеснява този процес.

Bluetooth-модул HC-05

Типичен Роботизирана ръка се състои от няколко сегмента и обикновено има 6 стави в него. Той съдържа минимум 4 стъпкови двигателя, които се управляват от компютъра. Стъпковите двигатели се различават от другите двигатели с постоянен ток. Те се движат точно с точни стъпки. Тези роботизирани оръжия се използват за извършване на различни операции. Можем да ги управляваме ръчно чрез дистанционно управление или да ги програмираме да работят автономно.

Роботизирана ръка.

Стъпка 3: Сглобяване на компонентите

Сега, когато знаем за работата на всички използвани основни компоненти. Нека започнем да ги сглобяваме и да направим схема за изграждане на дистанционно управлявана роботизирана ръка.

  1. .Закрепете дъската Arduino Nano на борда. Arduino ще се захранва чрез положителния и отрицателния проводник на адаптера.
  2. Поставете Bluetooth модула и върху макетната плоча. Включете Bluetooth модула чрез Arduino. Свържете Tx щифта на Bluetooth модула към Rx щифта на платката Arduino Nan и свържете Rx щифта на Bluetooth модула към Tx щифта на платката Arduino Nano.
  3. Както знаем, че има 4 стъпкови двигателя. Всеки от тях има техническо име. Те се наричат Лакът , Рамо , Основа, и Грайфер . Vcc и земята на всички двигатели ще бъдат общи и свързани към положителните и отрицателните на 6V адаптер. Сигналният щифт на всичките четири двигателя ще бъде свързан към pin5, pin6, pin9 и pin11 на Arduino Nano.
  4. Уверете се, че направените от вас връзки са в съответствие със следната електрическа схема.

    Електрическа схема

Стъпка 4: Първи стъпки с Arduino

Ако все още не сте запознати с Arduino IDE, не се притеснявайте, защото по-долу е обяснена поетапна процедура за настройка и използване на Arduino IDE с платка за микроконтролер.

  1. Изтеглете най-новата версия на Arduino IDE от Arduino.
  2. Свържете вашата платка Arduino Nano към вашия лаптоп и отворете контролния панел. След това кликнете върху Хардуер и звук . Сега кликнете върху Устройства и принтери. Тук намерете порта, към който е свързана вашата платка за микроконтролер. В моя случай е така COM14 но при различните компютри е различно.

    Намиране на порт

  3. Щракнете върху менюто Инструменти и задайте дъската на Arduino Nano от падащото меню.

    Съвет за настройка

  4. В същото меню на инструмента задайте номера на порта, който сте наблюдавали преди в Устройства и принтери .

    Настройка на порт

  5. В същото меню на инструмента задайте процесора на ATmega328P (стар буутлоудър).

    Процесор

  6. За да напишем код за експлоатация на серво мотори, се нуждаем от специална библиотека, която ще ни помогне да напишем няколко функции за серво мотори. Тази библиотека е приложена заедно с кода в линка по-долу. За да включите библиотеката, щракнете върху Скица> Включване на библиотека> Добавяне на ZIP. Библиотека.

    Включете библиотека

  7. Изтеглете кода, приложен по-долу, и го поставете във вашия ID на Arduino. Щракнете върху качване бутон, за да запишете кода на дъската на вашия микроконтролер.

    Качване

За да изтеглите кода, Натисни тук.

Стъпка 5: Изтегляне на приложението

Тъй като сега събрахме цялата схема и качихме кода в платката на микроконтролера. позволява да изтеглите мобилно приложение, което ще работи като дистанционно управление за роботизираното рамо. Безплатно приложение е достъпно в Google Play Store. Името на приложението е Little Arm Robot Control . За да осъществите Bluetooth връзка, включете Bluetooth на вашия мобилен телефон. Отидете в настройките и сдвоете мобилния си телефон с модула HC-05. След като направите това, натиснете бутона Bluetooth в приложението. Ако светне в зелено, това означава, че приложението вече е свързано и готово за работа с роботизираното рамо. Има плъзгачи, които да настроят да управляват роботизираното рамо по желание.

Приложение

Стъпка 6: Разбиране на кодекса

Кодът е добре коментиран и лесен за разбиране. Но все пак, накратко е обяснено по-долу.

1. В началото е включена библиотека за писане на код за работа със серво мотори. Друга библиотека math.h е включен за извършване на различни математически операции в кода. Четири обекта също се инициализират, за да се използват за четирите серво мотора.

#include // arduino библиотека #include // стандартна c библиотека #define PI 3.141 Servo baseServo; Серво рамо Серво; Серво лакът Servo; Серво грайфер Серво; команда int;

2. След това се декларира структура, която приема стойности за серво мотори на основата, рамото и коляното.

struct jointAngle {// деклариране на структура int base; вътрешно рамо; вътрешен лакът; };

3. След това се инициализират някои променливи, за да съхраняват желаното сцепление, забавяне и позиция на серво мотора. скоростта е зададена на 15 и се прави обект, който да вземе стойността на ъгъла в конструкцията.

int желанGrip; int gripperPos; int желано закъснение; int servoSpeed ​​= 15; int готов = 0; struct jointAngle желанAngle; // желани ъгли на серво

Четири. настройка за празнота () е функция, която се използва за задаване на щифтовете на Arduino като INPUT или OUTPUT. Тук в тази функция декларирахме, че щифтът на двигателите ще бъде свързан към кои щифтове на Arduino. Също така е гарантирано, че Arduino не чете сериен вход твърде дълго. Началната позиция и скоростта на предаване също са зададени в тази функция. Скорост на предаване е скоростта, с която платката на микроконтролера ще комуникира с прикрепените серво и Bluetooth модул.

void setup () {Serial.begin (9600); baseServo.attach (9); // прикрепя основния серво на щифт 9 към серво обекта ShoulderServo.attach (10); // прикрепя раменния серво на щифт 9 към серво обекта elbowServo.attach (11); // прикрепва серво серво на щифт 9 към серво обект gripperServo.attach (6); // прикрепя захващащото серво на щифт 9 към серво обекта Serial.setTimeout (50); // гарантира, че arduino не чете сериал твърде дълго Serial.println ('стартиран'); baseServo.write (90); // първоначални позиции на сервомехани раменниServo.write (150); elbowServo.write (110); готов = 0; }

5. servoParallelControl () е функция, която се използва за откриване на текущата позиция на роботизираното рамо и преместването му в съответствие с командата, дадена чрез мобилното приложение. Ако текущото положение е по-малко от действителното, рамото ще се движи нагоре и обратно. Тази функция ще върне стойността на текущата позиция и скоростта на серво.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // четем текущия pos int newPos = startPos; // int theSpeed ​​= скорост; // дефинираме къде е позицията по отношение на командата // ако текущата позиция е по-малка от действителната движение нагоре if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); забавяне (theSpeed); връщане 0; } else {връщане 1; }}

6. цикъл void () е функция, която се изпълнява многократно в цикъл. Тази функция чете последователно данните и съхранява ъгъла на всяко серво в структурата. Първоначално състоянието на всички сервосистеми е зададено на нула. Тук функция servoParallelControl () и се извикват параметри в него. тази функция ще върне стойността и тя ще бъде съхранена в променлива на статус.

цикъл void () {if (Serial.available ()) {готов = 1; желанAngle.base = Serial.parseInt (); desireAngle.shoulder = Serial.parseInt (); desireAngle.elbow = Serial.parseInt (); желанGrip ​​= Serial.parseInt (); желанDelay = Serial.parseInt (); if (Serial.read () == ' n') {// ако последният байт е 'd', тогава спрете да четете и изпълнете командата 'd' означава 'done' Serial.flush (); // изчистване на всички останали команди, натрупани в буфера // изпращане на завършване на командата Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int готово = 0; while (done == 0 && ready == 1) {// преместете серво в желаната позиция status1 = servoParallelControl (желаноAngle.base, baseServo, желанDelay); status2 = servoParallelControl (желанAngle.shoulder, раменServo, желанDelay); status3 = servoParallelControl (желанAngle.elbow, elbowServo, желанDelay); status4 = servoParallelControl (желанGrip, gripperServo, желанDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // край на времето}

Това беше цялата процедура за изработване на роботизирана ръка. След изгаряне на кода и изтегляне на приложението, роботът трябва да работи напълно добре, когато плъзгачите в приложението се преместят. Можете също така да програмирате рамото да работи автономно, за да изпълни желаната задача.