شروع- ساده ✨
شروع سریع: چراغ چشمکزن
هدف: راه اندازی اولیه و دستوردادن به هوش مصنوعی
سادهترین برنامه برای شروع! ربات فقط چراغهایش را روشن و خاموش میکند.
🎯 اهداف یادگیری:
- مشاهده بینایی هوش مصنوعی
- فهمیدن بلاک forever
- کنترل چراغ
- استفاده از wait
📝 مراحل:
- بلاک forever را از دسته ‘کنترل’ بکشید
- بلاک indicators ON را اضافه کنید
- بلاک brightness با مقدار 100 اضافه کنید
- بلاک wait با مقدار 0.5 ثانیه اضافه کنید
- بلاک indicators OFF را اضافه کنید
- بلاک wait دیگر با مقدار 0.5 ثانیه اضافه کنید
- دکمه ‘تولید کد’ را بزنید
- با اسکن QR Code، برنامه را روی ربات اجرا کنید
💻 کد تولید شده:
forever(function() {
toggleLed('ON');
ledBrightness(100);
wait(500);
toggleLed('OFF');
wait(500);
}); مبتدی ⭐
حرکت ساده با سنسور
هوش مصنوعی با استفاده از سنسور سونار، ربات را هدایت می کند و از برخورد با موانع دوری میکند.
🎯 اهداف یادگیری:
- دستور دادن به هوش مصنوعی
- کار با متغیرها
- خواندن سنسور سونار
- تصمیمگیری با if-else
📝 مراحل:
- یک متغیر با نام ‘distance’ ایجاد کنید
- بلاک forever را بکشید
- بلاک ‘set distance to sonarReading’ اضافه کنید
- بلاک if-else اضافه کنید
- شرط: اگر distance < 30
- در قسمت if: stopMovement و toggleLed ON
- در قسمت else: toggleLed OFF
- دکمه ‘تولید کد’ را بزنید و روی ربات تست کنید
💻 کد تولید شده:
var distance = 0;
forever(function() {
distance = sonarReading();
if (distance < 30) {
stopMovement();
toggleLed('ON');
} else {
toggleLed('OFF');
}
});متوسط ⭐⭐
آموزش ۲: کنترل با سنسور فاصله
یک برنامه هوشمند که ربات را با استفاده از سنسور سونار کنترل میکند. ربات به صورت خودکار از موانع دوری میکند و مسیر ایمنی را انتخاب میکند.
🎯 اهداف یادگیری:
- کار با سنسور سونار
- استفاده از شرطهای if-else
- کنترل حرکت بر اساس سنسور
- الگوریتم اجتناب از مانع
📝 مراحل:
- یک متغیر ‘distance’ ایجاد کنید
- بلاک start اضافه کنید و brightness و indicators را داخل آن قرار دهید
- بلاک forever اضافه کنید
- داخل forever: مقدار سونار را به متغیر distance بدهید
- بلاک display_sensors برای نمایش سونار اضافه کنید
- بلاک if-else اضافه کنید: اگر distance < 30
- در قسمت if: Stop → Wait 0.5s → Turn Right → Wait 0.8s → Stop
- در قسمت else: Move Forward با سرعت 40
- یک wait 0.1s در انتهای حلقه اضافه کنید
- دکمه ‘تولید کد’ را بزنید و روی ربات تست کنید
💻 کد تولید شده:
var distance = 0;
ledBrightness(50);
toggleLed('ON');
forever(function() {
distance = sonarReading();
displaySensor('sonar');
if (distance < 30) {
stopMovement();
wait(500);
setTurn(80, 'right');
wait(800);
stopMovement();
} else {
setSpeed(40, 'forward');
}
wait(100);
}); متوسط ⭐⭐
آموزش ۳: بازی دنبال کن مرا
یک برنامه سرگرمکننده که ربات شما را دنبال میکند! با استفاده از تشخیص شخص و کنترل حرکت.
🎯 اهداف یادگیری:
- ترکیب هوش مصنوعی با حرکت
- استفاده از objectTracking
- کنترل صدا
- طراحی یک بازی ساده
📝 مراحل:
- بلاک start اضافه کنید
- صدا را با soundMode ON فعال کنید
- یک بوق شروع بزنید (BEEP_ONCE)
- روشنایی را 100 و LED را ON کنید
- 2 ثانیه صبر کنید (زمان آمادهسازی)
- 3 بوق برای شروع بازی بزنید (BEEP_THRICE)
- بلاک objectTracking را با person و MobileNetV1-300 اضافه کنید
- یک بلاک forever اضافه کنید برای نمایش speed و sonar
- دکمه ‘تولید کد’ را بزنید
- روی ربات اجرا کنید و جلوی دوربین قرار بگیرید – ربات شما را دنبال میکند!
💻 کد تولید شده:
soundMode('ON');
playSound('BEEP_ONCE');
ledBrightness(100);
toggleLed('ON');
wait(2000);
playSound('BEEP_THRICE');
trackObject('person', 'MobileNetV1-300');
forever(function() {
displaySensor('speed');
displaySensor('sonar');
wait(300);
});سطح حرفه ای- Pro ⭐⭐⭐⭐
پروژه حرفهای: ربات نگهبان ساده
ربات نگهبان که محیط را گشت میزند، از موانع اجتناب میکند و در صورت تشخیص شخص هشدار میدهد.
🎯 اهداف یادگیری:
- ترکیب چند سنسور
- الگوریتم گشت منظم
- سیستم هشدار
- تصمیمگیری چند سطحی
📝 مراحل:
- دو متغیر ایجاد کنید: distance و patrolStep
- در بلاک start: متغیرها را مقداردهی کنید، LED و صدا را تنظیم کنید
- در forever: سونار را بخوانید
- شرط اول: اگر distance < 20 (خطر!) → توقف، بوق، چرخش
- شرط دوم: اگر distance < 50 (احتیاط) → سرعت 30
- در غیر این صورت: سرعت 50 (عادی)
- patrolStep را 1 واحد افزایش دهید
- اگر patrolStep > 30 → چرخش برای گشت منظم و reset کردن patrolStep
- یک بلاک variableDetection برای تشخیص person اضافه کنید
- در صورت تشخیص: توقف، LED روشن، 2 بوق، 2 ثانیه صبر
- تولید کد و تست در محیط امن
💻 کد تولید شده:
var distance = 0;
var patrolStep = 0;
// مقداردهی اولیه
ledBrightness(30);
toggleLed('ON');
soundMode('ON');
playSound('BEEP_ONCE');
// حلقه گشت
forever(function() {
distance = sonarReading();
// اجتناب از مانع با 3 ناحیه سرعت
if (distance < 20) {
// خطر! توقف و چرخش
stopMovement();
playSound('BEEP_ONCE');
ledBrightness(100);
wait(300);
setTurn(90, 'right');
wait(700);
stopMovement();
ledBrightness(30);
} else if (distance < 50) {
// احتیاط - سرعت کم
setSpeed(30, 'forward');
} else {
// مسیر آزاد - سرعت عادی
setSpeed(50, 'forward');
}
// گشت منظم: هر 30 قدم یک چرخش
patrolStep++;
if (patrolStep > 30) {
stopMovement();
setTurn(70, 'right');
wait(700);
stopMovement();
patrolStep = 0;
}
wait(100);
});
// تشخیص شخص
onDetect('person', 'MobileNetV1-300', function() {
stopMovement();
ledBrightness(100);
playSound('BEEP_TWICE');
wait(2000);
}); سطح حرفه ای- Pro ⭐⭐⭐⭐
پروژه حرفهای: پارکینگ خودکار
سیستم پارکینگ خودکار که فضای خالی را پیدا میکند و ربات را با دقت پارک میکند.
🎯 اهداف یادگیری:
- State Machine (ماشین حالت)
- ناوبری پیشرفته
- محاسبات هندسی
- سیستمهای چند مرحلهای
📝 مراحل:
- دو متغیر ایجاد کنید: frontDistance و parkingMode
- در start: parkingMode = 1 (جستجو), LED و صدا را تنظیم کنید
- در forever: سونار جلو را بخوانید
- حالت 1 (جستجو): اگر frontDistance > 60 → فضا پیدا شد، parkingMode = 2
- حالت 2 (پارک): مانور 7 مرحلهای – جلو، توقف، چرخش، توقف، عقب، توقف، parkingMode = 3
- حالت 3 (پارک شده): توقف کامل، LED کم نور، صرفهجویی انرژی
- تولید کد و تست در فضای باز با علامتگذاری فضای پارک
- نکته: برای تست، میتوانید با دست parkingMode را تغییر دهید
💻 کد تولید شده:
var frontDistance = 0;
var parkingMode = 1; // 1=Search, 2=Parking, 3=Parked
// مقداردهی
ledBrightness(100);
toggleLed('ON');
playSound('BEEP_ONCE');
forever(function() {
frontDistance = sonarReading();
// حالت 1: جستجوی فضا
if (parkingMode === 1) {
if (frontDistance > 60) {
stopMovement();
playSound('BEEP_TWICE');
parkingMode = 2;
}
}
// حالت 2: مانور پارک
else if (parkingMode === 2) {
setSpeed(30, 'forward');
wait(500);
stopMovement();
setTurn(50, 'right');
wait(500);
stopMovement();
setSpeed(25, 'backward');
wait(1000);
stopMovement();
playSound('BEEP_THRICE');
parkingMode = 3;
}
// حالت 3: پارک شده
else {
stopMovement();
ledBrightness(10);
}
wait(100);
});حرفه ای ⭐⭐⭐⭐
AI حرفهای ۱: ربات پیگیر هوشمند
یک سیستم دنبالکننده پیشرفته که هنگام تشخیص شخص به سمت او حرکت میکند و وقتی شخص از دید خارج شد، با الگوریتم جستجو او را پیدا میکند. این مثال مفهوم ‘on detected’ و ‘on lost frames’ را آموزش میدهد.
🎯 اهداف یادگیری:
- مفهوم ‘on detected’ و ‘on lost frames’
- الگوریتم جستجوی هوشمند
- مدیریت state با متغیرها
- استفاده از callback functions
📝 مراحل:
- دو متغیر ایجاد کنید: searchAngle (زاویه جستجو) و lostTime (زمان گم شدن)
- در start: متغیرها را 0 کنید، LED و صدا را تنظیم کنید
- بلاک variableDetection اضافه کنید: person, MobileNetV1-300, 45 frames
- در قسمت ‘do’ (تشخیص): LED روشن، بوق، حرکت جلو، ریست متغیرها
- در قسمت ‘on lost’ (گم شدن): توقف، بوق هشدار، جستجو
- الگوریتم جستجو: چرخش 90 درجه، اسکن، تکرار تا 3 بار
- اگر 3 بار ناموفق: تسلیم شدن (توقف + LED کم نور)
- یک forever برای نمایش سرعت اضافه کنید
- تست: جلوی دوربین بایستید، سپس کنار بروید – ربات شما را جستجو میکند!
💻 کد تولید شده:
var searchAngle = 0;
var lostTime = 0;
// مقداردهی اولیه
ledBrightness(80);
toggleLed('ON');
soundMode('ON');
playSound('BEEP_TWICE');
// سیستم پیگیری هوشمند
onDetect('person', 'MobileNetV1-300', function() {
// شخص تشخیص داده شد!
ledBrightness(100);
playSound('BEEP_ONCE');
setSpeed(40, 'forward');
// ریست کردن متغیرهای جستجو
lostTime = 0;
searchAngle = 0;
}, function() {
// شخص گم شد! (بعد از 45 فریم)
stopMovement();
ledBrightness(50);
playSound('BEEP_WARNING');
wait(500);
lostTime++;
// الگوریتم جستجو
if (lostTime < 3) {
// جستجو با چرخش 90 درجه
setTurn(60, 'right');
wait(800);
stopMovement();
wait(1000); // اسکن محیط
searchAngle += 90;
} else {
// جستجو ناموفق - تسلیم شو
stopMovement();
playSound('BEEP_THRICE');
ledBrightness(20);
}
});
// نمایش وضعیت
forever(function() {
displaySensor('speed');
wait(200);
}); حرفه ای ⭐⭐⭐⭐
AI حرفهای ۲: ناوبری خودکار هوشمند
استفاده از مدل Autopilot برای رانندگی خودکار و مدل Point Goal Navigation برای رسیدن به نقاط مشخص. ربات به صورت کاملاً خودکار مسیر را تشخیص داده و طی میکند.
🎯 اهداف یادگیری:
- استفاده از Autopilot (CIL-Mobile-Cmd)
- Point Goal Navigation (PilotNet-Goal)
- Waypoint Navigation (ناوبری چند نقطهای)
- Disable AI برای توقف
📝 مراحل:
- دو متغیر: currentWaypoint (نقطه فعلی) و waypointsCompleted (تعداد کامل شده)
- در start: متغیرها را مقداردهی کنید، LED و صدا تنظیم کنید
- بلاک autopilot با CIL-Mobile-Cmd اضافه کنید
- در forever: یک if-elseif-elseif-else با 4 حالت
- حالت 1: navigateForwardAndLeft(100, 0) با PilotNet-Goal
- حالت 2: navigateForwardAndLeft(50, 80)
- حالت 3: navigateForwardAndLeft(0, 0) – بازگشت به مبدا
- در حالت 3: disableAI و movementStop اضافه کنید
- حالت 4 (else): حالت استراحت
- تست در فضای باز با علامتگذاری نقاط (100cm جلو، سپس 50cm جلو + 80cm چپ)
💻 کد تولید شده:
var currentWaypoint = 1;
var waypointsCompleted = 0;
// مقداردهی
ledBrightness(100);
toggleLed('ON');
playSound('BEEP_ONCE');
wait(2000);
// فعالسازی Autopilot
enableAutopilot('CIL-Mobile-Cmd');
// حلقه ناوبری
forever(function() {
// مسیر 3 نقطهای:
// نقطه 1: 100cm جلو
if (currentWaypoint === 1) {
navigateTo(100, 0, 'PilotNet-Goal');
playSound('BEEP_ONCE');
currentWaypoint = 2;
waypointsCompleted++;
}
// نقطه 2: 50cm جلو + 80cm چپ
else if (currentWaypoint === 2) {
navigateTo(50, 80, 'PilotNet-Goal');
playSound('BEEP_ONCE');
currentWaypoint = 3;
waypointsCompleted++;
}
// نقطه 3: بازگشت به مبدا (0, 0)
else if (currentWaypoint === 3) {
navigateTo(0, 0, 'PilotNet-Goal');
playSound('BEEP_THRICE');
disableAI();
stopMovement();
ledBrightness(100);
currentWaypoint = 0; // ماموریت تمام
}
// حالت استراحت
else {
stopMovement();
ledBrightness(10);
}
wait(500);
});حرفه ای ⭐⭐⭐⭐
AI حرفهای ۳: سیستم چند AI همزمان
ترکیب Autopilot با Object Detection برای یک سیستم هوشمند کامل. ربات با autopilot حرکت میکند اما وقتی شخص یا حیوان تشخیص داد، رفتار خاصی انجام میدهد. این مفهوم ‘Multi-tasking AI’ است.
🎯 اهداف یادگیری:
- ترکیب چند مدل AI همزمان
- multipleAIDetection (Autopilot + Detection)
- مدیریت رویدادهای چندگانه
- تصمیمگیری بر اساس نوع object
📝 مراحل:
- دو متغیر: personSeen و animalSeen
- در start: مقداردهی متغیرها، تنظیم LED و صدا
- بلاک multipleAIDetection اضافه کنید: autopilot=CIL-Mobile-Cmd, person, MobileNetV1-300
- در قسمت tasks: توقف، LED روشن، 2 بوق، شمارش person، صبر 3 ثانیه
- یک بلاک variableDetection دیگر اضافه کنید: dog, MobileNetV1-300, 30 frames
- در قسمت detect_tasks: توقف، بوق هشدار، عقبگرد، چرخش (مانور اجتناب)
- در قسمت framesLost_tasks: فقط wait 0.5s
- یک forever برای نمایش speed
- تست: ربات با autopilot حرکت میکند، جلوی دوربین بایستید – توقف میکند!
- سپس کنار بروید – autopilot دوباره ادامه میدهد
💻 کد تولید شده:
var personSeen = 0;
var animalSeen = 0;
// مقداردهی
ledBrightness(70);
toggleLed('ON');
soundMode('ON');
playSound('BEEP_TWICE');
// ترکیب Autopilot + Person Detection
enableAutopilot('CIL-Mobile-Cmd');
onDetect('person', 'MobileNetV1-300', function() {
// شخص دیده شد - توقف و هشدار
stopMovement();
ledBrightness(100);
playSound('BEEP_TWICE');
personSeen++;
wait(3000); // 3 ثانیه مشاهده
ledBrightness(70);
// سپس autopilot دوباره ادامه میدهد
});
// تشخیص حیوان (سگ)
onDetect('dog', 'MobileNetV1-300', function() {
// سگ دیده شد - اجتناب!
stopMovement();
playSound('BEEP_WARNING');
animalSeen++;
// مانور اجتناب
setSpeed(50, 'backward');
wait(1000);
stopMovement();
setTurn(80, 'right');
wait(1000);
stopMovement();
}, function() {
// سگ گم شد
wait(500);
});
// نمایش وضعیت
forever(function() {
displaySensor('speed');
wait(300);
}); حرفه ای ⭐⭐⭐⭐
AI حرفهای ۴: ناوبری خط با ایست هوشمند
ربات تعقیبخط که وقتی علامت توقف را دید، ترمز میکند و پس از شمارش معکوس دوباره حرکت میکند. اگر مخروط/مانع دید، بهصورت ایمن دور میزند و به خط برمیگردد. این مثال مفاهیم State Management و Multi-Object Detection را آموزش میدهد.
🎯 اهداف یادگیری:
- State Machine با 3 حالت (CRUISE, STOP_HOLD, AVOID)
- Frame Confirmation (تأیید با 3 فریم)
- Multi-Object Detection (stop sign + cone)
- الگوی دورزدن L شکل
📝 مراحل:
- سه متغیر: mode (1=CRUISE, 2=STOP_HOLD, 3=AVOID), stopSeen, avoidTries
- در start: متغیرها = 0, LED و صدا, حرکت جلو با سرعت 35
- بلاک variableDetection اول: stop sign, MobileNetV1-300, 15 frames
- در detect_tasks: اگر mode ≠ 2، stopSeen++ و اگر ≥3 → توقف 3 ثانیه
- در framesLost_tasks: stopSeen = 0
- بلاک variableDetection دوم: traffic cone, MobileNetV1-300, 20 frames
- در detect_tasks: اگر mode=1 → مانور L (چپ→جلو→راست→اسکن)
- اگر avoidTries≥2 → ایست ایمن، وگرنه ادامه
- یک forever برای نمایش speed
- تست: خط کاغذی بکشید، علامت ایست بگذارید، مخروط بگذارید
💻 کد تولید شده:
var mode = 1; // 1=CRUISE, 2=STOP_HOLD, 3=AVOID
var stopSeen = 0;
var avoidTries = 0;
// مقداردهی
ledBrightness(80);
toggleLed('ON');
soundMode('ON');
playSound('BEEP_ONCE');
setSpeed(35, 'forward'); // حرکت پایه
// تشخیص علامت ایست
onDetect('stop sign', 'MobileNetV1-300', function () {
if (mode !== 2) {
stopSeen++;
if (stopSeen >= 3) { // تأیید با 3 فریم
mode = 2; // STOP_HOLD
stopMovement();
ledBrightness(100);
playSound('BEEP_TWICE');
wait(3000); // 3 ثانیه توقف
stopSeen = 0;
ledBrightness(70);
mode = 1; // بازگشت به CRUISE
setSpeed(35, 'forward');
}
}
}, function () {
stopSeen = 0;
});
// تشخیص مانع (مخروط)
onDetect('traffic cone', 'MobileNetV1-300', function () {
if (mode === 1) {
mode = 3; // AVOID
stopMovement();
playSound('BEEP_WARNING');
ledBrightness(90);
// الگوی دورزدن (L شکل)
setTurn(60, 'left');
wait(500);
setSpeed(30, 'forward');
wait(700);
setTurn(60, 'right');
wait(500);
stopMovement();
wait(300); // اسکن
avoidTries++;
if (avoidTries >= 2) {
// ناموفق → ایست ایمن
stopMovement();
playSound('BEEP_THRICE');
ledBrightness(30);
mode = 1;
avoidTries = 0;
} else {
setSpeed(35, 'forward');
mode = 1;
}
}
});
// نمایش وضعیت
forever(function () {
displaySensor('speed');
wait(200);
});