در این سری از مطالب قصد داریم تا آموزش جامع تری از ESP8266 ارائه دهیم. از یاد آوری مطالبی که در پستهای قبلی آمده است، خودداری شده است.
برای شروع اول از همه به توضیح اینترنت و پروتکل های آن می پردازیم:
WiFi
استفاه از ESP8266 به عموان یک میکروکنترلر خیلی عالیه، ولی دلیلی که بیشتر از این قطعه استفاده می شود، توانایی آن در ارتباط با WiFi می باشد. در این بخش ما به توضیح پروتکل هایی مانند WiFi , TCP, UPD, HTTP, DNS و غیره خواهیم پرداخت. اگر با این کلمات آشنایی ندارید، شاید شما را بترساند ولی سعی می کنم که به صورت ساده هر کدام را برای شما توضیح دهم. این مقاله تجربیات خودم و ترجمه ی مقالات مفید می باشد.
پس اگه نظرات خود را بگید کاملا مفید واقع می شود.
TCP/IP
در اصل اینترنت از یک پروتکل تشکیل نشده است، بلکه دسته ای از پروتکل ها در لایه های مختلف تشکیل دهنده ی آن می باشند. که آن را با TCP/IP می شناسیم. ما باید این لایه ها را بشناسیم، چون لازم دازیم بفهمیم که چگونه ESP8266 ما با دیگر دستگاه ها در شبکه ارتباط برقرار می کند.
Layer | Protocols |
---|---|
Application | HTTP, FTP, mDNS, WebSocket, OSC … |
Transport | TCP, UDP |
Internet | IP |
Link | Ethernet, Wi-Fi … |
Link Layer
لایه ی ارتباطی شامل ارتباط فیزیکی بین دو دستگاه می باشد، ارتباط با کابل اترنت یا WiFi.
برای اتصال یک ESP8266 شما باید یک ارتباط WiFi ایجاد کنید. این اتصال به دو روش صورت می گیرد:
- ESP8266 به یک مودم وصل شود. که در این صورت به آن Station می گویند.
- ESP8266 نقش یک Access Point را به عهده بگیرد و Station ها بتوانند به آن متصل شوند. این دستگاه ها می توانند موبایل و لپتاپ شما باشند و یا ESP8266 دیگر.
وقتی یک ارتباط تحت WiFi ایجاد می شود، ESP8266 قسمتی از یک (Local Area Network) LAN شبکه ی محلی می شود. تمام دستگاه ها روی یک شبکه ی محلی یا LAN می توانند با هم در حال تبادل باشند.
یک ESP8266 می تواند هم به صورت یک AP-Only ,Station-only, AP+Station استفاده شود.
Internet Layer
با اینکه دستگاه ها به صورت فیزیکی به هم متصل شده اند، آنها هنوز نمی توانند واقعا با هم صحبت کنند. زیرا آنها راهی برای دانستن جایی که قرار است پیام بفرستند ندارند. اینجاست که IP(Internet Protocol) مطرح می شود. تمام دستگاه در شبکه یک IP شخصی دارند. DHCP server (Dynamic Host Configuration Protocol Server) این پروتکل برای همین منظور است که مطمئن باشد این IP منحصر است. این یعنی شما دیگه می تونید به یک آدرس خاص پیغام بفرستید.
دو ورژن از پروتکل اینترنت یا IP داریم: IPv4 و IPv6. ورژن جدید بهبود یافته تا آدرسهای بیشتری در اختیار داشته باشید. در این مبحث ما در مورد IPv4 صحبت میکنیم، چون بیشتر LAN ها از این ورژن استفاده میکنند.
IP از چهار عدد تشکیل شده، برای مثال 192.168.1.5 این IP آدرس معتبر است. این IP از دو قسمت تشکیل شده: قسمت اول 192.168.1 است که آدرس شبکهی محلی شماست. آخرین شماره یعنی 5 هم اختصاصی هر دستگاه است.
با IP ما ESP8266 خود را در شبکه پیدا میکنیم و به آن پیغام می فرستیم. با همین IP آدرسها هم ESP8266 کامپیوتر و یا موبایل ما را پیدا میکند.
Sub-net Mask
در مورد Subnet توضیح زیادی قرار نیست بدهم. ولی تنها نکته ای که به خاطرتون بمونه این است این هم یک آدرس با چهار رقم است 255.255.255.0 .
MAC Address
تنها با دانستن IP آدرس نمی توان مستقیم به دستگاهی پیغام داد. برای این کار باید مک آدرس را هم بدانیم. همانطور که می دانیم IP هر دستگاهی ممکن است بعد از قطع و وصل شدن WiFi عوض شود. ولی مک آدرس یک آدرس منحصر به فرد، برای هر دستگاه هست که ثابت است و تغییر نمیکند. برای این کار بطور مثال ESP8266 یک پیام را که همهی دستگاه های داخل شبکهی محلی میشنوند میفرستد. به این شکل که به دنبال مک آدرس دستگاهی با IP آدرس 192.168.1.6 هستم. همچنین IP آدرس و مک آدرس خود را هم ارسال میکند. و وقتی دستگاهی که با IP آدرس فرستاده شده این پیغام را میشنود، مک آدرس خود را به آن IP میفرستد. به این صورت دو دستگاه IP و مک آدرس همدیگر را بدست میآورند.
The Transport Layer
پیغامها به IP آدرس های مختلف فرستاده می شوند، ولی هیچ تضمینی نیست که این پیغام ها گم نشوند و یا قسمتی از آن خراب نشود. در اینجا است که لایه ی انتقال مطرح می شود.
به طور معمول دو پروتکل برای این لایه داریم: TCP (Transmission Control Protocol) و UDP (User Datagram Protol).
- TCP مطمئن می شود که تمام بسته ها برسند. و بسته های خراب دوباره ارسال شوند.
- UDP تضمین نمی دهد که بسته به مقصد برسد. فقط به دنبال خرابی در بسته ها می گردد و وقتی یک خرابی پیدا می کند کلا آن بسته را از بین می برد. این روش بعلت این که فرستادن دوباره ندارد سریع تر است. برای همین از این روش برای ارتباط تصویری و بازیهای آنلاین استفاده می شود.
The Application Layer
ما اکنون با TCP یک تبادل قابل اعتماد داریم، ولی هنوز یک مشکل باقی مانده است. شما فرض کنید نامه ای را می فرستید و TCP تضمین می کند آن به مقصد میرسد. ولی گیرنده نداند که نامه با چه زبانی نوشته شده است، با آن چه کار باید بکند.
برای همین ما به لایه ی چهارم میرسیم، تا دو برنامه بتوانند با هم تبادل داده داشته باشند. پروتکل های مختلفی داریم ولی تمرکز ما بر پروتکلهایی است که توسط وب سرورها و مرورگرها استفاده می شوند.
Hyper Text Transfer Protocol
HTTP پروتکلی است که هم توسط وب سرور ها و هم توسط مرورگرها استفاده میشود. در این پروتکل از نوشته برای درخواست و پاسخگویی از طرف Client به سرور و برگشت آن استفاده میشود.
WebSocket
HTTP خیلی خوبه برای دانولد یک صفحه یا فرستادن یک عکس. ولی خیلی کند است. فرض کنید، هر دفعه که درخواستی را میخواهید بفرستید، مجبورید یک ارتباط TCP با سرور ایجاد کنید، و در خواست خود را بفرستید، و منتظر باشید تا سرور جواب دهد. این روند ایجاد یک ارتباط جدید، کند است. اینجاست که WebSocket مطرح میشود. شما میتوانید ارتباط TCP با سرور را تمام مدت باز نگه دارید.
دیدگاه ها :