نمایش نتایج: از 1 به 10 از 27
Like Tree7 لایک

موضوع: کنترل دما و رطوبت با اردوینو Uno ؟؟؟

Threaded View

  1. #5
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط Smead نمایش پست ها
    سلام، وقت بخیر
    من تو مبحث اردوینو مبتدی هستم و چیز زیادی بلد نیستم ولی برای یک کاری به شدت به اردوینو نیاز دارم.

    بزارین اول با یک سوال شروع کنم... میشه با اردوینو Uno چند کار همزمان انجام داد؟ یعنی چند برنامه بدی بهش و برات چند کار همزمان انجام بده؟
    اولین و مهم ترین کاری که میخوام انجام بده کنترل رطوبت و دما با سنسور DHT11 و نمایش دما و رطوبت روی صفحه نمایش OLED تک رنگ هستش و اینکه دما و رطوبتو در یک حد مشخصی نگهداره. یعنی به دوتا رله که یکی برای رطوبت ساز هست و یکی دیگه فن متصل بشه و وقتی دما و رطوبت بالا رفت فن شروع کنه به کار کردن و وقتی رطوبت از 75% پایینتر اومد رطوبت ساز رو فعال کنه و فن خاموش باشه.
    از اونجایی که تو کد نویسی اردوینو حرفه ای هستم... رفتم سایت های خارجی و یه چرخ زدم و سورس کد وکتابخانه اینو پیدا کردم به شرح زیر(البته دارم سعی میکنم یاد بگیرم ولی این مورد اضطراریه) :
    کد:
    #include <U8glib.h>  // U8glib library
    #include <dht.h>     // DHT library
    
    #define dht_apin A5  // Analog pin to which the sensor is connected
    dht DHT;
                   /*Uncomment and comment*/
    U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8);  // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    
    void draw(void) 
    {
       u8g.setFont(u8g_font_fub17r);   // select font
       u8g.drawStr(0, 20, "Temp: ");   // put string of display at position X, Y
       u8g.drawStr(0, 60, "Hum: ");
       u8g.setPrintPos(72, 20);        // set position
       u8g.print(DHT.temperature, 0);  // display temperature from DHT11 in Celsius
       u8g.println("C"); 
       u8g.setPrintPos(60, 60);        // set position
       u8g.print(DHT.humidity, 0);     // display humidity from DHT11
       u8g.println("%");
    }
    void setup(void) 
    {
    
    }
    
    void loop(void)
    {
       DHT.read11(dht_apin);  // Read apin on DHT11
       u8g.firstPage();  
       do 
    {
       draw();
    }  while( u8g.nextPage() );
       delay(2000);  // Delay of 2 sec before accessing DHT11 (min - 2sec)
    }
                               /*END OF FILE*/
    این برای همون سنسور و صفحه نمایش هست ولی مشکلی که داره اینه که هیچ کنترلی بر دما و رطوبت نداره، یعنی براش تعریف نشده که وقتی رطوبت بالای 80% رسید (ینی همون مقدار max سنسور) یا دما بالا رفت رله 1 رو فعال کنه تا درصد بیاد پایین و همینطور کمتر شدنی رله 2 رو فعال کنه....
    ممنون میشم کمکم کنید اینم اضافه کنم، ولتاژ خود دستکاه ها که ربطی به مشخصات رله نداره؟ 220 هم باشه روشن میکنه؟

    کارهای دیگه ای که میخوام انجام بده؛ اضافه کردن یک تایمر برای کنترل رله سوم که برای دستگاه دیگه هست. (روشن کردنش در بازه زمانی مشخص و طولانی مثلا ماهی دوبار به مدت 1 دقیقه)

    و اخری وصل شه به سنسور فتوسل که رله 4 رو کنترل کنه برای کنترل لامپ و روشنایی. شب خاموش شه، روز روشن شه
    با فعال شدن هر کدوم از عملیات هم رو صفحه OLED اهمی چیزی بنویسه.
    و دوتا کلید هم باشه که یکیش خودش روشن شه و دیگری باهاش چیز دیگه رو روشن کنیم و واسه ایناهم نوشته بیاد.
    امکانش هست همچین چیزی؟ یا باید چندتا اردوینو بگیرم؟ بنظرم تعداد پین هاش کفایت میکنه
    پیشاپیش ممنونم.
    علیک سلام
    بستگی به تعریفت از همزمانی داره ، یه موقع هست واقعا دوتا کار همزمان انجام میشن اما یه مواقعی هم هست اون دوتا کار تو بازه های زمانی کوتاه و در کنار هم دارن انجام میشن و به نظر میاد واقعا همزمان هستن (وقتی زیاد بهش فکر میکنم گیج میشم )
    آردوینو توی هر بازه زمانی میاد اون دستوراتی که تو بهش میدی رو انجام میده و از اونجایی که تو این دستورات رو معمولا تو یه حلقه تکرار میذاری (loop) هی پشت سر هم اون کارا رو میکنه و از اونجایی که سرعتش نسبتا بالاس به نظر میاد داره اون کار ها رو با هم انجام میده ، تصور کن آردوینو مثل یه آدم کاراش رو انجام میداد و میتونستی سرعتش رو کم کنی ، اول میرفت سنسور رطوبت رو میخوند بعد دما رو بعد میومد نگاه میکرد ببینه حد مجاز مقادیر چقدره بعد قکر میکرد و مقایسه میکرد مقدار ها رو با حد مجاز بعدم تصمیم میگرفت و دستگاه خنک کننده یا گرم کننده رو روشن میکرد حالا همین رو سرعتش رو ببر بالا توی بازه های خیلی کوچیک این کار رو میکنه و چون ما اونقدر سریع نمیبینیم به نظرمون میاد داره همه کار ها رو با هم میکنه
    در مورد کاری هم که میخوای بکنی همین کدی که از brainy کپی کردی خیلی خوبه هرچی هم کم داشت فکر کن خودت جای آردوینو بودی چیکار میکردی و همونو کد کن
    موفق باشی
    اگه مشکل داشتی یه سر بزن به وبلاگ آموزش آردوینو وبلاگ آردوینو | تازه ترین های آردوینو و دنیای فن آوری
    ویرایش توسط siib : 04-21-2016 در ساعت 02:44 PM

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO