آردوینو آموزش آردوینو پروژه های آردوینو کیت آردوینو

آموزش ساخت چراغ خطر راهنمایی رانندگی Traffic Light با برد آردوینو

Traffic-Light-Arduino-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 

 

چراغ راهنمایی رانندگی Traffic Light

چراغ راهنمایی در کشورهای مختلف با نام‌های مختلف مانند سیگنال ترافیکی Traffic Signals ، لامپ ترافیکی Traffic ، چراغ استپ Stop Light و سیگنال های کنترل ترافیک Traffic Control Signals شناخته می‌شوند. از کاربردهای چراغ راهنمایی می‌توان برای کنترل ترافیک و عبور مرور وسایل نقلیه و عابرین پیاده و نظم بخشیدن به کنترل تردد در شهرها و جاده‌ها نام برد. هوشمند سازی شهرها، کنترل دقیق عبور و مرور شهری و کنترل تردد شهری بسیار اهمیت دارد. همچنین ایجاد نظم از المان‌های زندگی شهری و ایجاد آرامش برای شهروندان است.

 

تاریخچه چراغ راهنمایی Traffic Light

اولین چراغ راهنمایی توسط JP Knight در سال ۱۸۶۸ در لندن اختراع شد. در واقع اولین چراغ راهنمایی مقابل ساختمان پارلمان نصب شد. طبق گفته‌ها این چراغ راهنمایی دارای بازوی متحرک بود و هنگامی که هر دو بازو در طرفین قرار می‌گرفتند. به معنی Stop بود و همچنین از یک چراغ گازی که دارای دو رنگ سبز و قرمز بود استفاده می‌شد و سبب مشکلات بسیار زیادی بود. اینکار به صورت دستی انجام می‌گرفت و در نهایت منجر به منفجر شدن چراغ گازی شد که در آن یک مامور پلیس به شدت آسیب دید. ایده‌ی اولیه انتخاب رنگ چراغ راهنمایی از راه آهن برداشته شده بود که به جای رنگ سفید، رنگ زرد جایگزین آن شد و کمی تغییر در علائم مربوط به هر رنگ ایجاد شد. در اوایل دهه‌ی ۱۹۰۰، جهان به سرعت در حال توسعه بود و شهرهای بزرگ در حال پیشرفت و صنعتی شدن پیش می‌رفتند. در نتیجه شهرها روز به روز شلوغ‌تر و پرترددتر می‌شد. با اختراع خودروها، ترافیک در جاده‌ها و خیابان‌ها به شدت افزایش یافت و نیاز به یک سیستم هوشمند ترافیکی کاملا حس می‌شد. در نهایت در سال ۱۹۱۲ یک پلیس، چراغ راهنمایی الکترونیکی طراحی کرد. چراغ راهنمایی که توسط این پلیس طراحی شده بود تنها دارای ۲ رنگ قرمز و سبز بود و از رنگ زرد استفاده نشده بود. از ویژگی دیگر این چراغ بازری بود که به هنگام تغییر سیگنال آلارم جهت هشدار ارسال می‌کرد.

چراغ راهنمایی رانندگی کنترل ترافیک -دیجی اسپارک

توسعه چراغ راهنمایی Traffic Light

در سال ۱۹۲۰ پلیس دیگری به نام williams potts، اولین چراغ راهنمایی سه رنگ و ۴ طرفه را اختراع کرد. در این طراحی کنار رنگ قرمز و سبز از رنگ زرد استفاده شد. در آن سال چراغ ۴ طرفه در بسیاری از شهرهای بزرگ نصب شد. در آن سال‌ها مخترع دیگری چراغی طراحی کرد که دارای میکروفن بود و هنگامی که صدایی شبیه به وسایل نقلیه را دریافت می‌کرد، چراغ راهنمایی فعال می‌شد. طبیعتا میکروفن‌ها حساس به صداهای کوچک و بزرگ بودند و مشکلات بسیاری در عبور و مرور به وجود می‌آمد. سال‌های بعد با پیشرفت تکنولوژی و سیستم‌های کامپیوتری کنترل چراغ‌های راهنمایی و رانندگی و تغییر سیگنال و نظارت بر عملکرد چراغ راهنمایی از طریق مانیتورینگ انجام می‌شد. این موضوع سبب بهبود وضعیت ترافیک و کنترل دقیق عبور و مرور وسایل نقیله و حتی عابران پیاده را در برداشت. در حال حاضر با پیشرفت قابل چشمگیر تکنولوژی و بردهای کامپیوتری و حضور بردهای امبدد در این زمان، باید هر روز و هر ساعت منتظر خلق ایده‌ای جدید و جذاب در کنترل سیستم هوشمند شهری باشیم. شاید تصور اینکه قبل از نزدیک شدن به چراغ‌های راهنمایی سیگنال‌های نزدیک‌ترین چراغ را بر روی مانیتور اتومبیل و یا تلفن هوشمند خود دریافت کنیم، خیلی دور از ذهن نباشد.

 

معرفی پروژه چراغ خطر آردوینو

در این آموزش هدف طراحی یک چراغ راهنمایی Traffic Light و شبیه سازی آن از طریق برد آردوینو Arduino است. در واقع با استفاده از ۶ عدد ال ای دی LED و برد آردوینو Arduino یک چراغ راهنما Traffic Light طراحی می‌کنیم. بسیار ساده و جذاب است و می‌توانید به راحتی پیاده سازی کنید. برای تحلیل آسان‌تر تنها دو سمت از یک چهارراه فرضی را در نظر گرفته و در انتها با تغییر در کدهای برنامه می‌توانید تعداد ال ای دی را افزایش دهید. در ادامه به بررسی اتصالات و کد برنامه خواهیم پرداخت و همچنین کدها را مرحله به مرحله بررسی خواهیم کرد.

چراغ راهنمایی رانندگی با آردوینو aRDUINO - دیجی اسپارک

وسایل مورد نیاز

برد آردوینو UNO با  تراشه اورجینال – Arduino UNO R3

شیلد آردوینو پروتوتایپ –  Arduino Shield Uno Prototype

ال ای دی RGB 

کابل فلت نری به نری 

 

اتصالات مدار چراغ راهنما

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

  • پایه سیگنال ( پایه بلند ) ال ای دی قرمز سمت چپ را به پایه ۱ آردوینو اتصال دهید.
  • پایه سیگنال ( پایه بلند ) ال ای دی زرد سمت چپ را به پایه ۲ آردوینو اتصال دهید.
  • پایه سیگنال ( پایه بلند ) ال ای دی سبز سمت چپ را به پایه ۳ آردوینو اتصال دهید.
  • پایه های کوتاه – GND هر سه ال ای دی را به زمین – GND آردوینو اتصال دهید.
  • پایه سیگنال ( پایه بلند ) ال ای دی قرمز سمت راست را به پایه ۸ آردوینو اتصال دهید.
  • پایه سیگنال ( پایه بلند ) ال ای دی زرد سمت راست را به پایه ۹ آردوینو اتصال دهید.
  • پایه سیگنال ( پایه بلند ) ال ای دی سبز سمت راست را به پایه ۱۰ آردوینو اتصال دهید.
  • پایه های کوتاه – GND  هر سه ال ای دی را به زمین – GND آردوینو اتصال دهید.

 

کد برنامه چراغ راهنمایی رانندگی

 

نکته مهم

اگر شیوه آپلود کدها را در آردوینو نمی‌دانید، به آموزش کار با برد آردوینو Arduino و نصب نرم افزار Arduino IDE مراجعه کنید. با توجه به اینکه هر دو چراغ قرمز سمت راست و چراغ سبز سمت چپ و برعکس در یک زمان خاموش و روشن می‌شوند، در کدها نیاز به ترتیب خاصی نیست و بدون اولویت تعریف خواهند شد. همچنین زمانبندی و تعریف تاخیر – Delay در کدها کاملا اختیاری است.

اتصالات مدار چراغ راهنمایی رانندگی با آردوینو - دیجی اسپارک

توضیح کد چراغ خطر Traffic Light

در ابتدا طبق اتصالات گفته شده در آمورش اتصالات ال ای دی ها را انجام دهید. حال کد را در نرم افزار آردوینو کپی کرده و سپس کامپایل کنید. همانطور که در شروع آموزش گفته شد، ال ای دی ها در دو سمت چپ و راست در یک خط قرار گرفته اند. دقت داشته باشید که نحوه ی قرار گرفتن ال ای دی ها اهمیتی ندارد و تنها برای تحلیل دقیق آن ها را در دو سمت متفاوت بر روی شیلد پیاده سازی کرده ایم. حال پس از کامپایل برنامه، در ابتدا ال ای دی قرمز سمت چپ روشن و در طرف دیگر ال ای دی سبز سمت راست روشن است. پس از گذشت ۹ ثانیه ال ای دی قرمز سمت چپ خاموش شده و سپس ال ای دی سبز سمت راست خاموش می‌شود و سپس ال ای دی زرد سمت راست روشن خواهد شد. حال پس از گذشت ۵ ثانیه ال ای دی قرمز سمت راست روشن شده و در طرف دیگر ال ای دی سبز سمت چپ روشن خواهد شد. در این مرحله پس از گذشت ۷ ثانیه ال ای دی سبز سمت چپ خاموش شده و ال ای دی زرد سمت چپ روشن خواهد شد. در نهایت پس از گذشت ۵ ثانیه، ال ای دی زرد سمت چپ خاموش شده و ال ای دی قرمز سمت چپ روشن خواهد شد. این حلقه ال ای دی مداوم تکرار شده و شما به راحتی یک چراغ خطر – Traffic Light طراحی کرده اید.

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۴ دیدگاه

  • سلام خانوم مهندس
    خیلی آموزش جالب و جامعی بود ازتون ممنونم، حالا اگر من بخوام چراغ خطر ۴ تایی برای یه چهارراه بسازم، میشه راهنمایی کنید چه اقدامی بکنم؟

    • سلام
      از توجه شما ممنونم.
      ابتدا با توجه به اینکه کد ها را کامل توضیح داده ام، تمام مراحل کدها را تحلیل کنید. سپس باید تعداد ال ای دی هاذ را تعمیم دهید و ۱۲ ال ای دی در کدها تعریف کنید و در دستورات void setup و void loop طبق توضیحات بنده در کدها برای هر ال ای دی وضعیت Low و High را تعریف کنید. پیشنهاد میشود کامل کدهای آموزش را با توجه به تحلیل فارسی آن مطالعه کنید و سپس تعمیم دهید.

    • سلام
      از توجه شما ممنونم
      در این پست هدف آموزش زمانبندی و ترتیب آن در کد برنامه است. پیشنهاد شما هم بسیار جالب است و میتوان به همین کد تعمیم داد.

  • بسیار عالی
    خانم مهندس اگر بخواهم تعیین کنم که در ساعت ۶ الی ۷ صبح چراغ زرد چشمک زن باشه میشه چیکار باید بکنم ؟ قطعه دیگری نیاز است یا باید برنامه نویسی کنم ؟

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

  • سلام با تشکر از آموزش مفید شما بنده با کمک این آموزش شما و مقداری تغییر در کدها توانستم یک ال ای دی بارگراف ۱۰ تایی را به صورت یکی پس از دیگری و به ترتیب، روشن و خاموش کنم. این هم کدهاش:

    int led1 = 1;
    int led2 = 2;
    int led3 = 3;
    int led4 = 4;
    int led5 = 5;
    int led6 = 6;
    int led7 = 7;
    int led8 = 8;
    int led9 = 9;
    int led10 = 10;
    void setup()
    pinMode (led1, OUTPUT);
    pinMode (led2, OUTPUT);
    pinMode (led3, OUTPUT);
    pinMode (led4, OUTPUT);
    pinMode (led5, OUTPUT);
    pinMode (led6, OUTPUT);
    pinMode (led7, OUTPUT);
    pinMode (led8, OUTPUT);
    pinMode (led9, OUTPUT);
    pinMode (led10, OUTPUT);
    }

    void loop() {
    digitalWrite(led1, HIGH);
    digitalWrite(led10, LOW);
    delay(4000);
    digitalWrite(led2, HIGH);
    digitalWrite(led1, LOW);
    delay(4000);
    digitalWrite(led3, HIGH);
    digitalWrite(led2, LOW);
    delay(4000);
    digitalWrite(led4, HIGH);
    digitalWrite(led3, LOW);
    delay(4000);
    digitalWrite(led5, HIGH);
    digitalWrite(led4, LOW);
    delay(4000);
    digitalWrite(led6, HIGH);
    digitalWrite(led5, LOW);
    delay(4000);
    digitalWrite(led7, HIGH);
    digitalWrite(led6, LOW);
    delay(4000);
    digitalWrite(led8, HIGH);
    digitalWrite(led7, LOW);
    delay(4000);
    digitalWrite(led9, HIGH);
    digitalWrite(led8, LOW);
    delay(4000);
    digitalWrite(led10, HIGH);
    digitalWrite(led9, LOW);
    delay(4000);
    }

    • سلام
      از توجه شما ممنونم.
      پروژه بسیار جالبی است. در صورت تمایل میتوانید با ایجاد یک حساب کاربری در سایت، پروژه خود را با نام خودتان منتشر کنید. برای اطلاعات بیشتر لینک زیر را بررسی کنید.
      همکاری