AVR64.com



1394/05/19 --> Last Update: 1395/08/04 (bug fixed, incr speed)

اینترنت اشیاء یکی از پدیده های جدید در سالهای اخیر (2014 و 2015) به شمار می رود که در نمایشگاه CES2015 نمونه های فراوانی از آن به چشم می خورد. و منظور از آن اینست که هر شیئی در دنیای فیزیکی به شبکه جهانی اینترنت متصل شود یا تمام اشیاء با یکدیگر شبکه شده و به اینترنت متصل شوند و در نهایت بتوان تمام اشیاء را از طریق اینترنت کنترل و مانیتور کرد. منظور از اشیاء، دستگاه های الکتریکی و الکترونیکی مانند سیستم تهیه هوا، پنکه، لامپ، سنسور دما، دزدگیر، درب منزل و غیره می باشد. با این ایده تمام سیم کشی های اضافی و شبکه های رنگارنگ خاص که برای سیستم های حفاظتی، اعلام حریق، درب بازکن منزل، تلفن داخلی، روشنایی ساختمان و غیره کشیده می شود حذف شده و تمام این ها از طریق اینترنت به یکدیگر متصل می شوند (تقریباً می توان گفت تمام وسیله ها مثل دوربین های جدید IP به اینترنت متصل شده و از طریق اینترنت کنترل می شوند).

ممکن است تصور کنید برای متصل کردن هر وسیله ساده مثل لامپ به اینترنت نیاز به کابل شبکه و مودم و یک میکرو کامپیوتر داریم که کار را مشکل و گران می کند؛ اما شرکت های مختلف ماژول های کوچکی را برای این منظور طراحی کرده اند. یکی از این ماژول ها که ESP8266 نامیده می شود از یک آی سی با همین نام استفاده می کند و در واقع یک ماژول وای فای(WiFi)کامل به همراه تمام بخش های نرم افزاری و پشته پروتکل داخلی TCP/IP می باشد که با قیمت کم (در حدود 5$) ارائه می شود و با پروتکل سریال (رابط RS232 یا TTL) می توان آن را به یک میکروکنترلر کوچک AVR متصل کرد.



ماژول ESP8266 در دو حالت قابل استفاده است. حالت اول که ما از آن برای اینترنت اشیاء استفاده کرده ایم حالت Station می باشد که پس از تنظیمات لازم بصورت خودکار مودم ADSL را پیدا کرده و خود را به شبکه جهانی اینترنت متصل می کند. حالت دوم هم مد Access Point است که می توان با موبایل یا تبلت ماژول را جستجو کرد و به آن متصل شد و عموماً برای ساخت ریموت های تنها و بدون نیاز به اینترنت بکار می رود که از این مد صرفنظر کرده ایم.




آپدیت ۱۶ تیر ۹۵: فایل PCB ریموت تک کانال تحت وب (اینترنت اشیا) با ماژول وای فای ESP8266EX طراحی شد.




همانطوریکه در شکل مقابل پیداست برد کامل راه اندازی ماژول ESP8266(EX) بصورت فشرده و همراه با LCD و رله طراحی و ساخته شده و فایل برد آن به سورس دستگاه افزوده شده است. تغذیه این برد بین 9 تا 12 ولت مستقیم (500 میلی آمپر) می باشد و از رله 5 ولت استفاده می کند. این برد ترکیبی از قطعات DIP و SMD بوده و از فیلتر LC در ورودی تغذیه بهره می گیرد. برد مفید این کنترل از راه دور بیسیم نامحدود بوده و کافیست در کنار یک مودم ADSL قرار بگیرد و به شبکه جهانی اینترنت متصل شود. برای کنترل رله این دستگاه می توان به وبسایت IoT که در پایین معرفی می شود مراجعه کرد. از این برد می توان برای انتقال اطلاعات از قبیل دما و رطوبت محیط نیز استفاده کرد.















قسمت مهم دیگر در اینترنت اشیاء یک وبسایت اینترنتی برای کنترلینگ و مانیتورینگ دستگاه ها می باشد. ما وبسایت رایگان iot.avr64.com را برای همین منظور طراحی کرده ایم. با ورود به این وبسایت و ثبت نام و ایجاد یک حساب کاربری می توانید دستگاه های خود را کنترل و مانیتور نمایید. برای دریافت کد کامل PHP این وبسایت به همراه آموزش نصب به انتهای همین صفحه مراجعه فرمایید.



کمی در مورد نحوه عملکرد سایت IoT.avr64.com

این سایت بعنوان یک سرور رایگان و همیشه آنلاین برای ارتباط با اشیاء طراحی شده است. اشیائی که ممکن است هر لحظه اطلاعات سنسور دمای خود را به سمت سرور ارسال کنند و یا آخرین وضعیت تنظیم شده رله خود را از سرور بخوانند. ما برای طراحی این سایت سه ایده کلی در نظر گرفته ایم.

ایده اول قابلیت روشن و خاموش کردن یک دستگاه است. برای این منظور بایستی بتوانیم مقدار یک فیلد متنی را در دیتابیس سایت روی دو مقدار 0 و 1 یا off و on قرار دهیم. در طرف دیگر دستگاه در فواصل زمانی مشخص مثلاً هر 5 ثانیه یکبار فیلد را بررسی میکند و بر اساس مقدار آن رله خود را روشن یا خاموش می نماید. از طرفی باید از روشن یا خاموش شدن دستگاه مطمئن شویم و به عبارتی از دستگاه Delivery دریافت کنیم. برای همین منظور فیلد دیگری به نام "وضعیت واقعی دستگاه" در نظر گرفته ایم که دستگاه پس از روشن یا خاموش شدن، مقدار این فیلد را آپدیت می کند.

دستگاه ما برای خواندن وضعیت رله خود بایستی URL زیر با با متد GET پردازش کند:

iot.avr64.com/read.php?u=test@avr64.com&p=123456&r=field_1

در URL بالا در برنامه میکرو بایستی جلوی u یوزرنیم که همان ایمیل ثبت نامی در سایت iot.avr64.com است را نوشته و در جلوی p پسورد خود را بنویسید در جلوی r هم فقط کلمات field_1 و field_2 با رعایت کوچک بودن حروف نوشته می شود و به دو کانال دستگاه یا دو دستگاه جدا اشاره دارد. (طبق سفارش می توان بینهایت کانال در وبسایت تعریف کرد). URL بالا را می توانید در مرورگر کامپیوتر نیز paste کرده و پس از Enter نتیجه را که کلمات on یا off می باشد مشاهده نمایید.

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

در بخش Delivery، برنامه Bascom پس از خواندن لینک بالا و دریافت مقدار on یا off و تغییر وضعیت رله بایستی URL(های) زیر را پردازش کرده و وضعیت جاری خود را برای سرور ارسال کند:

iot.avr64.com/write.php?u=test@avr64.com&p=123456&f=state_1&v=off

يا:

iot.avr64.com/write.php?u=test@avr64.com&p=123456&f=state_1&v=on

در این URL همانند URL بالا مقدار u و p همان یوزر و پسورد بوده و مقدار جلوی f کلمات state_1 برای فیلد یک و یا state_2 برای فیلد دو می باشد. مقدار جلوی v هم یکی از دو کلمه on یا off است که وضعیت کنونی دستگاه را برای سرور ارسال می کند و میتوانیم آن را در فیلد "وضعیت واقعی دستگاه" در اکانت خود مشاهده کنیم.

ایده دوم دستگاهی است که مقدار سنسور دما، رطوبت، سرقت، حرکت و یا هر چیز دیگری را به صورت آنلاین برای سرور ارسال می کند. فرض کنید نیاز به دستگاهی دارید که دمای یک گلخانه را بصورت آنلاین برای شما ارسال کند و در هر لحظه دمای مکان مورد نظر را بر روی مانیتور ببینید. بر اساس این ایده بخشی به نام سنسور شماره ۱ و سنسور شماره ۲ در نظر گرفته ایم که دستگاه می تواند با پردازش URL زیر مقدار هر برچسب را بروز کند:

iot.avr64.com/write.php?u=test@avr64.com&p=123456&f=label_1&v=25.6

در URL بالا مقادیر u و p همانند قبل بوده، مقدار f فقط برابر label_1 یا label_2 با رعایت کوچک بودن حروف برای سنسور یک و دو می باشد و مقدار جلوی v هم مقدار عددی یا حرفی سنسور است.

ایده سوم تقریباً شبیه به بخش قبل بوده و برای نمایش اطلاعات سنسورهای دما و غیره می باشد، ولی تفاوت آن با بخش قبل اینست که تمام اطلاعات دریافتی Log شده و در یک textarea نشان داده می شود. کاربر می تواند اطلاعات دمایی یا هر نوع اطلاعات خاص را در یک بازه ذخیره کرده و پس از کپی از وبسایت برای رسم نمودار یا تحقیقات آماری از آن استفاده نماید. برای ارسال اطلاعات بایستی URL زیر پردازش شود:

www.iot.avr64.com/write2.php?u=test@avr64.com&p=123456&v=35.6

در URL بالا سایر بخش ها همانند قبل می باشد و مقدار v برابر با اطلاعات سنسور است.

برای پاک کردن Log نیز می توانید URL زیر را از طریق دستگاه و یا مرورگر کامپیوتر پردازش کنید:

www.iot.avr64.com/clear2.php?u=test@avr64.com&p=123456&v=cls

توجه داشته باشید که در تمام URL ها تمام حروف کوچک بوده و اسکریپت های سایت به کوچک و بزرگ بودن حروف حساس می باشند.

وبسایت اینترنت اشیاء با تکنولوژی AJAX طراحی شده که بصورت خودکار هر چند ثانیه یکبار رفرش می شود و در صورت باز بودن مرورگر همیشه اطلاعات آنلاین نمایش داده خواهد شد.

وبسایت اینترنت اشیاء با زبان php و دیتابیس mySQL طراحی شده که بر روی سرورهای Linux بخوبی عمل می کند.

سایز فیلدها در دیتابیس به شرح زیر است:

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


در تصاویر زیر نمونه آزمایشی پروژه اینترنت اشیا با استفاده از ماژول اینترنت ESP8266 مشاهده می شود که برای تجسم واقعی کنترل از طریق اینترنت از یک قوری برقی به عنوان شی متصل به شبکه جهانی اینترنت استفاده شده و وضعیت آن از طریق اینترنت از هر نقطه از جهان قابل کنترل می باشد.





در بخش میکرو هم برنامه ای به زبان بیسیک و با کامپایلر بسکام یا بیسکام (BASCOM-AVR) نوشته شده است که با ماژول ارتباط برقرار کرده و دستگاه را از طریق ماژول به اینترنت و البته به سایت iot.avr64.com متصل می کند. با ورود به سایت مذکور و حساب کاربری خود می توانید رله دستگاه را روشن و خاموش کرده و اطلاعات سنسورها را بصورت آنلاین مشاهده نمایید. میکروکنترلر فوق میکروی ATmega8A می باشد که پسوند A مهم بوده و سبب می شود میکرو با ولتاژ 3.3 ولت راه اندازی شود. نکته مهم در راه اندازی ماژول ESP8266 اینست که ولتاژ کاری این ماژول 3.3 ولت بوده و پایه های TX و RX آن نیز تحمل ولتاژ بالاتر از 3.3 ولت را ندارند و به همین دلیل میکرو با ولتاژ 3.3 ولت راه اندازی شده است ولی LCD با ولتاژ 5 ولت راه اندازی شده و از نظر ارتباط با میکروی 3.3 ولتی هیچ مشکلی نخواهد داشت. آپدیت: 18/06/1394 : در آپدیت جدید از میکروی ATmega8 معمولی بدون پسوند A هم می توان استفاده کرد، چرا که میکرو در این آپدیت با ولتاژ 5 ولت راه اندازی شده است و بخاطر مشکلاتی که بعضی از LCD ها با I/Oی 3.3 ولتی میکرو داشتند مجبور به تغییر سخت افزار شدیم. شایان ذکر است در این نسخه برای جلوگیری از آسیب دیدن ماژول وای فای ESP8266 پایه RX این ماژول با مقاومت های 3.3 و 2.2 کیلو تا سطح 3.3 ولت پایین نگهداشته شده است.

در تصویر زیر شماتیک مربوط به پروژه راه اندازی ماژول Wifi وای فای ESP8266 مشاهده می شود:




نکات خاص در مورد برنامه بسکام و ماژول ESP8266 و ترمینال ویندوز که کار را برای ما غیر ممکن کرده بود:
1- ماژول ESP8266 به سایز حروف حساس می باشد حتماً تمام AT Command ها را با حرف بزرگ ارسال کنید.
2- ماژول ESP8266 فوق العاده سریع بوده و ممکن است با برنامه های ترمینال قادر به دریافت اطلاعات ماژول نباشید.
3- برای راه اندازی ماژول با Hyper terminal مجبور به تنظیم تاخیر خط و تاخیر کاراکتر و نوع کاراکتر پایان خط CR و LF شدیم.
4- بعد از Hyper با دو نرم افزار ترمینال دیگر نیز قادر به ارتباط با ماژول نشدیم.
5- آخرین انتخاب، برنامه ترمینال کامپایلر آردوینو بود که تنظیم کاراکتر پایان خط آن روی CR and LF قرار داشت.
6- در ارتباط با سرور TCP پس از Link شدن فقط 9 ثانیه فرصت دارید که HTTP GET Request را تایپ کنید که غیر ممکن است!
7- برای ارسال درخواست Http Get به سرور باید تعداد کاراکترهای ارسالی را قبل از تایپ شمرده و به طور دقیق به سمت سرور ارسال کنید!
(احتمالا به این دلیل است که سایز packet های IP مشخص و بزرگ بوده و برای تعیین دقیق سایز درخواست باید به سرور بگوییم که طول درخواست ما چقدر است)
8- نظر به اینکه وبسایت های ارزان قیمت از سرور اشتراکی استفاده میکنند و ممکن است صدها وبسایت یک IP داشته باشند بایستی نام دامین را داخل درخواست GET بنویسید.
(چون DNS نام دامنه شما را به IP تبدیل کرده و به صفحه ادمین 404 وب هاست منتقل می شوید ولی با نوشتن نام Domain به پوشه اشتراکی سایت هدایت خواهید شد)
9- تعداد کاراکترهای ارسالی از شمردن تعداد کارکترهای درخواست HTTP همراه با فضای سفید به علاوه عدد 6 بدست می آید، عدد 6 همان سه جفت کاراکتر CR-LF پایان
سه خط دستور HTTP GET می باشد.
10- خط سوم درخواست فقط شامل CR-LF می باشد. به عبارت دیگر پس از تایپ HTTP GET بایستی جفت Enter کنید تا درخواست به سمت سرور ارسال شود!

تمام نکات بالا در برنامه نوشته شده با بیسکام رعایت شده و ماه ها وقت برنامه نویس را گرفته است. برای نوشتن این برنامه مجبور به مطالعه کتب تخصصی شبکه و اطلاعاتی در خصوص نحوه عملکرد web server ها و سرورهای اشتراکی و درخواست های HTTP و متدهای GET و POST و غیره شدیم و به همین دلیل امیدواریم دلیل پولی بودن سورس این پروژه را درک کنید و با خرید و تعهد بابت عدم پخش آن در اینترنت از برنامه نویس حمایت نمایید. آپدیت: 1399/01/31: تمام محتوای سایت AVR64 از 31 فروردین 99 رایگان شد.



سورس کامل راه اندازی ماژول ESP8266 در مد کلاینت (station) به زبان بیسیک و با کامپایلر BASCOM-AVR (بسکام/بیسکام):
همراه با فایل برد مدار چاپی (با خروجی نرم افزار PCB ،Altium و PDF)

نسخه (2.1.46) 1395/08/04
دانلود



سورس کامل وبسایت IoT به زبان PHP و راهنمای نصب:

دانلود





موارد مشابه:

ریموت کنترل WiFi با ماژول ESP8266 و موبایل اندروید Android (بدون نیاز به روتر و اینترنت)



ریموت کنترل وای فای (Wi-Fi) تحت شبکه (IP Remote) با ماژول ESP8266 و مودم روتر (Modem Router)



© 2009-2020 AVR64.com