پورتال ساخت و ساز - درب و دروازه.  داخلی.  فاضلاب.  مواد.  مبلمان.  اخبار

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



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

Codebender یک IDE مبتنی بر مرورگر است، این ساده ترین راه برای برنامه نویسی ربات شما از طریق مرورگر است. شما باید روی دکمه "Run on Arduino" کلیک کنید و تمام است، هیچ جا راحت تر نیست.

باتری را داخل محفظه قرار دهید و یک بار دکمه عملکرد را فشار دهید تا ربات به جلو حرکت کند. برای توقف حرکت، دکمه را دوباره فشار دهید.

/* ربات جلوگیری از موانع آردوینو با موتور سروو و حسگر اولتراسونیک HC-SR04 LED و buzzer */ //Libraries #include #include "Ultrasonic.h" //Constants const int button = 2; // پین دکمه به پین ​​2 const int led = 3; // پین LED (از طریق مقاومت) به پین ​​3 const int buzzer = 4; //پین زنگ به پین ​​4 const int motorA1= 6; //موتور مثبت (+) پین به پین ​​6 (PWM) (از ماژول L298!) const int motorA2= 9; //پایه منفی (-) موتور A به پایه 9 (PWM) const int motorB1=10; // مثبت (+) موتور B پین به پایه 10 (PWM) const int motorB2=11; // پایه منفی (-) موتور B به پایه 11 (PWM) اولتراسونیک اولتراسونیک (A4 ,A5); //ایجاد یک شی اولتراسونیک (پین trig، echo pin) Servo myservo; //یک شی Servo برای کنترل سرووها ایجاد کنید //Variables int distance; //متغیر برای ذخیره فاصله تا شی int checkRight; int checkLeft; تابع int=0; //متغیر برای ذخیره تابع ربات: "1" - حرکت یا "0" - متوقف شد. متوقف شده توسط پیش فرض int buttonState=0; //متغیر برای ذخیره وضعیت دکمه. به طور پیش فرض "0" int pos=90; //متغیر برای ذخیره موقعیت سروو. به طور پیش فرض 90 درجه - حسگر به جلو نگاه خواهد کرد int flag=0; //پرچم مفید برای ذخیره وضعیت دکمه هنگام آزاد شدن دکمه void setup() ( myservo.attach(5)؛ //پین سروو متصل به پین ​​5 myservo.write(pos)؛ // به سروو می گوید که برود برای قرار دادن در متغیر "pos" pinMode (دکمه، INPUT_PULLUP)؛ pinMode (led، OUTPUT)؛ pinMode (buzzer, OUTPUT)؛ pinMode (motorA1, OUTPUT)؛ pinMode (motorA2, OUTPUT)؛ pinMode (motorB1, OUTPUT)؛ pinMode (motorB2,OUTPUT)؛ ) void loop() ( //بررسی وضعیت دکمه دکمهState = digitalRead(button)؛ جریان طولانی بدون علامتMillis = millis(); //محاسبه... //عملکرد اصلی را تغییر می دهد (توقف شد/ در حال حرکت) هنگامی که دکمه فشار داده می شود اگر (buttonState = = LOW) (//اگر دکمه یک بار فشار داده شود... تاخیر (500)؛ اگر (پرچم == 0) (تابع = 1؛ پرچم = 1؛ //تغییر متغیر پرچم ) else if (پرچم == 1)( / /اگر دکمه دو بار فشار داده شود تابع = 0؛ flag=0؛ //تغییر مجدد متغیر پرچم) ) if (تابع == 0)( //اگر دکمه رها یا دو بار فشار داده می شود، سپس: myservo.write(90)؛ //تنظیم برای سروو 90 درجه - حسگر به نظر می رسد b forward stop(); //ربات ثابت می ماند noTone(buzzer); // buzzer خاموش است DigitalWrite(led, HIGH);// و دیود روشن است ) وگرنه اگر (عملکرد == 1)(//اگر دکمه فشار داده شود، پس: //خواندن فاصله... فاصله = اولتراسونیک .Ranging(CM)؛ //نکته: از "CM" برای سانتی متر و "INC" برای اینچ استفاده کنید //بررسی اشیا. .. if (فاصله > 10) (به جلو (); //همه چیز واضح است، به جلو حرکت می کنیم!<=10){ stop(); //Обнаружен объект! Останавливаемся и проверяем слева и справа лучший способ обхода! tone(buzzer,500); // издаём звук digitalWrite(led,HIGH); // включаем светодиод //Начинаем сканировать... for(pos = 0; pos =0; pos-=1){ //идём от 180 градусов к 0 myservo.write(pos); // говорим серво пройти на позицию в переменной "pos" delay(10); // ждём 10 мс, пока сервопривод достигнет нужной позиции } checkRight= ultrasonic.Ranging(CM); myservo.write(90); // Датчик снова смотрит вперёд //Принимаем решение – двигаться влево или вправо? if (checkLeft checkRight){ right(); delay(400); // задержка, меняем значение при необходимости, чтобы заставить робота повернуться. } else if (checkLeft <=10 && checkRight <=10){ backward(); //Дорога перекрыта... возвращаемся и идём налево;) left(); } } } } void forward(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void backward(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void left(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void right(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void stop(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, LOW); }

با کلیک بر روی دکمه "ویرایش" می توانید طرح را مطابق با نیاز خود ویرایش کنید.

به عنوان مثال، با تغییر مقدار "10" فاصله اندازه گیری شده به یک مانع بر حسب سانتی متر، فاصله ای را که ربات آردوینو در جستجوی مانع اسکن می کند، کاهش یا افزایش می دهید.

اگر ربات حرکت نمی کند، می تواند کنتاکت موتورهای الکتریکی (motorA1 و motorA2 یا motorB1 و motorB2) را تغییر دهد.

مرحله 7: ربات کامل شده

ربات خانگی شما که بر اساس میکروکنترلر آردوینو از موانع جلوگیری می کند آماده است.

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

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

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

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

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

طرح ربات

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

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

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

نسخه تکمیل شده ربات خود متعادل کننده در شکل بالا قابل مشاهده است. در بالا شش باتری Ni-Cd برای تغذیه PCB وجود دارد. بین موتورها از باتری 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; // انحراف/پیچ/رول ظرف و بردار جاذبه //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 attachInterrupt(0 , dmpDataReady , RISING)؛ mpuIntStatus = mpu.getIntStatus(); // پرچم آماده DMP خود را تنظیم کنید تا تابع حلقه () اصلی بداند که استفاده از آن اشکالی ندارد dmpReady = true؛ // دریافت DM مورد انتظار اندازه بسته P برای مقایسه بعدی 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 را تنظیم کنید.

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

روز خوب! پیش روی شما عزیزان یک ربات هنری است که می تواند اجسام کروی یا تخم مرغی شکل مختلف را در اندازه های ۴ تا ۹ سانتی متر نقاشی کند.

برای ساخت آن به یک چاپگر سه بعدی، مجموعه ای از ابزارهای استاندارد + آردوینو نیاز دارید.

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

مرحله 1: کمی در مورد ربات

ربات هنری - دو محوره خانگی، که می تواند روی اکثر سطوح کروی چاپ شود. ربات برای نوع خاصی از شی (توپ های پینگ پنگ، تزئینات کریسمس، لامپ ها و تخم مرغ ها (اردک، غاز، مرغ ...) پیکربندی شده است.

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

مرحله 2: قطعات مورد نیاز

ساختن کاردستی خودت انجام بدهما نیاز خواهیم داشت:

  • 2x بلبرینگ 623;
  • سنجاق سر با قطر 3 میلی متر و طول 80-90 میلی متر؛
  • 1x فنر (طول 10 میلی متر و قطر 4.5 میلی متر)؛
  • 2 عدد موتور پله ای NEMA 17 (گشتاور 4.4 کیلوگرم بر سانتی متر)؛
  • کابل برای موتور (طول 14 + 70 سانتی متر)؛
  • کابل یو اس بی؛
  • 1x سروو SG90;
  • آردوینو لئوناردو;
  • سپر JJRobots;

  • درایورهای موتور پله ای 2xA4988؛
  • منبع تغذیه 12 ولت / 2 آمپر؛
  • 11 x M3 پیچ 6 میلی متری؛
  • 4 عدد پیچ ​​M3 16 میلی متری؛
  • 4 عدد آجیل M3;
  • 2 عدد مکنده 20 میلی متری؛
  • 1 عدد مهره بال M3؛
  • 1x نشانگر؛

مرحله 3: طرح کلی

به عنوان یک "برگ تقلب" می توانید از این طرح استفاده کنید.

مرحله 4: بیایید شروع کنیم!

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

مرحله 5: دستکاری

مهره را در سوراخ آماده شده برای آن نصب کنید و پیچ 16 میلی متری را محکم کنید. بیایید همین کار را برای نگهدارنده آیتم (در سمت راست در تصویر بالا) انجام دهیم. هنگام ایجاد لولا برای دستکاری، از 2 پیچ 16 میلی متری استفاده شد. این لولا باید پس از سفت کردن پیچ ها آزادانه بچرخد.

مرحله 6: مکنده ها

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

مرحله 7: وصل کردن استپر موتورها

هر دو استپر موتور را با 8 پیچ به قاب اصلی ثابت کنید.

مرحله 8: محور چرخش

بیایید تمام عناصر را همانطور که در تصویر بالا نشان داده شده است قرار دهیم.

  • مکنده;
  • پیچ؛
  • قسمت بالا؛
  • بهار؛
  • بلبرینگ 623 (باید در فنجان سمت چپ تعبیه شود).
  • فنجان سمت چپ؛
  • فضای خالی برای فریم اصلی؛
  • فنجان سمت راست؛
  • بلبرینگ 623;
  • حلقه جداکننده؛
  • مهره بال (M3).

مرحله 9: قرار دادن همه چیز در جای خود

دستکاری مونتاژ شده را روی محور استپر موتور قرار دهید.

تکیه گاه سمت چپ را روی محور استپر موتور نصب کنید.

نشانگر و تخم مرغ به عنوان نمونه تنظیم شده اند (الزامی نیست اکنون آنها را قرار دهید).

توجه: سروو نیاز به تنظیمات دارد. در طول فرآیند کالیبراسیون باید زاویه آن را دوباره تنظیم کنید.

مرحله 10: الکترونیک

قطعات الکترونیکی پشت قاب اصلی را با پیچ ثابت کنید (2 کافی است).

بیایید کابل ها را وصل کنیم.

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

مرحله یازدهم: برنامه نویسی آردوینو لئوناردو

بیایید Arduino Leonardo را با استفاده از محیط نرم افزار Arduino IDE (نسخه 1.8.1) برنامه ریزی کنیم.

  • Arduino IDE (نسخه 1.8.1) را دانلود و برنامه را نصب کنید.
  • بیایید نرم افزار را اجرا کنیم. برد Arduino Leonardo و COM-PORT مربوطه را در منوی "tools->board" انتخاب کنید.
  • بیایید کد Sphere-O-Bot را باز کرده و دانلود کنیم. بیایید همه فایل های داخل یک پوشه را باز کنیم و آن را "Ejjduino_ARDUINO" بنامیم.

مرحله 12: ربات هنر آماده ایجاد آثار هنری است

مرحله 13: کنترل ربات

نرم افزار inkscape.نرم افزار Inkscape را دانلود و نصب کنید (من نسخه پایدار 0.91 را توصیه می کنم).

پسوند EggBot Control را دانلود و نصب کنید (نسخه 2.4.0 به طور کامل تست شده است).

برنامه افزودنی کنترل EggBot برای Inkscape ابزاری است که هنگام آزمایش و کالیبره کردن EggBot و انتقال نقشه ها به تخم مرغ استفاده می شود. ابتدا باید Inkscape را راه اندازی کنید. پس از راه‌اندازی Inkscape، منوی «Extensions» ظاهر می‌شود و در آن باید زیر منوی «Eggbot» را انتخاب کنید. اگر زیر منوی Eggbot را نمی بینید، پس افزونه ها را به درستی نصب نکرده اید. بک آپ بگیرید و دستورالعمل های نصب افزونه ها را به دقت دنبال کنید.

این همه، از توجه شما متشکرم!)

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

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

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

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

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

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

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

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


سپس موتورها را با یک تخته چوب محکم می کنم و این میله را پیچ می کنم

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

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

در پایان، طرح زیر را در آردوینو بارگذاری می کنیم:

Const int R = 13; // پین هایی که فاصله یاب های IR به آنها متصل هستند، بین L = 12; موتور داخلی L = 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 چگونه کار می کنند و بهترین استفاده از آنها چگونه است.

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

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

بنابراین، مقدمه ای برای مشکل:

بیایید با مفهوم شروع کنیم: ما رباتی می خواهیم که بتواند به تنهایی در اتاق حرکت کند و در عین حال از تمام موانعی که با آن روبرو می شود اجتناب کند. تکلیف تعیین شد.

حالا بیایید بفهمیم که به چه چیزی نیاز داریم:

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

این کیت معمولاً دارای یک پلت فرم و یک موتور برای دو چرخ محرک (کاترپیلار) و یک محفظه باتری است. گزینه هایی برای تمام چرخ محرک وجود دارد - در موتور 4 چرخ. برای مبتدیان، استفاده از سکوهای تانک را توصیه می کنیم

دو چرخ محرک و یک تکیه گاه سوم.

  1. بعد، ما به یک فاصله یاب نیاز داریم. سونار (با نام مستعار مسافت یاب، با نام مستعار ماژول اولتراسونیک) به عنوان یک فاصله یاب، در ابتدا انتخاب بین اولتراسونیک و مادون قرمز بود. از آنجایی که ویژگی های اولتراسونیک بسیار بهتر است (حداکثر برد حدود 4-5 متر در مقابل 30-60 سانتی متر است) و قیمت تقریباً یکسان است، انتخاب بر روی اولتراسونیک قرار گرفت. رایج ترین مدل HC-SR04 است.

  1. راننده موتور.

چگونه بودن؟ اولین چیزی که به ذهن می رسد این است که یک ترانزیستور را روی خروجی میکروکنترلر قرار دهید و موتورها را از آن تغذیه کنید. این مطمئناً خوب است، اما اگر بخواهیم موتور را در جهت دیگری راه اندازی کنیم، کار نمی کند ... اما H کار را به خوبی انجام می دهد - یک پل، که مدار کمی پیچیده تر از یک جفت ترانزیستور است. اما در این مورد، تعداد زیادی از آنها به شکل مدارهای مجتمع آماده وجود دارد، بنابراین فکر می کنم نیازی به اختراع مجدد چرخ نیست - ما یک چرخ آماده می خریم. علاوه بر این، قیمت مطلوب است - 2-3 دلار ... بیایید حرکت کنیم. برای این منظور، ما یک تراشه L293D یا حتی بهتر از آن، یک موتور شیلد مبتنی بر آن خواهیم خرید.

محافظ موتور روی تراشه L298N

  1. تولید صدا - Piezo Buzzer

ساده ترین گزینه برای تولید صدا استفاده از امیتر پیزو است.

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

اثر پیزو مستقیم: در فندک های پیزو، برای به دست آوردن ولتاژ بالا در شکاف جرقه.

اثر پیزوالکتریک معکوس: در ساطع کننده های پیزوالکتریک (موثر در فرکانس های بالا و دارای ابعاد کوچک)؛

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

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

درس 2

درس 3. آردوینو و موتور شیلد بر اساس L298N

درس 4

درس 5

اگر متوجه خطایی شدید، یک متن را انتخاب کنید و Ctrl + Enter را فشار دهید
اشتراک گذاری:
پورتال ساخت و ساز - درب و دروازه.  داخلی.  فاضلاب.  مواد.  مبلمان.  اخبار