ممکناست برای شماهم اتفاقافتادهباشد که پروژهای را در محلی نصبکردهباشید و ببینید که خوب کار نمیکند؟ و یا مثلا فردای نصب پروژه دچارمشکل شود؟ خب این اتفاق همیشه برای من رخ میدهد. یا مثلاً، قصد دارم ویژگی تازهای را به کنترلکننده گلخانهام یا ایستگاه آبوهوایم اضافهکنم ! اما نمیخواهم برای تست و بازنگری چندروزی آنرا بهروی میزکارم منتقلکنم. درعوض دوستدارم از راهدور رفعاشکال یا اصلاحکد را انجامدهم. تصورکنید شب راحت در خانه نشستهاید و پروژهتان درجایدیگری مشغولبهکار است و شما بهسادگی پارامترهای آنرا مشاهدهو بررسی میکنید! واقعا فوقالعاده نیست ؟! اولین تلاشم برای دستیابیبه چنین امکانی استفادهاز BeagleBone Black و یک دانگل Wifi بود بدینصورتکه دادههای دریافتشده از پورت سریال را به شبکه Wifi منتقلکنم. البته بهجای BeagleBone Black میتوانید از بردهای لینوکسی دیگر نظیر Raspberry Pi نیز استفادهکنید.
درواقع من یک BeagleBone Black به قیمت ۵۵دلار و یک دانگل وایفای به قیمت ۱۰دلار را به یک ویجت FTDI از راهدور تبدیلکردم. اولین لحظه راهاندازی برای من مثل بهشت بود. چراکه از یک راهحل ارزانقیمت برای یک پروژهی بزرگ استفادهکردهبودم و به خوبی کار میکرد. اما وقتی وسوسهشدم که این امکان را به دیگر پروژههایم اضافهکنم دیگر یک BeagleBone Black کافینبود و میخواستم کنترل بردهای بیشتری را از اینطریق بهدست بگیرم. اما پیشبینی خرید ۳-۴تا BeagleBone Black دیگر، بهنظر ارزان نمیآمد. در اینزمان بود که ماژول وایفای esp8266 با قیمت ۵دلار چشمم را گرفت. ماژول esp8266 یک ماژول وایفای با یک پردازنده قابل برنامهریزی و یک پورت سریال است و البته مهمتر از همه SDK (کیت توسعه نرمافزار) آن است که دردسترس برنامهنویسها قرارگرفتهاست. وجود SDK این امکان را میدهد که برنامه دلخواه خودمان را روی پردازنده ماژول پروگرام کنیم بدون اینکه نیازیبه پردازنده کناری باشد ، درست همانطورکه با BeagleBone Black انجامدادم. ذهنم درگیر محاسبه شد: چه میتوانم انجامدهم؟ هزینه یک سختافزار کامل چقدر است؟ چقدر توان نیاز دارد؟ محدودهی وایفای آن چقدر است؟
در آن لحظه با یکیاز دوستانم درباره پروژه کوچکم که اسم آنرا “esp-bridge” گذاشتهبودم صحبتکردم و احساسکردم که به یک هفته زمان برای کدنویسی احتیاجدارم. در ادامه توضیحات تخصصیتری از این پروژه را بیانخواهمکرد:
مبدل سریال به وایفای بااستفادهاز ESP8266 :
فرمویر esp-link هر میکروکنترلری را بااستفادهاز یک ماژول ESP8266 به اینترنت متصل میکند. تعدادی از ویژگیهای آن عبارتند از:
- ارتباط ترنسپرت بین وایفای و سریال؛ جهت عیبیابی و مشاهده عملکرد میکروکنترلر.
- امکان پروگرام میکروکنترلرهای AVR یا برد آردوینو و میکروکنترلر LPC800 ازطریق وایفای.
- پیادهسازی پروتکل STK500 جهت برنامهریزی مستقیم AVR ازطریق رابط ISP (تنها کافیست که فایل Hex را آپلود کنید)
- ارسال درخواستهای دریافتی از میکروکنترلر برروی اینترنت جهت درج در سرویسهای مختلف سرویسدهنده MQTT ازطریق اتصال میکروکنترلر به اینترنت.
فریمور شامل یک سرور HTTP کوچک است که براساس eshtttpd پیادهسازی شدهاست و یک رابط کاربری ساده را ارائه میدهد.
هدف Esp-link چیست؟
هدف از پروژه esp-link ایجاد یک ارتباط وایفای پیشرفته است. Esp-link فرض میکند که یک پردازنده اصلی وجود دارد(به عنوان “میکروکنترلر متصلشده” ) و نقش esp-link برقراری ارتباط ازطریق وایفای با میکروکنترلرها است. بدینمعناکه esp-link نهتنها اتصال سوکتهای TCP / UDP را ازطریق میکروکنترلر برقرار میکند، بلکه عمدتاً قابلیتهای بیشتری برای تخلیه میکروکنترلر دارد که حافظه و فلش این قابلیتها را ندارند.
بااستفادهاز ESP-Link، میتوانید میکروکنترلر دستگاه خود را پروگرام و برنامهریزی کنید آنهم ازطریق اینترنت .
سه حوزه اصلی از قابلیتهای esp-link عبارتند از:
- برنامهریزی مجدد و عیبیابی میکروکنترلر
- اتصال میکروکنترلر به شبکه و تخلیه دادههای پردازششده
- برقراری ارتباط ترنسپرنت با میکروکنترلر ازطریق شبکه
هدف این پروژه همچنان روی موضوعهای فوق تمرکز دارد. بهطورخاص، esp-link یک پلتفرم برای برنامههای مستقل نیست و از سنسورها و یا محرکهای اتصال مستقیم پشتیبانی نمیکند.
کاربردهای Esp-link:
سادهترین کاربرد esp-link بهعنوان یک ارتباط سریال به وایفای است. شما میتوانید میکروکنترلر متصلشده را ازطریق وایفای پروگرام کنید و میتوانید خروجی سریال میکروکنترلر را بااتصال به پورت۲۳ یا بااستفادهاز صفحهوب esp-link مشاهدهکنید. سطح بعدی استفادهاز اتصال خروجی esp-link در برنامه میکروکنترلر است. بهعنوانمثال، میکروکنترلر میتواند درخواستهای REST را به سرویسهایی مانند thingspeak.com ارسالکند تا بهصورت نموداری و جدول قابلمشاهده باشند. میکروکنترلر همچنین میتواند از درخواستهای REST برای بازیابی اطلاعات پیکربندی استفادهکند. گزینهی دیگر، اضافهکردن برنامه به esp-link برای سفارشیکردن آن و قراردادن تمام کدهای ارتباطی در esp-link است و تنها قرائت سنسور در میکروکنترلر انجام میشود. در اینحالت میکروکنترلر دستورات تعریفشده را به esp-link ارسال میکند و esp-link آن را بااستفادهاز بستر ارتباطی نظیر اینترنت و MQTT به سرور منتقل میکند.
چشم انداز:
تصاویری از محیط ESP-Link که در مرورگر قابل بارگزاری است:
چطور و از کجا شروع کنیم؟
برای شروع باید:
- ماژول esp8266 را برای برنامهریزی ازطریق سریال آمادهکنید.
- آخرین نسخه esp-link release را دانلود کنید.
- فریمور را برروی esp8266 پروگرامکنید.
- پیکربندی وایفای در esp-link برای شبکه محلی
سپس شما میتوانید میکروکنترلر را بااستفادهاز پورت سریال متصلکنید و یک برنامهای را آپلود برروی آن پروگرامکنید:
یک میکروکنترلر (بهعنوانمثال arduino) را به ماژول esp8266 خود متصلکنید.
ازطریق پورت سریال قادرخواهیدبود که پارامترهای دستگاه را مشاهدهکنید.
ارتباط سریال:
برای اتصال esp-link به میکروکنترلر از پورت۲۳ استفادهکنید. بهعنوانمثال، در linux شما می توانید از “nc esp-hostname 23” یا در ویندوز از “telnet esp-hostname 23” استفادهکنید. تایم اوت در پورت۲۳ و ۲۳۲۳ حدود ۵دقیقه است. زمان ۵دقیقه در SDK Espressif یک استاندارد است و esp-link آنرا تغییر نمیدهد. به ایندلیل که باتوجهبه محدودیتهای حافظه تنها چند اتصال میتواند باز باشد (۴تا در هر پورت) بههمیندلیل گاهی اتصالات ارتباطشان را ازدست میدهند. بهعنوانمثال، بهدلیل قطع وایفای. که این بهراحتی میتواند باعث عدماتصالبه esp-link شود. توجهداشتهباشید که چند کاربر بهصورت همزمان میتوانند به پورت ۲۳ و ۲۳۲۳ متصلشوند. Esp-link کارکترهای دریافتی تمامی کاربرها را به پورت سریال ارسال میکند و کاراکترهای ورودی را از پورت سریال به تمام کاربرها ارسال میکند. پس بااحتیاط استفادهکنید.
منبع:سیسوگ