Агуулгын хүснэгт:
- Алхам 1: Тоног төхөөрөмж
- Алхам 2: Arduino -ийн тохиргоо
- Алхам 3: Эцсийн хөтөлбөр
- Алхам 4: Видео гарын авлага
- Алхам 5: Дүгнэлт
Видео: Робот гар тоглодог төгөлдөр хуурын хавтан: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Энэ бүлэг нь UCN -ийн 2 автоматжуулалтын инженерүүдээс бүрдсэн бөгөөд тэд бидний хийх, хөгжүүлэх сэдэлтэй гайхалтай санаа олсон юм. Энэхүү санаа нь робот гарыг удирдах Arduino самбар дээр үндэслэсэн болно. Arduino самбар нь үйл ажиллагааны тархи бөгөөд дараа нь үйл ажиллагааны идэвхжүүлэгч робот гар нь шаардлагатай бүх зүйлийг хийх болно. Илүү гүнзгий тайлбарыг дараа нь өгөх болно.
Алхам 1: Тоног төхөөрөмж
Робот гар:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Роботын програм хангамж- https://www.arduino.cc/en/Main/OldSoftwareRelease… Өнгө илрүүлэх камер:
CMUcam5 Pixy камер - (https://charmedlabs.com/default/pixy-cmucam5/)
Програм хангамж - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Алхам 2: Arduino -ийн тохиргоо
Та самбар дээрх тохиргоог эндээс харж болно, энэ нь маш хялбар юм.
Зүүн талд цахилгаан хангамж байна.
Дунд нь эхний servo -д зориулагдсан бөгөөд дараа нь бусад servo -той servo -ээр холбогддог.
Доод тал нь самбарыг компьютер эсвэл зөөврийн компьютерээс удирддаг бөгөөд нөгөө талд нь USB оролт байдаг.
Алхам 3: Эцсийн хөтөлбөр
||| ХӨТӨЛБӨР |||
#оруулах
#include #include "poses.h" #include // Pixy Library #include
POSECOUNT -ийг тодорхойлох 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; логик IDCheck; boolean RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // хамтарсан дугаар 1 регистр 32 -ийг 50 хурдаар тохируулах. ax12SetRegister2 (2, 32, 50); // хамтарсан дугаар 2 регистр 32 -ийг 50 хурдаар тохируулах; // хамтарсан дугаар 3 регистрийг 32 -р хурдыг 50 болгож тохируулна. ax12SetRegister2 (4, 32, 50); 32 нь 100 хүртэл хурдтай болно. // хувьсагчдыг эхлүүлэх id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // Serial.begin (9600) цуваа портыг нээх; саатал (500); Serial.println ("##############################"); Serial.println ("Цуваа холбоо тогтоосон.");
// Lipo Battery Voltage CheckVoltage шалгах ();
// Servos скан хийх, MoveTest () байрлалыг буцаах; MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// мэдрэгчийг уншина уу: int inByte = Serial.read ();
сэлгэх (inByte) {
тохиолдол '1': MovePose1 (); завсарлага;
тохиолдол '2': MovePose2 (); завсарлага; тохиолдол '3': MovePose3 (); завсарлага;
тохиолдол '4': MovePose4 (); завсарлага;
тохиолдол '5': MoveHome (); завсарлага; тохиолдол '6': Grab (); завсарлага;
тохиолдол '7': LEDTest (); завсарлага;
кейс '8': RelaxServos (); завсарлага; }}
void CheckVoltage () {// хүлээгээд дараа нь хүчдэлийг шалгаарай (LiPO аюулгүй байдал) хөвөх хүчдэл = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("##############################"); Serial.print ("Системийн хүчдэл:"); Цуваа.хэвлэх (хүчдэл); Serial.println ("вольт."); if (хүчдэл 10.0) {Serial.println ("Хүчдэлийн түвшин нэрлэсэн."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("##############################"); }
хүчингүй MoveHome () {саатал (100); // санал болгосон түр зогсоох bioloid.loadPose (Нүүр хуудас); // байрлалыг FLASH -аас nextPose буферт bioloid.readPose () руу ачаалах; // curPose буфер руу Servo.println ("###########################") одоогийн servo байрлалд унших; Serial.println ("Сервүүдийг гэрийн байрлал руу шилжүүлэх"); Serial.println ("##############################"); саатал (1000); bioloid.interpolateSetup (1000); // Одоогоос> секундын 1/2 секундын дотор интерполяци хийх тохиргоо (bioloid.interpolating> 0) {// бид шинэ байрлалдаа хүрч амжаагүй байхад үүнийг хий bioloid.interpolateStep (); // шаардлагатай бол servos -ийг зөөх. саатал (3); } if (RunCheck == 1) {MenuOptions (); }}
хүчингүй MovePose1 () {саатал (100); // bioloid.loadPose (Pose1) түр зогсоохыг зөвлөж байна; // байрлалыг FLASH -аас nextPose буферт bioloid.readPose () руу ачаалах; // одоогийн servo байрлалд curPose буфер руу унших Serial.println ("###########################"); Serial.println ("Сервүүдийг 1 -р байр руу шилжүүлж байна"); Serial.println ("##############################"); саатал (1000); bioloid.interpolateSetup (1000); // Одоогоос> секундын 1/2 секундын дотор интерполяци хийх тохиргоо (bioloid.interpolating> 0) {// бид шинэ байрлалдаа хүрч амжаагүй байхад үүнийг хий bioloid.interpolateStep (); // шаардлагатай бол servos -ийг зөөх. саатал (3); } SetPosition (3, 291); // 3 -р үений байрлалыг '0' саатал (100) болгож тохируулах; // хэрэв (RunCheck == 1) {MenuOptions (); }}
хүчингүй MovePose2 () {саатал (100); // bioloid.loadPose (Pose2) түр зогсоохыг зөвлөж байна; // байрлалыг FLASH -аас nextPose буферт bioloid.readPose () руу ачаалах; // curPose буфер руу Servo.println ("###########################") одоогийн servo байрлалд унших; Serial.println ("Сервүүдийг 2 -р байр руу шилжүүлж байна"); Serial.println ("##############################"); саатал (1000); bioloid.interpolateSetup (1000); // Одоогоос> секундын 1/2 секундын дотор интерполяци хийх тохиргоо (bioloid.interpolating> 0) {// бид шинэ байрлалдаа хүрч амжаагүй байхад үүнийг хий bioloid.interpolateStep (); // шаардлагатай бол servos -ийг зөөх. саатал (3); } SetPosition (3, 291); // 3 -р үений байрлалыг '0' саатал (100) болгож тохируулах; // хэрэв (RunCheck == 1) {MenuOptions (); }} хүчингүй MovePose3 () {delay (100); // bioloid.loadPose (Pose3) түр зогсоохыг зөвлөж байна; // байрлалыг FLASH -аас nextPose буферт bioloid.readPose () руу ачаалах; // одоогийн servo байрлалд curPose буфер руу унших Serial.println ("###########################"); Serial.println ("Сервүүдийг 3 -р байр руу шилжүүлэх"); Serial.println ("##############################"); саатал (1000); bioloid.interpolateSetup (1000); // Одоогоос> секундын 1/2 секундын дотор интерполяци хийх тохиргоо (bioloid.interpolating> 0) {// бид шинэ байрлалдаа хүрч амжаагүй байхад үүнийг хий bioloid.interpolateStep (); // шаардлагатай бол servos -ийг зөөх. саатал (3); } SetPosition (3, 291); // 3 -р үений байрлалыг '0' саатал (100) болгож тохируулна уу; // (RunCheck == 1) {MenuOptions (); }}
хүчингүй MovePose4 () {саатал (100); // bioloid.loadPose (Pose4) түр зогсоохыг зөвлөж байна; // байрлалыг FLASH -аас nextPose буферт bioloid.readPose () руу ачаалах; // одоогийн servo байрлалд curPose буфер руу унших Serial.println ("###########################"); Serial.println ("Сервүүдийг 4 -р байр руу шилжүүлэх"); Serial.println ("##############################"); саатал (1000); bioloid.interpolateSetup (1000); // Одоогоос> секундын 1/2 секундын дотор интерполяци хийх тохиргоо (bioloid.interpolating> 0) {// бид шинэ байрлалдаа хүрч амжаагүй байхад үүнийг хий bioloid.interpolateStep (); // шаардлагатай бол servos -ийг зөөх. саатал (3); } SetPosition (3, 291); // 3 -р үений байрлалыг '0' саатал (100) болгож тохируулна уу; // (RunCheck == 1) {MenuOptions (); }}
хүчингүй MoveTest () {Serial.println ("###########################"); Serial.println ("Хөдөлгөөний тэмдгийн тестийг эхлүүлэх"); Serial.println ("##############################"); саатал (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("Хөдөлж буй Servo ID:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; саатал (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; саатал (10); }
// дараагийн servo ID руу давтах id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("###########################"); Serial.println ("Хувь хүний тестийг дахин ажиллуулахын тулд 1-5-р сонголтыг оруулна уу."); Serial.println ("1) 1 -р байр"); Serial.println ("2) 2 -р байр"); Serial.println ("3) 3 -р байр"); Serial.println ("4) 4 -р байр"); Serial.println ("5) Гэрийн байрлал"); Serial.println ("6) Системийн хүчдэлийг шалгах"); Serial.println ("7) LED тест хийх"); Serial.println ("8) Relax Servos"); Serial.println ("##############################"); }
хүчин төгөлдөр бус RelaxServos () {id = 1; Serial.println ("##############################"); Serial.println ("Тайвшруулах үйлчилгээ".); Serial.println ("##############################"); while (id <= SERVOCOUNT) {Relax (id); id = (id ++)%SERVOCOUNT; саатал (50); } if (RunCheck == 1) {MenuOptions (); }}
хүчингүй LEDTest () {id = 1; Serial.println ("##############################"); Serial.println ("LED тест ажиллаж байна"); Serial.println ("##############################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); саатал (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); саатал (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // 1 -р үений байрлалыг '0' саатал (100) болгож тохируулна уу
}
Бид өөрсдийн програмыг үйлдвэрлэгчдийн PincherTest програм дээр үндэслэн байршил тогтоох тохиолдолд томоохон өөрчлөлтүүдийг оруулсан болно. Бид роботыг санах ойд байрлуулахын тулд poses.h -ийг ашигласан. Нэгдүгээрт, бид Pixycam ашиглан тоглоомын гараа автоматаар бүтээхийг хичээсэн боловч гэрэл, жижиг дэлгэцийн асуудлаас болж ийм зүйл болж чадсангүй. Робот гэрийн үндсэн байрлалтай бөгөөд програмыг байршуулсны дараа роботоос олдсон бүх servo -ийг туршиж үзэх болно. Бид 1-4 товчлууруудын байрлалыг тохируулсан тул үүнийг санахад хялбар байх болно. Хөтөлбөрийг ашиглахад таатай байна.
Алхам 4: Видео гарын авлага
Алхам 5: Дүгнэлт
Дүгнэж хэлэхэд робот бол бидний хувьд хөгжилтэй бяцхан төсөл бөгөөд эргэн тойронд тоглож, туршиж үзэх хөгжилтэй тоглоом юм. Үүнийг туршиж үзээд тохируулахыг зөвлөж байна.
Зөвлөмж болгож буй:
TinkerCad дээр Arduino ашиглан төгөлдөр хуурын дуу: 4 алхам
TinkerCad дээр Arduino ашиглан төгөлдөр хуурын дуу сонсогдож байна: Энэхүү гарын авлагад та Arduino -тай хэрхэн дуугаралт (эсвэл пьезо чанга яригч) ашиглах талаар сурах болно. Буззерыг дохиоллын төхөөрөмж, компьютер, таймер, хулганы товчлуур эсвэл хэрэглэгчийн оролтын баталгаажуулалтаас олж болно.Та мөн ая ()
Утасгүй агаарын төгөлдөр хуурын бээлий хэрхэн хийх вэ: 9 алхам
Утасгүй төгөлдөр хуурын бээлий хэрхэн хийх вэ: Зорилго ба үүрэг: Бидний өмсөж болох технологийн төсөл бол үндсэн электроник, HexWear гэх мэт микроконтроллер, Arduino, Max 8 програм хангамж бүхий зөөврийн компьютер ашиглан синхрон гэрэлтэй утасгүй агаарын төгөлдөр хуурын бээлий бүтээх явдал юм. . Манай төслийн хэрэглээ
Прима - төгөлдөр хуур тоглодог робот: 13 алхам
Прима - төгөлдөр хуур тоглодог робот: Хөгжмийн зэмсэг тоглодог роботын санаа намайг үргэлж татдаг байсан бөгөөд би үргэлж өөрөө бүтээхийг хүсдэг байсан. Гэсэн хэдий ч би хэзээ ч хөгжим, хөгжмийн зэмсгийн талаар тийм ч их мэдлэгтэй байгаагүй тул үүнийг хэрхэн эхлүүлэхээ хэзээ ч бодож чадахгүй байв. Р хүртэл
Чайботский (төгөлдөр хуур тоглодог робот): 12 алхам (зурагтай)
Чайботский (төгөлдөр хуур тоглодог робот): Энэхүү зааварчилгаа нь Өмнөд Флоридагийн их сургуулийн Makecourse төслийн шаардлагыг биелүүлэх зорилгоор бүтээгдсэн (www.makecourse.com) Чайботский бол Arduino хөдөлгүүртэй төгөлдөр хуур тоглодог робот юм. Сэдэл нь боломжтой зүйлийг бүтээх явдал байв
Ардуино - төгөлдөр хуурын хавтан: 16 алхам (зурагтай)
Arduino - төгөлдөр хуурын хавтан: Сайн байна уу, интернет хүмүүс ээ, энэ бол arduino uno r3.so дээрх гар утасны тоглоомыг хэрхэн ТОДОРХОЙЛОХГҮЙ болгох вэ гэдгийг эхлүүлэхийн тулд танд дараах хэсгүүд хэрэгтэй болно. ! 1x Arduino Uno r3 ($ 42) 2x LCD товчлуурын бамбай (тус бүр 19 доллар) 5