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

پروژه ارسال دما به سرور با sim800c و ds18b20

با سلام مجدد خدمت همه دوستان گرامی، با یک آموزش دیگه در رابطه با ارتباطات بی سیم در خدمت شما هستیم. امروز میخوایم در رابطه با ارسال دما از طریق اینترنت ( ارسال دما از طریق gprs ) صحبت کنیم. اول یه عذر خواهی به اقا مهدی بدهکارم که قول داده بودم سه هفته پیش مطلب رو آماده کنم که شرمنده شدم ( پروژه ارسال دما به سرور با sim800c و ds18b20 )
پروژه ارسال دما ds1820 به سرور با مگا16

پروژه ارسال دما به سرور با sim800c و ds18b20


مطلبی که میخوایم درموردش صحبت کنیم بی ربط با موضوع روز یعنی با اینترنت اشیا نیست. اینترنت اشیا ( iot ) بدین معنیه که در دنیا هرچیزی دارای هویت دیجیتال باشه. ینی گلدون، یخچال، قابلمه، ماشین، گربه خونتون و….. کلا هرچیزی به اینترنت وصل باشه و به قولی هویت دیجیتال داشته باشه. من از بحث اینترنت اشیا خیلی چیز خاصی متوجه نبودم تا این که دو ترم قبل درسی داشتم به اسم مباحث ویژه، اونجا جناب آقای دکتر ضرابی این درس رو تدرس میکردن و خیلی دقیق  و عالی مبحث اینترنت اشیا رو برای ما توضیح دادن که ازشون واقعا ممنونم.
 

دستگاه های اینترنت اشیا

دستگاه های اینترنت اشیا سه بخش اصلی همیشه دارن :

  1. واحد سنسور : میتونه سنسور دما، رطوبت، گاز و…… باشه ( این قسمت میتونه شامل یه وسیله ای هم باشه که بشه کنترلش کرد مثل لامپ که اصطلاحا بهش میگن actuator )
  2. واحد مخابراتی : که میتونه با سیم مثل تلفن ثابت و یا بیسیم مثل gsm-gprs-wifi
  3. واحد پردازنده : که همون میکروکنترلر هست که داده ها رو از سنسور میگیره وتحلیل میکنه، به ماژول مخابراتی میده و اون میفرسته، البته میتونه از ماژول مخابراتی هم داده بگیره و اون لامپ رو کنترل کنه

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

پروتکل های معروف ارسال و دریافت داده

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

  1. http : انتقال داده به به سرور
  2. ftp : انتقال فایل به سرور
  3. Smtp : ارسال و دریافت ایمیل

جالبه که ماژول های simcom که ما داریم ازش استفاده میکنیم تمام قابلیت های بالا رو دارن و جای بسی تشکر از مهندسین چینی رو داره))))):
 
خب، اینجا دستورات ماژول مخابراتی رو برای ارسال داده به سرور با هم مرور میکنیم:

تو قسمت بالا عدد 80 نشان دهنده شماره پورتی هست که میخوایم با اون به سرور وصل بشیم، برای اتصال از طریق HTTP، شماره پورت 80 هستش و عبارت TCP هم قبلا راجبش صحبت کردیم ( Site_Address هم که آدرس سایت ( سرور ) ما هستش )
بعد دستور زیر  کمک میکنه تا داده ها رو بفرستیم :
 

عدد جلوی عبارت نوشون دهنده تعداد کاراکترهاییه که به سرور قراره بفرستیم، و مهم این که بعد از هر ارسال داده باید ارتباط رو قطع کنیم و دوباره به سرور داده بدیم.
نکته بسیار مهم در اینجا، نحوه ارسال داده هستش :
 

روشهای ارسال داده در پروتکل HTTP

اول این که پروتکل HTTP روی پروتکل TCP سوار میشه و داده هارو ارسال و دریافت میکنه، پروتکل HTTP دو روش مهم برای ارسال داده داره :

  1. متد GET
  2. متد POST

مکانیزم کلی این روش به این صورته که ما داده رو به یک پیج در سرور ارسال میکنیم، بعد اون پیج داده رو دریافت میکنه و تو یه فایل ذخیره میکنه، بعد یه پیج اصلی داریم که هرچند ثانیه یکبار اون فایل رو میخونه و داده رو نشون میده؛ ما در اینجا  از متد GET استفاده میکنیم؛ برای ارسال داده در این روش باید از فرمت زیر استفاده کنیم :

نکته مهم :
 

به عبارت زیر توجه کنین :

در عبارت بالا پیج مورد نظر ds18b20 قراره براش داده ارسال شه و value هم همون دما هستش که در قسمت سرور بیشتر باهاش آشنا میشیم؛ پس تا اینجا روند به این شکل شده که ما داده رو به یه پیج میدیم و اون داده رو تو یه فایل ذخیره میکنه و یه پیج دیگه دائم اون فایل رو میخونه و دما رو نمایش میده. البته اینجا جای اون فایل میشه دیتابیس گذاشت که فعلا اینجا ازش میگذریم.
در این قسمت به بخش سرور میرسیم و اون کد صفحه ای رو بررسی میکنیم که وظیفه دریافت اطلاعات ارسالی از میکرو و ذخیره اون تو فایل رو داره، البته پیش نیاز این بخش اینه که یکم PHP بلد باشین، که البته زبان راحتیه و تو سایت W3SCHOOL قشنگ توضیح داده، زبان PHP دستورات سمت سرور رو اجرا میکنه، به طورکلی تو برنامه نویسی وب یه بخش سرور دارین که دستورات سرور هست مثل ذخیره تو فایل یا خوندن از فایل و یه بخش کلاینت هست که این بخش داده ها رو از سرور میگیره و رو کامپیوتر شما نشون میده .از این بحث ها بگذریم و وارد تحلیل کد سرور بشیم، ابتدا کد رو ببینیم :
 

خط اول و آخر به سرور میگن که کد از نوع PHP هستش، البته نکته مهم اینه که کدهای سرور برای کاربر قابل نمایش نیستن؛ خط دوم رو دقت کنین، یادتونه تو میکرو میخواستیم به  سرور برای اون صفحه داده بدیم ، این کار رو کردیم :

حالا خط دوم کد سرور هم همینه، دقیقا مقادیری رو قبول میکنه که  تو متغیر value ارسال شده باشن، جالب بود نه؟؟؟؟؟؟ خط سوم هم  داده دریافتی رو تو یه فایل ذخیره میکنه، اگر هم فایله رو سرور نباشه ایجادش میکنه. یه نکته راجب اون عبارت die اینه که اگه فایل باز نشه از قسمت کد سرور برنامه میاد بیرون ودیگه کاری انجام نمیده.
یکی از قوانین زبان php اینه که متغیرها رو باید مقدارشون رو باعبارت $ مشخص کنی، مثلا $s که حاوی دمای ارسالی از میکرو هست رو تو فایل ذخیره میکنه و بعد هم با تابع fclose فایل رو میبنده؛ اگر خواستید دما رو مشاهده کنین به آدرس زیر برید :

امیدوارم که مطلب بالا مفید باشه، هرجا که مبهم بود تو نظرات بگین راجبش بحث کنیم .
 
شماتیک پروژه : 
پروژه ارسال دما ds1820 به سرور با مگا16
 
عکس پروژه در عمل : در اول مطلب قرار داده شده!
 
کد پروژه ( میکروکنترلر ) : 

 
کد پروژه سمت سرور ( رو هاستتون آپلود کنید ) : 

 
 
فیلم عملکرد پروژه : 
http://aparat.com/v/OSJ90

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

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

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

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

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

  1. Avatar

    مهمان

    علیرضا زرقی

    سلام، من یک مدار با sim800c برای ارسال و دریافت sms نوشتم تا قبل از طرح ریجستری کار می کرد ولی الان کار نمی کنه باید چه کار کنم

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

      مدیر سایت

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

      سلام-نمیدونم – ولی تا جایی که اطلاع دارم طرح رجیستری برا اون دسته از دستگاه هایی هستش که تا قبل از اجرای این طرح ازشون استفاده نشده.

  2. Avatar

    مهمان

    رضا

    سلام.ممنون از مطالب خوبتون.
    اگر با جای ماژول sim800c از sim808 یا sim900 استفاده کنیم در کد هامون تفاوتی ایجاد میشه؟
    در سخت افزار چی؟

    • Avatar

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

      معین صابری

      سلام
      نه هیچ فرقی در سخت افزار و نرم افزار ایجاد نمیکنه

  3. Avatar

    مهمان

    داوود

    سلام.میشه لینک خرید ماژول رو لطف کنید.ممنونم.
    سوال بعد: کد رو چجوری روی هاست آپلود کنم؟

    • Avatar

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

      معین صابری

      سلام، من از اینجا http://www.electronic724.com خریدم، الان نمیدونم داشته باشه یا نه، ولی فکر کنم فروشگاه eca داشته باشه،
      در مورد هاست هم، شما وقتی هاستتون رو گرفتین، یه پوشه ای به نام htdocs وجود داره که توی اون یه فایل باز کنین و این کد ها رو توش کپی کنین

  4. Avatar

    مهمان

    حسین

    سلام مهندس ، خیلی ممنون بابت راهنمایی های خوبتون.
    یه سوال داشتم که اشتباها تو جای دیگه نوشته بودم، دوباره اینجا می نویسم.
    من با دستور GET/… اطلاعات و به سرور فرستادم، و لی ارور HTTP و کد 400 رو داد و همچنین bad request و به میکرو ارسال کرد.
    به نظرتون مشکل از کجاست ؟

    • Avatar

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

      معین صابری

      خطای 400 یعنی فرمت ارسالی داده صحیح نبوده
      چک کنین که فرمت رو رعایت کنین( دقیقا مثل چیزی که تو کد ها گذاشتم)
      مورد بعدی هم اینه که اون صفحه مورد نظر که قراره دیتا بهش ارسال کنین رو تو سرور ایجاد کرده باشین
      ولی بیشتر نظرم رو مورد اول هستش
      موفق باشین

  5. Avatar

    مهمان

    سیاوش

    سلام مجدد
    برای فعال کردن gprs مودم باید چ کار کرد و اینکه برای تست برقراری نت باید چه دستوری بزنیم؟

    • Avatar

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

      معین صابری

      عبارت at+sapbr=1,1 اینترنت رو فعال میکنه
      دستور at+cifsr هم ای پی رو نشون میده که در صورتیکه متصل شده باشین، عبارتی ای پی تخصیص یافته رو بر میگردونه

  6. Avatar

    مهمان

    سیاوش

    سلام
    ممنون از آموزشتون
    میخواستم ببینم اگر بخوایم یه رشته از طرف سایت بفرستیم باید چه کار کنیم ؟؟

    • Avatar

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

      معین صابری

      خواهش میکنم
      دقیقا مثل ارسال میمونه
      شما یه صفحه تو سرور درست کنین که هروقت باز شد یه پیغام تو خروجی به نمایش در بیاد مثلا به صورت زیر:
      “echo “salam
      اینطوری هروقت صفحه باز بشه پیغام سلام به کاربر نشون داده میشه
      حالا کافیه همین صفحه رو با میکرو باز کنین، ینی همونطوری که دما رو به سرور میفرستادید، صفحه مورد نظر رو باز کنین و پیغام رو دریافت کنین

      • Avatar

        مهمان

        سیاوش

        سلام چ طور میتونم با شما ارتباط داشته و سوالمو مستقیم بپرسم ازتون
        ممنون

  7. Avatar

    مهمان

    سیاوش

    سلام ممنون از آموزش ساده و کامل شما
    امکان این هست که دو مدل دیگه هم htpوsmtp رو آموزشو بزارید؟

    • Avatar

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

      معین صابری

      آموزش های دیگه هم تهیه میکنم، این آموزش http هست، در نظر داشته باشید که امن ترین راه همین http هست، ftp و smtp در سطح امبدد سیستم ها دچار ضعف امنیتی میشن

    • Avatar

      مهمان

      سیاوش

      سلام مجدد
      ی سوال دیگه هم داشتم اگر سایت ما asp بود باید چه کنیم؟

      • Avatar

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

        معین صابری

        والا asp خیلی وقته کار نکردم، ولی کلیت کار همینه sad

  8. Avatar

    مهمان

    داوود قاسمی

    با سلام خدمت شما نویسنده محترم
    خسته نباشید.
    خدا خیرتون بده.
    من برای اینکه سرور بگیرم باید چیکار کنم؟
    چون یک پروژه دارم که آزمایشگاهی هست و خیلی نمیخام هزینه کنم.ممنونم.

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

      مدیر سایت

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

      سلام-سرور؟ همون هاست کافیه براتون به نظرم – سرچ کنید خرید هاست.
      هاست رایگان هم هستش ولی خب من باشم 15-30 تومن میدم هاست پولی میگیرم.

    • Avatar

      مهمان

      معین صابری

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

  9. Avatar

    مهمان

    امین

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

  10. Avatar

    مهمان

    مجید

    سلام من با روش http قبلا ارسال می کردم الان که سرورها آبدیت شدن دیگه این روش رو پشتیبانی نمیکنند و می خوام با http1.1 ارسال داشته باشم می تونید کمک کنید مشکلم حل بشه خیلی برام مهم اگر راحت ترید توی تلگرام پاسخ بدید ۰۹۱۵۵۱۵۸۷۶۶

    • Avatar

      مهمان

      معین صابری

      سلام، والا اطلاعی در این مورد ندارم، اما اگر میبینید مشکل حل نمیشه میتونید با رعایت مسایل مربوط به امنیت دستگاه، از پروتکل ftp استفاده کنین

  11. Avatar

    مهمان

    مهدی

    سلام
    من php اصلا تا حالا کار نکردم به فرض اگر یک هاست خریداری کنم این کد php شما رو باید کجا بزارم تا کار کنه؟

    • Avatar

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

      معین صابری

      سلام، شما وقتی که هاست لینوکس رو گرفتین، معمولا یه قسمت تو کنترل پنل هاستتون هستش به اسم public html، اونجا یه صفحه به اسم index.php ایجاد کنین و کدها رو کپی کنین

  12. Avatar

    مهمان

    محمد بهرامی

    سلام و خسته نباشید دوتا سوال
    “جای ستاره ها نام فایلتون رو بدبن که دما رو توش ذخیره کردین” منظورتون کدوم فایل؟
    دوم اینکه “شما جای ستاره ها آدرس پیج خودتون رو به همراه متغیر قرار بدین” اینم کدوم ادرس؟
    من الان دامنه اون فایل ها رو آپلود کردم
    http://locationbhm.ir/
    بعد اگ بخام با ترمینال و ماژول کار کنم بدون میکرو دستورات چیه؟
    هرکاری میکنم ارور میده
    و اینکه اگ بخام ی داده رو بفرستم روی هاست ک فقط اون رو ب عنوان یک عدد نشون بده درسته؟

    • Avatar

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

      معین صابری

      بهتون تلگرام میدم

  13. Avatar

    مهمان

    موسوی

    به نام خدا
    با سلام خدمت مهندس عزیز. مطلب مثل همیشه عالیه. یک خدا قوت اساسی داری yes
    فقط لطفا یک پست کامل رو در مورد AT Command های GPRS ماژول های SIM قرار بدهید.
    متشکرم

    • Avatar

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

      معین صابری

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

  14. Avatar

    مهمان

    AZFX41

    سلام
    انشاا… همیشه اینقدر پرانرژی و با نشاط آموزش بساید
    موفق باشید

    • Avatar

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

      معین صابری

      شما محبت دارین
      ممنونم

  15. Avatar

    مهمان

    علیرضا خلج

    سلام
    مثل همیشه عالی smile
    اجرتون با خدا
    اللهم عجل لویکل فرج

    • Avatar

      مهمان

      معین صابری

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

      • Avatar

        مهمان

        امین

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