جدول المحتويات:
- الخطوة 1: متطلبات المكونات
- الخطوة 2: تنزيل Gui
- الخطوة 3: الاتصال
- الخطوة 4: قم بتحميل البرنامج الثابت وتحقق من نتيجة التعليمات البرمجية في لوحة تحكم Arduino
- الخطوة 5: تصميم وطباعة كل جزء في ورقة الخشب الرقائقي
- الخطوة 6: التجميع
- الخطوة 7: إعداد إعدادات GBRL
- الخطوة 8: قم بتحميل الكود النهائي وتحقق من النتيجة الافتراضية في لوحة تحكم برنامج Arduino Uno
فيديو: روبوت اختيار ووضع قاعدة اردوينو: 8 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
لقد صنعت ذراع روبوت صناعي رخيص للغاية (أقل من 1000 دولار) لتمكين الطلاب من اختراق الروبوتات على نطاق واسع وتمكين الإنتاج المحلي الصغير من استخدام الروبوتات في عملياتهم دون كسر البنك. إنها سهلة لبناء وجعل الفئة العمرية من 15 إلى 50 عامًا.
الخطوة 1: متطلبات المكونات
1. اردوينو + درع + دبابيس + كابلات
2. متحكم: dm860A (إيباي)
3. محرك متدرج: 34hs5435c-37b2 (Ebay)
4. مسامير M8x45 + 60 + 70 ومسامير M8.
5. 12mm الخشب الرقائقي.
6. 5mm النايلون.
7. غسالات أعمى 8mm.
8. مسامير الخشب 4.5x40mm.
9. M3 غرق عداد ،
10. 12 فولت امدادات الطاقة
11. سائق محرك سيرفو اردوينو
الخطوة 2: تنزيل Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
الخطوة 3: الاتصال
ربط الأسلاك التي تظهر في الصورة هو فهم أكبر بالنسبة لك.
نحتاج إلى توصيل محرك المحرك بـ Arduino والموصلات الأخرى التي تتطلبها الروبوت الخاص بك.
الخطوة 4: قم بتحميل البرنامج الثابت وتحقق من نتيجة التعليمات البرمجية في لوحة تحكم Arduino
تثبيت البرنامج الثابت على Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
ملاحظة: قد يحدث تعارض عند الترجمة في Arduino. قم بإزالة جميع المكتبات الأخرى من مجلد مكتبتك (../documents/Arduino/libraries).
إعداد البرامج الثابتة
قم بتعيين التمكين على مهلة أحدث. استخدم اتصال تسلسلي واكتب:
$1=255
تعيين صاروخ موجه:
$22=1
تذكر ضبط المسلسل على الباود: 115200
رموز G مفيدة
تعيين نقطة الصفر للروبوت:
G10 L2 Xnnn Ynnn Znnn
استخدم نقطة الصفر:
G54
التهيئة النموذجية للروبوت المركزي:
G10 L2 X1.5 Y1.2 Z1.1
G54
انقل الروبوت إلى الوضع السريع:
G0 Xnnn Ynnn Znnn
مثال:
G0 X10.0 Y3.1 Z4.2 (عودة)
انقل الروبوت إلى موضعه بسرعة محددة:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (عودة)
يجب أن تكون F بين 10 (slooooow) و 600 (سريع)
الوحدات الافتراضية لـ X و Y و Z
عند استخدام إعدادات الخطوة / الوحدات الافتراضية (250 خطوة / وحدة) لـ GRBL و
تم إعداد محرك السائر لـ 800 خطوة / دورة ، تنطبق الوحدات التالية على جميع المحاور:
+ - 32 وحدة = + - 180 درجة
مثال على رمز المعالجة:
يمكن لهذا الرمز التواصل مباشرة مع Arduino GRBL.
github.com/damellis/gctrl
تذكر ضبط المسلسل على الباود: 115200
كود uoload في ardunio
استيراد java.awt.event. KeyEvent ؛
استيراد javax.swing. JOptionPane ؛
معالجة الاستيراد. تسلسلي. * ؛
المنفذ التسلسلي = فارغ ؛
// حدد السطر المناسب لنظام التشغيل الخاص بك وقم بتعديله
// اتركه فارغًا لاستخدام المنفذ التفاعلي (اضغط على "p" في البرنامج)
سلسلة portname = خالية ؛
// String portname = Serial.list () [0] ، // نظام التشغيل Mac OS X
// String portname = "/ dev / ttyUSB0" ؛ // لينكس
// String portname = "COM6" ؛ // شبابيك
تدفق منطقي = خطأ ؛
سرعة الطفو = 0.001 ؛
سلسلة gcode؛
كثافة العمليات أنا = 0 ؛
openSerialPort باطلة ()
{
إذا كان (اسم المنفذ == فارغ) يعود ؛
if (port! = null) port.stop ()؛
المنفذ = مسلسل جديد (هذا ، اسم المنفذ ، 115200) ؛
port.bufferUntil ('n') ،
}
selectSerialPort () باطلة
{
نتيجة السلسلة = (سلسلة) JOptionPane.showInputDialog (هذه ،
"حدد المنفذ التسلسلي الذي يتوافق مع لوحة Arduino الخاصة بك." ،
"حدد المنفذ التسلسلي" ،
JOptionPane. PLAIN_MESSAGE ،
باطل،
Serial.list () ،
0);
إذا كانت (النتيجة! = خالية) {
portname = نتيجة ؛
openSerialPort () ،
}
}
الإعداد باطل()
{
الحجم (500 ، 250) ؛
openSerialPort () ،
}
رسم باطل ()
{
الخلفية (0) ؛
ملء (255) ؛
int y = 24 ، dy = 12 ؛
نص ("التعليمات" ، 12 ، ذ) ؛ ص + = دى ؛
نص ("p: حدد المنفذ التسلسلي" ، 12 ، ص) ؛ ص + = دى ؛
نص ("1: ضبط السرعة على 0.001 بوصة (1 مل) لكل هرولة" ، 12 ، ص) ؛ ص + = دى ؛
نص ("2: ضبط السرعة على 0.010 بوصات (10 مل) لكل هرولة" ، 12 ، ص) ؛ ص + = دى ؛
text ("3: ضبط السرعة على 0.100 بوصة (100 ميل) لكل هرولة" ، 12 ، ص) ؛ ص + = دى ؛
النص ("مفاتيح الأسهم: الركض في المستوى x-y" ، 12 ، y) ؛ ص + = دى ؛
نص ("الصفحة لأعلى والصفحة لأسفل: الركض في المحور z" ، 12 ، ص) ؛ ص + = دى ؛
نص ("$: عرض إعدادات grbl"، 12 ، ص) ؛ ص + = دى ؛
نص ("h: go home"، 12، y) ؛ ص + = دى ؛
نص ("0: آلة صفر (تعيين المنزل إلى الموقع الحالي)" ، 12 ، ص) ؛ ص + = دى ؛
نص ("g: دفق ملف g-code"، 12، y) ؛ ص + = دى ؛
text ("x: stop streaming g-code (هذا ليس فوريًا)" ، 12 ، y) ؛ ص + = دى ؛
ص = الارتفاع - دى ؛
نص ("سرعة الركض الحالية:" + السرعة + "بوصة لكل خطوة" ، 12 ، ص) ؛ ص - = دى ؛
نص ("المنفذ التسلسلي الحالي:" + اسم المنفذ ، 12 ، ص) ؛ ص - = دى ؛
}
مفتاح باطل
{
إذا (المفتاح == '1') السرعة = 0.001 ؛
إذا (المفتاح == '2') السرعة = 0.01 ؛
إذا (المفتاح == '3') السرعة = 0.1 ؛
إذا (! يتدفقون) {
إذا (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + speed + "Y0.000 Z0.000 / n") ؛
إذا (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + السرعة + "Y0.000 Z0.000 / n") ؛
إذا (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + speed + "Z0.000 / n") ؛
إذا (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + speed + "Z0.000 / n") ؛
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + speed + "\ n") ؛
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + speed + "\ n") ؛
// if (key == 'h') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n") ؛
if (key == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n") ؛
// if (key == 'v') port.write ("$ 0 = 100 / n $ 1 = 74 / n $ 2 = 75 / n") ؛
if (key == 's') port.write ("$ 3 = 10 / n") ؛
if (key == 'e') port.write ("$ 16 = 1 / n") ؛
if (key == 'd') port.write ("$ 16 = 0 / n") ؛
إذا (المفتاح == '0') openSerialPort () ؛
إذا (المفتاح == 'p') selectSerialPort () ؛
if (key == '$') port.write ("$$ / n") ؛
if (key == 'h') port.write ("$ H / n") ؛
}
إذا (! streaming && key == 'g') {
gcode = لاغية ؛ أنا = 0 ؛
ملف الملف = فارغ ؛
println ("تحميل الملف …") ؛
selectInput ("حدد ملفًا لمعالجة:" ، "fileSelected" ، ملف) ؛
}
إذا (مفتاح == 'x') تدفق = خطأ ؛
}
ملف باطل محدد (اختيار ملف) {
إذا (التحديد == فارغة) {
println ("تم إغلاق النافذة أو نقر المستخدم على إلغاء.") ؛
} آخر {
println ("تحديد المستخدم" + select.getAbsolutePath ()) ؛
gcode = loadStrings (select.getAbsolutePath ()) ؛
إذا (gcode == null) يعود ؛
تدفق = صحيح ؛
مجرى()؛
}
}
تيار باطل ()
{
إذا (! تدفق) العودة ؛
احيانا صحيح) {
إذا (i == gcode.length) {
تدفق = خطأ ؛
إرجاع؛
}
إذا (gcode .trim (). length () == 0) i ++؛
كسر آخر
}
println (gcode ) ؛
port.write (gcode + '\ n') ؛
أنا ++ ؛
}
مسلسل باطل (مسلسل ص)
{
String s = p.readStringUntil ('\ n') ؛
println (s.trim ()) ؛
if (s.trim (). beginWith ("ok")) stream () ؛
if (s.trim (). beginWith ("error")) stream ()؛ // XXX: حقًا؟
}
الخطوة 5: تصميم وطباعة كل جزء في ورقة الخشب الرقائقي
قم بتنزيل جزء الروبوت والتصميم في AutoCAD واطبع على لوح الخشب الرقائقي 12 مم وجزء التشطيب والتصميم. إذا احتاج أي شخص إلى ملف cad ، فالرجاء ترك التعليق في مربع قسم التعليقات سأرسله مباشرة.
الخطوة 6: التجميع
اجمع كل الأجزاء وقم بترتيب التسلسل على الصورة المعطاة واتبع مخطط الصورة.
الخطوة 7: إعداد إعدادات GBRL
الإعداد الذي أثبت فعاليته على روبوتاتنا.
$ 0 = 10 (نبضة الخطوة ، usec) 1 دولار = 255 (تأخير الخطوة الخمول ، مللي ثانية) 2 دولار = 7 (قناع عكس المنفذ التدريجي: 00000111) 3 دولارات = 7 (قناع عكس منفذ dir: 00000111) 4 دولارات = 0 (انعكاس تمكين الخطوة ، منطقي) 5 دولارات = 0 (عكس دبابيس الحد ، منطقي) 6 دولارات = 1 (عكس دبوس المسبار ، منطقي) 10 دولارات = 3 (قناع تقرير الحالة: 00000011) 11 دولارًا = 0.020 (انحراف الوصلة ، مم) 12 دولارًا = 0.002 (تفاوت القوس ، مم) 13 دولارًا = 0 (بوصات التقرير ، منطقي) 20 دولارًا = 0 (حدود ناعمة ، منطقي) 21 دولارًا = 0 (حدود صلبة ، منطقي) 22 دولارًا = 1 (دورة صاروخ موجه ، منطقي) 23 دولارًا = 0 (قناع انعكاس دير موجه: 00000000) 24 دولارًا = 100.000 (تغذية صاروخ موجه ، مم / دقيقة) 25 دولارًا = 500.000 (هدف موجه ، مم / دقيقة) 26 دولارًا = 250 (ارتداد صاروخ موجه ، ميللي ثانية) 27 دولارًا = 1.000 (صاروخ موجه ، مم) 100 دولار = 250.000 (س ، خطوة / مم) 101 دولار = 250.000 (ص ، خطوة / مم) 102 دولار = 250.000 (z ، خطوة / مم) 110 دولار = 500.000 (x أقصى معدل ، مم / دقيقة) 111 دولار = 500.000 (y max rate ، mm / min) 112 $ = 500.000 (z max rate ، mm / min) مم / دقيقة) 120 دولارًا = 10.000 (تسريع × ، مم / ثانية ^ 2) 121 دولارًا = 10.000 (تسريع ص ، مم / ثانية ^ 2) 122 دولارًا = 10.000 (تسريع z ، مم / ثانية ^ 2) 130 دولارًا = 200.000 (x أقصى مسافة سفر ، مم) 131 دولارًا أمريكيًا = 200.000 دولار أمريكي (السفر الأقصى ، مم) 132 دولارًا أمريكيًا = 200.000 دولار أمريكي (الحد الأقصى للسفر ، مم)
الخطوة 8: قم بتحميل الكود النهائي وتحقق من النتيجة الافتراضية في لوحة تحكم برنامج Arduino Uno
// الوحدات: سم
تعويم b_height = 0 ؛
تعويم a1 = 92 ؛
تعويم a2 = 86 ؛
تعويم snude_len = 20 ؛
منطقية doZ = خطأ ؛
تعويم base_angle ؛ // = 0 ؛
تعويم arm1_angle ؛ // = 0 ؛
تعويم arm2_angle ؛ // = 0 ؛
تعويم bx = 60 ؛ // = 25 ؛
تعويم بنسبة = 60 ؛ // = 0 ؛
تعويم bz = 60 ؛ // = 25 ؛
تعويم س = 60 ؛
تعويم ص = 60 ؛
تعويم ض = 60 ؛
تعويم q ؛
تعويم ج ؛
تعويم V1 ؛
تعويم V2 ؛
تعويم V3 ؛
تعويم V4 ؛
تعويم V5 ؛
الإعداد باطل() {
الحجم (700 ، 700 ، P3D) ؛
كام = جديد PeasyCam (هذا ، 300) ؛
cam.set الحد الأدنى للمسافة (50) ؛
cam.setMaximumDistance (500) ؛
}
رسم باطل () {
// قشور:
ص = (mouseX - العرض / 2) * (- 1) ؛
x = (mouseY - الارتفاع / 2) * (- 1) ؛
ب = ض ؛
بواسطة = y ؛
ب س = س ؛
تعويم y3 = sqrt (bx * bx + by * by) ؛
ج = الجذر التربيعي (y3 * y3 + bz * bz) ؛
V1 = acos ((a2 * a2 + a1 * a1-c * c) / (2 * a2 * a1)) ؛
V2 = acos ((c * c + a1 * a1-a2 * a2) / (2 * c * a1)) ؛
V3 = أكوس ((y3 * y3 + c * c-bz * bz) / (2 * y3 * c)) ؛
ف = V2 + V3 ؛
arm1_angle = q ؛
V4 = راديان (90.0) - ف ؛
V5 = راديان (180) - V4 - راديان (90) ؛
arm2_angle = راديان (180.0) - (V5 + V1) ؛
base_angle = الدرجات (atan2 (bx ، by)) ؛
arm1_angle = درجات (arm1_angle) ؛
arm2_angle = درجات (arm2_angle) ؛
// println (بواسطة ، bz) ؛
// arm1_angle = 90 ؛
// arm2_angle = 45 ؛
/*
arm2_angle = 23 ؛
arm1_angle = 23 ؛
arm2_angle = 23 ؛
*/
// تفاعلي:
// إذا (دوز)
//
// {
// base_angle = base_angle + mouseX-pmouseX ؛
// } آخر
// {
// arm1_angle = arm1_angle + pmouseX-mouseX ؛
// }
//
// arm2_angle = arm2_angle + mouseY-pmouseY ؛
draw_robot (base_angle ، - (arm1_angle-90) ، arm2_angle + 90 - (- (arm1_angle-90))) ؛
// println (base_angle + "،" + arm1_angle + "،" + arm2_angle) ؛
}
روبوت رسم باطل (عائم قاعدة _ مثلث ، ذراع عائم 1_ مثلث ، ذراع عائم 2 _ مثلث)
{
rotateX (1.2) ؛
rotateZ (-1.2) ؛
الخلفية (0) ؛
أضواء()؛
pushMatrix () ؛
// يتمركز
ملء (150 ، 150 ، 150) ؛
box_corner (50، 50، b_height، 0) ؛
استدارة (راديان (قاعدة _ مثلث) ، 0 ، 0 ، 1) ؛
// ذراع 1
ملء (150 ، 0 ، 150) ؛
box_corner (10، 10، a1، arm1_angle) ؛
// ذراع 2
ملء (255 ، 0 ، 0) ؛
box_corner (10، 10، a2، arm2_angle) ؛
// SNUDE
ملء (255 ، 150 ، 0) ؛
box_corner (10، 10، snude_len، -arm1_angle-arm2_angle + 90) ؛
popMatrix () ،
pushMatrix () ؛
تعويم action_box_size = 100 ؛
ترجمة (0، -action_box_size / 2، action_box_size / 2 + b_height) ؛
pushMatrix () ؛
ترجمة (x، action_box_size- y-action_box_size / 2، z-action_box_size / 2) ؛
ملء (255 ، 255 ، 0) ؛
صندوق (20) ؛
popMatrix () ،
ملء (255 ، 255 ، 255 ، 50) ؛
box (action_box_size ، action_box_size ، action_box_size) ؛
popMatrix () ،
}
مربع فارغ (تعويم w ، عائم h ، تعويم d ، تدوير تعويم)
{
استدارة (راديان (تدوير) ، 1 ، 0 ، 0) ؛
ترجمة (0 ، 0 ، د / 2) ؛
صندوق (ث ، ح ، د) ؛
ترجمة (0 ، 0 ، د / 2) ؛
}
مفتاح باطل
{
إذا (مفتاح == 'z')
{
doZ =! doZ؛
}
إذا (مفتاح == 'ح')
{
// اضبط الكل على الصفر
arm2_angle = 0 ؛
arm1_angle = 90 ؛
base_angle = 0 ؛
}
إذا (مفتاح == 'ز')
{
println (درجات (V1)) ؛
println (درجات (V5)) ؛
}
إذا (keyCode == UP)
{
z ++ ؛
}
إذا (keyCode == DOWN)
{
ض - ؛
}
إذا (مفتاح == 'س')
{
ص = 50 ؛
ض = 50 ؛
println (q) ؛
println (ج ، "ج") ؛
println (V1، "V1") ؛
println (V2) ؛
println (V3) ؛
println (arm1_angle) ؛
println (V4) ؛
println (V5) ؛
println (arm2_angle) ؛
}
}
موصى به:
اختيار ووضع روبوت قائم على RFID: 4 خطوات
روبوت الانتقاء والمكان المستند إلى RFID: منذ سنوات عديدة يحاول الناس استبدال العمل البشري بالآلات. الآلات التي تسمى الروبوتات أسرع وأكثر فاعلية من البشر. يتم تعريف مصطلح الروبوتات عمليًا على أنه دراسة وتصميم واستخدام أنظمة الروبوت للتصنيع. الروبوتات g
روبوت موازنة / روبوت ذو 3 عجلات / روبوت STEM: 8 خطوات
موازنة الروبوت / روبوت ذو 3 عجلات / روبوت STEM: لقد بنينا موازنة مجمعة وروبوت ثلاثي العجلات للاستخدام التعليمي في المدارس والبرامج التعليمية بعد المدرسة. يعتمد الروبوت على Arduino Uno ، وهو درع مخصص (يتم توفير جميع تفاصيل البناء) ، وحزمة بطارية Li Ion (جميعها
روبوت أردوينو يتم التحكم فيه صوتيًا + كاميرا واي فاي + قابض + تطبيق واستخدام يدوي ووضع تجنب العوائق (KureBas الإصدار 2.0): 4 خطوات
التحكم الصوتي Arduino Robot + Wifi Camera + Gripper + APP & Manual Usage & Hand Avoiding Mode (KureBas Ver 2.0): KUREBAS V2.0 عاد إنه مثير للإعجاب للغاية مع ميزات جديدة. لديه قابض وكاميرا Wifi وتطبيق جديد أنتج من أجله
أرخص اردوينو -- أصغر اردوينو -- اردوينو برو ميني -- البرمجة -- اردوينو نينو: 6 خطوات (مع صور)
أرخص اردوينو || أصغر اردوينو || اردوينو برو ميني || البرمجة || اردوينو نينو: …………………………. الرجاء الاشتراك في قناتي على يوتيوب لمزيد من مقاطع الفيديو ……. يدور هذا المشروع حول كيفية التعامل مع أصغر وأرخص اردوينو على الإطلاق. أصغر وأرخص اردوينو هو اردوينو برو ميني. إنه مشابه لاردوينو
اصنع قاعدة / قاعدة سريعة لجهاز iPhone: 5 خطوات
قم بعمل Quick IPhone Dock / Stand: حسنًا ، كنت أبحث عن شيء لاستخدامه كحامل iPhone ، وأيضًا استخدام لنهاية الورق المقوى لفافة شريط لاصق (بدا الأمر مفيدًا للغاية) ، عندما ظهرت فكرة رأسي