آردوینو پروژه های آردوینو

سیستم کنترل ترافیک هوشمند از طریق اینترنتی چراغ راهنمایی با آردوینو

نوشته شده توسط معین صابری

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

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

 


نقش اینترنت اشیا در شهر هوشمند


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

 

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

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

 


برد آردوینو UNO


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

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

 


ماژول وای فای ESP8266


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

برد ESP8266 در پروژه کنترل ترافیک هوشمند آردوینو - دیجی اسپارک

 


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


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

آموزش اتصال آردویینو به تلویزیون از طریق کابل AV(لینک آموزش-کلیک کنید)

آموزش طراحی پلتفرم اینترنت اشیا(وب سایت)-قسمت اول-طراحی وب سایت(لینک آموزش-کلیک کنید)

آموزش طراحی پلتفرم اینترنت اشیا(وب سایت)-قسمت دوم-سخت افزار(لینک آموزش-کلیک کنید)

 


شماتیک و اتصالات


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

شماتیک پروژه کنترل ترافیک هوشمند با آردوینو - دیجی اسپارک

در ادامه، جهت اتصالات مدار، ماژول ESP8266 را به صورت زیر، به برد آردویینو UNO متصل نمایید.

پایه VCC ماژول به پایه ۳٫۳ آردویینو

پایه  GND ماژول به یکی از پایه های GND آردویینو

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

همانطور که پیشتر گفته شد، در این پروژه، دو LED، یکی نماد چراغ سبز و دیگری نماد چراغ قرمز خواهد بود. این چراغ ها، به پایه های GPIO  شماره ۲ و ۳ آردویینو متصل می شوند. بنابراین، هر کدام از این پایه ها را به یکی از LED ها متصل نمایید. سپس یک مقاومت یک کیلو اهمی در مسیر بین LED و GPIO، قرار داده و پایه دیگر LED را به زمین مدار متصل نمایید. برای اتصال آردویینو به تلویزیون، از شماتیک زیر استفاده نمایید.

 

مطابق مدار فوق، جهت اتصال آردویینو به فیش و یا کابل AV، به صورت زیر عمل کنید. همچنین برای اطلاعات بیشتر، آموزش اتصال آردویینو به تلویزیون را مطالعه نمایید.

قسمت منفی کابل یا فیش به یکی از پایه های GND آردویینو متصل شود.(معمولا در کابل ها، قسمت بدون روکش، منفی است).

پایه GPIO 7 به کمک یک مقاومت ۴۷۰ اهمی به قسمت مثبت فیش AV متصل شود( در صورت عدم وجود مقاومت ۴۷۰ اهمی، می توانید دو مقاومت یک کیلویی را موازی کنید)

پایه GPIO 9 به کمک یک مقاومت یک کیلو اهمی به قسمت مثبت فیش AV متصل شود.

برای اتصال آردویینو به تلویزیون، می توانید از تصویر زیر نیز استفاده کنید.

 

 


کد چراغ راهنمایی هوشمند UNO


در این قسمت، کدهای پروژه، بخش آردویینو UNO را مشاهده می نمایید. کدها را کپی و آپلود نمایید.

#include <TVout.h> //فراخوانی کتابخانه تلویزیون
#include <fontALL.h>  //فراخوانی کتاب خانه فونت
#define Red 2   //تعیین gpio2 به عنوان چراغ قرمز
#define Green 3  //تعیین پایه شماره ۳ به عنوان چراغ سبز
TVout TV;
void setup() {
  TV.begin(PAL);  //انتخاب تکنولوژی  pal 
  delay(1000);
  TV.select_font(font6x8);  //تنظیم فونت
  TV.clear_screen();  
  Serial.begin(115200);  //
  pinMode(Red, OUTPUT);  //تعیین پایه قرمز به عنوان خروجی
  pinMode(Green, OUTPUT);  //تعیین پایه سبز به عنوان خروجی
  digitalWrite(Red, LOW);
  digitalWrite(Green, LOW);
}

void loop() {
  String data = "";  //متغیر جهت دریافت داده های ارسالی  از سوی ماژول وای فای
  char msg[20];   //متغیر جهت نمایش پیام منی ارسالی از سوی سرور در تلویزیون، برای نمایش رشته در تلویزین، می بایست از آرایه ای از کاراکترها استفاده نماییم
  if (Serial.available() > 0 ) {   //در صورتیکه داده ای از ماژول در پورت سریال سخت افزاری دریافت کنیم، داده را خوانده و نمایش می دهیم. همچنین، وضعیت چراغ در داده وجود دارد.
    data = Serial.readString();  //دریافت و ذخیره داده پورت سریال
    if (data.charAt(0) == '0') {     //وضعیت چراغ قرمز یا سبز، در اولین کاراکتر رشته ارسالی از سوی ماژول قرار دارد. در صورتیکه این مقدار صفر باشد چراغ قرمز و اگر یک باشد، چراغ سبز خواهد بود.
      digitalWrite(Red, HIGH);
      digitalWrite(Green, LOW);
    }
    else {
      digitalWrite(Red, LOW);
      digitalWrite(Green, HIGH);

    }
    // پیام ارسالی از سوی سرور که از طریق پورت سریال دریافت می شود، به فرمت زیر است:
    //LED+MESSAGE
    //به عنوان مثال، پیام ارسالی به صورت زیر است:
    //۰salam
    //در پیام فوق، کاراکتر نخست بیانگر  وضعیت چراغ است. از این کاراکتر به بعد، یعنی خانه شماره یک رشته به بعد، پیام متنی ارسال شده از سوی سرور قرار می گیرد.
    data.substring(1).toCharArray(msg, 20);  // به کمک تابع substring، از خانه شماره یک به بعد رشته که پیام متنی در آن ذخیره شده را با تابع toCharArray به ارایه ای زا کاراکتر ها تبدیل می نماییم.
    TV.print(10, 10, msg);  //نمایش پیام در موقعیت ۱۰و۱۰ صفحه نمایش
    Serial.print(data);
    Serial.flush();
  }
}

 

 


کد وای فای چراغ راهنمایی هوشمند


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

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
//************************************************************************************
const char* ssid = "ssid"; //در این قسمت نام ssid و یاهمان نام وای فای خود را قرار دهید
const char* password = "passwd"; //در این قسمت رمز وای فایی که قرار است ماژول متصل شود را قرار دهید
void setup () {
  Serial.begin(115200); //تنظیم پورت سریال
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print("Connecting..");
    Serial.flush();


  }

}

void loop() {
  String tmp = "tmp=";  //برای ایجاد درخواست از نوع post، می بایست یک متغیر به نام tmp به سرور ارسال نماییم. سرور با دریافت متغیر tmp، وضعیت چراغ و پیام متنی را به مار ارسال م ینماید.
  String payload = "";//پیام دریافت یاز سرور که شامل وضعیت چراغ و پیام متنی که می بایست در تلویزیون نمایش داده شود، در این متغیر قرار می گیرد.
  //********************************************************************************
  HTTPClient http;    //ایجاد یک شی از کتابخانه httpclient
  http.begin("http://example.com/data_st.php");       //ایجاد url برای ارسال داده ها به جای عبارت example.com، نام دامنه خود را قرار دهید.
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");  //تعیین نوع هدر متد post
  int httpCode = http.POST(tmp);   //ارسال درخواست به سرور با متغیر tmp
  payload = http.getString();                  //دریافت جواب از سرور که شامل وضعیت رله و پیام متنی است
  http.end(); //بستن کانکشن تا بتوانیم دفعه بعدی، مجددا داده ارسال نماییم.
  //**********************************************************************************
  if (payload != "")  //در صورتیکه پیغامی از سرور دریافت نمودیم، آن را از طریق پورت سریال برای آردویینو ارسال می نماییم
    Serial.println(payload);
  Serial.flush();
  delay(1500);  //تاخیر ۱٫۵ ثانیه ای برای اینکه اردویینو uno فرصت کافی برای دریافت و پردازش پیام های ارسالی را داشته باشد.

}

 


کد وب سرور چراغ راهنمایی هوشمند


در این قسمت به کدهای وب سایت می پردازیم. همانطور که گفته شد، از طریق وب سایت علاوه بر تعیین وضعیت چراغ سبز و یا قرمز، می توانیم یک پیام متنی که می تواند شامل وضعیت راه و یا تبلیغات باشد، ارسال نماییم. برای این منظور، پس از تهییه هاست و دامین( هاست از نوع لینوکس)، آموزش زیر را به طور کامل مطالعه نمایید.

آموزش طراحی سایت(پلتفرم) اینترنت اشیا

 


اجرای پروژه چراغ راهنمایی هوشمند


در این قسمت به اجرای پروژه چراغ راهنمایی هوشمند با قابلیت کنترل از راه دور می پردازیم. همانطور که بیان شد، به کمک این پروژه، علاوه بر کنترل چراغ سبز و یا قرمز، می توان از راه دور یک پیام متنی(شامل تبلیغات و یا وضعیت راه ها) را ارسال و در نمایشگر، نمایش داد. به همین منظور، پس از آپلود کدها در وب سایت، وارد آن می شویم. سپس در قسمت متن، یک پیام متنی تایپ می نماییم. ما در اینجا عبارت DIGISPARK.IR را در وب سایت ثبت کرده ایم.

پروژه کنترل ترافیک هوشمند با آردوینو - دیجی اسپارک

پس از چند لحظه، پیام ارسالی از سوی سرور، بر روی تلویزیون، نمایش داده می شود.

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

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

 


تحلیل کدهای پروژه چراغ هوشمند


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

۱-ثبت پیام متنی و وضعیت چراغ در سرور

۲- اتصال ماژول ESP به اینترنت و دریافت داده از سرور

۳-ارسال داده از طریق پورت سریال به آردویینو UNO 

۴-جداسازی داده، تنظیم چراغ و ارسال پیام متنی به تلویزیون جهت نمایش

 


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


برد آردویینو UNO

ماژول وای فای ESP-01 و یا  ESP-12E

مقاومت

کابل AV

چراغ LED

 


جمع بندی


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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

۲ دیدگاه

  • سلام و خسته نباشید من تا به حال مدل Esp استفاده شده توسط شما را ندیدم
    آیا امکان اجرای این پروزه با همین nodemcu هایی که خریدیم و داریم هست؟

    • سلام
      esp استفاده شده در این پروژه، esp8266-12e هست. اما برای نمایش پیام های ارسالی از سرور بر روی تلویزیون، نیاز به برد آردویینو uno و یا mega دارید.