সুচিপত্র:

ESP8266 সরাসরি তথ্য যোগাযোগ: 3 টি ধাপ
ESP8266 সরাসরি তথ্য যোগাযোগ: 3 টি ধাপ

ভিডিও: ESP8266 সরাসরি তথ্য যোগাযোগ: 3 টি ধাপ

ভিডিও: ESP8266 সরাসরি তথ্য যোগাযোগ: 3 টি ধাপ
ভিডিও: Teleduino ile Uzaktan Kontrol | Arduino'yu İnternete Bağlamak | Arduino Ethernet Shield 2024, নভেম্বর
Anonim
ESP8266 ডাইরেক্ট ডেটা কমিউনিকেশন
ESP8266 ডাইরেক্ট ডেটা কমিউনিকেশন

ভূমিকা

Arduinos এবং nRF24l01 মডিউলগুলির সাথে কিছু প্রকল্প করার সময় আমি ভাবছিলাম যে আমি পরিবর্তে একটি ESP8266 মডিউল ব্যবহার করে কিছু প্রচেষ্টা বাঁচাতে পারি কিনা। ESP8266 মডিউলের সুবিধা হল যে এটিতে একটি মাইক্রো কন্ট্রোলার রয়েছে, তাই অতিরিক্ত Arduino বোর্ডের প্রয়োজন নেই। উপরন্তু ESP8266 এর মেমরির আকার অনেক বড় এবং ESP8266 এর গতি সম্পর্কে Arduino এর 16MHz এর পরিবর্তে সর্বোচ্চ 160MHz চালায়। অবশ্যই কিছু নেতিবাচক দিক আছে।

ESP8266 শুধুমাত্র 3.3V এ চলে, কম পিন আছে এবং Arduino এর চমৎকার এনালগ ইনপুটগুলি অনুপস্থিত (এটি একটি আছে, কিন্তু শুধুমাত্র 1.0V এর জন্য এবং 3.3V নয়)। অতিরিক্তভাবে Arduino + nRF24l01 এর জন্য আরো অনেক কোডের উদাহরণ আছে তারপর ESP8266 এর জন্য আছে বিশেষ করে যখন সরাসরি ডেটা ট্রান্সফারের কথা আসে।

তাই একটি প্রকল্পের কথা মাথায় রেখে, আমি সমস্ত WWW এবং HTTP স্টাফ ছাড়া দুটি ESP8266 এর মধ্যে দ্রুত এবং লাইটওয়েট ডেটা স্থানান্তরের বিষয়টির দিকে নজর দিলাম।

উদাহরণের জন্য ইন্টারনেটে অনুসন্ধান করার সময় (নিচের কোডের বেশিরভাগই নেট থেকে বিভিন্ন জায়গায় বাছাই করা হয়েছিল) আমি "অনেকটা ভালো লেগেছে" উদাহরণ ছাড়া কিভাবে সরাসরি ডেটা ট্রান্সফার বাস্তবায়ন করতে হয় তার অনেক প্রশ্নের সম্মুখীন হয়েছি। কিছু উদাহরণ কোড ছিল, কিন্তু বেশিরভাগই প্রশ্ন করে কেন এটি কাজ করে নি।

তাই কিছু পড়ার পরে এবং বোঝার চেষ্টা করার পরে, আমি নীচের উদাহরণগুলি তৈরি করেছি যা দুটি ESP8266 এর মধ্যে দ্রুত এবং সহজ ডেটা স্থানান্তর করার অনুমতি দেয়।

ধাপ 1: সীমানা এবং পটভূমি (টিসিপি বনাম ইউডিপি)

সেখানে পৌঁছানোর জন্য, nRF24l01 এর তুলনায় কিছু সীমানা স্পষ্ট করতে হবে।

আরডুইনো পরিবেশের মধ্যে ESP8266 ব্যবহার করার জন্য, ব্যবহারের জন্য প্রাথমিক লাইব্রেরি হল ESP8266WiFi.h। এটি ভিন্ন হতে পারে, তবে বেশিরভাগ উদাহরণ উল্লিখিত ব্যবহার করে। এটি ব্যবহার করার সময়, আপনাকে ওয়াইফাই স্তরে আপনার যোগাযোগ পেতে হবে।

সুতরাং, যোগাযোগের জন্য কমপক্ষে একটি অ্যাক্সেস পয়েন্ট (এপি) / সার্ভার এবং একটি ক্লায়েন্ট থাকা প্রয়োজন। AP নেটওয়ার্কের নাম এবং IP ঠিকানা প্রদান করে এবং ক্লায়েন্ট এই সার্ভারের সাথে সংযুক্ত হবে।

সুতরাং nRF24l01 এর সাথে তুলনা করুন, যেখানে উভয় প্রান্তের কোড কমবেশি একই (ট্রান্সমিশন চ্যানেল ব্যতীত) ESP8266 এর কোডটি মৌলিকভাবে আলাদা, যেহেতু একটি AP এবং অন্যটি ক্লায়েন্ট হিসাবে কনফিগার করা হয়েছে।

পরের বিষয় হল, শুধু NRF24l01 এ কিছু বাইট পাঠানোর পরিবর্তে, ESP8266 ট্রান্সফার প্রটোকলগুলি পর্যবেক্ষণ করা প্রয়োজন।

দুটি সাধারণ ব্যবহৃত প্রোটোকল রয়েছে: টিসিপি এবং ইউডিপি।

টিসিপি (ট্রান্সমিশন কন্ট্রোল প্রোটোকল) একটি প্রোটোকল যা সার্ভার এবং ক্লায়েন্টের মধ্যে ক্ষতি-মুক্ত ট্রান্সমিশনের অনুমতি দেয়। প্রটোকলে "হ্যান্ডশেক" (উভয় পক্ষের মধ্যে প্রচুর পতাকা এবং অ্যাকনলেজ পাঠানো হয়েছে) এবং প্যাকেট নম্বর এবং সনাক্তকরণ এবং হারিয়ে যাওয়া প্যাকেটগুলি পুনরায় প্রেরণের জন্য অন্তর্ভুক্ত করা হয়েছে। উপরন্তু, এই সমস্ত হ্যান্ডশেক ব্যবহার করে প্রোটোকল নেটওয়ার্কে একই সময়ে অনেক প্যাকেট পাঠানোর কারণে ডেটা নষ্ট হওয়া রোধ করে। ডাটা প্যাকেটগুলি প্রাপ্ত না হওয়া পর্যন্ত অপেক্ষা করুন।

ইউডিপি (ইউজার ডেটাগ্রাম প্রোটোকল) এর মধ্যে সব হ্যান্ডশেক, প্যাকেট নম্বর এবং পুনরায় সংক্রমণের অভাব রয়েছে। অতএব এর ওভারহেডটি ছোট এবং একটি সংযোগ বজায় রাখার জন্য সমস্ত হ্যান্ডশেকের প্রয়োজন নেই। ইউডিপি কিছু মৌলিক ত্রুটি সনাক্তকরণ অন্তর্ভুক্ত করেছে, কিন্তু কোন সংশোধন (দূষিত প্যাকেজটি বাদ দেওয়া হয়েছে)। ডেটা পাঠানো হয়, জ্ঞান ছাড়াই যদি প্রাপক পক্ষ ডেটা গ্রহণ করতে মুক্ত হয়। একই সময়ে, একাধিক প্যাকেট সংঘর্ষ করতে পারে, কারণ প্রতিটি পক্ষ যখনই প্রয়োজন তথ্য পাঠায়। সমস্ত হ্যান্ডশেক বাদ দিয়ে, ইউডিপির একটি অতিরিক্ত চমৎকার বৈশিষ্ট্য রয়েছে যার নাম "মাল্টিকাস্ট" এবং "সম্প্রচার"। "মাল্টিকাস্ট" ক্ষেত্রে ডেটা প্যাকেট সদস্যদের একটি পূর্বনির্ধারিত গ্রুপে পাঠানো হয়, একটি "সম্প্রচার" ডেটা প্যাকেট সমস্ত সংযুক্ত সদস্যদের কাছে পাঠানো হয়। এটি একাধিক সদস্যদের দ্বারা প্রবাহিত হওয়ার ক্ষেত্রে ডেটা স্থানান্তরকে উল্লেখযোগ্যভাবে হ্রাস করে (যেমন একাধিক রিসিভারে ভিডিও ফিড পাঠিয়ে বা বর্তমান সংযুক্ত একাধিক ডিভাইসে পাঠিয়ে)।

ইউটিউবে কিছু ভাল ভিডিও আছে যা আরও ভালভাবে ব্যাখ্যা করে।

সুতরাং ডেটা পাঠানোর সময়, আপনার প্রয়োজনগুলি জানা গুরুত্বপূর্ণ:

  • অ-দূষিত ডেটা, হ্যান্ডশেকের মাধ্যমে একাধিক সহকর্মীদের পরিচালনা → টিসিপি
  • রিয়েল টাইম ডেটা, দ্রুত সংযোগ → ইউডিপি

আমি প্রথমে একটি টিসিপি ভিত্তিক যোগাযোগ (এক সার্ভার এবং এক ক্লায়েন্টের মধ্যে) বাস্তবায়নের সাথে শুরু করেছি। এটি পরীক্ষা করার সময়, আমার সংক্রমণে স্টলিং সমস্যা ছিল। শুরুতে ডেটা দ্রুত আদান -প্রদান করা হতো, তারপর কিছুক্ষণ পর গতি নাটকীয়ভাবে কমে যায়। আমি উপসংহারে পৌঁছেছিলাম যে এটি টিসিপি পদ্ধতির একটি সাধারণ সমস্যা (যা ভুল ছিল!) অবশেষে আমি দুজনেই কাজের কাছে গেলাম। সুতরাং উভয় সমাধান প্রদান করা হবে।

নীচের স্কেচগুলিতে টিসিপি এবং ইউডিপির মিল রয়েছে যেগুলি:

  • যে কোন বিদ্যমান WiFi নেটওয়ার্কের জন্য স্বাধীন। সুতরাং এটি ইন্টারনেট এবং সংযুক্ত রাউটার থেকে দূরে কোথাও কাজ করবে।
  • সিরিয়াল মনিটরের মাধ্যমে প্রিন্ট করার জন্য ASCII ডেটা পাঠাচ্ছে।
  • ট্রান্সমিশনের গতি বিশ্লেষণ করতে মিলিস ()-ফাংশন দ্বারা প্রাপ্ত ডেটা পাঠাচ্ছে।
  • একাধিক ক্লায়েন্টের জন্য পরীক্ষা করা হয় না (এই মুহূর্তে নেটওয়ার্ক সেট আপ করার জন্য হার্ডওয়্যার থাকার কারণে)

ধাপ 2: হার্ডওয়্যার

হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার

পুরো সেট আপ পরীক্ষা করার জন্য আমি দুটি ESP8266 মডিউল ব্যবহার করেছি। একটি মডিউল হল একটি ESP-01 + USB-to-UART অ্যাডাপ্টার। অন্য মডিউলটি একটি ESP-12 ভিত্তিক মডিউল যা USB সংযোগ, ভোল্টেজ নিয়ন্ত্রক এবং সুইচ, LDR এবং মাল্টি-কালার LED এর মতো কিছু মজার জিনিস অন্তর্ভুক্ত করে।

ESP-01 এর জন্য ইউএসবি-থেকে-ইউএআরটি মডিউলটি একটি প্রোগ্রামার হিসাবে ব্যবহার করতে সক্ষম হওয়ার জন্য কিছুটা সংশোধন করা দরকার (আবার সিঙ্গোর ভারগা দ্বারা ইউটিউব)।

স্কেচগুলি চালানোর জন্য, আপনাকে ESP8266 লাইব্রেরিগুলি ইনস্টল করতে হবে (যেমন ইন্টারনেটে অনেক জায়গায় বর্ণনা করা হয়েছে)। উভয় ক্ষেত্রেই (টিসিপি এবং ইউডিপি) প্রতিটিতে একটি সার্ভার এবং ক্লায়েন্ট স্কেচ রয়েছে। কোন স্কেচ লোড করা হয়েছে কোন মডিউলে কোন ব্যাপার না।

স্বীকৃতি

উল্লিখিত হিসাবে, স্কেচগুলি অনেকগুলি বিট এবং টুকরোর উপর ভিত্তি করে যা আমি ওয়েবে পেয়েছি। আমি আর মনে করতে পারছি না আমি কোথায় কি পেয়েছি, এবং মূল কোড কি বা আমি কি পরিবর্তন করেছি। তাই আমি কেবল সাধারণ সম্প্রদায়ের সকল বড় উদাহরণ প্রকাশের জন্য ধন্যবাদ জানাতে চাই।

ধাপ 3: স্কেচ

কোড টিসিপি এবং ইউডিপির জন্য প্রতিটিতে দুটি স্কেচ (যেমন ব্যাখ্যা করা হয়েছে), একটি সার্ভার স্কেচ এবং ক্লায়েন্ট স্কেচ রয়েছে।

প্রস্তাবিত: