ما ربات های خودکششی را با استفاده از آردوینو مونتاژ می کنیم. ربات های آماده آردوینو برای ساخت یک سپر به شما نیاز دارید

بیایید در مورد چگونگی استفاده از آردوینو برای ایجاد رباتی که مانند Segway تعادل ایجاد می کند صحبت کنیم.

سگوی از انگلیسی. Segway یک وسیله نقلیه ایستاده دو چرخ است که مجهز به درایو الکتریکی است. به آن هاوربرد یا اسکوتر برقی نیز می گویند.

آیا تا به حال به این فکر کرده اید که سگوی چگونه کار می کند؟ در این آموزش سعی می کنیم به شما نشان دهیم که چگونه یک ربات آردوینو بسازید که درست مانند سگوی تعادل خود را حفظ کند.

برای تعادل ربات، موتورها باید در برابر سقوط ربات مقاومت کنند. این اقدام نیازمند بازخورد و عناصر اصلاحی است. عنصر بازخورد - که هم شتاب و هم چرخش را در هر سه محور (). آردوینو از این برای دانستن جهت گیری فعلی ربات استفاده می کند. عنصر اصلاحی ترکیب موتور و چرخ است.

نتیجه نهایی باید چیزی شبیه به این باشد:

نمودار ربات

ماژول درایور موتور L298N:

موتور دنده DC با چرخ:

یک ربات خود متعادل کننده اساسا یک آونگ معکوس است. اگر مرکز جرم نسبت به محور چرخ بیشتر باشد، ممکن است تعادل بهتری داشته باشد. مرکز جرم بالاتر به معنای گشتاور اینرسی بالاتر جرم است که مربوط به شتاب زاویه ای کمتر (سقوط آهسته تر) است. به همین دلیل بسته باتری را در بالا قرار دادیم. با این حال، ارتفاع ربات بر اساس در دسترس بودن مواد انتخاب شد :)

نسخه تکمیل شده ربات خود متعادل کننده در شکل بالا قابل مشاهده است. در بالا شش باتری Ni-Cd برای تامین انرژی وجود دارد تخته مدار چاپی. در بین موتورها از یک باتری 9 ولتی برای درایور موتور استفاده شده است.

تئوری

در تئوری کنترل، نگه داشتن برخی متغیرها (در این مورد موقعیت ربات) به کنترل کننده خاصی به نام PID (مشتق انتگرال متناسب) نیاز دارد. هر یک از این پارامترها دارای یک "بهره" هستند که معمولا Kp، Ki و Kd نامیده می شوند. PID تصحیح بین مقدار (یا ورودی) مورد نظر و مقدار (یا خروجی) واقعی را فراهم می کند. به تفاوت ورودی و خروجی «خطا» می گویند.

کنترل کننده PID با تنظیم مداوم خروجی خطا را به کمترین مقدار ممکن کاهش می دهد. در ربات خود متعادل کننده آردوینو، ورودی (که شیب مورد نظر بر حسب درجه است) توسط نرم افزار تنظیم می شود. MPU6050 شیب فعلی ربات را می خواند و آن را به الگوریتم PID تغذیه می کند که محاسبات را برای کنترل موتور و ایستادن ربات انجام می دهد.

PID به مقادیر Kp، Ki و Kd نیاز دارد که به مقادیر بهینه تنظیم شوند. مهندسان استفاده می کنند نرم افزارمانند MATLAB برای محاسبه خودکار این مقادیر. متأسفانه، ما نمی توانیم از MATLAB در مورد خود استفاده کنیم زیرا پروژه را پیچیده تر می کند. در عوض، ما مقادیر PID را تنظیم می کنیم. در اینجا نحوه انجام آن آمده است:

  1. Kp، Ki و Kd را برابر با صفر کنید.
  2. Kp را تنظیم کنید. Kp خیلی کوچک باعث سقوط ربات می شود زیرا اصلاح کافی نیست. Kp بیش از حد باعث می شود ربات به شدت به جلو و عقب برود. یک Kp خوب باعث می شود ربات کمی به جلو و عقب حرکت کند (یا کمی نوسان کند).
  3. پس از تنظیم Kp، Kd را تنظیم کنید. یک مقدار خوب Kd نوسانات را کاهش می دهد تا زمانی که ربات تقریباً پایدار شود. علاوه بر این، Kd صحیح ربات را حتی اگر فشار داده شود نگه می دارد.
  4. در نهایت Ki را نصب کنید. هنگامی که روشن شود، ربات حتی اگر Kp و Kd تنظیم شده باشند، نوسان می کند، اما با گذشت زمان تثبیت می شود. مقدار Ki صحیح زمان لازم برای تثبیت ربات را کاهش می دهد.

رفتار این ربات را می توانید در ویدیوی زیر مشاهده کنید:

کد آردوینو برای ربات خود متعادل کننده

ما برای ایجاد ربات خود به چهار کتابخانه خارجی نیاز داشتیم. کتابخانه PID محاسبه مقادیر P، I و D را ساده می کند. کتابخانه LMotorController برای کنترل دو موتور با ماژول L298N استفاده می شود. کتابخانه I2Cdev و کتابخانه MPU6050_6_Axis_MotionApps20 برای خواندن داده ها از MPU6050 طراحی شده اند. شما می توانید کدها از جمله کتابخانه ها را در این مخزن دانلود کنید.

#عبارتند از #عبارتند از #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #define MIN_ABS_SPEED 20 mpu6050 // کنترل MPU/وضعیت vars bool dmpReady = false; // اگر شروع DMP موفقیت آمیز بود مقدار true را تنظیم کنید uint8_t mpuIntStatus; // بایت وضعیت وقفه واقعی را از MPU uint8_t devStatus نگه می دارد. // برگرداندن وضعیت پس از هر عملیات دستگاه (0 = موفقیت، !0 = خطا) uint16_t packetSize; // اندازه بسته DMP مورد انتظار (پیش فرض 42 بایت است) uint16_t fifoCount; // تعداد بایت های موجود در FIFO uint8_t fifoBuffer. // بافر ذخیره سازی FIFO // orientation/motion vars Quaternion q; // ظرف کواترنیون VectorFloat gravity; // بردار جاذبه شناور ypr; //yaw/pitch/roll container and gravity vector //PID double originalSetpoint = 173; نقطه تنظیم دو برابر = originalSetpoint; حرکت دوگانهAngleOffset = 0.1; ورودی، خروجی دوگانه؛ //این مقادیر را برای تناسب با طرح خود تنظیم کنید دو Kp = 50. دو Kd = 1.4; کی دو برابر = 60; PID pid (&ورودی، &خروجی، &نقطه تنظیم، Kp، Ki، Kd، DIRECT)؛ موتور دوگانهSpeedFactorLeft = 0.6; موتور دوگانهSpeedFactorRight = 0.5; //کنترل موتور int ENA = 5; int IN1 = 6; int IN2 = 7; int IN3 = 8; int IN4 = 9; int ENB = 10; LMotorController motorController(ENA، IN1، IN2، ENB، IN3، IN4، motorSpeedFactorLeft، motorSpeedFactorRight); volatile bool mpuInterrupt = false; // نشان می دهد که آیا پین وقفه MPU باطل شده است یا خیر dmpDataReady() ( mpuInterrupt = true; ) void setup() ( // به گذرگاه I2C بپیوندید (کتابخانه I2Cdev این کار را به صورت خودکار انجام نمی دهد) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE (سیم). TWBR = 24؛ // ساعت I2C 400 کیلوهرتز (اگر CPU 8 مگاهرتز باشد 200 کیلوهرتز) #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif mpu.initialize =(mpu.initialize); // افست های ژیروسکوپی خود را در اینجا عرضه کنید، برای حساسیت حداقل mpu.setXGyroOffset(220)؛ mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788)؛ // پیش فرض کارخانه 1688 برای آزمایش من تراشه // مطمئن شوید که کار می کند (اگر چنین است 0 را برمی گرداند) اگر (devStatus == 0) ( // DMP را روشن کنید، اکنون که آماده است mpu.setDMPEnabled(true)؛ // فعال کردن Arduino interrupt detectionInterrupt(0 , dmpDataReady، RISING؛ mpuIntStatus = mpu.getIntStatus(); // پرچم DMP Ready خود را تنظیم کنید تا تابع حلقه () اصلی بداند که استفاده از آن اشکالی ندارد dmpReady = درست؛ // اندازه بسته DMP مورد انتظار را برای مقایسه بعدی packetSize دریافت کنید = mpu.dmpGetFIFOPacketSize(); //تنظیم PID pid.SetMode(AUTOMATIC); pid.SetSampleTime(10); pid SetOutputLimits(-255, 255); ) else ( // ERROR! // 1 = بارگیری اولیه حافظه انجام نشد // 2 = به روز رسانی پیکربندی DMP ناموفق بود // (اگر قرار است خراب شود، معمولاً کد 1 خواهد بود) Serial.print(F("DMP Initialization ناموفق (کد "))؛ Serial.print(devStatus); Serial.println(F()")); ) ) void loop() (// اگر برنامه نویسی ناموفق بود، سعی نکنید کاری انجام دهید اگر (!dmpReady ) بازگشت؛ // منتظر وقفه MPU یا بسته(های) اضافی در دسترس باشید در حالی که (!mpuInterrupt && fifoCount< packetSize) { //no mpu data - performing PID calculations and output to motors pid.Compute(); motorController.move(output, MIN_ABS_SPEED); } // reset interrupt flag and get INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus(); // get current FIFO count fifoCount = mpu.getFIFOCount(); // check for overflow (this should never happen unless our code is too inefficient) if ((mpuIntStatus & 0x10) || fifoCount == 1024) { // reset so we can continue cleanly mpu.resetFIFO(); Serial.println(F("FIFO overflow!")); // otherwise, check for DMP data ready interrupt (this should happen frequently) } else if (mpuIntStatus & 0x02) { // wait for correct available data length, should be a VERY short wait while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); // read a packet from FIFO mpu.getFIFOBytes(fifoBuffer, packetSize); // track FIFO count here in case there is >1 بسته در دسترس است // (این به ما امکان می دهد فوراً بدون انتظار وقفه بیشتر بخوانید) fifoCount -= packetSize; mpu.dmpGetQuaternion(&q، fifoBuffer); mpu.dmpGetGravity(&گرانش، &q); mpu.dmpGetYawPitchRoll(ypr، &q، &گرانش); ورودی = ypr * 180/M_PI + 180; ))

مقادیر Kp، Ki، Kd ممکن است کار کنند یا نباشند. اگر این کار را نکردند، مراحل بالا را دنبال کنید. توجه داشته باشید که شیب در کد روی 173 درجه تنظیم شده است. در صورت تمایل می توانید این مقدار را تغییر دهید، اما توجه داشته باشید که این زاویه شیب است که ربات باید حفظ کند. همچنین، اگر موتورهای شما خیلی سریع هستند، می توانید مقادیر motorSpeedFactorLeft و motorSpeedFactorRight را تنظیم کنید.

فعلاً همین است. به امید دیدار.

در این مقاله ما ربات خود را از ابتدا می سازیم. آنچه به دست می آوریم، به عکس زیر نگاه کنید. این ربات هم به صورت مستقل و هم تحت کنترل یک گوشی هوشمند رانندگی می کند. ما همچنین ساخت ربات موبایل خود را از ابتدا بررسی خواهیم کرد.

3 Dچاپگر

اگر بخواهم ربات بسازم، باید در مورد انتخاب پلت فرمی که روی آن موتور، برد و باتری نصب کنم، تصمیم بگیرم. البته، من می توانم یک نسخه آماده خریداری کنم، اما جالب تر است که پلتفرم را خودتان بسازید. چنین پلتفرمی قطعاً نیازهای شما را برآورده می کند. پلت فرم را می توان از org ساخته شده است. شیشه، تخته سه لا، و من آن را از پلاستیک خواهم ساخت.

می توان گفت که ساختن سکوی خود ناخوشایند است و به ابزارهای زیادی نیاز خواهید داشت، از پانچ مرکزی گرفته تا ماشین سنگ زنی. و من می گویم که ما به تخیل و یک چاپگر سه بعدی نیاز خواهیم داشت.

پرینتر سه بعدی؟ احتمالاً همه با یک چاپگر اداری معمولی آشنا هستند که می تواند متن مورد نیاز ما را در A4 چاپ کند. بنابراین چاپگر سه بعدی پرینتری است که می تواند قطعه مورد نظر را چاپ کند. پرینترهای سه بعدی مختلفی وجود دارد. من یک چاپگر با فناوری FDM (رسوب لایه به لایه) دارم. می توانید دریابید که چه فناوری های چاپ سه بعدی دیگری در اینترنت موجود است.

بسیاری از پرینترهای سه بعدی روی آردوینو اجرا می شوند. در صورت تمایل، می توانید چاپگر سه بعدی خود را مونتاژ کنید. ایده اصلی چاپگر سه بعدی این است که شما می توانید کاملاً هر چیزی را چاپ کنید، اما ما بدنه ای برای یک ربات چاپ خواهیم کرد.

ابتدا بیایید توضیحات پلتفرم را تعریف کنیم. من می‌خواهم پلتفرم دو چرخ باشد و به آردوینو، پاور، موتورها و چند سنسور در آن تعبیه شود.

اکنون باید طرحی از پلتفرم را روی کاغذ بکشید و اجزای لازم را روی آن قرار دهید. مثلا اینجوری

وقتی چیدمان آماده شد، باید یک مدل سه بعدی از پلت فرم بسازید. برنامه های زیادی برای این کار وجود دارد. من معمولا استفاده می کنم. من نحوه کار با قطب نما را آموزش نمی دهم، اما اگر علاقه مند هستید، می توانید در اینترنت نگاه کنید یا در نظرات بخواهید که یک درس در مورد قطب نما انجام دهید.

این پلتفرمی است که من با آن به پایان رسیدم.

پس از این، باید مدل سه بعدی را به G-code تبدیل کنید که چاپگر سه بعدی بتواند آن را درک کند. برنامه های ویژه ای برای این وجود دارد - برش دهنده ها. من از برنامه Repetier-Host با اسلایسر Sli3er استفاده می کنم. در اینجا قسمت آماده چاپ به نظر می رسد.

و اینم مدل چاپ شده

اخیراً ما یک ایده داشتیم و قسمت تمام شده در حال حاضر در مقابل ما است. با استفاده از یک چاپگر سه بعدی می توانید چیزهای منحصر به فردی را در یک نسخه ایجاد کنید. چاپگر سه بعدی چیز جالبی است. من به همه توصیه می کنم!

موتورها

اکنون باید به این فکر کنیم که ربات موبایل ما چگونه حرکت می کند. اولین چیزی که به ذهن می رسد چرخ ها هستند. این کاری است که ما انجام خواهیم داد.

اگر کسی به یاد داشته باشد، ما قبلاً سعی کردیم موتور را به آردوینو وصل کنیم. برای کسانی که به یاد نمی آورند، نمی دانند یا نخوانده اند، نگاهی بیندازند. برای اتصال موتور با استفاده از ماسفت اشکالات قابل توجهی وجود دارد - تغییر سریع سرعت و جهت چرخش غیرممکن است. زمان آن فرا رسیده است که به آردوینو نحوه کنترل واقعی موتورها را آموزش دهیم!

برای این کار می توانید از تراشه L293D استفاده کنید. L293D به شما امکان می دهد دو موتور را همزمان با جریان 600 میلی آمپر در هر کانال و حداکثر جریان تا 1000 میلی آمپر و اگر کانال ها را ترکیب کنید، حداکثر جریان 1200 میلی آمپر و 2000 میلی آمپر را کنترل کنید. من در مورد ادغام در زیر به شما خواهم گفت.

برای شروع، مثل همیشه، باید به Datasheet نگاه کنید تا بفهمید کجا و چه چیزی را باید وصل کنید. اگر در مورد ریز مدارها اطلاعاتی ندارید، ارزش خواندن مقاله را دارد.

بیا شروع کنیم. بیایید یک مدار ساده با یک موتور کنار هم بگذاریم و آن را هدایت کنیم. به نمودار مونتاژ توجه کنید.

اگر انگلیسی بلد نیستید یا فقط دیتاشیت را نمی‌فهمید، در اینجا توضیحی درباره اتصال آمده است. امیدوارم همه شماره گذاری ریز مدارها را بدانند یا از مقاله در مورد ریز مدارها آموخته باشند.

  • پایه 1 - مسئول سرعت چرخش موتور است. مشابه آن در پین 9 است. مقادیری از 0 تا 255 می گیرد که به راحتی می توان با استفاده از PWM سازماندهی کرد. من EN را به پایه پنجم آردوینو وصل کردم که از PWM پشتیبانی می کند.
  • پایه های 2 و 7 - وظیفه جهت حرکت موتور را بر عهده دارد. موارد مشابه روی پایه های 10 و 15 هستند. اعمال یک منطقی روی یکی از این پایه ها باعث می شود که موتور در یک جهت بچرخد (بسته به اتصال موتور) و اعمال یک منطقی روی دیگری باعث چرخش موتور می شود. در جهت مخالف.
  • پایه های 3 و 6 - باید موتور را به آنها وصل کنید. قطبیت مهم نیست، فقط جهت چرخش به اتصال بستگی دارد. موارد مشابه در پین های 11 و 14 هستند.
  • پین های 4 و 5 - این زمین است. فکر نمیکنم نیاز به توضیح داشته باشه موارد مشابه 12 و 13 هستند.
  • پایه 8 - منبع تغذیه برای موتورها. نیاز به برق در محدوده 4.5 تا 36 ولت دارد
  • پایه 16 - یک واحد منطقی از آردوینو به آن عرضه می شود. 5 ولت، اگر آن.

عالی! موتور متصل است. حالا می توانید کد بزنید.

#define FRW_BUT 7 //دکمه Forward #define BCW_BUT 6 //دکمه Back #define SPD 5 //Rotation speed control... #define FRW 4 //... جهت چرخش (به جلو)... # define BCW 3 / /...جهت چرخش (به عقب) #define SPD_POT A5 int xspeed = 0; //متغیر برای تعیین سرعت چرخش موتور int frw_move = 0; //متغیر برای دستور "forward" int bcw_move = 0; //متغیر برای فرمان "back" void setup() (//پین ها را مشخص کنید pinMode(SPD, OUTPUT)؛ pinMode(FRW, OUTPUT)؛ pinMode(BCW, OUTPUT)؛ pinMode(SPD_POT, INPUT)؛ pinMode(FRW_BUT) , INPUT_PULLUP )؛ pinMode(BCW_BUT, INPUT_PULLUP)؛ ) void loop() ( //خوانده ها را از پتانسیومتر // بخوانید و به محدوده دلخواه برسانید - از 0 تا 255 //بعد از آن، آنها را به سرعت انتقال می دهیم پین تنظیم xspeed = analogRead (SPD_POT)؛ constrain (xspeed, 0, 1023)؛ xspeed = map (xspeed, 0, 1023, 0, 255)؛ //تعیین زمانی که دکمه فوروارد فشرده شود if(!digitalRead(FRW_BUT)) ( frw_move = 1; ) else ( frw_move = 0; ) //تشخیص با فشار دادن دکمه برگشت if(!digitalRead(BCW_BUT)) ( bcw_move = 1; ) other ( bcw_move = 0; ) //با تابع برای ارسال داده به L293D motor(); ) void motor() (//ارسال داده ها به L293D analogWrite(SPD, xspeed); digitalWrite(FRW, frw_move); digitalWrite(BCW,bcw_move)؛ )

چگونه کار می کند؟ به سادگی کار می کند. وقتی دکمه سمت چپ را فشار می دهید، چرخ در یک جهت می چرخد ​​و با فشار دادن دکمه سمت راست، در جهت دیگر می چرخد. با چرخاندن دستگیره پتانسیومتر می توانید سرعت چرخش موتور را تنظیم کنید. تنظیمات تست موتور ما به صورت عملی در ویدیو نشان داده شده است.

ZY بله، می دانم که کیفیت فیلمبرداری عالی نیست، اما سعی می کنم یک دوربین معمولی پیدا کنم و در اسرع وقت مکانی برای فیلمبرداری ترتیب دهم.

اکنون در مورد اتصال کانال های L293. اگر می خواهید موتور قدرتمندتری را وصل کنید، می توانید کانال ها را ترکیب کنید.

راه اول این است که پایه های مشابه ریز مدار را به صورت موازی وصل کنید که حداکثر جریان را دو برابر می کند. نقطه ضعف این است که فقط یک موتور می تواند به یک تراشه متصل شود.

راه دوم این است که یک L293 دیگر را روی L293 لحیم کنید. پایه 1 را به پایه 1، پین 2 را به پایه 2 و غیره می گیریم و لحیم می کنیم. این روش همچنین قدرت جریان را دو برابر می کند، اما بر خلاف روش اول، توانایی کنترل دو موتور را به طور همزمان باقی می گذارد. ممکن است ایده ای داشته باشید - آیا نباید چند L293 دیگر را لحیم کنم؟ متأسفانه، لحیم کاری بعدی ریز مدارها، جریان را تا 600 میلی آمپر دیگر افزایش نمی دهد. افزایش ناچیز خواهد بود.

"اوه، من باید موتور 12 ولتم را بردارم..." عجله نکنید که ناراحت شوید. برای موتورهای قدرتمندتر، برادر بزرگتر L293، L298، مناسب است، اما اکنون آن را در نظر نمی گیریم. ما این کار را کمی بعد انجام خواهیم داد.

موتور سپر

موافق باشید که با چنین بسته سیمی خیلی خوب به نظر نمی رسد. برای خلاص شدن از شر آن، می توانید مدار را با L293 روی یک برد مدار چاپی یا تخته نان برای لحیم کاری لحیم کنید، اما اگر نمی خواهید لحیم کاری کنید یا نمی دانید چگونه باید انجام دهید؟ برای این وجود دارد راه حل های آمادهبه عنوان مثال به شکل شیلد برای آردوینو. من در مورد یکی از آنها به شما خواهم گفت - Motor Shield V1 از DK Electronics.

اینجا، در واقع، یک عکس از سپر است.

این شیلد دارای دو عدد L293D نصب شده است که به شما امکان کنترل همزمان چهار موتور را می دهد. همچنین دو کنتاکت برای سروموتورها وجود دارد. برق یا به بلوک ترمینال یا با یک جامپر نصب شده از منبع تغذیه آردوینو تامین می شود. جامپر همچنین به شما اجازه می دهد تا قدرت آردوینو را از سپر بگیرید. یک کتابخانه ویژه برای کار با این سپر وجود دارد. می توانید آن را دانلود کنید.

به معایب هیئت مدیره. تقریبا از تمام پین های دیجیتال برای کار با شیلد استفاده می شود، به جز 0، 1، 2، 13. همانطور که می دانیم، پایه های 0 و 1 توسط آردوینو برای فریمور استفاده می شود، بنابراین بهتر است از آنها استفاده نکنید.

این یک جنبه خوب دارد. مثلاً اگر سرووها را وصل نکنید، پایه های 9 و 10 آزاد می شوند و اگر از هیچ یک از موتورها استفاده نکنید، بسته به موتور استفاده نشده، پایه های 3، 5، 6، 11 آزاد می شوند. و بیشتر. ما هنوز به شش خروجی آنالوگ دسترسی داریم که در صورت تمایل می توان از آنها به عنوان خروجی دیجیتال استفاده کرد.

بیایید شروع به اتصال موتورها کنیم. برای انجام آزمایش، رباتی می سازیم که به جلو، عقب و همچنین حول محور خود می چرخد. به عنوان یک پلتفرم، توسعه خودم را انتخاب کردم که در بالا توضیح داده شد. شما می توانید هر چیزی را که می خواهید بردارید، نکته اصلی این است که با ویژگی ها مطابقت داشته باشد.

ما نیاز خواهیم داشت

  • Arduino UNO – شما می توانید از هر فرم فاکتور دیگری از Arduino UNO استفاده کنید. مثلا لئوناردو یا ایسکرا.
  • موتور سپر - نسخه های دیگر این سپر نیز کار خواهند کرد.
  • موتورهای 6 ولت - می توانید هر موتوری را که با ویژگی های محافظ موتور مطابقت دارد استفاده کنید.
  • چرخ های با قطر 42 میلی متر – چرخ های مناسب برای موتور و پلت فرم
  • پایه های موتور - موتورها باید به پلت فرم متصل شوند. آنهایی را بگیرید که با شما مطابقت دارند.
  • برق – یک بسته باتری گرفتم و حدود 5 ولت خروجی گرفتم که برای تغذیه موتورها و آردوینو کافی نیست، بنابراین یک مبدل DC/DC وصل کردم و ولتاژ را به 9 ولت رساندم. اگر مبدل وجود ندارد، می توانید با اتصال آن به منبع تغذیه آردوینو از یک تاج معمولی استفاده کنید.

زمان مونتاژ ربات ما فرا رسیده است.

مرحله 1

اتصال آردوینو و موتور شیلد.

گام 2

موتورها را مونتاژ می کنیم و آنها را روی سکو می پیچیم.

مرحله 3

ما برق را از طریق یک مبدل تقویت کننده جمع آوری می کنیم.

برای کسانی که مبتلا به کرون هستند. جامپر را فراموش نکنید!

مرحله 4

موتورها را با آردوینو به محافظ موتور پیچ می کنیم.

مرحله 5

اضافه کردن غذا.

مرحله 6 (اختیاری)

بیایید درب را وصل کنیم - برای زیبایی شناسی.

ما یک ربات آماده داریم. حالا نوبت به برنامه ریزی آن رسیده است. بیایید به کد نگاه کنیم.

//شامل کتابخانه برای کار با Motor Shield #include //موتور سمت چپ را روی بلوک ترمینال شماره 2 تعیین کنید AF_DCMotor l_motor(2); //تعیین موتور مناسب در بلوک ترمینال شماره 3 AF_DCMotor r_motor(3); //متغیرهای تعیین سرعت //و زمان حرکت int spd = 50; int time (1000); void setup() (//سرعت اولیه را تنظیم کنید و موتورها را خاموش کنید l_motor.setSpeed(spd); l_motor.run(RELEASE); r_motor.setSpeed(100); r_motor. run(RELEASE); ) void loop() ( // بیایید به جلو برویم l_motor.run (FORWARD)؛ r_motor.run (FORWARD); l_motor.setSpeed(spd)؛ r_motor.setSpeed(spd); delay(time)؛ // رفتن به عقب l_motor.run(BACKWARD); r_motor .run(BACKWARD)؛ l_motor.setSpeed(spd)؛ r_motor.setSpeed(spd)؛ تاخیر(زمان)؛ // چرخش در خلاف جهت عقربه های ساعت l_motor.run(FORWARD)؛ r_motor.run(BACKWARD)؛ l_motor.setSpeed(spd); r_motor. setSpeed(spd); delay(time); // چرخش در جهت عقربه های ساعت r_motor.run (FORWARD)؛ l_motor.run (BACKWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd)؛ تاخیر(زمان)؛ )

عالی! زمان بررسی در اینجا یک ویدیو از بازرسی من است. تو چطور؟

"در مورد تابلوهای روباتیک چیزی گفتی؟" – کسانی که درس مقدماتی قسمت 2 دوره را می خوانند می توانند بگویند. بله، چنین تابلوهایی وجود دارد. پلت فرم روباتیک Strela را در نظر بگیرید.

رویای یک روباتیک (تقریبا). مزایای تابلو را توضیح دادم. مستقیما به نقطه.

برادر بزرگتر L293 یعنی L298 روی آن نصب شده است. و پین ها به صورت سه تایی قرار گرفته اند که برای اتصال بسیاری از سنسورها مناسب است.

این برد به جای Arduino UNO و Motor Shield قابل اتصال است. علاوه بر این، بچه های آمپرکا یک کتابخانه برای کار با Strela نوشتند که کنترل موتورها را به یک کار نسبتاً بی اهمیت تبدیل می کند.

برای اونایی که نمیدونستن بهتون میگم برای هر کتابخانه معمولی نمونه هایی از استفاده از آن وجود دارد و کتابخانه Strela نیز از این قاعده مستثنی نیست. برای پیدا کردن آنها، به برگه File -> Examples -> Strela بروید. در آنجا مثال StrelaMotors را انتخاب می کنیم، جایی که با استفاده از Motor Shield طرحی شبیه به طرح اجرا می کنیم. ضمناً برای موتور شیلد نیز نمونه هایی وجود دارد. اگر علاقه مند هستید، نگاهی بیندازید.

چه کارهای دیگری می توان با فلش انجام داد - زیر را ببینید.و ما به ارتباط بی سیم از طریق بلوتوث می رویم.

بلوتوث

روباتی که در اتاق حرکت می کند، البته خوب است، اما من دوست دارم ربات را به تنهایی هدایت کنم. برای انجام این کار، باید ارتباط بین آردوینو و دستگاه کنترل را سازماندهی کنید.

من یک گوشی هوشمند را به عنوان دستگاه کنترل انتخاب کردم. ما ارتباطات را با استفاده از پروتکل بلوتوث سازماندهی خواهیم کرد، بنابراین وقت آن است که با آن آشنا شویم.

این ماژول HC-06 است. من زیاد وارد جزئیات نمی شوم، اما اگر کسی علاقه مند است، بیایید ادامه دهیم. هدف ما هدایت ربات از گوشی هوشمند است. بیایید شروع کنیم، حدس می زنم.

ابتدا باید HC-06 را به آردوینو وصل کنید. ما با استفاده از نرم افزار سریال متصل خواهیم شد. این کتابخانه به ما این امکان را می دهد که از پورت سریال روی پین های مورد نیاز خود شبیه سازی کنیم. به خاطر آزمایش، بیایید سعی کنیم این کار را روی پین های A0(RX) و A1(TX) انجام دهیم. برای چی؟ به یاد داشته باشید که من در مورد سپر موتور صحبت کردم.

ما به این شکل وصل می شویم:

  • Vcc - تا 5 ولت
  • GND - به GND
  • RX - به TX
  • TX - به RX

من HC-06 را به رباتی که در بالا ساختیم وصل می کنم. برای این کار از سه نوار روی محافظ موتور استفاده می کنیم.

ربات آماده است. تنها چیزی که باقی می ماند برنامه ریزی آن است.

قبل از خواندن کد، باید چیزی بدانید. موتورها مثل همه چیز در این دنیا کامل نیستند. حتی دو موتور از یک دسته، به دنبال یکدیگر، کمی متفاوت خواهند بود، که بر تفاوت تعداد دور در یک ولتاژ تأثیر می گذارد. اگر به سادگی موتورها را به موتور شیلد وصل کنید و همان سرعت را روی آنها اعمال کنید و این همان ولتاژ است، آنگاه ربات مستقیماً نمی رود، بلکه کمی یا زیاد به طرف کنار می رود. این را می توان در ویدیوی بالا مشاهده کرد.

به منظور اجتناب از این، ما عوامل تعدیل را اعمال خواهیم کرد. چرخ چپ من خیلی سریعتر از سمت راستم می چرخد، بنابراین برای جبران ضریب را روی 0.62 قرار دادم. مقدار ضریب به صورت تجربی انتخاب می شود.

// شامل کتابخانه‌هایی برای کار با Motor Shield و نرم‌افزار Serial #include #عبارتند از //تعریف پین ها برای شبیه سازی SoftwareSerial mySerial(A0, A1); // RX, TX //تعیین موتور سمت چپ در بلوک ترمینال شماره 2 AF_DCMotor l_motor(2); //تعیین موتور مناسب در بلوک ترمینال شماره 3 AF_DCMotor r_motor(3); //متغیرهای تعیین سرعت //و تنظیم چرخش float spd = 70.0; float corr_l = 0.62; float corr_r = 1; پوسیدگی شناور = 50.0; void setup() (//سرعت اولیه را تنظیم کنید و موتورها را خاموش کنید HC-06 mySerial (9600) متغیر برای کنترل کاراکتر داده های ورودی = mySerial.read(); //ابتدا، سرعت را تنظیم کنید if (((کنترل - "0") >= 0) && ((کنترل - "0")<= 9)) { spd = (control - "0") * 25.0; //сохраняем новое значение скорости } else if (control == "q") { spd = 255.0; } //Сравниваем команды, пришедшие со смартфона else if (control == "S") //Если пришла команда "S", стоим { l_motor.run(RELEASE); r_motor. run(RELEASE); } else if (control == "F") //Если пришла команда "F", едем вперед { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "B") //Если пришла команда "B", едем назад { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "I") //Если пришла команда "I", едем вперёд и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "J")//Если пришла команда "J", едем назад и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "G") //Если пришла команда "G", едем вперёд и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "H") //Если пришла команда "H", едем назад и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "R") //Если пришла команда "R", крутимся вправо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(BACKWARD); } else if (control = "L") //Если пришла команда "L", крутимся влево { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); l_motor.run(FORWARD); r_motor.run(BACKWARD); } }

ربات فلش شد. حال بیایید نگاهی به گوشی هوشمند بیاندازیم.

کنترلر RC

برنامه های مختلفی برای برقراری ارتباط بین آردوینو و گوشی هوشمند از طریق بلوتوث وجود دارد. کلمات کلیدی جستجو عبارتند از: آردوینو، بلوتوث، RC.

من یک برنامه به نام Bluetooth RC Controller را انتخاب کردم. برای هدف ما ایده آل است. وقتی دکمه ای را فشار می دهید، برنامه یک مقدار کاراکتر به HC-06 می فرستد، که به نوبه خود، مقدار دریافتی را به آردوینو منتقل می کند. مقدار ارسال شده با کلیک روی دکمه، خود تنظیم می شود.

برای برقراری ارتباط با ربات، باید روی چرخ دنده کلیک کنید و "Settings" را انتخاب کنید.در "Settings" باید مطمئن شوید که دکمه ها با این کاراکترهای ارسال شده مطابقت دارند یا کد آردوینو را تغییر دهید.

پس از تنظیم کاراکترها، می توانید با HC-06 ارتباط برقرار کنید. روی چرخ دنده کلیک کنید و به "اتصال به ماشین" بروید. پنجره ای با دستگاه های جفت شده باز می شود. در آن ما HC-06 را انتخاب می کنیم. اگر وجود ندارد، با استفاده از «اسکن برای دستگاه‌ها» آن را جستجو کنید. اگر دستگاه پیدا شد، اما نمی‌خواهد جفت شود، به بلوتوث گوشی هوشمند بروید و طبق معمول جفت کنید. رمز عبور استاندارد 1234 است. پس از آن، به "Scan for devices" رفته و متصل شوید.

هنگامی که اتصال برقرار شد، چراغ سبز در بالا روشن می شود و HC-06 چشمک نمی زند. می توانید فرمان را شروع کنید. نوار بالا مسئول سرعت حرکت است.

بیایید به Arrow برگردیم. یکی دیگر از مزایای Strela قابلیت نصب فرمت بلوتوث XBee است و خوبی آن رایگان ماندن پین های دیگر است. و از آنجایی که یک کتابخانه آماده برای Strela وجود دارد که به کاهش کد برای کنترل موتورها کمک می کند، استفاده از Strela برای کنترل ربات از طریق بلوتوث بسیار ارزشمند است.

برای انجام این کار، باید XBee را به Strela متصل کنید، آن را با طرح نمونه هایی به نام "ArduinoBluetoothRCCarOnStrela" فلش کنید و از طریق کنترلر RC به XBee متصل شوید.

مشاوره

ربات من آماده است و حتی با دستور از تلفن هوشمند رانندگی می کند. اما همه چیز نمی تواند به آرامی پیش برود. من در مورد برخی از مشکلات و راه حل های آنها صحبت خواهم کرد و همچنین توصیه هایی به رباتیک های مشتاق خواهم داد.

چرخ‌ها در جهت‌هایی که می‌خواهید نمی‌چرخند.– این مشکل را می توان به راحتی با مرتب کردن مجدد سیم ها در بلوک های ترمینال یا استفاده از نرم افزار برطرف کرد.

ماژول بلوتوث کار نمی کند- باید بررسی کنید که LED قرمز روی ماژول روشن است یا خیر. اگر روشن نیست، بررسی کنید که ماژول بلوتوث به درستی وصل شده باشد. اگر LED روشن است، اما اتصال به خوبی برقرار است، باید مطمئن شوید که RX ماژول به TX برد و بالعکس متصل است و همچنین روش جفت کردن ماژول با آردوینو از طریق یک رابط استاندارد بلوتوث

ربات مستقیم رانندگی نمی کند- وقتی در مورد بلوتوث و موتور شیلد صحبت کردم، این مشکل را کمی بالاتر توضیح دادم.

در حین رانندگی، ربات ناگهان می ایستد و ارتباط خود را با آن قطع می کندHC-06- مشکل از منبع تغذیه است. می دانیم که آردوینو برای عملکرد پایدار به حداقل 7 ولت نیاز دارد و همچنین می دانیم که موتورها بسیار خوب تغذیه می کنند. اگر پروب های مولتی متر را به بلوک های ترمینال تغذیه ولتاژ بیاورید و ولتاژ را با موتورهای خاموش اندازه گیری کنید و سپس آنها را روشن کنید، می بینید که ولتاژ مولتی متر کاهش می یابد. علاوه بر این، ولتاژ می تواند به روش های مختلف کاهش یابد.

اگر منبع تغذیه ای وصل شود که نتواند جریان کافی برای موتورها تامین کند، ممکن است ولتاژ به طور قابل توجهی کاهش یابد، مثلاً از 9 به 5 ولت، و دیگر 5 ولت برای آردوینو کافی نخواهد بود و دوباره راه اندازی می شود. راه حل این است که برق قدرتمندتر را وصل کنید. نحوه محاسبه را در زیر به شما خواهم گفت.

اگر منبع تغذیه قدرتمندتری را وصل کنید، افت ولتاژ ممکن است تنها برای چند میلی ثانیه رخ دهد، اما این ممکن است برای راه اندازی مجدد کنترل کننده کافی باشد. راه حل این است که یک خازن حداقل 1000 μF به موازات سیم های برق نصب کنید؛ ظرفیت خازن را می توان به صورت تجربی تعیین کرد. من یک خازن 3300 uF در 16 ولت نصب کردم. فراموش نکنید که به حداکثر ولتاژ خازن نگاه کنید.

هنگامی که منبع تغذیه به اندازه کافی قدرتمند باشد، افت ولتاژ بیش از 0.2 ولت نیست.

چند نکته برای رباتیک‌های مشتاق

هنگام برنامه ریزی یک ربات، توصیه می شود ابتدا به محاسبه توان واحد برق و انتخاب منبع تغذیه مناسب توجه کنید. شرم آور خواهد بود اگر 4 باتری قلمی 4 موتور 6 ولتی شما را تغذیه نکند و دیگر جایی برای منابع برق بیشتر باقی نماند.

برای محاسبه توان به دنبال مشخصات موتورها، بردها و سنسورها هستیم. از درس فیزیک می دانیم که توان را می توان با استفاده از فرمول P = IU محاسبه کرد که در آن I قدرت جریان است و U ولتاژ است. با استفاده از این فرمول و مشخصات، به راحتی می توان توان مصرفی دستگاه تمام شده را محاسبه کرد و با دانستن میزان مصرف برق و ولتاژ منبع تغذیه، می توانید با دانستن قدرت جریان، به قدرت جریان بهینه مورد نیاز برای عملکرد دستگاه پی ببرید. می توانید ظرفیت باتری مورد نیاز و زمان کارکرد دستگاه را از روی باتری انتخابی تعیین کنید.

همانطور که گفتم، شما همیشه باید یک هدف مشخص تعیین کنید که پس از دستیابی به آن، پروژه را می توان تکمیل شده در نظر گرفت. تفاوت های ظریفی در این ایده وجود دارد. اگر پروژه به اندازه کافی بزرگ باشد، رسیدن به هدف چندان آسان نیست، به خصوص هنگام نوشتن کد. یک بار کدهای زیادی نوشتم و فکر کردم: "الان همه چیز را می نویسم و ​​بررسی می کنم!" "، وقتی سعی کردم کد را کامپایل کنم، بلافاصله کامپایل نشد، زیرا چندین خطا وجود داشت. من خطاها را حذف کردم، اما کد آنطور که می خواستم کار نکرد. مجبور شدم همه چیز را تقریباً از ابتدا بازنویسی کنم، کد را کم کم اضافه کنم و کد حاصل را برای عملکرد آزمایش کنم. من به شما توصیه می کنم که همین کار را انجام دهید.

اگر هدف این است که یک "رمز عبور" از سه کاراکتر ایجاد کنید، پس نباید هر سه کاراکتر را همزمان برنامه ریزی کنید. بهتر است یک رمز عبور از یک کاراکتر بسازید، آن را بررسی کنید، سپس از دو، و پس از بررسی - از سه. به من کمک می کند.

این ربات با آزمون و خطا ساخته شده است. نمی توان آن را یک بار برنامه ریزی کرد تا یک عمل به طور کامل انجام شود. همین ضرایب تنظیم روی چرخ ها هستند، بنابراین اگر چیزی درست نشد، نباید تسلیم شوید، و اگر اصلاً درست نشد، می توانید با افراد مهربان در انجمن ها تماس بگیرید یا برای من بنویسید، ما. قطعا کمک خواهد کرد!

نتیجه

رباتیک چیز جالبی است! من فکر می‌کنم به زودی ربات‌ها جایگاهی در زندگی مردم خواهند گرفت یا حتی قبلاً هم این جایگاه را خواهند گرفت. ما یک ماشین روبات ساده ساخته ایم که از طریق تلفن هوشمند کنترل می شود، بعداً به پروژه های جدی تر خواهیم رفت، اما در حال حاضر - به زودی شما را می بینیم!

مردم با ایجاد ربات های ساده شروع به یادگیری آردوینو می کنند. امروز در مورد ساده ترین ربات Arduino Uno صحبت خواهم کرد که مانند یک سگ دست شما یا هر جسم دیگری که نور مادون قرمز را منعکس می کند را دنبال می کند. این ربات همچنین بچه ها را سرگرم می کند. برادرزاده 3 ساله من مشتاقانه با ربات بازی کرد :)

من با فهرست کردن قطعاتی که در طول ساخت و ساز مورد نیاز خواهند بود شروع می کنم - Arduino UNO.

فاصله یاب مادون قرمز؛

-موتورهای 3 ولت با گیربکس و چرخ؛

- اتصالات برای باتری های 3A؛

- باتری (اگر باتری کافی وجود نداشته باشد)؛

- رله برای کنترل موتورها

خوب، و مواد دیگری که در طول فرآیند ایجاد مورد نیاز خواهند بود.
ابتدا پایه را درست می کنیم. تصمیم گرفتم آن را از چوب بسازم. من یک تخته چوب را طوری اره کردم که موتورها کاملاً در شیارها قرار می گیرند


سپس موتورها را با یک نوار چوبی گیره می کنم و این نوار را پیچ می کنم

بعد روی بدنه یک آردوینو، یک رله، یک بردبرد، فاصله یاب و یک شاسی چرخشی زیر پایه قرار دادم.

اکنون همه چیز را مطابق نمودار وصل می کنیم

در پایان، طرح زیر را در آردوینو آپلود کنید:

Const int R = 13; //پین هایی که فاصله یاب های IR به آنها متصل هستند، بین L = 12; int motorL = 9; //پین هایی که رله به آنها متصل است int motorR = 11; int buttonState = 0; void setup() (pinMode(R,INPUT); pinMode(L,INPUT); pinMode(motorR,OUTPUT)؛ pinMode(motorL,OUTPUT)؛ ) void loop() ( ( buttonState = digitalRead(L)؛ if (buttonState == HIGH)( digitalWrite(motorR,HIGH)؛ ) other ( digitalWrite(motorR, Low); ) ) (( buttonState = digitalRead(R)؛ if (buttonState == HIGH)( digitalWrite(motorL,HIGH)؛ ) دیگری ( digitalWrite (motorL, Low); ) ) )

اصل کار بسیار ساده است. مسافت یاب چپ مسئول چرخ راست و سمت راست برای سمت چپ است

برای واضح تر شدن موضوع، می توانید ویدیویی را تماشا کنید که روند ایجاد و عملکرد ربات را نشان می دهد

این ربات بسیار ساده است و هر کسی می تواند آن را بسازد. این به شما کمک می کند تا اصول عملکرد ماژول هایی مانند رله ها و فاصله یاب های IR و بهترین روش استفاده از آنها را درک کنید.

امیدوارم از این کاردستی خوشتون اومده باشه، یادتون باشه کاردستی باحاله!

بخش پایانی مقاله در مورد یک ربات کوچک است که ما روی یک شاسی جمع می کنیم - درب ظرف پلاستیکی غذا. مغز ربات ما برد آردوینو UNO است، موتورها و درایو سروو توسط برد Driver Motor Shield کنترل می شود، سنسور مانع اولتراسونیک سونار است - چشم هایی مانند Valli (از کارتون) - "HC-SR04 Ultrasonic Sensor". ، . چگونه در آردوینو ربات بسازیم؟

9. اتصال باتری و موتورها

هنگام اتصال باتری، باید کاملاً مطمئن باشید که قطبیت درست است، همانطور که می گویند، 7 بار اندازه گیری کنید، یک بار وصل کنید. سعی کنید از این قانون پیروی کنید - سیم قرمز همیشه به + قدرت است، سیم سیاه زمین است، همچنین به عنوان منفی شناخته می شود، همچنین به عنوان GND شناخته می شود. تولید کنندگان سعی می کنند از قوانین مشابه پیروی کنند. بنابراین، سیم هایی که از محفظه باتری می آیند را به بلوک +M و GND روی برد کنترل موتور متصل می کنیم. سیم های موتورهای در حال کار را به بلوک های M1، M2 برد کنترل موتور متصل می کنیم. سمت چپ در جهت حرکت به بلوک M1 و سمت راست به بلوک M2 متصل می شود. هنوز نیازی به نگرانی در مورد پلاریته موتورها نیست؛ اگر در حین تست مشکلی پیش آمد، می توان آن را تغییر داد.

10. قطبیت و اتصال صحیح ماژول ها را بررسی کنید

یک لحظه بسیار مهم و حیاتی در مونتاژ یک میکرو ربات، بررسی نصب صحیح، اتصالات، ماژول ها طبق بلوک دیاگرام، نگاه کردن به علامت گذاری روی بردها، بررسی با یک تستر، قطبیت منبع تغذیه، که تستر دارد.

11. مرحله برنامه نویسی آردوینو

این برنامه با استفاده از یک کابل USB و یک برنامه ویژه - یک محیط برنامه نویسی و ویرایش طرح (برنامه ها) - Arduino IDE از کامپیوتر روی میکروکنترلر Arduino آپلود می شود. می توانید این برنامه را از وب سایت arduino.cc، بخش دانلود دریافت کنید، جایی که همیشه می توانید آخرین و جدیدترین نسخه برنامه را دانلود کنید. پس از نصب محیط برنامه نویسی، تنها چیزی که باقی می ماند این است که از منوی برنامه درایور انتخاب کنید که چه بردی را می خواهید استفاده کنید - در مورد ما، Arduino UNO و پورت COM که از طریق آن آردوینو از طریق شبیه سازی USB متصل می شود. تعداد زیادی کتابچه راهنمای مختلف در مورد این موضوع وجود دارد، بنابراین ما از این مرحله صرف نظر می کنیم (در صورت لزوم - منو Tools > Serial Port).

برنامه یک ربات میکرو را می توان در وب سایت ما پیدا کرد، اگرچه فقط پس از ثبت نام، ربات Mini را در آردوینو شوخی کنید. برای اینکه برنامه کار کند، به کتابخانه های دیگری نیاز است - AFMotor.h، Sevo.h، NewPing.h، همه آنها در بایگانی هستند، شما باید بایگانی را در یک پوشه باز کنید. برنامه نصب شدهآردوینو IDE. برای من، این دایرکتوری c:Program Files (x86)Arduino است، کتابخانه ها باید در پوشه c:Program Files (x86)Arduinolibraries قرار گیرند. سپس دایرکتوری c:Program Files (x86)ArduinolibrariesAPC_4_ROBOT را وارد کنید و روی APC_4_ROBOT.ino دوبار کلیک کنید - این خود طرح است، سپس محیط برنامه نویسی شروع می شود. ما برد Arduino Uno لخت (یعنی بدون ماژول های متصل) را از طریق کابل USB به رایانه وصل می کنیم، دکمه را با فلش سمت راست فشار می دهیم، برنامه شروع به بارگذاری در کنترلر می کند. کل فرآیند چند ثانیه طول می کشد و اگر همه چیز به درستی وصل شود، هیچ علامت قرمزی نباید روشن شود و نشانگر در گوشه سمت راست پایین حرکت خود را 100٪ کامل می کند. برنامه آردوینو در کنترلر Atmega328 نصب شده است.

12. راه اندازی ربات

ربات کوچک در آردوینو - آماده حرکت است. ربات والی

شما می توانید اولین اجرای آزمایشی ربات ما را انجام دهید. ربات ما به درستی رانندگی نمی کرد، یک چرخ به درستی می چرخید و دیگری در جهت مخالف. من مجبور شدم قطبیت سیم های موتور را در بلوک M2 تغییر دهم. اما سپس ربات کوچک ما با تمام گوشه ها و موانع اتاق با افتخار کنار آمد.

این مقاله را به همه مبتدیانی که تصمیم به یادگیری آردوینو دارند تقدیم می کنم. مطالعه بیشتر را می توان با شروع از درس اول ادامه داد - LED چشمک زن. مطالب این ربات بسیار جالب است و برای اینکه شما را علاقه مند کنم، تصمیم گرفتم با نحوه ساخت رباتی که موانع را دور می زند شروع کنم. آنچه بعد اتفاق می افتد بسیار آسان تر خواهد بود و مانند ساعت پیش خواهد رفت. این ربات واقعا کار می کند. همگی موفق باشید!

P.S. این یک ترجمه نسبتاً رایگان از مقاله ای بود که مدت ها پیش در گستره وسیع اینترنت یافت شده بود، البته بیشتر یک گنگ بود، زیرا همه چیز جدید انجام شده بود، نقشه ها اصلاح شده بودند، هیچ پیوندی به منبع وجود نداشت، زیرا سند ورد بود.

بالا