През последния век роботиката е най-нововъзникващата област на изследване. Роботите са поели контрола над почти всичко, което хората са правили. Можем да видим автономни роботи, изпълняващи различни задачи в нашето общество. Има и някои роботизирани с дистанционно управление, които ни помагат да извършваме различни операции. От създаването на 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: Сглобяване на компонентите
Сега, когато знаем за работата на всички използвани основни компоненти. Нека започнем да ги сглобяваме и да направим схема за изграждане на дистанционно управлявана роботизирана ръка.
- .Закрепете дъската Arduino Nano на борда. Arduino ще се захранва чрез положителния и отрицателния проводник на адаптера.
- Поставете Bluetooth модула и върху макетната плоча. Включете Bluetooth модула чрез Arduino. Свържете Tx щифта на Bluetooth модула към Rx щифта на платката Arduino Nan и свържете Rx щифта на Bluetooth модула към Tx щифта на платката Arduino Nano.
- Както знаем, че има 4 стъпкови двигателя. Всеки от тях има техническо име. Те се наричат Лакът , Рамо , Основа, и Грайфер . Vcc и земята на всички двигатели ще бъдат общи и свързани към положителните и отрицателните на 6V адаптер. Сигналният щифт на всичките четири двигателя ще бъде свързан към pin5, pin6, pin9 и pin11 на Arduino Nano.
- Уверете се, че направените от вас връзки са в съответствие със следната електрическа схема.
Електрическа схема
Стъпка 4: Първи стъпки с Arduino
Ако все още не сте запознати с Arduino IDE, не се притеснявайте, защото по-долу е обяснена поетапна процедура за настройка и използване на Arduino IDE с платка за микроконтролер.
- Изтеглете най-новата версия на Arduino IDE от Arduino.
- Свържете вашата платка Arduino Nano към вашия лаптоп и отворете контролния панел. След това кликнете върху Хардуер и звук . Сега кликнете върху Устройства и принтери. Тук намерете порта, към който е свързана вашата платка за микроконтролер. В моя случай е така COM14 но при различните компютри е различно.
Намиране на порт
- Щракнете върху менюто Инструменти и задайте дъската на Arduino Nano от падащото меню.
Съвет за настройка
- В същото меню на инструмента задайте номера на порта, който сте наблюдавали преди в Устройства и принтери .
Настройка на порт
- В същото меню на инструмента задайте процесора на ATmega328P (стар буутлоудър).
Процесор
- За да напишем код за експлоатация на серво мотори, се нуждаем от специална библиотека, която ще ни помогне да напишем няколко функции за серво мотори. Тази библиотека е приложена заедно с кода в линка по-долу. За да включите библиотеката, щракнете върху Скица> Включване на библиотека> Добавяне на ZIP. Библиотека.
Включете библиотека
- Изтеглете кода, приложен по-долу, и го поставете във вашия 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}} // край на времето}
Това беше цялата процедура за изработване на роботизирана ръка. След изгаряне на кода и изтегляне на приложението, роботът трябва да работи напълно добре, когато плъзгачите в приложението се преместят. Можете също така да програмирате рамото да работи автономно, за да изпълни желаната задача.