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

پروژه ارسال دما به سرور با 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

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

1) تعداد حروف فارسی از حروف غیر فارسی بیشتر باشه دیدگاه جفنگ/اسپم محسوب میشه.

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

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    علیرضا زرقی

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

    1397/09/27
    09:25
    • مدیر سایت

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

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

      1397/09/27
      09:44
  2. مهمان

    رضا

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

    1397/09/14
    11:00
    • نویسنده این مطلب

      معین صابری

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

      1397/09/15
      08:48
  3. مهمان

    داوود

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

    1397/08/20
    12:18
    • نویسنده این مطلب

      معین صابری

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

      1397/08/20
      10:17
  4. مهمان

    حسین

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

    1397/07/30
    12:56
    • نویسنده این مطلب

      معین صابری

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

      1397/07/30
      10:00
  5. مهمان

    سیاوش

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

    1397/06/20
    01:17
    • نویسنده این مطلب

      معین صابری

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

      1397/07/30
      10:03
  6. مهمان

    سیاوش

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

    1397/06/17
    03:31
    • نویسنده این مطلب

      معین صابری

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

      1397/06/17
      06:58
      • مهمان

        سیاوش

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

        1397/06/19
        08:28
  7. مهمان

    سیاوش

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

    1397/06/17
    12:05
    • نویسنده این مطلب

      معین صابری

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

      1397/06/17
      01:41
    • مهمان

      سیاوش

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

      1397/06/17
      03:50
      • نویسنده این مطلب

        معین صابری

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

        1397/06/17
        06:59
  8. مهمان

    داوود قاسمی

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

    1397/04/24
    01:54
    • مدیر سایت

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

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

      1397/04/26
      03:58
    • مهمان

      معین صابری

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

      1397/04/26
      07:18
  9. مهمان

    امین

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

    1397/03/18
    05:56
  10. مهمان

    مجید

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

    1397/01/18
    03:01
    • مهمان

      معین صابری

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

      1397/01/24
      11:24
  11. مهمان

    مهدی

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

    1396/10/07
    10:04
    • نویسنده این مطلب

      معین صابری

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

      1396/10/07
      10:41
  12. مهمان

    محمد بهرامی

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

    1396/08/16
    05:22
    • نویسنده این مطلب

      معین صابری

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

      1396/08/16
      10:30
  13. مهمان

    موسوی

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

    1396/08/12
    07:53
    • نویسنده این مطلب

      معین صابری

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

      1396/08/13
      03:17
  14. مهمان

    AZFX41

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

    1396/08/10
    08:51
    • نویسنده این مطلب

      معین صابری

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

      1396/08/13
      03:21
  15. مهمان

    علیرضا خلج

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

    1396/08/02
    10:16
    • مهمان

      معین صابری

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

      1396/08/03
      06:20
      • مهمان

        امین

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

        1397/11/09
        01:05