ESP32 ওয়েব সার্ভার Arduino IDE ব্যবহার করে

Esp32 Oyeba Sarbhara Arduino Ide Byabahara Kare



ESP32 হল একটি মাইক্রোকন্ট্রোলার বোর্ড যা এর GPIO পিন ব্যবহার করে একাধিক ডিভাইসের সাথে সংযোগ করতে পারে। এতে বিল্ট-ইন ওয়াই-ফাই এবং ব্লুটুথ ইন্টারফেস সহ একটি ডুয়াল-কোর প্রসেসর রয়েছে। এই উভয় বৈশিষ্ট্যই ESP32কে IoT প্রকল্প ডিজাইন করার জন্য একটি উপযুক্ত বোর্ড তৈরি করে। ESP32 বোর্ডের প্রধান বৈশিষ্ট্যগুলির মধ্যে একটি হল বিদ্যমান অ্যাক্সেস পয়েন্টের সাথে সংযোগ করার ক্ষমতা। শুধু তাই নয়, এটি এর অ্যাক্সেস পয়েন্টও তৈরি করতে পারে, যাতে অন্যান্য ডিভাইসগুলি এটির সাথে সংযোগ করতে পারে।

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

বিষয়বস্তু:

1. ESP32 ওয়েব সার্ভার

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







একে অপরের সাথে কথা বলার জন্য, ওয়েব সার্ভার এবং ওয়েব ক্লায়েন্ট HTTP নামক একটি সাধারণ ভাষা ব্যবহার করে। এটি এইভাবে কাজ করে: ওয়েব ক্লায়েন্ট একটি HTTP অনুরোধ ব্যবহার করে একটি ওয়েব পৃষ্ঠার জন্য ওয়েব সার্ভারকে জিজ্ঞাসা করে। ওয়েব সার্ভার অনুরোধ করা ওয়েব পৃষ্ঠাটি ফেরত পাঠায়। ওয়েব পৃষ্ঠাটি উপস্থিত না থাকলে, আপনি একটি ত্রুটি বার্তা দেখতে পাবেন।



ESP32-এ, আমরা একটি ওয়েব সার্ভার ডিজাইন করতে পারি, কারণ ESP32 শুধুমাত্র একটি নেটওয়ার্কের মাধ্যমে অন্যান্য ডিভাইসের সাথে সংযোগ করতে পারে না কিন্তু এর ওয়েব সার্ভারও তৈরি করতে পারে এবং প্রাপ্ত অনুরোধগুলির প্রতিক্রিয়া জানাতে পারে। এটি সবই সম্ভব কারণ ESP32 তিনটি ভিন্ন মোডে কাজ করতে পারে:



  • স্টেশন
  • এক্সেস পয়েন্ট
  • স্টেশন এবং অ্যাক্সেস পয়েন্ট উভয়ই

আপনি ESP32 এর তিনটি মোডের অন্তর্দৃষ্টি পেতে এই নিবন্ধটি দেখতে পারেন:





Arduino IDE ব্যবহার করে কিভাবে একটি ESP32 অ্যাক্সেস পয়েন্ট (AP) সেট করবেন

2. কিভাবে Arduino IDE ব্যবহার করে ESP32 ওয়েব সার্ভার তৈরি করবেন

Arduino IDE ব্যবহার করে একটি ESP32 ওয়েব সার্ভার তৈরি করতে, আপনি ESP32 কে একটি অ্যাক্সেস পয়েন্টে সংযুক্ত করতে পারেন এবং ওয়েব সার্ভারের জন্য একটি IP ঠিকানা তৈরি করতে পারেন। আপনি আপনার সার্ভার ইন্টারফেস ডিজাইন করতে কিছু HTML এবং CSS প্রয়োগ করতে পারেন।



একবার আপনি ESP32 অ্যাক্সেস পয়েন্ট কাজ করে বুঝতে পারলে, আপনি Arduino IDE কোড ব্যবহার করে সহজেই একটি ESP32 ওয়েব সার্ভার ডিজাইন করতে পারেন। ESP32 ওয়েব সার্ভার কোড ESP32 Wi-Fi লাইব্রেরি ব্যবহার করে। এটি আমাদের কাজকে সহজ করে তোলে, কারণ এই লাইব্রেরিতে ESP32কে একটি অ্যাক্সেস পয়েন্টে সংযুক্ত করার জন্য প্রয়োজনীয় সমস্ত গুরুত্বপূর্ণ ফাংশন রয়েছে৷

আসুন Arduino IDE কোড ব্যবহার করে একটি ESP32 ওয়েব সার্ভার ডিজাইন করি।

3. ESP32 ওয়েব সার্ভার কোড

ESP32 ওয়েব সার্ভার কোডে অ্যাক্সেস পয়েন্টের সাথে ESP32 সংযোগ এবং সার্ভারের জন্য IP ঠিকানা পাওয়া জড়িত। একবার আপনি আইপি ঠিকানা পেয়ে গেলে, আপনাকে ESP32 ওয়েব সার্ভার অ্যাক্সেস করতে একই নেটওয়ার্কে সংযোগ করতে হবে। সেখান থেকে আপনি LED এবং অন্যান্য ডিভাইস নিয়ন্ত্রণ করতে পারবেন।

Arduino IDE খুলুন এবং এটির সাথে আপনার ESP32 বোর্ড সংযুক্ত করুন:

Arduino IDE-তে ESP32 বোর্ড ইনস্টল করা

ESP32 বোর্ড সংযুক্ত হয়ে গেলে, নিম্নলিখিত কোডটি আপনার বোর্ডে আপলোড করুন।

/**************

Linuxhint.com
LEDs নিয়ন্ত্রণ করতে ESP32 ওয়েব সার্ভার

****************/
// লাইব্রেরি আমদানি করুন জন্য ওয়াইফাই সংযোগ
# অন্তর্ভুক্ত করুন
// আপনার Wi-Fi নাম এবং পাসওয়ার্ড লিখুন
const char * ssid = 'ESP32' ;
const char * পাসওয়ার্ড = '123456789' ;
// পোর্ট নম্বর নির্বাচন করুন জন্য ওয়েব সার্ভার
ওয়াইফাই সার্ভার সার্ভার ( 80 ) ;
// ওয়েব অনুরোধ সংরক্ষণ করার জন্য একটি ভেরিয়েবল তৈরি করুন
স্ট্রিং হেডার;
// আউটপুটগুলির স্থিতি সংরক্ষণ করতে ভেরিয়েবল তৈরি করুন
স্ট্রিং আউটপুট26স্টেট = 'বন্ধ' ;
স্ট্রিং আউটপুট27স্টেট = 'বন্ধ' ;
// ভেরিয়েবলগুলিতে আউটপুট পিনগুলি বরাদ্দ করুন
const int output26 = 26 ;
const int output27 = 27 ;
স্বাক্ষরবিহীন দীর্ঘ বর্তমান সময় = মিলি ( ) ;
স্বাক্ষরবিহীন দীর্ঘ পূর্ববর্তী সময় = 0 ;
// পছন্দ সময় সীমা জন্য ওয়েব অনুরোধ ভিতরে মিলিসেকেন্ড
const long timeoutTime = 2000 ;
অকার্যকর সেটআপ ( ) {
সিরিয়াল.শুরু ( 115200 ) ;
// আউটপুট পিন সেট করুন হিসাবে আউটপুট
পিনমোড ( আউটপুট26, আউটপুট ) ;
পিনমোড ( আউটপুট27, আউটপুট ) ;
// আউটপুট বন্ধ করুন
ডিজিটাল লিখুন ( আউটপুট26, কম ) ;
ডিজিটাল লিখুন ( আউটপুট27, কম ) ;
// Wi-Fi নেটওয়ার্কে সংযোগ করুন
সিরিয়াল.প্রিন্ট ( 'সাথে সংযোগ ' ) ;
Serial.println ( ssid ) ;
WiFi.begin ( ssid, পাসওয়ার্ড ) ;
// অপেক্ষা করুন পর্যন্ত সংযোগ স্থাপন করা হয়
যখন ( WiFi.status ( ) ! = WL_CONNECTED ) {
বিলম্ব ( 500 ) ;
সিরিয়াল.প্রিন্ট ( '' ) ;
}
Serial.println ( '' ) ;
Serial.println ( 'ওয়াইফাই সংযুক্ত।' ) ;
Serial.println ( 'আইপি ঠিকানা: ' ) ;
Serial.println ( WiFi.localIP ( ) ) ;
server.begin ( ) ;
}

অকার্যকর লুপ ( ) {
WiFiClient ক্লায়েন্ট = server.available ( ) ; // চেক করুন জন্য নতুন ক্লায়েন্ট
যদি ( ক্লায়েন্ট ) { // যদি একজন ক্লায়েন্ট সংযুক্ত থাকে,
বর্তমান সময় = মিলি ( ) ;
পূর্ববর্তী সময় = বর্তমান সময়;
Serial.println ( 'নতুন ক্লায়েন্ট।' ) ; // সিরিয়াল পোর্ট অবহিত করুন
স্ট্রিং বর্তমান লাইন = '' ; // ক্লায়েন্ট ডেটা সংরক্ষণ করার জন্য একটি স্ট্রিং তৈরি করুন
যখন ( client.connected ( ) && বর্তমান সময় - পূর্ববর্তী সময় = 0 ) {
Serial.println ( 'GPIO 26 চালু' ) ;
output26State = 'চালু' ;
ডিজিটাল লিখুন ( আউটপুট26, উচ্চ ) ;
} অন্য যদি ( header.indexOf ( '/26/বন্ধ পান' ) > = 0 ) {
Serial.println ( 'GPIO 26 বন্ধ' ) ;
output26State = 'বন্ধ' ;
ডিজিটাল লিখুন ( আউটপুট26, কম ) ;
} অন্য যদি ( header.indexOf ( '/27/এ পান' ) > = 0 ) {
Serial.println ( 'GPIO 27 চালু' ) ;
output27State = 'চালু' ;
ডিজিটাল লিখুন ( আউটপুট27, উচ্চ ) ;
} অন্য যদি ( header.indexOf ( '/27/বন্ধ পান' ) > = 0 ) {
Serial.println ( 'GPIO 27 বন্ধ' ) ;
output27State = 'বন্ধ' ;
ডিজিটাল লিখুন ( আউটপুট27, কম ) ;
}

client.println ( '' ) ;
client.println ( '' ) ;
client.println ( '' ) ;
// বোতাম স্টাইল করতে CSS
client.println ( '