الکترونیک

ESP8266 – یک پردازنده معمولی یا … ؟

نوشته شده توسط احسان وارسته

یک میکروکنترلر یک مدار مجتمع است که توانایی اجرای برنامه های مختلف و متنوعی را دارد. تنوع بسیار زیادی از میکروکنترلر ها از سازندگان مختلف (مانند STMicroelectronics، Atmel، Microchips، و … ) در بازار امروز وجود دارد. قیمت های این میکروکنترلرها همینطور رو به کاهش است. در بازار علاقه مندان الکترونیک، “آردوینو” که از محصولات متنوع شرکت atmel در قلب خود استفاده میکند با چندین اتصال مجزا و ابزارهای متنوع توانسته دنیای الکترونیک را از حیطه مهندسان برق به سمت کاربران علاقه مند ولی با دانش کم بیاورد. البته نمی توان آنها را با کامپیوتر های خانگی مقایسه کرد. این پردازنده ها = پروسسورها بسیار ضعیف ( در مقایسه با یک پردازنده معمولی سیستم PC هزاران بار ضعیف ) با مقادیر حافظه بسیار کم و توانایی های محدود هستند. از این رو نمیتوانند جای کامپیوترهای رو میزی یا شخصی را به این زودی ها بگیرند. برای کسانی که دنبال چالش بزرگتری هستند – و پردازش سنگینتری میخواهند – بورد Raspberry Pi یک راه حل مناسب است. با قیمت باورنکردنی حدودا 150 هزار تومان، معماری ARM و حافظه بالا 500 مگا بایتی ( حداکثر حافظه 1 گیگا بایت تا زمان انتشار این مقاله عرضه شده ) و استفاده از microSD برای ذخیره اطلاعات یکی از شاهکارهای مهندسان الکترونیک برای عمومی کردن این دانش است. خب من اینجا قصد ندارم راجع به Raspberry Pi و کلاس کامپیوتر های Embedded صحبت کنم. بلکه هدف اصلی پردازنده ESP8266 است که در ادامه مورد بررسی قرار می گیرد.

WiFi Serial Transceiver Module

این میکروکنترلر ها و ساختارهای آنها بسیار عالی هستند و همیشه جایی برای استفاده آنها وجود دارد. اما، یه موضوعی وجود دارد، وآن هم نت وورکینگ است ( یا مفهموم عام آن شبکه ). این قطعات قابلیت های بسیار زیادی دارند از جمله  پین های مستقیم ورودی/خروجی – GPIO – و پشتیبانی از مدل های مختلف ارتباطات SPI, I2C, UART و بیشتر، به هر حال، هیچکدام به اندازه پشتیبانی از شبکه بی سیم – Wireless Networking – پیش نرفته اند.

هیچ شکی نیست که آردوینو توجه همگان را به خود جلب کرده است. آردوینو بر مبنای چیپ های Atmel بنا گشته که سایزهای مختلفی دارند. میکروکنترلر اصلی استفاده شده در آردوینو ATmega328 است. میتوانید این میکروکنترلر را به راحتی از بازار از فروشنده های مختلف تهیه کنید یا اینکه از طریق سایت های اینترنتی اقدام به سفارش آنها کنید. قیمت کلی یک آردوینو حدود 10 تا 20 برابر ارزانتر از یک Raspberry PI است. البته این بخاطر قدرت پردازش و حافظه و دیگر مزایای یکی بر دیگری است. هرچند اگر شما تصمیم داشته باشید با وسائل الکترونیکی درگیر شوید و مثلا چند LED خاموش و روشن کنید یا سوئیچ ها و سنسورهای را مدیریت کنید، سپس نیاز شما توسط یک میکروکنترلر ارزان قیمت هم قابل حل شدن میشود.

بین این دو، یعنی آردوینو و Raspberry Pi به نظر میرسد تمام نیاز ها برطرف شده است. اگر اینطور باشد، این مقاله باید همین جا تمام شود! اجازه دهید مسئله اصلی را مطرح کنیم، شبکه بی سیم. داشتن یک دستگاهی که بتوانیم با آن اسکلت یک ربات رو حرکت دهیم و کنترل کنیم یا پترن های نورانی توسط LED ها درست کنیم یا حتی نویز تولید کنیم یا اطلاعات را از سنسور(ها) خوانده و وقتی دما از حدی بالاتر رفت صدای بوق تولید کنیم همه این پروژه های ساده خوبی هستند اما ما بسیار به اینترنت توجه می کنیم. کامپیوتر های ما به اینترنت متصل اند، موبایل های ما به اینترنت متصل اند، ما از سایت های پخش آنلاین فیلم برای تماشای فیلم های مورد علاقه خود استفاده میکنیم و تلویزیون های هوشمند ما همگی به اینترنت متصل اند، ما در اینترنت کارهای اجتماعی میکنیم و خیلی چیزهای دیگر که حتی شاید فکرشم را نکنیم در بستر اینترنت اتفاق می افتند. اینترنت یک چیز بسیار ابتدایی شده که اگر کسی محصولی مانند کاپیوتر یا موبایل ارائه کند که قابلیت اتصال به اینترنت را نداشته باشد به آن می خندیم و مانند یک شوخی بی مزه می ماند!

حالا تصور کنید که یک میکروکنترلر بتواند به اینترنت متصل شود چه کارهایی که نمی تواند بکند؟ این میتواند یک پردازنده با تمام قابلیت های یک آردوینو باشد و حتی بهتر از آن، که علاوه بر GPIO و پشتیبانی از پروتکل های ارتباطی مختلف، حافظه RAM و Flash خوبی هم داشته باشد، بعلاوه قابلیت جذاب اتصال به اینترنت را در خود داشته باشد تا بتواند همزمان با تمام قابلیت های معمولی یک میکروکنترلر ساده ما را به دنیای پر از عجایب اینترنت هم اتصال دهد! و آن، چیزی نیست جز ESP8266، یک پردازنده با قابلیت شبکه بی سیم داخلی! این پردازنده تمام قابلیت های اشاره شده برای میکروکنترلرها را دارد بعلاوه قابلیت WiFi و TCP/IP (Transmission Control Protocol / Internet Protocol ) در آن تعبیه شده است. جذابیت بیشتر موضوع این است که قیمت آن با یک میکروکنترلر رده متوسط در بازار برابری می کند!

ESP8266

esp8266

ESP8266 نام یک میکروکنترلر طراحی شده توسط Espressif Systems است. Espressif یک کمپانی چینی است که در شانگهای چین شکل گرفته است. ESP8266 از خود به عنوان یک راه حل برای ارتباطات WiFi یاد میکند، همچنین که تمام قابلیت های یک میکروکنترلر معمولی را به شما ارائه می دهد.

تولید انبوه این مدار مجتمع کوچک ( اندازه آن نیم سانت در نیم سانت است ) تا سال 2014 ( حدود 2 سال پیش ) آغاز نشده بود که به این معنی است که در زمره پردازنده های جدید قرار دارد و در دنیای گرسنه تکنولوژی ما، جدید به معنی جذاب است. مدتی بعد از عرضه آی سی، کمپانی های واسط این آی سی ها را روی ماژول های مختلف کردند و با ماژول هایی را عرضه کردند که امروزه در بازار ایران به راحتی یافت می شوند. اگر من به شما یکی از ESP8266 های خام را بدهم که مستقیم از کارخانه خارج شده، مسلما ما به نقطه ای میرسیم که از کار با این آی سی جذاب منصرف شویم! اینها بسیار کوچک و با چشم بسیار ریز هستند که برای یک علاقه مند الکترونیک بتواند سیم ها را به آی سی متصل کند یا اینکه روی یک بورد تبدیل مونتاژ کند. خوشبختانه، ماژول های ابتدایی این آی سی در دسترس است و تفاوت قیمت چندان با خود آی سی ندارند.

بوردهای مختلفی وجود دارند، اما دو بوردی که من در اینجا قصد تمرکز روی آنها را دارم ESP-1 و ESP-12 هستند. این نکته مهم است که بدانید فقط یک ESP8266 وجود دارد و این بورد ها همگی از آن استفاده می کنند و تنها تفاوت سیم کشی و حافظه خارجی اضافه شده برای آی سی به علاوه نوع آنتن است که برای آنها در نظر گرفته شده است. از دید برنامه نویسی برای آنها، همگی یکسان هستند.

بلوغ

ESP8266 قطعه جدیدی در حوزه خود است. عرضه شده در تابستان 2014 و کماکان ده ها میلیون نسخه از آن در دنیا مصرف می شود. همه کس و همه چیز باید از جایی شروع شوند. یعنی بسیاری از قابلیت ها و ایده ها و توانایی های ناشناخته در این حوزه وجود دارد که نیاز با کار دارند تا کشف شده و عملی شوند. دست پایین قضیه این است که آموزش های کافی و لازم وجود ندارند، مثال ها و ویدئو هایی که برای میکروکنترلرهای معمول به وفور یافت میشوند برای ESP8266 وجود ندارند. مستندات بسیار ناقصی از آی سی در دسترس است که بسیاری سوال های اساسی را پاسخ نمی دهند و هنوز علاقه مندان در جال اکتشاف هستند!

مشخصات

ولتاژ3.3 ولت
مصرف جریان10 میکرو تا 170 میلی آمپر ( تفاوت چشمگیری است! )
اتصال حافظه Flashحداکثر 16 مگابایت ( 512 کیلوبایت بصورت عادی )
پردازندهTensilica L106 32bit
سرعت پردازنده80 تا 160 مگاهرتز
حافظه RAM32 کیلو + 80 کیلو بایت
GPIO ها17 ( با قابلیت های دیگر هم مالتی پلکس شده اند )
آنالوگ به دیجیتال ( A2D )1 ورودی با دقت 1 به 1024
پشتیبانی 802.11b/g/n/d/e/i/k/r
حداکثر اتصلات TCP بصورت همزمان5

این سوال که ESP8266 چه مقدار میتواند با باتری کار کند سوال جالبی است. مصرف جریان این آی سی بسیار متفاوت است. هنگامی که در حداکثر توان کار میکند، تا 170 میلی آمپر جریان نیاز دارد، اما زمانی که در حالت خواب عمیق – Deep Sleep – قرار دارد تنها 10 میکرو آمپر جریان نیاز دارد. بسیار تفاوت چشمگیری است و متقاعد کننده است که برای محاسبه میزان حدودی و نه حتی دقیق مصرف باتری باید بیشتر به نحوه عملکرد در طول زمان توجه داشته باشیم.

ESP8266 طراحی شده تا با یک ماژول حافظه کار کند که عموما حافظه Flash هستند. بیشتر ماژول ها دارای یک حافظه فلش هستند که روی بورد تعبیه شده است. با دانستن این نکته که همه ی حافظه Flash ها تعداد خواندن/نوشتن و پاک کردن محدودی دارند، بعد از استفاده طولانی باید تعویض شوند. آنها از طرف سازندگان تضمین شده اند که 10000 بار قابل پاک کردن و برنامه ریزی مجدد باشند. این معمولا مشکلی در برنامه ریزی معمولی و تنظیمات ایجاد نمیکند، اما اگر برنامه شما به طور مداوم با Flash در حال نوشتن است پس این برای شما مسئله ساز خواهد شد و به زودی دچار مشکل می شوید.

ماژول های ESP8266

آی سی های ESP8266 در پکیج های بسیار کوچک در حد 5 میلی متر عرضه می شوند. متاسفانه اگر شما یک مونتاژ کار حرفه ای نباشید یا تجهیزات درست و مناسب نداشته باشید نمی توانید به آی سی ها را خودتان مونتاژ کنید. برای همین استفاده از ماژول های آماده – حداقل برای شروع یادگیری – توصیه می شود. اینجا لیستی از ماژول های در دسترس ارائه می شوند.

ESP-12

محبوبترین و قابل انعطاف ترین ماژول فعلی کنونی ESP-12 نام دارد. این ماژول بیشترین GPIO را برای استفاده ارائه می دهد و برای اتصال به برد بورد نیاز به یک Expander دارد.

esp12

ترتیب پین های خروجی esp-12 به شکل زیر است:

esp12 pinout

ESP-12 دارای یک LED آبی رنگ در بالا سمت راست خود است. این LED زمانی که ترافیک UART برقرار باشد چشمک میزند.

توضیحات پین ها:

VCC3.3 ولت تغذیه
GPIO13همچنین بعنوان MOSI برای ارتباط سریال استفاده می شود
GPIO 12همچنین بعنوان MISO برای ارتباط سریال استفاده می شود
GPIO 14بعنوان Clock برای ارتباط سریال استفاده می شود
GPIO 16ورودی/خروجی معمولی
CH_PD یا EN، برای عملکرد معمولی باید High باشد
0 – غیر فعال
1 – فعال
ADCورودی آنالوگ به دیجیتال
REST – RSTریست خارجی
0 – ریست
1 – عادی
TXDارسال UART0
RXDدریافت UART0
GPIO 4ورودی/خروجی معمولی
GPIO 5ورودی/خروجی معمولی
GPIO 0در زمان شروع – boot – باید high باشد، برای بروزرسانی Flash باید low باشد
GPIO 2در زمان شروع باید high باشد
GPIO 15در زمان شروع باید low باشد برای هر دو حالت boot و flash
GNDپایه زمین

نقشه شماتیک نحوه اتصال ماژول ESP-12 برای شروع کار با ماژول

esp-12 shcematic

ESP-1

این ماژول یک ماژول 8 پایه است که به راحتی به میکرو متصل می شود و بدون هیچ دردسری میتوانید به سرعت با این ماژول کار کنید. البته GPIO های بسیار کمتری در دسترس شما قرار دارند و ارتباط محدودی با خود esp8266 خواهید داشت.

esp-1

شماتیک نحوه اتصال ماژول به پروگرمر FTDI ( یا اتصال مستقیم به RS232 کامپیوتر در صورت وجود )

esp-1 schematic

NodeMCU devKit

این ماژول یک کانکتور USB داره و خروجی های متفاوت و خوبی رو میده و برای بِرِد بورد عالیه!

نقشه پین های این ماژول به این صورت است:

نسخه های v0.9 و v1.0 این ماژول تنها تفاوتشون در درایور USB هست که در نسخه 0.9 از آی سی درایور CH340 استفاده میکنه و در نسخه 1.0 هم از آی سی CP2012 استفاده کردن. وقتی که با USB به کامپیوترتون وصلش میکنین (روی سیستم عامل ویندوز)، اتصال سریالی که در سیستمتون ایجاد میشه به اسم “USB-SERIAL-CH360” دیده میشه. اگه به هر دلیلی سیستمتون ماژول رو شناسایی نکرد میتونین درایورش رو از اینجا دانلود کنید که هم برای ویندوز داره و هم برای مک، اگر احیانا این سایت در دسترس نبود میتونید از بخش دانلود ها هم درایور ویندوز رو دانلود کنید.

البته نسخه های دیگه هم از این ماژول به بازار اومدن:

اتصال به ESP8266

ESP8266 یک دستگاه WiFi است و ما معمولا با پروتکل های WiFi به آن متصل می شویم اما برخی تنظیمات از قبل لازم است تا انجام شوند. ESP8266 نمی داند به چه شبکه ای متصل شود، چه پسوردی را باید استفاده کند و همچنین بقیه پارامترهای دیگری که باید تعریف شوند. البته پیش فرض این است که ما به عنوان Station در شبکه WiFi هستیم. اگر بخوایم AP یا نقطه دسترسی – Access Point باشیم، داستان پیچیده تر می شود. برای تنظیم ماژول نیازمند ارتباط دیگری هستیم که آن ارتباط سریال UART است. ESP8266 یک جفت پین مجزا برای ارتباط سریال دارد و آنها RX و TX هستند. پین TX برای انتقال از ماژول و پین RX برای انتقال دیتا به ماژول استفاده می شود. این پین ها را میتوان به سیستم هدایت کننده که میتواند میکروکنترلر باشد یا کامپیوتر شخصی متصل کرد. اگر کامپیوتر شما هم مانند من پورت سریال ندارد میتوانید از مبدل های USB به سریال استفاده کنید. توجه کنید پروتکل سریال شامل پین های دیگری برای کنترل و تست ارتباط هم هست ولی برای ارتباط با ماژول تنها 2 پین RX و TX به علاوه پین GND استفاده می شود.

برنامه ریزی ماژول توسط دستورات AT یا AT Commands صورت میگیرد که یک استاندارد است و میتوانید مشابه این دستورات را در ماژول های دیگر ارتباط سریال مانند SIM900 ببینید.

نکته مهم دیگر نرخ انتقال دیتا است که معمولا 115200 است، اگر نبود 9600 را امتحان کنید.

در دستورات AT میتوانید برخی دستورات مهم را همراه با توضیح مشاهده کنید.

درباره نویسنده

احسان وارسته

یه علاقمند به حوزه علم و فناوری که دوست داره با به اشتراک گذاشتن دانشش قدم کوچکی برای کمک به جامعه فنی برداره :)
حمایت مالی

26 نظر

  • سلام من ماژول ESP8266 را به صورت web server راه اندازی کردم. بطور مثال از طریق موبایل فرمان میدهم تا یک LED روشن شود. مشکل من اینست که وقتی برق قطع و وصل میشود آن LED را که قبلا فرمان داده بودم روشن شود دیگر روشن نیست. و دوباره باید فرمان دهم تا روشن شود. انگار وقتی برق قطع و وصل میشود ماژول ریست میشود و کد ها را دوباره از اول میخواند. من میخواهم هر فرمانی را که به ماژول میدهم در حافظه اش ذخیره شود به طوری که وقتی برق قطع و وصل شد ماژول همان فرمان هایی را که قبلا از طریق موبایل بهش داده بودم دوباره اجرا کند.

    • برای اینکار چند راه حل وجود داره:
      یکی اینکه شما حالت فعلی سیستم رو(چه وضعیت LED ها باشه، چه هر وضعیت حال حاضری) رو روی حافظه ای مثل eeprom مثلا سری 24c ذخیره کنید و پس از هربار قطع و وصل شدن برق یا ریست اتفاقی بتونید دوباره وضعیت قبل رو برگردونید( restore ).
      راه حل دوم استفاده از یک باتری پشتیبان هست، و قیمت بسیار مناسبی هم داره و مثل روش اول احتیاج به کد اضافه نداره.

    • سلام
      متاسفانه بنده هم شبیه همین مشکلو دارم منتها خروجی ک از ماژول گرفتم درست کار میکنه ولی بعد 1 دقیقه کلا خروجی صفر میشه بدون این که تغییری تو مدار داده باشم و باید دوباره کدو آپلود کنم
      بعد اینکه دوباره آپلود کردم بازم تا یک دقیقه حدودا جواب میده ولی یک دفعه حافظه ماژول انگار پاک میشه لطفا راهنمایین کنین مشکل از کجاست
      ممنون از سایته خوبتون
      ضمنا مدل ماژولم esp8266-07

  • من یه شیلد وای فای گرفتم که روش ماژول esp هستش از نظر شما چند بار میتونم روی اون برنامه بریزم. چطوری میشه اونو erase کرد.

    • عدد دقیقی نمیشه گفت، ولی میشه از این بابت خاطرتون رو آسوده کنم که تا الان کسی از مشکل تو برنامه ریزی و خراب شدن حافظه esp شکایتی نکرده و البته ازونجایی که این پروسسور قابلیت اتصال flash خارجی هم داره دیگه هیچ نگرانی نباید وجود داشته باشه!
      برای erase کردن هم، بسته به پروگرامرتون متفاوته و اینکه از چه روشی میخواید استفاده کنید.

    • سلام دوست عزیز
      اکو (echo) تو ماژول های AT و کلا سریال (UART) بیشتر جنبه تایید دریافت رو بازی میکنن. به این صورت که وقتی شما کاراکتر یا کاراکترهایی رو برای ماژول میفرستید، ماژول دیتای دریافتی که همون کاراکتر های شما باشه رو میگیره و دوباره برای شما میفرسته. شما با گرفتن و تحلیلش میتونین متوجه بشین که نرخ دیتا (baud-rate) رو درست تنظیم کردین و همچنین ماژول روشنه و داره دیتای شما رو دریافت میکنه.

    • شما هر کاراکتری برای ماژول بفرستین ماژول اون رو برمیگردونه یا به اصطلاح اکو میکنه. این یه قابلیت برای اکثر ماژول های ارتباط سریاله.
      برای اینکه خاموشش/روشنش کنین باید دستورات مربوطه رو ارسال کنین. میتونین این دستورات رو تو صفحه مربوط به “دستورات AT” مشاهده کنین.

  • سلام،
    عذر میخوام یه سوال داشتم درباره ماژول وای فای(esp8266).
    برای پروژم لازمه که بتونم با لب تاب یا موبایل اطلاعاتی رو از طریق وای فای برای میکرو بفرستم.
    میخوام ببینم وقتی این اطلاعات رو واسه ماژول وای فایی که به میکرو متصل کردم میفرستم، این اطلاعات چطوری واسه میکرو فرستاده میشه؟
    منظورم اینه که داخل ماژول چه عملیاتی باید انجام بشه؟
    آیا لازمه که ما کاری انجام بدیم؟ یا خودش هرچیزی دریافت کنه رو پایه tx خودش قرار میده و میفرسته؟
    ممنون میشم پاسخ بدید.

  • سلام موضوع مقاله خیلی جالب هست من سوالی داشتم این ماژول با نرخ انتقال و دریافتی که داره و البته فکر می کنم گفته بودید که حافظه جانبی بیشتر هم می خوره با این شرایط اگر بخوایم یک فایل چند رسانه ای پرحجم مثل فیلم رو از یک مودم بگیره و روی حافظه ذخیره کنه مثل یک فضای ابری کوچک در حد 16 یا 32 گیگ آیا امکان پذیره روی این ماژول یا باید سراغ راسپبری زیرو رفت که فکر می کنم رقیب قدرتمندی باشه ؟
    با تشکر

    • هر کاری امکان پذیره ولی مسئله ای که هست اینه که این ماژول ها برای اینطور انتقال داده ها طراحی نشدن و برای کارهای سبک و کم حجم استفاده میشن. برای انتقال مدیا با ریت بالا بهتره از مینی کامپیوتر هایی مثل رزبری زیرو که خودتون هم اشاره کردین استفاده کنین. یا استفاده از WiFi یو اس بی روی مینی کامپیوترهای دیگه.

      • باسلام
        سوال من در مورد پروگرام کردن خود esp بدون دخالت میکرو هست
        اگه بیشتر در مورد IDE(نرم افزار آردیونو) بگین که چجوری esp را پروگرام میکنه ممنون میشم

  • سلام ممنون از توضیحات کاملتون من میخواستم یه سیستمی طراحی کنم که از طریق ارتباط بیسیم یک عدد به عنوان زاویه سروو موتور بفرسته به esp و esp هم اون عدد رو به میکرو بده و در نهایت سروو موتور به اون اندازه بچرخه مشکلم این بود که نمیدونم از چه طریقی باید این عدد رو بفرستم به esp لطف میکنید اگر کامل راهنمایی کنید. من شمارم رو هم میزارم اگر بتونه کسی تلگرام پیغام بده خیلی عالی میشه ممنونم
    09190111283

    • برای این کار راه زیاده که من دو تاش رو خدمتتون میگم. اول و ساده ترین راه اینه که یه میکررکنترلر استفاده کنید و تنظیمات esp رو توسط میکرو انجام بدین مثل اتصال به wifi و … و از همون میکرو برای ارسال مقدار زاویه دلخواهتون به esp استفاده کنید. دقت کنین تو این روش از AT Command و ارتباط UART میکرو باید استفاده کنین.
      راهکار دوم اینه که خود esp رو پروگرام کنین، خیلی راحته. واقعیت اون زمانی که من این مقاله رو نوشتم هنوز به این شکل arduino باب نشده و فراگیر (تا این حد که esp رو بصورت کامل پشتیبانی کنه) نشده بود. اما الان شما راحت میتونین با نصب arduino studio و نوشتن یه کد کوچیک میکرو رو بعنوان واسط حذف کنین و از خود esp که سی پی یو قدرتمندی هم داره بدون واسط استفاده کنین. من نمیدونم شما زاویه رو چطور محاسبه و برای سروو میفرستین، اگه از مبدل های adc استفاده میکنین esp این مبدل ها رو داره، یا اگه خود esp یجور واسط با یه پروتکل ارتباطیه باز اونم مشکلی نیست esp بصورت سخت افزاری از spi و i2c پشتیبانی میکنه و میتونین هم پروتکل های دیگه رو بصورت نرم افزاری و bit bang روش پیاده کنین (با همین روش دوم که خدمتتون گفتم).

    • اگر هم منظورتون از ارسال به esp، ارتباط بین دو تا esp هست:
      باید بگم esp میتونه به شبکه wifi وصل بشه، و ارتباط بین دو تا esp دقیقا میتونه ارتباط بین دو تا client تو شبکه wifi باشه (که یکم سخته چون بعضی مودم ها اجازه ارتباط دو تا client تو شبکه رو نمیدن)
      روش بعدی client-server هست که یکی از esp ها سرور میشه و دیگری بعنوان client بهش وصل میشه.
      هر دو حالت ممکنه، فقط حالت دوم به نظرم راحتتر و امن تره و نیاز به مودم واسط هم نداره

  • سلام.
    یه سوال درباره ذخیره اطلاعات در esp8266 دارم اونم این که میخوام مثلا میکرو زمان را ذخیره کنه و هروقت 3 ساعت شد یکی از پایه هارو روشن کنه و وقتی روشن میشه موتور هم قاعدتا روشن میشه که تا یه زاویه خاص میچرخه موتور و به میکروسوییچ برخورد میکنه و خاموش میشه دوباره 3 ساعت دیگه روشن میشه و همین جور تکرار میشه در کل باید هر سه ساعت زمانو توی خودش ذخیره کنه دوباره از اول !!!!

    • سلام،
      ذخیره زمان چند تا راه داره، اولا که میکرو شما زمان رو از کجا میدونه؟ باید به یه شبکه وصل بشه که زمان رو از اینترنت یا شبکه محلی بگیره یا اینکه خودتون با روش های متفاوت مثل UART براش بفرستین یا اینکه اصلا زمان رو به اون معنا (ساعت دقیقه ثانیه و تاریخ روز) احتیاج ندارین و صرفا بازه زمانی 3 ساعت مد نظرتونه که خب از یه متغیر برای شمردن ثانیه ها استفاده میکنین با یه تایمر! ولی این ها همش وقتیه که میکرو شما مدام روشن باشه.
      اگه منظورتون از ذخیره کردن* برای اینه که مثلا میخواین میکرو خاموش بشه یا نه اگه احیانا برق رفت یا به هر دلیل دیگه ای میکرو خاموش شد نمیخواین زمان آخرین 1 شدن پایه خروجی (که منتج به روشن شدن موتور میشد) از دست بره میتونین از eeprom خارجی، یه microSD کارت یا حتی flash داخلی خودش استفاده کنین. دو مورد اول مثال زیاد داره و راحته ولی برای آخری باید memory map میکرو رو بخونین ضمنا تغییرات پارامتر های memory map برای کامپایلر رو احتیاج داره، بعلاوه اینکه حافظه flash بصورت page خونده و نوشته میشه و … داستان های دیگه!
      به نظر من برای این کاری که میخواین انجام بدین یه راه حل ساده وجود داره، به یه شبکه وای فای متصل بشین و زمان دقیق رو داشته باشین، پایه میکرو که 1 کردین و موتور روشن شد و به سوییچ برخورد کرد و موتور خاموش شد زمان رو بخونین و تو یه متغیر از نوع time_t نگه دارین، و زمان رو تو یه loop با فاصله زمانی و delay بزرگتر یا مساوی 1 ثانیه بخونین، و از تابع difftime که دو تا پارامتر time_t رو ورودی میگیره استفاده کنین تا زمان سپری شده رو بهتون بده که البته خروجیش بر اساس ثانیه اس و باید به 3600 تقسیم کنین تا به ساعت باشه.
      یه کار بهتر اینه که یه microSD بذارین و زمان روی اون ذخیره کنین تا وقتی توی اون فاصله 3 ساعت به هر دلیل میکرو خاموش یا ریست شد اون زمان از دست نره.

  • سلام
    من ماژول esp8266 رو با وایفایه گوشی متصل کردم اما بعد از 1 دقیقه ارتباط قطع میشه و باید دوباره کانکت بشم
    بنظرتون مشکل چیه ؟

    • سلام، اگه زمان قطعی دقیق باشه؛ یعنی مثلا همیشه بعد از یک دقیقه اتصال قطع میشه احتمالا نرم افزاری قطعی پیش میاد. ممکنه بخاطر این باشه که دیتا رد و بدل نمیشه و auto-sleep و فانکشن های مشابه وجود داشته باشه.
      اگه مشکل سخت افزاری باشه که بعید میدونم ولی باز محتمله، میتونین از منبع تغذیه تون مطمئن بشین که توان لازم رو میتونه به ماژول تحویل بده، منابع نویز میتونن باعث اختلال بشن. خصوصا که باند 2.4 گیگاهرتز منابع زیادی وجود داره مثل تلفن های بی سیم، شبکه های wifi مختلف تو منطقه و البته بعضی اسباب بازی های بی سیم که ادعا میکنن تو رنج 2.4 گیگاهرتز کار میکنن! مثل کوادکوپتر ها و هلی کوپترها.

  • چطوری میتونم اطلاعات ماژول wemos d1 و به طور لحظه ای ذخیره کنم و اطلاعات با چه دستوراتی باید post, get کنم؟

  • سلام. برای یک برد nodmcu که از esp8266 استفاده می کند، و 4 عدد led و یک سنسور دما، چه باتری(چندمیلی آمپر) میتوانم استفاده کنم تا حداقل یک هفته استفاده کنم، اگه کمک کنید ممنون میشم احسان جان.

    • سلام، بستگی به عوامل متعدد داره:
      1. مصرف خود ماژول که بستگی به فرکانس کاری، اینکه از چه peripheral های داخلی ماژول استفاده میکنین، اینکه از sleep mode های ماژول استفاده میکنین یا نه، شرایط محیط (دما) که اگه تو محیطی با دمای بالا باشه طبیعتا مصرف توان بیشتر میشه، ولی یجا خوندم که نوشته بود مصرف جریان(که خودش بحثیه، جریان مصرف نمیشه!) nodemcu میشه 39.58 میلی آمپر که اگه ولتاژ 3.3 بهش بدین میشه 130 میلی وات
      2. led ها عموما 25 میلی آمپر جریان میکشن، و با احتساب حدود 1.5 ولت افت ولتاژ (البته 1.1 ولت هستن بعضی هاشون، بعضی کمتر و بعضی بیشتر) ولی حدودا هر led نزدیک 37.5 میلی وات مصرف داره، و جمعا 150 میلی وات
      3. راجع به سنسور دما هم، معمولا زیر 1 میلی آمپر مصرف دارن، اگه اون هم 3.3 ولت باشه میشه 3.3 میلی وات
      جمع همه این جریان ها میشه 140 میلی آمپر (در بدترین حالت). یک هفته روشن بودن مداوم میشه 168 ساعت
      از اونجایی که ظرفیت باطری هارو با mAh یا میلی آمپر ساعت می سنجن، باطری مورد نظر شما میشه 168 * 140 که میشه نزدیک 24 آمپر ساعت!!! ولی خب این بدترین شرایطه
      اگه مواقع بیکاری ماژول رو تو حالت sleep mode ببری جریانش تا 10 میلی آمپر کاهش پیدا میکنه، led ها هم طبیعتا همیشه روشن نیستن و شاید جریان کلی که مصرف بکنن در حالت میانگین 5 تا 10 میلی آمپر باشه (بستگی داره که led ها نشانگر چی باشن)، سنسور دما هم که هیچی اون بیچاره مصرفی نداره :)) یعنی در نهایت شما بین 25 تا 30 میلی آمپر مصرف داری، یعنی یه باطری 5000mAh میتونه براتون مفید باشه
      البته اینا همه تحلیل های حدودیه و اگه کارتون حساسه بهتره با مولتی متر جریان عبوری مدارتون توی یک روز رو تخمین بزنین، و نکته دیگه اینکه ظرفیت باطری ها همه تئوری هست و دقیق نیست و عواملی مثل بی کیفیت بودن باطری هم هست، عمر باطری هم فاکتور مهمیه که باعث میشه ظرفیتش روزبروز کاهش پیدا کنه (حتی با شارژ) اگه قصد استفاده از باطری شارژی رو دارین.

نظر بگذارید