نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
Avatar

پروژه کنترل و مانیتورینگ دما با ds18b20 و sim800c

سلام به همه دوستان : امروز میخوایم در مورد ” پروژه کنترل و مانیتورینگ دما با ds18b20 و sim800c ” صحبت کنیم، شاید خیلی وقت ها  شده باشه که خارج از خونه باشید و بخواید ببینین دمای اتاقتون یا هال یا پذیرایی چقدره یا اگر دما از یه حدی بالاتر رفت از راه دور به شما خبر بده، اگر دنبال همچین چیزی هستین شاید مطلب امروز مفید باشه؛ روند کاری این سیستم اینجوریه که این سیستم یه سیم کارت میخوره و شما به شماره دستگاه زنگ میزنین، دستگاه تماس شما رو در کمال احترام!!!!!!!!! قطع میکنه و چند ثانیه بعد دمای اندازه گیری شده رو به شما اس ام اس میکنه؛ خیلی سرتون رو درد نیارم و بریم سر اصل مطلب.
پروژه کنترل و مانیتورینگ دما با ds18b20 و sim800c

پروژه کنترل و مانیتورینگ دما با ds18b20 و sim800c


 

اجزای پروژه مانیتورینگ دما با avr

  1. سنسور دمای دیجیتال ds18b20
  2. ماژول sim800c
  3. میکروکنترلر avr atmega16
  4. یه چند تا مقاومت و خازن و دیود و بردبرد!

 

سنسور دمای دیجیتال ds18b20

این سنسور دما یک سنسور دما ی دیجیتال کالیبره شده هست، و ویژگی جالب اون اینه که از یک سیم برای ارسال و دریافت داده استفاده میکنه  و از پروتکل 1wire یا یک سیمه برای ارسال و دریافت داده استفاده میشه. نکته مهم دیگه اینه که این سنسور سه پایه vcc ,gnd ,data داره که خب پایه vcc برای تغذیس ولی اختیاریه!!!!!!!!!!!!!! ینی این که میتونین وصلش نکنین!!!!!!!!!!!!!!! در این حالت تغذیه اش از همون سیم دیتا که به میکروکنترلر وصله تامین میشه که در این حالت به این تغذیه میگن تغذیه انگلی!!!!!!!!!! ولی من تو این پروژه پایه vcc سنسور رو به تغذیه وصل کردم.
نکته بعدی در مورد این سنور این که این سنسور در یک حالت مثل سنسور lm35 و در حالت دیگه به صورت ضد آب عرضه میشه که من حالت دوم رو انتخاب کردم، و حالت دوم به همراه خودش یک سیم تقریبا نیم متری با پوشش ضد آب داره.
 

ماژول مخابراتی sim800c

این ماژول هم که فکر کنم معرف حضور هستن، یه ماژول خوب و راحت که سیم کارت میخوره و میشه باهاش تماس برقرار کرد و پیام کوتاه فرستاد؛ فقط برای زمانی که میخواد به شبکه وصل شه و پیام بفرسته و بگیره یه جریان لحظه ای 2 تا 3 آمپر میکشه که شما باید منبع تغذیتون در این زمینه قوی باشه؛ یه خازن 1000 میکرو فاراد هم که با تغدیه اش موازی کنین که میشه عالی.
توجه مهم : اگر این ماژول و یا هر ماژول مخابراتی دیگه رو که میخواین استفاده کنین که به صورت هدربرد ینی با برد راه انداز تهیه میکنین حتما حتما حتما حتما پایه ri رو خودش داشته باشه. حالا داستان این پایه چیه؟؟؟ الان میگم: داستان این پایه از این قراره که ولتاژ این پایه همیشه برابر 2.8 هست، خب؟؟؟؟ حالا وقتی که اس ام اس میاد این پایه برا مدت 120 میلی ثانیه  0 میشه که اینجا ازش میگذریم، ولی چیزی که مهمه اینه که زمانی به ماژول زنگ میزنیم ولتاژ از 2.8 به صفر  ولت میرسه و تا زمانی که تکلیف این تماس مشخص نشه ( رد تماس یا تایید تماس یه قطع تماس به به دلیل جواب ندادن ) 0 ولت میمونه و بعد دوباره به 2.8 تبدیل میشه.
حالا اصن این پایه ri چه ربطی به ما داره که اینقدر براش سخنرانی میکنیم؟؟؟؟؟ الان میگم
ما میتونیم از این پایه استفاده کنیم و بدیمش به یکی از پایه های  وقفه خارجی میکرو وهر وقت که بهش زنگ زدن متوجه بشیم که تماس دریافتی داریم، اینجوری لازم نیست که هی مداوم چک کنیم که ببینیم بهمون زنگ زدن یا نه. اگر بخوایم مداوم چک کنیم بهمون زنگ زدن، باید درنظر داشته باشیم که هنگامی که با ماژول تماس میگیرید، ماژول هی عبارت ring رو برمیگردونه که شما باید بیاین کد بزنین و بگردین دنبال عبارت ring که اینجوری هم کد طولانی میشه و هم توان مصرفی مدار افزایش پیدا میکنه. برای اطلاعات بیشتر تو این زمینه توان مصرفی عبارت power management in embedded systems رو سرچ کنین و مقاله هاش رو بخونین.
پس خلاصه کلام تا اینجا این شد که وقتی به ماژول زنگ میزنیم ولتاژ ri به 0 ولت تغییر وضعیت میده و  ما این پایه رو به وقفه خارجی میکرو وصل میکنیم و اینجوری میفهمیم که با دستگاه تماس تلفنی برقرار شده، بعد دما رو محاسبه میکنیم و به شماره ای که براش تعیین کردیم دما رو ارسال میکنیم. باقی قضایا مربوط به قسمت میکروکنترلر میشه که تو بخش بعدی راجبش بحث میکنیم.
 

میکروکنترلر

این قسمت دیگه میشه مغز مدارمون، همیشه سیستم های میکروکنترلر ی برام جالب بوده، آخه به نظر من دقیقا مثل اجزای بدن میمونن، الان تو همین مدار ما یه سنسور دما و یه ماژول مخابراتی داریم که هردو این ها عملا بدون میکرو ( مغز ) بی فایده میشن. حالا  اینجا میخوایم عملکرد کلی مدار(بدن) رو تشریح کنیم!!!!!.
جریان از این قراره که میکرو داره براش خودش ول میچرخه ( البته خیلی هم ول نه، داره دما رو چک میکنه )، یهو شما زنگ میزنین به دستگاه، بعد اون پایه  ri صفر میشه، چون این پایه به وقفه خارجی میکرو وصله تو میکرو وقفه ایجاد میشه. همونطور که میدونین زمانی که یه قفه ایجاد میشه، همون لحظه یه تابع ( روتین ) اجرا میشه و هدایت برنامه از هرجایی که هست به این تابع منتقل میشه و دستورات موجود تو این تابع اجرا میشه و بعد که این دستورات تموم شد  به برنامه اصلی بر میگردیم. نکته مهم اینه که ما اینجا باید بیایم اولا تماس تلفنی رو قطع کنیم تا بتونیم دما رو  پیامک کنیم. پس عبارت ath رو به ماژول مخابراتی میدیم و به کمک این عبارت تماس رو قطع میکینم. مسئله ای که حتما باید بهش توجه کنیم اینه که تو تابع ( روتین ) وقفه نمیتونیم از دستورات طولانی استفاده کنیم، باید زود کارمون رو انجام بدیم و بپریم بیرون. بگو خب! گفتی؟؟؟ خب از اونجایی که دستورات ارسال پیامک زمانبر هستن ما میایم بیرون تابع  وقفه پیامک رو میفرستیم. پس تو تابع وقفه چیکار کنیم؟؟؟؟؟ اول میایم یه متغیر عمومی ( global ) تعریف میکنیم، همونطور که میدونین متغیر عمومی متغیری هستش که تمام توابع بهش دسترسی دارن. پس هر زمان که وارد این تابع شدیم مقدار این متغیر رو برابر یک میکنیم، بعد در بیرون از این تابع بررسی میکنیم اگر یک بود این مقدار ابتدا صفرش میکینم تا برای دفعات بعدی قابل استفاده باشه، بعد  دما رو میخونیم و اس ام اس میکینم.
برای خوندن دما کدویژن ( بخش کد ویزارد ) برای سنسور دمای ds18b20 کتابخونه اماده گذاشته و دما رو ازش میخونیم ( دمش گررررررم ) در صورتی که دیدید تابع مورد استفاده در اینجا رو کامپایلرتون نمیشناسه به خاطر تفاوت ورژنه، در این صورت به مستندات کتابخونه ds18b20 کامپایلرتون مراجعه کنین.
نکته بعدی اینه که ما دائما دما رو میخونیم و اگر دما از یه حد خاصی بالاتر رفت، مثلا از 45 بیشتر شد به اون شماره یه پیامک  میدیم ( قاعدتا دلیلی نداره دمای اتاق به 45 برسه در حالت عادی مگه چیزی شده باشه ) حالا شما اینجا میتونین خودتون حد رو تعیین کنین. این رو در نظر بگیرین که خوندن دما نسبت به پاسخ گویی به تماس تلفنی اولویت داره. ینی ما اول میایم دما رو میخونیم و اگر دما از حد مورد نظر بالاتر بود یه اس به شماره تعیین شده میدیم و در این حالت هیچ تماس تلفنی رو قبول نمیکینم، ینی شما به دستگاه میتونین زنگ بزنین   و بوق هم میخوره ولی تماس دیگه قطع نمیشه، مگه این که شانس داشته باشین و دما پایین اومده باشه و وقفه دریافت شده باشه.
برای اینکه تو این حالت تماس رو دریافت نکنیم میایم وقفه های میکرو رو با دستور زیر غیر فعال میکینم :

نکته ای که باید در نظر بگیرین این که احتمالا برای اولین بار که دستگاه شروع به کار میکنه دوتا پیامک دریافت کنین یکی به خاطر اینه که لحظه اول راه اندازه ماژول مخابراتی پایه ri ولتاژش 0 هست و میکرو این 0 شدن رو به عنوان وقفه قبول میکنه، البته خیلی سریع این پایه تغییر وضعیت میده و 2.8 میشه. دلیل دوم اینه که زمانی که سنسور دما راه میفته برای ار اول عدد 68 رو بر میگردونه و که خب از دمای تعیین شده توسط ما یعنی 45 بیشتره و همین سبب میشه که پیامک بیاد. البته این دو مورد احتمالی هستن و ممکنه هیچ وقت پیش نیان و دست کم یکیشون اتفاق بیفته و فقط هم در ابتدای راه اندازی اتفاق میفتن.
 

پروژه کنترل و مانیتورینگ دما با ds18b20 و sim800c

کد پروژه : 

 
شماتیک پروژه :
پروژه کنترل و مانیتورینگ دما با ds18b20 و sim800c
 
عکس مدار در عمل : در اول مطلب قرارش دادم.
 
فیلم های پروژه : امیدوارم خیلی سرتون رو درد نیاورده باشم، دو تا فیلم از مدار داریم که اولی مربوط به تماس و جواب دستگاه هست و دیگری مربوط به آتش زدن سنسور دما و ارسال پیامک از دستگاه به شماره تعیین شده هست که تو فیلم ابتدا دمای 48.5 رو نشون میده و رفته رفته دما زیاد تر میشه و اس ام اس های بیشتری میاد که تو فیلم برای کاهش حجم قرارش ندادم.
http://www.aparat.com/v/hK2kG

http://www.aparat.com/v/SwFq6

 
 
پیشنهاد مطلب : در صورت تمایل میتونید مطلب زیر رو هم بخونید که با همین ماژول sim800c بسته شده :
پروژه دزدگیر با قابلیت شماره گیری sim800c و sr501

گروه پرسش و پاسخ الکترونیکی در سروش
تعداد مطالب : 4 تا
Avatar دانشجوی ارشد معماری کامپیوتر(سخت افزار)، تا الان استاد های خیلی خوبی داشتم مخصوصا تو دوره ارشد، ولی یکی از بهترین اونها، دکتر عبدالرضا پیشوایی از استاد های دوره لیسانس بودن که سیستم های میکروکنترلری به خصوص سیستم های بی سیم رو بهم معرفی کردن، انشالا همیشه هم ایشون وهم تمام استادای دلسوز و زحمتکش مثل ایشون برقرار باشن.
ارسال دیدگاه
21

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    SISASIS

    کسانی که اردینو کار میکنند avr 3.36 خودش به اردینو به صورت مستقیم پروگرام میکنه

    • مهدی دمیرچیلو

      مدیر سایت

      مهدی دمیرچیلو

      avr 3.36 دیگه چیه؟

  2. Avatar

    مهمان

    SISASIS

    بخدا اگه شما این سایت رو راه نداخته بودین من امسال سال 10 میکاترونیک که هستم رو افتاده بودم مرسی واقعن به قول بچه های پایین شهر دست خوش ok

    • مهدی دمیرچیلو

      مدیر سایت

      مهدی دمیرچیلو

      سال 10؟ یعنی 20 ترمه مکاترونیک میخونی؟ مگه چند ساله رشته مکاترونیک تو ایران ایجاد شده؟ crazy shout

      • Avatar

        مهمان

        SISRSIS

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

  3. Avatar

    مهمان

    Erfan

    سلام بسیار ممنون از مطالب خوب شما. در صورت امکان آموزش کنترل رله توسط همین ماژول رو هم آموزش بدین. ممنون

    • Avatar

      مهمان

      معین صابری

      سلام
      به امید خدا قرار میدم

  4. Avatar

    مهمان

    حسین

    این پروژه رو اگر که بخوام با sim800l پیاده کنم چه تغییراتی در کد و … باید ایجاد کنم ؟؟

    • Avatar

      مهمان

      معین صابری

      احتیاجی در ایجاد تغییرات در کد نیست
      همین کد کار میکنه

  5. Avatar

    مهمان

    Hossein

    Sim800l بزارم هم بدون تغییر کدها بازم کار میکنه ؟؟

  6. Avatar

    مهمان

    حسین

    سلام و ممنون بابت راهنمایی خوبتون.
    یه سوال داشتم.
    وقتی دیتا رو به سورور با دستور GET/… می فرستم، در جواب ارور http/1.1 با کد400 میده و می نویسه bad request ، مشکل کجاست ؟

  7. Avatar

    مهمان

    حسین ناصری

    سلام اقای صابری.من میخواستم دمای خانه رو کنترل کنم و ست پوینت شه با sms چنین کارایی هم داره این مدار؟

  8. Avatar

    مهمان

    نیما

    سلام رطوبت سنج هم میشه بهش تعریف کرد؟

    • Avatar

      نویسنده این مطلب

      معین صابری

      سلام، بله، این قابلیت وجود داره

  9. Avatar

    مهمان

    asad

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

    • Avatar

      نویسنده این مطلب

      معین صابری

      سلام، از لطف و توجه شما سپاسگزارم

  10. Avatar

    مهمان

    ناشناس

    سلام با تشکر برای آرداینو هم را اندازی GSM بزارید مرسی

    • Avatar

      نویسنده این مطلب

      معین صابری

      من اردویینو متاسفانه کار نمیکنم، اما دوستان دیگه اینجا کار میکنن، ولی شماتیک همینه، برنامه نویسی هم تقریبا همینه

    • Avatar

      مهمان

      SISRSIS

      شما میدونید با code vision avr 3.36 به اردینو هم همین برنامه رو پرگرارم کنید

  11. Avatar

    مهمان

    محمودرضا محمدیان

    بسیار عالی مهندس
    خیلی خوب بود
    منتظر آموزش های دیگه هم هستیم ازتون

    • Avatar

      نویسنده این مطلب

      معین صابری

      خواهش میکنم مهندس، شما خیلی لطف دارین