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

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

انجمن های تخصصی برق و الکترونیک ECA

سلام به همه دوستان : امروز میخوایم در مورد ” پروژه کنترل و مانیتورینگ دما با 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 تا
دانشجوی ارشد معماری کامپیوتر(سخت افزار)، تا الان استاد های خیلی خوبی داشتم مخصوصا تو دوره ارشد، ولی یکی از بهترین اونها، دکتر عبدالرضا پیشوایی از استاد های دوره لیسانس بودن که سیستم های میکروکنترلری به خصوص سیستم های بی سیم رو بهم معرفی کردن، انشالا همیشه هم ایشون وهم تمام استادای دلسوز و زحمتکش مثل ایشون برقرار باشن.
بقیه جلسات : ???
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه

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

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

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

4) نظرات حاوی کد برنامه نویسی تایید نمیشوند ( قالب سایت بهم میریزه )

  1. مهمان

    Nrgs

    سلام عالی این برنامه فقط میشه بجایsim800cبا ماژولesp8266 رو هم بزارید

  2. مهمان

    امیر

    سلام
    چرا دستورات مربوط به ارسال پیامک رو داخل تابع printf نوشتید؟

    • مدیر سایت

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

      سلام / متوجه نشدم؛ الان مشکل کار کجاس؟

      • مهمان

        امیر

        مگر تابع printf برای چاپ کردن نیست؟
        نوشتن دستور داخل این تابع که قابلیت اجرایی نداره.

        • مدیر سایت

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

          تابع print میاد یه مجموعه کاراکتر رو ارسال میکنه، حالا اگه به ماژول بفرستی، که انگار دستور مد نظرتو دادی به ماژول؛ اگه به نرم افزار ارتباط سریال بدی، داده شما رو میگیره و نمایش میده /
          تابع فوق فقط ارسال میکنه داده رو؛ این گیرنده هستش که داده دریافتی رو….

          • مهمان

            امیر

            اهان متوجه شدم

  3. مهمان

    razavi

    سلام
    مشکلی در برنامه نویسی با کدویژن برای نمایش دمای سنسور ds18b20 روی 4 عدد سون سگمنت دارم.
    مهمه که دمای نشون داده شده به هیچ وجه نباید چشمک بزنه
    همونطور که می دونید سنسور فوق برای کل مراحل عملکردش در حالت 12 بیتی از خوندن دما تا تبدیل اون و دادن خروجی به ما به 750 میلی ثانیه زمان نیاز دارد.
    من به طور کلی در سه مرحله کار را انجام داده ام
    1- خوندن صفحه کلید که در اینتراپت 0 اونو می خونم که این قسمت مشکلی در کارم نیست
    2 خوندن دما که در حلقه while تابع main اونو می خونم ولی در پروتئوس که اجرا می کنم فقط در لحظه اول روشن کردن پروتئوس می ره تو این حلقه و دما رو می خونه و دیگه بعد از این ظاهرا از تایمر1(که برای نمایش 7segment هااز اون استفاده کردم) نمیاد تو تابع main تا دوباره پروتئوس رو خاموش و روشن کنم
    3- تایمر 1 که در اون دماهای خوانده شده و تفکیک شده ارقام و اعشار برای سون سگمنت را نمایش می دهد.
    الان در این برنامه که با پروتئوس شبیه سازی کردم فقط بار اول میره تو تابع main و دما رو میگیره و میده به زیرروال وقفه تایمر1 برای نمایش و دیگه ون تو تابع main نمیره تغییر دما رو نشون نمیده.
    اما مشکل بزرگتر من اینه که اونچه که من متوجه میشم برای خوندن و تبدیل دما تا گرفتن خروجی از سنسور ds18b20 نیاز به 750 میلی ثانیه زمان داریم و در این زمان اگر سون سگمنتها رفرش نشوند قطعا چشمک می زنند و این مسئله رو جوری میشه رفع کرد.
    درضمن از سخت افزار و میکروی واقعی هم نمی تونم برای تست مراحل برنامه نویسی استفاده کنم چون هر بار میکرو روپروگرم میکنم و به سخت افزار می دهم به دلایلی قابلیت پروگرم مجدد خود را از دست می دهد و دیگر دوباره قابل استفاده نیست
    ممنون میشم اگر امکان ملاقات حضوری یا تماس تلفنی داشته باشیم
    در صورت امکان تماس تلفنی لطفا به شماره 09012689800 یک پیامک بفرستید با شما تماس بگیرم

  4. مهمان

    SISASIS

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

    • مدیر سایت

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

      avr 3.36 دیگه چیه؟

  5. مهمان

    SISASIS

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

    • مدیر سایت

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

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

      • مهمان

        SISRSIS

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

  6. مهمان

    Erfan

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

    • مهمان

      معین صابری

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

  7. مهمان

    حسین

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

    • مهمان

      معین صابری

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

  8. مهمان

    Hossein

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

  9. مهمان

    حسین

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

  10. مهمان

    حسین ناصری

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

  11. مهمان

    نیما

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

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

      معین صابری

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

  12. مهمان

    asad

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

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

      معین صابری

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

  13. مهمان

    ناشناس

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

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

      معین صابری

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

    • مهمان

      SISRSIS

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

  14. مهمان

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

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

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

      معین صابری

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