فهرست مطالب:
تصویری: ESP8266 ارتباط مستقیم داده ها: 3 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:56
معرفی
در حالی که برخی پروژه ها را با ماژول های Arduinos و nRF24l01 انجام می دادم ، فکر می کردم آیا می توانم با استفاده از ماژول ESP8266 به جای آن ، در تلاش خود صرفه جویی کنم. مزیت ماژول ESP8266 این است که دارای یک میکرو کنترلر روی برد است ، بنابراین نیازی به برد آردوینو اضافی نیست. علاوه بر این ، حجم حافظه ESP8266 بسیار بزرگتر است و از نظر سرعت ESP8266 حداکثر 160 مگاهرتز به جای 16 مگاهرتز آردوینو کار می کند. البته جنبه های منفی آن نیز وجود دارد.
ESP8266 فقط با ولتاژ 3.3 ولت کار می کند ، پین های کمتری دارد و ورودی های آنالوگ خوبی که آردوینو دارد را از دست می دهد (دارای یک ، اما فقط برای 1.0 ولت و نه 3.3 ولت). علاوه بر این ، نمونه های کد بسیار بیشتری برای Arduino + nRF24l01 و سپس برای ESP8266 وجود دارد ، مخصوصاً در مورد انتقال مستقیم داده ها.
بنابراین با توجه به پروژه ای ، من به موضوع انتقال سریع و سبک داده بین دو ESP8266 بدون تمام WWW و HTTP پرداختم.
هنگام جستجو در اینترنت برای مثال (اکثر کد های زیر از شبکه در نقاط مختلف انتخاب شده است) به س questionsالات زیادی برخورد کردم که چگونه می توان انتقال مستقیم داده را بدون مثالهای خوب "آن را انجام دهید" پیاده سازی کرد. چند کد نمونه وجود داشت ، اما بیشتر با س whyال که چرا کار نمی کند.
بنابراین پس از مطالعه و تلاش برای درک ، مثالهای زیر را ایجاد کردم که امکان انتقال سریع و ساده داده ها بین دو ESP8266 را فراهم می آورد.
مرحله 1: مرزها و پیشینه (TCP در مقابل UDP)
برای رسیدن به آنجا ، برخی از مرزها باید در مقایسه با nRF24l01 روشن شوند.
برای استفاده از ESP8266 در محیط Arduino ، کتابخانه اصلی مورد استفاده ESP8266WiFi.h است. ممکن است موارد مختلف باشد ، اما بیشتر نمونه ها از موارد ذکر شده در بالا استفاده می کنند. هنگام استفاده از این ، باید ارتباط خود را به سطح WiFi برسانید.
بنابراین ، برای برقراری ارتباط باید حداقل یک نقطه دسترسی (AP) / سرور و یک سرویس گیرنده وجود داشته باشد. AP نام شبکه و آدرس های IP را ارائه می دهد و سرویس گیرنده به این سرور متصل می شود.
بنابراین nRF24l01 را مقایسه کنید ، جایی که کد در دو انتها کم و بیش یکسان است (به جز کانال های انتقال) کد ESP8266 اساساً متفاوت است ، زیرا یکی به عنوان AP و دیگری به عنوان سرویس دهنده پیکربندی شده است.
موضوع بعدی این است که به جای ارسال چند بایت به nRF24l01 ، پروتکل های انتقال ESP8266 باید رعایت شوند.
دو پروتکل متداول وجود دارد: TCP و UDP.
TCP (پروتکل کنترل انتقال) یک پروتکل است که امکان انتقال بدون ضرر بین سرور و سرویس گیرنده را فراهم می کند. این پروتکل شامل "دست دادن" (تعداد زیادی پرچم و حق اعزام بین دو طرف) و شماره گذاری و تشخیص بسته ها برای شناسایی و ارسال مجدد بسته های از دست رفته است. علاوه بر این ، با استفاده از همه این دست دادن ها ، پروتکل از از دست رفتن داده ها به دلیل ارسال بسیاری از بسته ها به طور همزمان در شبکه جلوگیری می کند. بسته های داده تا دریافت آنها منتظر می مانند.
UDP (پروتکل اطلاعات کاربر) فاقد همه دست دادن ، شماره گذاری بسته ها و انتقال مجدد است. بنابراین سربار آن کوچکتر است و نیازی به همه دست دادن ها برای حفظ ارتباط نیست. UDP شامل برخی از خطاهای اساسی تشخیص ، اما هیچ تصحیح (بسته خراب شده است فقط حذف). در صورتی که طرف دریافت کننده در دریافت داده ها آزاد باشد ، داده ها بدون اطلاع ارسال می شوند. در عین حال ، بسته های مختلف می توانند با هم برخورد کنند ، زیرا هر طرف داده ها را در هر زمان که نیاز باشد ارسال می کند. با حذف تمام دست دادن ها ، یک ویژگی خوب دیگر از UDP به نام "چند پخش کننده" و "پخش" وجود دارد. در مورد "چندپخشی" بسته های داده به گروه از پیش تعریف شده از اعضا ارسال می شوند ، در "پخش" بسته های داده برای همه اعضای متصل ارسال می شود. این امر به طور قابل توجهی انتقال داده ها را در صورت جریانهایی که توسط چندین عضو دریافت می شود (به عنوان مثال با ارسال یک ویدئو به چندین گیرنده یا ارسال زمان فعلی به چندین دستگاه متصل) کاهش می دهد.
ویدئوهای خوبی در یوتیوب وجود دارد که آن را بهتر توضیح می دهند.
بنابراین هنگام ارسال داده ها ، مهم است که نیازهای خود را بدانید:
- داده های فاسد نشده ، مدیریت چندین همکار با دست دادن → TCP
- داده های زمان واقعی ، اتصال سریع → UDP
من ابتدا با پیاده سازی یک ارتباط مبتنی بر TCP (بین یک سرور و یک مشتری) شروع کردم. در حین آزمایش ، من در انتقال مشکلاتی داشتم. در ابتدا داده ها به سرعت تبادل می شد ، سپس پس از مدتی سرعت به طور چشمگیری کاهش یافت. من به این نتیجه رسیدم که این یک مشکل معمولی از رویکرد TCP بود (که اشتباه بود!) ، بنابراین بعداً به یک راه حل مبتنی بر UDP تغییر یافت. بالاخره هر دو به کار نزدیک شدم. بنابراین هر دو راه حل ارائه می شود.
طرحهای زیر برای TCP و UDP مشترک است:
- مستقل از هر شبکه WiFi موجود هستند. بنابراین در هر نقطه دور از اینترنت و روترهای متصل کار می کند.
- داده های ASCII را برای چاپ از طریق مانیتور سریال ارسال می کنند.
- در حال ارسال داده های بدست آمده از تابع millis () برای تجزیه و تحلیل سرعت انتقال هستند.
- برای چندین مشتری آزمایش نمی شوند (به دلیل داشتن سخت افزار برای راه اندازی شبکه در حال حاضر)
مرحله 2: سخت افزار
برای آزمایش کل مجموعه ، از دو ماژول ESP8266 استفاده کردم. یکی از ماژول ها یک آداپتور ESP-01 + USB-to-UART است. ماژول دیگر یک ماژول مبتنی بر ESP-12 است که شامل اتصال USB ، تنظیم کننده ولتاژ و برخی موارد جالب مانند سوئیچ ها ، LDR و LED های چند رنگ است.
ماژول USB-to-UART برای ESP-01 نیاز به کمی اصلاح داشت تا بتوان از آن به عنوان برنامه نویس استفاده کرد (دوباره Youtube توسط Csongor Varga).
برای اجرای طرح ها ، باید کتابخانه های ESP8266 را نصب کنید (همانطور که در بسیاری از نقاط اینترنت توضیح داده شده است). در هر دو مورد (TCP و UDP) هر کدام یک طرح سرور و مشتری وجود دارد. کدام طرح روی کدام ماژول بارگذاری می شود مهم نیست.
تقدیر و تشکر
همانطور که گفته شد ، طرح ها بر اساس بسیاری از قطعاتی است که در وب پیدا کردم. دیگر به خاطر نمی آورم که کجا را پیدا کردم و کد اصلی چیست یا چه چیزی را تغییر دادم. بنابراین من فقط می خواستم به طور کلی از جامعه بزرگ آنجا برای انتشار همه نمونه های عالی تشکر کنم.
مرحله 3: طرح ها
کد شامل دو طرح (هر کدام توضیح داده شد) ، یک طرح سرور و یک طرح مشتری ، برای TCP و UDP هر کدام.
توصیه شده:
استپر موتور کنترل MIDI با تراشه مستقیم دیجیتال سنتز (DDS): 3 مرحله
استپر موتور کنترل MIDI با تراشه دیجیتال مستقیم (DDS): آیا تا به حال ایده بدی داشته اید که شما فقط مجبور باشید آن را به یک پروژه کوچک تبدیل کنید؟ خوب ، من با یک طرح که برای Arduino Due ساخته بودم با هدف ساخت موسیقی با ماژول AD9833 Direct Digital Synthesis (DDS) بازی می کردم
ESP32-CAM ساخت اتومبیل ربات خود با پخش مستقیم ویدئو: 4 مرحله
ESP32-CAM ساخت اتومبیل ربات خود با پخش مستقیم ویدئو: ایده این است که ماشین ربات را تا آنجا که ممکن است ارزان قیمت کنید. بنابراین امیدوارم با دستورالعمل های دقیق خود و اجزای انتخاب شده برای یک مدل ارزان قیمت ، به یک گروه هدف بزرگ برسم. من می خواهم ایده خود را برای یک ماشین ربات به شما ارائه کنم
از داده های زنده آردوینو (و ذخیره داده ها در اکسل) نقشه های زیبا بسازید: 3 مرحله
از داده های زنده آردوینو نقشه های زیبا بسازید (و داده ها را در اکسل ذخیره کنید): همه ما دوست داریم با تابع P … lotter خود در Arduino IDE بازی کنیم. با این حال ، در حالی که می تواند برای برنامه های کاربردی اساسی مفید باشد ، داده ها بیشتر پاک می شوند امتیاز اضافه می شود و برای چشم چندان خوشایند نیست. پلاتر Arduino IDE انجام نمی دهد
سیستم جمع آوری داده ها و تجسم داده ها برای دوچرخه مسابقه برقی MotoStudent: 23 مرحله
سیستم جمع آوری داده و تجسم داده برای دوچرخه مسابقه ای برقی MotoStudent: سیستم جمع آوری داده ها مجموعه ای از سخت افزارها و نرم افزارها است که به منظور جمع آوری داده ها از سنسورهای خارجی ، ذخیره و پردازش آن بعداً به کار می روند تا به صورت گرافیکی تجسم و تجزیه و تحلیل شوند. به مهندسان اجازه می دهد تا
نحوه دریافت داده ها از پایگاه داده Firebase در NodeMCU: 7 مرحله
نحوه واکشی داده ها از پایگاه داده Firebase در NodeMCU: برای این دستورالعمل ، ما داده ها را از پایگاه داده در Google Firebase واکشی کرده و با استفاده از NodeMCU برای تجزیه و تحلیل بیشتر می آوریم. حساب ایجاد پایگاه داده Firebase. 3) بارگیری