🎓 پروژه پایانی دانشگاه با میکروکنترلر: از انتخاب موضوع تا دفاع (برای دانشجوی برق، کامپیوتر و مکاترونیک)

✍️ نویسنده: ·

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

یک پروژه‌ی پایانی خوب چه ویژگی‌ای دارد؟

انتخاب موضوع بر اساس رشته

رشتهتمرکز پیشنهادینمونه
برق (الکترونیک و قدرت)طراحی مدار، تغذیه، اندازه‌گیری دقیق، کنترلکنتور هوشمند، کنترل دمای PID، ردیاب خورشید
کامپیوتر (سخت‌افزار و نرم‌افزار)معماری نرم‌افزار، شبکه، پایگاه داده، امنیتخانه‌ی هوشمند MQTT، حضور و غیاب RFID با وب‌سرور
مکاترونیکحرکت، موتور، سنسور و کنترل هم‌زمانربات مسیریاب PID، بازوی رباتیک، پارکینگ هوشمند

یک ترفند ساده: موضوع را از درس یا کارآموزی‌ای انتخاب کن که در آن قوی‌تری. اگر درس کنترل خطی را خوب گذرانده‌ای، یک پروژه‌ی PID انتخاب کن تا فصل مبانی نظری‌ات عمیق شود.

کدام برد؟ AVR، آردوینو، ESP32 یا STM32

در خیلی از دانشگاه‌های ایران هنوز میکروکنترلر AVR (مثل ATmega32) با CodeVision درس داده می‌شود و بعضی استادها همین را می‌خواهند. آردوینو اونو خودش یک ATmega328 است، پس فاصله‌ی زیادی با AVR ندارد. اگر پروژه وای‌فای یا وب‌سرور لازم دارد، ESP32 انتخاب طبیعی است. STM32 برای پروژه‌هایی خوب است که سرعت و تایمرهای پیشرفته می‌خواهند. قانون طلایی: قبل از خرید، برد را با استاد راهنما قطعی کن. مقایسه‌ی ESP32 و آردوینو اونو و اونو، نانو یا مگا کمک می‌کند انتخابت را در گزارش هم توجیه کنی.

محدوده‌بندی: سه لایه‌ی «حداقل، خوب، عالی»

بزرگ‌ترین اشتباه دانشجوها موضوع خیلی بزرگ است. پروژه را از اول در سه لایه بنویس و فقط لایه‌ی اول را قول بده:

لایهمثال: گلخانه‌ی هوشمند
حداقل (حتماً تحویل می‌دهی)خواندن رطوبت خاک و دما، روشن کردن پمپ و فن با آستانه، نمایش روی سریال یا LCD
خوب (هدف اصلی)صفحه‌ی وب زنده، حالت دستی و خودکار، محدودیت زمانی ایمنی پمپ
عالی (اگر وقت ماند)ثبت داده روی SD و نمودار مصرف آب، اعلان در گوشی، بدنه‌ی چاپ سه‌بعدی

این جدول را در پروپوزال هم بگذار. اگر به لایه‌ی سوم نرسیدی، در فصل «پیشنهادها» می‌نشیند و نقطه‌ضعف حساب نمی‌شود.

اول شبیه‌سازی، بعد خرید

قبل از این‌که پول قطعه بدهی، مدار و کد را در شبیه‌ساز بساز. این کار سه فایده دارد: اشتباه سیم‌کشی قطعه نمی‌سوزاند، کد را با ابزارهایی مثل سریال مانیتور، نمودار و دیباگر قدم‌به‌قدم بررسی می‌کنی، و فهرست قطعه‌ها قبل از خرید قطعی می‌شود. در تینکرکد فارسی آردوینو اونو و نانو رایگان‌اند و ESP32، آردوینو مگا و ماژول‌های حرفه‌ای با اشتراک Plus اجرا می‌شوند؛ ابزار «چرا کار نمی‌کند؟» هم اشکال‌های سیم‌کشی را به فارسی توضیح می‌دهد. اگر اولین بار است، آموزش شروع کار با شبیه‌ساز و برای دیباگ، دیباگ کد آردوینو در شبیه‌ساز را ببین.

جریان کار پیشنهادی این است:

  1. هر ماژول را جدا در شبیه‌ساز راه بینداز: سنسور، نمایشگر، موتور.
  2. ماژول‌ها را یکی‌یکی در یک پروژه جمع کن و هر بار تست کن.
  3. قطعه بخر و همان مدار را روی بردبورد بساز. نتیجه‌ی واقعی را با شبیه‌سازی مقایسه کن؛ همین مقایسه یک بخش خوب برای فصل نتایج است.
  4. در آخر، اگر وقت بود، PCB طراحی کن. راهنمای طراحی PCB آنلاین نقطه‌ی شروع خوبی است.
💡 شبیه‌ساز برای منطق، سیم‌کشی و کد عالی است، ولی نویز تغذیه، افت ولتاژ موتور و رفتار دقیق آنالوگ را کامل نشان نمی‌دهد. این‌ها را روی نمونه‌ی واقعی اندازه بگیر و در گزارش بنویس.

بلوک دیاگرام: قلب فصل طراحی

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

بلوکسؤالی که جواب می‌دهدنمونه در گلخانه
ورودی‌ها (سنسورها)دستگاه از دنیا چه چیزی را حس می‌کند؟رطوبت خاک، DHT22، LDR
پردازشکدام میکروکنترلر و چه منطقی؟ESP32، ماشین حالت با هیسترزیس
خروجی‌ها (عملگرها)دستگاه چه کاری انجام می‌دهد؟رله‌ی پمپ، رله‌ی فن، LED رشد
رابط کاربرکاربر چطور می‌بیند و فرمان می‌دهد؟صفحه‌ی وب، LCD، دکمه
ارتباطاتبا چه چیزی و با چه پروتکلی حرف می‌زند؟وای‌فای، HTTP، MQTT
تغذیهبرق از کجا می‌آید و هر بخش چقدر جریان می‌کشد؟آداپتور ۱۲ ولت، رگولاتور ۵ و ۳٫۳ ولت

بخش تغذیه را جدی بگیر؛ بیشتر پروژه‌هایی که روز دفاع ریست می‌شوند، مشکلشان تغذیه‌ی موتور یا رله از همان پایه‌ی ۵ ولت برد است. ابزار محاسبه‌ی عمر باتری برای پروژه‌های باتری‌دار به کار می‌آید.

اسکلت کد پیشنهادی

کد پروژه‌ی پایانی باید خوانا و قابل توضیح باشد. این اسکلت برای آردوینو اونو نوشته شده و سه قانون را رعایت می‌کند: بدون delay طولانی، هر کار در تابع خودش، و وضعیت دستگاه در یک ماشین حالت. سنسور و خروجی خودت را جای مثال‌ها بگذار.

// Final-project skeleton: non-blocking tasks + a small state machine.
const int SENSOR_PIN = A0;
const int OUTPUT_PIN = 7;
const int LED_PIN = 13;

enum State { IDLE, ACTIVE, FAULT };
State state = IDLE;

int sensorValue = 0;
const int ON_LEVEL  = 600;   // hysteresis: switch on above this
const int OFF_LEVEL = 500;   // and off below this

unsigned long lastRead = 0, lastLog = 0, lastBlink = 0;

void readSensors() {
  sensorValue = analogRead(SENSOR_PIN);
}

void updateState() {
  if (sensorValue < 5 || sensorValue > 1018) { state = FAULT; return; }  // wire cut or shorted
  if (state != ACTIVE && sensorValue > ON_LEVEL) state = ACTIVE;
  else if (state != IDLE && sensorValue < OFF_LEVEL) state = IDLE;
}

void applyOutputs() {
  digitalWrite(OUTPUT_PIN, state == ACTIVE ? HIGH : LOW);
}

void logData() {
  Serial.print("value:");
  Serial.print(sensorValue);
  Serial.print(" state:");
  Serial.println(state);
}

void setup() {
  Serial.begin(9600);
  pinMode(OUTPUT_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  unsigned long now = millis();
  if (now - lastRead >= 100) { lastRead = now; readSensors(); updateState(); applyOutputs(); }
  if (now - lastLog >= 1000) { lastLog = now; logData(); }
  if (now - lastBlink >= 500) {          // heartbeat LED: the program is alive
    lastBlink = now;
    digitalWrite(LED_PIN, digitalRead(LED_PIN) == HIGH ? LOW : HIGH);
  }
}

خروجی logData به شکل نام:عدد است تا در نمودار سریال رسم شود و تصویرش مستقیم به فصل نتایج برود. وضعیت FAULT هم یک نکته‌ی امتیازآور است: نشان می‌دهد به خرابی سنسور فکر کرده‌ای. برای کار با سریال مانیتور و نمودار، سریال مانیتور و پلاتر را ببین.

زمان‌بندی یک ترم

هفتهکار
۱ تا ۲انتخاب موضوع، فرم تعریف پروژه، تأیید استاد راهنما و برد
۳ تا ۴مطالعه، کارهای مشابه، بلوک دیاگرام و انتخاب قطعه
۵ تا ۷شبیه‌سازی مدار و کد، تست جداگانه‌ی هر ماژول
۸ تا ۱۰خرید قطعه، ساخت روی بردبورد، تست واقعی
۱۱ تا ۱۲یکپارچه‌سازی، بدنه یا ماکت، PCB در صورت نیاز
۱۳ تا ۱۴آزمایش‌ها و جمع‌آوری عدد، نوشتن گزارش
۱۵ تا ۱۶اسلاید، فیلم پشتیبان، تمرین دفاع

فصل‌بندی گزارش پروژه

هر دانشگاه قالب خودش را دارد، پس اول قالب دانشکده‌ات را بگیر. ولی ساختار رایج گزارش پروژه‌ی کارشناسی در ایران تقریباً این است:

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

ارائه و دفاع

سؤال‌هایی که تقریباً همیشه پرسیده می‌شوند:

۱۲ موضوع پیشنهادی با سطح سختی

#موضوعبردقطعه‌های اصلیسختی
۱گلخانه‌ی هوشمند با پایش وبESP32رطوبت خاک، DHT22، رلهمتوسط
۲سیستم اعلام حریق و نشت گاز چندسطحیآردوینوMQ-2، سنسور دما، بازر، رلهمتوسط
۳پارکینگ هوشمند با شمارش ظرفیتآردوینودو اولتراسونیک، سروو، LCDمتوسط
۴قفل هوشمند RFID و کیپد با ثبت ورودآردوینو یا ESP32RC522، کیپد ۴×۴، EEPROMمتوسط
۵دیتالاگر چندکاناله با SD و ساعت واقعیآردوینوکارت SD، DS3231، سنسورهامتوسط
۶کنترل دمای انکوباتور با PIDآردوینو یا ESP32DHT22 یا DS18B20، گرم‌کن، ماسفتسخت
۷ردیاب خورشید دومحوره و مقایسه‌ی توانآردوینوچهار LDR، دو سروو، پنلسخت
۸ربات مسیریاب با کنترل PIDآردوینوسنسورهای مادون قرمز، L298N، موتورسخت
۹بازوی رباتیک با ضبط و پخش حرکتآردوینوچهار سروو، پتانسیومتر، EEPROMسخت
۱۰خانه‌ی هوشمند چندبردی با MQTTESP32چند ESP32، رله، سنسورهاسخت
۱۱سامانه‌ی حضور و غیاب RFID با وب‌سرورESP32RC522، RTC، LittleFSسخت
۱۲کنتور هوشمند مصرف برقESP32سنسور جریان ACS712 یا PZEM، نمایشگرخیلی سخت

چند نکته درباره‌ی این فهرست: موضوع ۱ تا ۳ را با کد کامل نوشته‌ایم: گلخانه هوشمند با ESP32، اعلام حریق با آردوینو و پارکینگ هوشمند. این‌ها نقطه‌ی شروع‌اند، نه پروژه‌ی تحویلی؛ لایه‌ی «خوب» و «عالی» و آزمایش‌ها باید کار خودت باشد. برای موضوع ۷ و ۶ پروژه‌های آماده‌ی ردیاب خورشید و کنترل دما با فن (PID) را ببین و برای موضوع ۸، ربات مسیریاب. موضوع ۱۲ با برق شهر سروکار دارد؛ بخش ولتاژ بالا را فقط با نظارت استاد آزمایشگاه بساز. ایده‌های بیشتر در ۳۰ ایده پروژه اینترنت اشیا است.

اشتباه‌های رایج دانشجوها

طراحی پروژه‌ات را در شبیه‌ساز شروع کن 🎓

سؤال‌های رایج

آیا استاد راهنما پروژه با آردوینو را قبول می‌کند؟

بستگی به دانشکده دارد. بیشتر استادها مشکلی با آردوینو یا ESP32 ندارند به شرطی که سهم طراحی خودت روشن باشد: محاسبات، ماشین حالت، آزمایش و تحلیل نتایج. قبل از شروع این را صریح بپرس و اگر AVR یا STM32 خواستند، همان منطق را روی آن پیاده کن.

چقدر زمان برای پروژه‌ی پایانی لازم است؟

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

شبیه‌سازی کافی است یا باید نمونه‌ی واقعی بسازم؟

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

درباره‌ی نویسنده:

مربی رباتیک با پانزده سال سابقه در آموزش رباتیک، روبوکاپ و فیراکاپ و بنیان‌گذار آموزشگاه نوین ذهن.

مقاله‌های مرتبط

🏫

پروژه مدرسه با آردوینو: ایده‌های مناسب هر سن، ارائه در جشنواره و نمایشگاه علمی، و نکته‌های ایمنی

🌱

گلخانه هوشمند با ESP32: آبیاری خودکار، فن، نور و صفحه‌ی وب (کد کامل)

🔥

سیستم اعلام حریق با آردوینو: سنسور گاز MQ-2، سنسور دما، آژیر و ریست (کد کامل)

📶

وصل شدن ESP32 به وای‌فای و گرفتن IP در شبیه‌ساز

همه‌ی آموزش‌های پروژه‌ها و ایده‌ها ← · همه‌ی مقاله‌ها