ESP32 বেসিক স্টার্টার
কিট
প্যাকিং তালিকা
ESP32 ভূমিকা
ESP32-তে নতুন? এখান থেকে শুরু করুন! ESP32 হল Espressif দ্বারা তৈরি কম খরচের এবং কম-পাওয়ারের সিস্টেম অন আ চিপ (SoC) মাইক্রোকন্ট্রোলারের একটি সিরিজ যার মধ্যে রয়েছে Wi-Fi এবং Bluetooth ওয়্যারলেস ক্ষমতা এবং ডুয়াল-কোর প্রসেসর। আপনি যদি ESP8266 এর সাথে পরিচিত হন, তাহলে ESP32 হল এর উত্তরসূরী, যা অনেক নতুন বৈশিষ্ট্যে ভরপুর।ESP32 স্পেসিফিকেশন
আপনি যদি আরও কিছু প্রযুক্তিগত এবং সুনির্দিষ্ট তথ্য পেতে চান, তাহলে আপনি ESP32 এর নিম্নলিখিত বিস্তারিত স্পেসিফিকেশনগুলি দেখে নিতে পারেন (উৎস: http://esp32.net/)—আরও বিস্তারিত জানার জন্য, ডেটাশিট পরীক্ষা করুন):
- ওয়্যারলেস সংযোগ ওয়াইফাই: HT150.0 এর সাথে 40 Mbps ডেটা রেট
- ব্লুটুথ: BLE (ব্লুটুথ লো এনার্জি) এবং ব্লুটুথ ক্লাসিক
- প্রসেসর: টেনসিলিকা এক্সটেনসা ডুয়াল-কোর ৩২-বিট LX32 মাইক্রোপ্রসেসর, ১৬০ অথবা ২৪০ মেগাহার্টজ এ চলে
- স্মৃতি:
- রম: ৪৪৮ কেবি (বুটিং এবং কোর ফাংশনের জন্য)
- SRAM: ৫২০ KB (তথ্য এবং নির্দেশাবলীর জন্য)
- RTC fas SRAM: ৮ KB (ডিপ-স্লিপ মোড থেকে RTC বুট করার সময় ডেটা স্টোরেজ এবং প্রধান CPU-এর জন্য)
- RTC স্লো SRAM: 8KB (ডিপ-স্লিপ মোডের সময় কো-প্রসেসর অ্যাক্সেসের জন্য) eFuse: 1 Kbit (যার মধ্যে 256 বিট সিস্টেমের জন্য ব্যবহৃত হয় (MAC ঠিকানা এবং চিপ কনফিগারেশন) এবং বাকি 768 বিট গ্রাহক অ্যাপ্লিকেশনের জন্য সংরক্ষিত, যার মধ্যে ফ্ল্যাশ-এনক্রিপশন এবং চিপ-আইডি অন্তর্ভুক্ত)
এমবেডেড ফ্ল্যাশ: ESP16-D17WD এবং ESP0-PICO-D1-তে IO32, IO2, SD_CMD, SD_CLK, SD_DATA_32 এবং SD_DATA_4 এর মাধ্যমে অভ্যন্তরীণভাবে ফ্ল্যাশ সংযুক্ত।
- ০ MiB (ESP0-D32WDQ0, ESP6-D32WD, এবং ESP0-S32WD চিপস)
- ২ MiB (ESP2-D32WD চিপ)
- ৪ MiB (ESP4-PICO-D32 SiP মডিউল)
কম শক্তি: নিশ্চিত করে যে আপনি এখনও ADC রূপান্তর ব্যবহার করতে পারেন, উদাহরণস্বরূপampলে, গভীর ঘুমের সময়।
পেরিফেরাল ইনপুট/আউটপুট:
- ডিএমএ সহ পেরিফেরাল ইন্টারফেস যাতে ক্যাপাসিটিভ টাচ অন্তর্ভুক্ত থাকে
- ADCs (অ্যানালগ-টু-ডিজিটাল কনভার্টার)
- DACs (ডিজিটাল-টু-অ্যানালগ কনভার্টার)
- I²C (আন্তঃসমন্বিত সার্কিট)
- UART (ইউনিভার্সাল অ্যাসিনক্রোনাস রিসিভার/ট্রান্সমিটার)
- এসপিআই (সিরিয়াল পেরিফেরাল ইন্টারফেস)
- I²S (ইন্টিগ্রেটেড ইন্টারচিপ সাউন্ড)
- RMII (হ্রাসকৃত মিডিয়া-স্বাধীন ইন্টারফেস)
- PWM (পালস-প্রস্থ মড্যুলেশন)
নিরাপত্তা: AES এবং SSL/TLS এর জন্য হার্ডওয়্যার অ্যাক্সিলারেটর
ESP32 ডেভেলপমেন্ট বোর্ড
ESP32 বলতে খালি ESP32 চিপ বোঝায়। তবে, "ESP32" শব্দটি ESP32 ডেভেলপমেন্ট বোর্ডগুলিকে বোঝাতেও ব্যবহৃত হয়। ESP32 বেয়ার চিপ ব্যবহার করা সহজ বা ব্যবহারিক নয়, বিশেষ করে শেখা, পরীক্ষা করা এবং প্রোটোটাইপ করার সময়। বেশিরভাগ সময়, আপনি একটি ESP32 ডেভেলপমেন্ট বোর্ড ব্যবহার করতে চাইবেন।
আমরা রেফারেন্স হিসেবে ESP32 DEVKIT V1 বোর্ড ব্যবহার করব। নিচের ছবিতে ESP32 DEVKIT V1 বোর্ড দেখানো হয়েছে, যার সংস্করণ 30টি GPIO পিন সহ।স্পেসিফিকেশন – ESP32 DEVKIT V1
নিম্নলিখিত সারণীতে ESP32 DEVKIT V1 DOIT বোর্ডের বৈশিষ্ট্য এবং স্পেসিফিকেশনের সারসংক্ষেপ দেখানো হয়েছে:
কোরের সংখ্যা | ২ (ডুয়াল কোর) |
ওয়াই-ফাই | ২.৪ গিগাহার্জ পর্যন্ত ১৫০ মেগাবিট/সেকেন্ড পর্যন্ত |
ব্লুটুথ | BLE (ব্লুটুথ লো এনার্জি) এবং লিগ্যাসি ব্লুটুথ |
স্থাপত্য | 32 বিট |
ঘড়ি ফ্রিকোয়েন্সি | 240 MHz পর্যন্ত |
RAM | 512 KB |
পিন | ৩০ (মডেলের উপর নির্ভর করে) |
পেরিফেরাল | ক্যাপাসিটিভ টাচ, ADC (অ্যানালগ থেকে ডিজিটাল কনভার্টার), DAC (ডিজিটাল থেকে অ্যানালগ কনভার্টার), 12C (ইন্টার-ইন্টিগ্রেটেড সার্কিট), UART (ইউনিভার্সাল অ্যাসিনক্রোনাস রিসিভার/ট্রান্সমিটার), CAN 2.0 (কন্ট্রোলার এরিয়া নেটওয়ার্কার), SPI (সিরিয়াল পেরিফেরাল ইন্টারফেস), 12S (ইন্টিগ্রেটেড ইন্টার-আইসি) শব্দ), RMII (হ্রাসকৃত মিডিয়া-স্বাধীন ইন্টারফেস), PWM (পালস প্রস্থ মড্যুলেশন), এবং আরও অনেক কিছু। |
অন্তর্নির্মিত বোতাম | রিসেট এবং বুট বোতাম |
অন্তর্নির্মিত LEDs | GPIO2 এর সাথে সংযুক্ত অন্তর্নির্মিত নীল LED; অন্তর্নির্মিত লাল LED যা দেখায় যে বোর্ডটি চালিত হচ্ছে |
ইউআরটি থেকে ইউএসবি সেতু |
CP2102 |
এটিতে একটি মাইক্রোইউএসবি ইন্টারফেস রয়েছে যা আপনি কোড আপলোড করতে বা পাওয়ার প্রয়োগ করতে আপনার কম্পিউটারের সাথে বোর্ড সংযোগ করতে ব্যবহার করতে পারেন।
এটি CP2102 চিপ (USB থেকে UART) ব্যবহার করে আপনার কম্পিউটারের সাথে একটি সিরিয়াল ইন্টারফেস ব্যবহার করে COM পোর্টের মাধ্যমে যোগাযোগ করে। আরেকটি জনপ্রিয় চিপ হল CH340। আপনার বোর্ডে USB থেকে UART চিপ কনভার্টার কী তা পরীক্ষা করে দেখুন কারণ আপনার কম্পিউটার বোর্ডের সাথে যোগাযোগ করতে পারে তার জন্য আপনাকে প্রয়োজনীয় ড্রাইভার ইনস্টল করতে হবে (এই নির্দেশিকা সম্পর্কে আরও তথ্য এই নির্দেশিকাতে পরে)।
এই বোর্ডটিতে বোর্ডটি পুনরায় চালু করার জন্য একটি RESET বোতাম (EN লেবেলযুক্ত হতে পারে) এবং বোর্ডটিকে ফ্ল্যাশিং মোডে রাখার জন্য একটি BOOT বোতাম (কোড গ্রহণের জন্য উপলব্ধ) রয়েছে। মনে রাখবেন যে কিছু বোর্ডে BOOT বোতাম নাও থাকতে পারে।
এটিতে একটি অন্তর্নির্মিত নীল LEDও রয়েছে যা GPIO 2 এর সাথে অভ্যন্তরীণভাবে সংযুক্ত। এই LED ডিবাগিংয়ের জন্য কার্যকর, যা কিছু ধরণের ভিজ্যুয়াল ফিজিক্যাল আউটপুট দেয়। এছাড়াও একটি লাল LED রয়েছে যা বোর্ডে বিদ্যুৎ সরবরাহ করলে জ্বলে ওঠে।ESP32 পিনআউট
ESP32 পেরিফেরালগুলির মধ্যে রয়েছে:
- ১৮টি অ্যানালগ-টু-ডিজিটাল কনভার্টার (ADC) চ্যানেল
- ৩টি SPI ইন্টারফেস
- 3 UART ইন্টারফেস
- ২টি I2C ইন্টারফেস
- 16 PWM আউটপুট চ্যানেল
- ২টি ডিজিটাল-টু-অ্যানালগ কনভার্টার (DAC)
- ২টি I2S ইন্টারফেস
- ১০টি ক্যাপাসিটিভ সেন্সিং জিপিআইও
ADC (অ্যানালগ থেকে ডিজিটাল কনভার্টার) এবং DAC (ডিজিটাল থেকে অ্যানালগ কনভার্টার) বৈশিষ্ট্যগুলি নির্দিষ্ট স্ট্যাটিক পিনের জন্য নির্ধারিত। তবে, আপনি কোন পিনগুলি UART, I2C, SPI, PWM, ইত্যাদি তা নির্ধারণ করতে পারেন - আপনাকে কেবল কোডে সেগুলি নির্ধারণ করতে হবে। ESP32 চিপের মাল্টিপ্লেক্সিং বৈশিষ্ট্যের কারণে এটি সম্ভব।
যদিও আপনি সফ্টওয়্যারে পিনের বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে পারেন, তবে নিম্নলিখিত চিত্রে দেখানো হিসাবে ডিফল্টরূপে পিনগুলি নির্ধারিত রয়েছে।উপরন্তু, এমন কিছু পিন রয়েছে যার নির্দিষ্ট বৈশিষ্ট্য রয়েছে যা এগুলিকে একটি নির্দিষ্ট প্রকল্পের জন্য উপযুক্ত বা অযোগ্য করে তোলে। নিম্নলিখিত টেবিলটি দেখায় যে কোন পিনগুলি ইনপুট, আউটপুট হিসাবে ব্যবহার করা সবচেয়ে ভাল এবং কোনগুলি সম্পর্কে আপনার সতর্ক থাকা উচিত।
সবুজ রঙে হাইলাইট করা পিনগুলি ব্যবহার করা ঠিক আছে। হলুদ রঙে হাইলাইট করা পিনগুলি ব্যবহার করা ঠিক আছে, তবে আপনাকে মনোযোগ দিতে হবে কারণ বুট করার সময় এগুলিতে অপ্রত্যাশিত আচরণ হতে পারে। লাল রঙে হাইলাইট করা পিনগুলি ইনপুট বা আউটপুট হিসাবে ব্যবহার করার পরামর্শ দেওয়া হয় না।
জিপি আইও | ইনপুট | আউটপুট | নোট |
0 | টেনে তোলা | OK | বুট করার সময় PWM সিগন্যাল আউটপুট করে, ফ্ল্যাশিং মোডে প্রবেশ করতে অবশ্যই কম হতে হবে |
1 | TX পিন | OK | বুটে আউটপুট ডিবাগ করুন |
2 | OK | OK | অন-বোর্ড LED এর সাথে সংযুক্ত, ফ্ল্যাশিং মোডে প্রবেশ করতে ভাসমান বা কম রাখতে হবে |
3 | OK | আরএক্স পিন | বুট করার সময় উচ্চ |
4 | OK | OK | |
5 | OK | OK | বুট করার সময় PWM সিগন্যাল আউটপুট করে, স্ট্র্যাপিং পিন |
12 | OK | OK | উঁচু করে টানা হলে বুট নষ্ট হয়ে যায়, স্ট্র্যাপিং পিন |
13 | OK | OK | |
14 | OK | OK | বুট করার সময় PWM সিগন্যাল আউটপুট করে |
15 | OK | OK | বুট করার সময় PWM সিগন্যাল আউটপুট করে, স্ট্র্যাপিং পিন |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | শুধুমাত্র ইনপুট | |
35 | OK | শুধুমাত্র ইনপুট | |
36 | OK | শুধুমাত্র ইনপুট | |
39 | OK | শুধুমাত্র ইনপুট |
ESP32 GPIO এবং এর কার্যকারিতা সম্পর্কে আরও বিস্তারিত এবং গভীর বিশ্লেষণের জন্য পড়া চালিয়ে যান।
শুধুমাত্র পিন ইনপুট করুন
GPIO 34 থেকে 39 হল GPI - শুধুমাত্র ইনপুট পিন। এই পিনগুলিতে অভ্যন্তরীণ পুল-আপ বা পুল-ডাউন প্রতিরোধক নেই। এগুলি আউটপুট হিসাবে ব্যবহার করা যাবে না, তাই এই পিনগুলি শুধুমাত্র ইনপুট হিসাবে ব্যবহার করুন:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
ESP-WROOM-32-তে SPI ফ্ল্যাশ ইন্টিগ্রেটেড
কিছু ESP6 ডেভেলপমেন্ট বোর্ডে GPIO 11 থেকে GPIO 32 পর্যন্ত ব্যবহার করা হয়। তবে, এই পিনগুলি ESP-WROOM-32 চিপের ইন্টিগ্রেটেড SPI ফ্ল্যাশের সাথে সংযুক্ত থাকে এবং অন্যান্য ব্যবহারের জন্য সুপারিশ করা হয় না। তাই, আপনার প্রকল্পগুলিতে এই পিনগুলি ব্যবহার করবেন না:
- জিপিআইও ৬ (এসসিকে/সিএলকে)
- জিপিআইও ৭ (এসডিও/এসডি০)
- জিপিআইও ৮ (এসডিআই/এসডি১)
- জিপিআইও ৯ (এসএইচডি/এসডি২)
- জিপিআইও ১০ (এসডব্লিউপি/এসডি৩)
- জিপিআইও ১১ (সিএসসি/সিএমডি)
ক্যাপাসিটিভ টাচ জিপিআইও
ESP32-তে ১০টি অভ্যন্তরীণ ক্যাপাসিটিভ টাচ সেন্সর রয়েছে। এগুলি বৈদ্যুতিক চার্জ ধারণকারী যেকোনো কিছুর পরিবর্তন বুঝতে পারে, যেমন মানুষের ত্বক। তাই তারা আঙুল দিয়ে GPIO-গুলিকে স্পর্শ করার সময় সৃষ্ট পরিবর্তনগুলি সনাক্ত করতে পারে। এই পিনগুলি সহজেই ক্যাপাসিটিভ প্যাডে একত্রিত করা যেতে পারে এবং যান্ত্রিক বোতামগুলি প্রতিস্থাপন করা যেতে পারে। ক্যাপাসিটিভ টাচ পিনগুলি ESP10-কে গভীর ঘুম থেকে জাগানোর জন্যও ব্যবহার করা যেতে পারে। এই অভ্যন্তরীণ টাচ সেন্সরগুলি এই GPIO-গুলির সাথে সংযুক্ত:
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
- টি০ (জিপিআইও ৪)
ডিজিটাল কনভার্টারে অ্যানালগ (এডিসি)
ESP32 তে 18 x 12 বিট ADC ইনপুট চ্যানেল রয়েছে (যদিও ESP8266 তে কেবল 1x 10 বিট ADC রয়েছে)। এগুলি হল GPIO যা ADC এবং সংশ্লিষ্ট চ্যানেল হিসাবে ব্যবহার করা যেতে পারে:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
দ্রষ্টব্য: Wi-Fi ব্যবহার করার সময় ADC2 পিন ব্যবহার করা যাবে না। তাই, যদি আপনি Wi-Fi ব্যবহার করেন এবং ADC2 GPIO থেকে মান পেতে সমস্যা হয়, তাহলে আপনি ADC1 GPIO ব্যবহার করার কথা বিবেচনা করতে পারেন। এতে আপনার সমস্যার সমাধান হবে।
ADC ইনপুট চ্যানেলগুলির রেজোলিউশন ১২-বিট। এর অর্থ হল আপনি ০ থেকে ৪০৯৫ পর্যন্ত অ্যানালগ রিডিং পেতে পারেন, যেখানে ০ ০V এর সাথে এবং ৪০৯৫ থেকে ৩.৩V এর সাথে মিলে যায়। আপনি কোড এবং ADC রেঞ্জের উপর আপনার চ্যানেলগুলির রেজোলিউশনও সেট করতে পারেন।
ESP32 ADC পিনগুলির কোনও রৈখিক আচরণ নেই। আপনি সম্ভবত 0 এবং 0.1V, অথবা 3.2 এবং 3.3V এর মধ্যে পার্থক্য করতে পারবেন না। ADC পিনগুলি ব্যবহার করার সময় আপনাকে এটি মনে রাখতে হবে। আপনি নিম্নলিখিত চিত্রে দেখানো আচরণের মতো আচরণ পাবেন।ডিজিটাল থেকে অ্যানালগ রূপান্তরকারী (DAC)
ESP2 তে 8 x 32 বিট DAC চ্যানেল রয়েছে যা ডিজিটাল সিগন্যালগুলিকে অ্যানালগ ভলিউমে রূপান্তর করে।tage সিগন্যাল আউটপুট। এগুলি হল DAC চ্যানেল:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
আরটিসি জিপিআইও
ESP32 তে RTC GPIO সাপোর্ট আছে। RTC লো-পাওয়ার সাবসিস্টেমে রুট করা GPIO গুলি ESP32 যখন গভীর ঘুমে থাকে তখন ব্যবহার করা যেতে পারে। এই RTC GPIO গুলি Ultra Low যখন গভীর ঘুম থেকে ESP32 কে জাগিয়ে তুলতে ব্যবহার করা যেতে পারে।
পাওয়ার (ULP) কো-প্রসেসর চলছে। নিম্নলিখিত GPIO গুলি বহিরাগত জাগরণ উৎস হিসেবে ব্যবহার করা যেতে পারে।
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
- আরটিসি_জিপিআইও০ (জিপিআইও৩৬)
PWM
ESP32 LED PWM কন্ট্রোলারে 16টি স্বাধীন চ্যানেল রয়েছে যা বিভিন্ন বৈশিষ্ট্য সহ PWM সংকেত তৈরি করতে কনফিগার করা যেতে পারে। আউটপুট হিসেবে কাজ করতে পারে এমন সমস্ত পিন PWM পিন হিসাবে ব্যবহার করা যেতে পারে (GPIO 34 থেকে 39 PWM তৈরি করতে পারে না)।
একটি PWM সিগন্যাল সেট করতে, আপনাকে কোডে এই পরামিতিগুলি সংজ্ঞায়িত করতে হবে:
- সিগন্যালের ফ্রিকোয়েন্সি;
- কর্তব্য চক্র;
- PWM চ্যানেল;
- GPIO যেখানে আপনি সিগন্যাল আউটপুট করতে চান।
I2C
ESP32-তে দুটি I2C চ্যানেল রয়েছে এবং যেকোনো পিন SDA বা SCL হিসেবে সেট করা যেতে পারে। Arduino IDE-এর সাথে ESP32 ব্যবহার করার সময়, ডিফল্ট I2C পিনগুলি হল:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
যদি আপনি তারের লাইব্রেরি ব্যবহার করার সময় অন্যান্য পিন ব্যবহার করতে চান, তাহলে আপনাকে কেবল কল করতে হবে:
Wire.begin(SDA, SCL);
এসপিআই
ডিফল্টরূপে, SPI এর জন্য পিন ম্যাপিং হল:
এসপিআই | মোশি | মিসো | সিএলকে | CS |
ভিএসপিআই | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
এইচএসপিআই | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
বাধা দেয়
সমস্ত GPIO গুলিকে ইন্টারাপ্ট হিসেবে কনফিগার করা যেতে পারে।
strapping পিন
ESP32 চিপে নিম্নলিখিত স্ট্র্যাপিং পিন রয়েছে:
- GPIO 0 (বুট মোডে প্রবেশ করতে অবশ্যই কম হতে হবে)
- GPIO 2 (বুট করার সময় অবশ্যই ভাসমান বা কম তাপমাত্রায় থাকতে হবে)
- GPIO 4
- GPIO 5 (বুট করার সময় অবশ্যই উচ্চ হতে হবে)
- GPIO 12 (বুট করার সময় অবশ্যই কম হতে হবে)
- GPIO 15 (বুট করার সময় অবশ্যই উচ্চ হতে হবে)
এগুলো ESP32 কে বুটলোডার বা ফ্ল্যাশিং মোডে রাখার জন্য ব্যবহার করা হয়। বিল্ট-ইন USB/সিরিয়াল সহ বেশিরভাগ ডেভেলপমেন্ট বোর্ডে, এই পিনগুলির অবস্থা নিয়ে আপনাকে চিন্তা করতে হবে না। বোর্ডটি ফ্ল্যাশিং বা বুট মোডের জন্য পিনগুলিকে সঠিক অবস্থায় রাখে। ESP32 বুট মোড নির্বাচন সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে।
তবে, যদি আপনার পেরিফেরালগুলি সেই পিনগুলির সাথে সংযুক্ত থাকে, তাহলে নতুন কোড আপলোড করার চেষ্টা করতে, নতুন ফার্মওয়্যার দিয়ে ESP32 ফ্ল্যাশ করতে, অথবা বোর্ড রিসেট করতে আপনার সমস্যা হতে পারে। যদি আপনার কিছু পেরিফেরাল স্ট্র্যাপিং পিনের সাথে সংযুক্ত থাকে এবং কোড আপলোড করতে বা ESP32 ফ্ল্যাশ করতে সমস্যা হয়, তাহলে হতে পারে যে সেই পেরিফেরালগুলি ESP32 কে সঠিক মোডে প্রবেশ করতে বাধা দিচ্ছে। সঠিক দিকে পরিচালিত করার জন্য বুট মোড নির্বাচন ডকুমেন্টেশনটি পড়ুন। রিসেট, ফ্ল্যাশিং বা বুট করার পরে, সেই পিনগুলি প্রত্যাশা অনুযায়ী কাজ করে।
বুট করার সময় পিনগুলি উঁচুতে থাকে
কিছু GPIO তাদের অবস্থা HIGH তে পরিবর্তন করে অথবা বুট বা রিসেটের সময় PWM সিগন্যাল আউটপুট করে।
এর মানে হল, যদি আপনার আউটপুটগুলি এই GPIO গুলির সাথে সংযুক্ত থাকে, তাহলে ESP32 রিসেট বা বুট করার সময় আপনি অপ্রত্যাশিত ফলাফল পেতে পারেন।
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 থেকে GPIO 11 (ESP32 ইন্টিগ্রেটেড SPI ফ্ল্যাশ মেমোরির সাথে সংযুক্ত - ব্যবহার করার জন্য সুপারিশ করা হয় না)।
- GPIO 14
- GPIO 15
সক্ষম করুন (EN)
Enable (EN) হল 3.3V রেগুলেটরের Enable পিন। এটি উপরে টানা হয়েছে, তাই 3.3V রেগুলেটরটি নিষ্ক্রিয় করতে গ্রাউন্ডের সাথে সংযোগ করুন। এর মানে হল যে আপনি আপনার ESP32 পুনরায় চালু করতে একটি পুশবোতামের সাথে সংযুক্ত এই পিনটি ব্যবহার করতে পারেন, উদাহরণস্বরূপampলে
GPIO কারেন্ট টানা হয়েছে
ESP40 ডেটাশিটের "প্রস্তাবিত অপারেটিং শর্তাবলী" বিভাগ অনুসারে, প্রতি GPIO-তে সর্বোচ্চ টানা কারেন্ট হল 32mA।
ESP32 বিল্ট-ইন হল ইফেক্ট সেন্সর
ESP32-তে একটি অন্তর্নির্মিত হল ইফেক্ট সেন্সরও রয়েছে যা এর আশেপাশের চৌম্বক ক্ষেত্রের পরিবর্তনগুলি সনাক্ত করে।
ESP32 Arduino IDE সম্পর্কে
Arduino IDE-এর জন্য একটি অ্যাড-অন রয়েছে যা আপনাকে Arduino IDE এবং এর প্রোগ্রামিং ভাষা ব্যবহার করে ESP32 প্রোগ্রাম করতে দেয়। এই টিউটোরিয়ালে আমরা আপনাকে দেখাবো কিভাবে Arduino IDE-তে ESP32 বোর্ড ইনস্টল করবেন, আপনি Windows, Mac OS X অথবা Linux ব্যবহার করুন না কেন।
পূর্বশর্ত: Arduino IDE ইনস্টল করা হয়েছে
এই ইনস্টলেশন পদ্ধতিটি শুরু করার আগে, আপনার কম্পিউটারে Arduino IDE ইনস্টল করা থাকতে হবে। Arduino IDE এর দুটি সংস্করণ আপনি ইনস্টল করতে পারেন: সংস্করণ 1 এবং সংস্করণ 2।
আপনি নিম্নলিখিত লিঙ্কে ক্লিক করে Arduino IDE ডাউনলোড এবং ইনস্টল করতে পারেন: arduino.cc/en/Main/সফটওয়্যার
আমরা কোন Arduino IDE ভার্সনটি সুপারিশ করব? এই মুহূর্তে, কিছু আছে plugins ESP32 এর জন্য (SPIFFS এর মতো) File(system Uploader Plugin) যা এখনও Arduino 2 তে সমর্থিত নয়। তাই, যদি আপনি ভবিষ্যতে SPIFFS প্লাগইন ব্যবহার করতে চান, তাহলে আমরা লিগ্যাসি সংস্করণ 1.8.X ইনস্টল করার পরামর্শ দিচ্ছি। এটি খুঁজে পেতে আপনাকে কেবল Arduino সফ্টওয়্যার পৃষ্ঠায় স্ক্রোল করতে হবে।
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
আপনার Arduino IDE তে ESP32 বোর্ড ইনস্টল করতে, নিম্নলিখিত নির্দেশাবলী অনুসরণ করুন:
- আপনার Arduino IDE তে, যান File> পছন্দসমূহ
- "অতিরিক্ত বোর্ড ম্যানেজার" বিভাগে নিম্নলিখিতটি লিখুন URLs" ক্ষেত্র:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
তারপর, "ঠিক আছে" বোতামে ক্লিক করুন:দ্রষ্টব্য: যদি আপনার ইতিমধ্যেই ESP8266 বোর্ড থাকে URL, আপনি আলাদা করতে পারেন URLনিম্নরূপ কমা সহ s:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
বোর্ড ম্যানেজার খুলুন। টুলস > বোর্ড > বোর্ড ম্যানেজারে যান...জন্য অনুসন্ধান করুন ESP32 and press install button for the “ESP32 by Espressif Systems“:
ব্যস, কয়েক সেকেন্ড পরেই এটি ইনস্টল হয়ে যাবে।
পরীক্ষার কোড আপলোড করুন
আপনার কম্পিউটারে ESP32 বোর্ডটি প্লাগ করুন। আপনার Arduino IDE খোলা রেখে, এই পদক্ষেপগুলি অনুসরণ করুন:
- টুলস > বোর্ড মেনুতে আপনার বোর্ড নির্বাচন করুন (আমার ক্ষেত্রে এটি ESP32 DEV মডিউল)
- পোর্টটি নির্বাচন করুন (যদি আপনি আপনার Arduino IDE তে COM পোর্টটি দেখতে না পান, তাহলে আপনাকে CP210x USB থেকে UART Bridge VCP ড্রাইভার ইনস্টল করতে হবে):
- নিম্নলিখিত প্রাক্তন খুলুনampলে আন্ডার File > প্রাক্তনampকম > ওয়াইফাই
(ESP32) > ওয়াইফাইস্ক্যান - আপনার Arduino IDE তে একটি নতুন স্কেচ খোলে:
- Arduino IDE-তে আপলোড বোতাম টিপুন। কোডটি কম্পাইল হয়ে আপনার বোর্ডে আপলোড হওয়ার জন্য কয়েক সেকেন্ড অপেক্ষা করুন।
- যদি সবকিছু প্রত্যাশা অনুযায়ী হয়, তাহলে আপনি "আপলোড সম্পন্ন" বার্তাটি দেখতে পাবেন।
- ১১৫২০০ বড রেটে Arduino IDE সিরিয়াল মনিটরটি খুলুন:
- ESP32 অন-বোর্ড Enable বাটন টিপুন এবং আপনার ESP32 এর কাছাকাছি উপলব্ধ নেটওয়ার্কগুলি দেখতে পাবেন:
সমস্যা সমাধান
যদি আপনি আপনার ESP32 তে একটি নতুন স্কেচ আপলোড করার চেষ্টা করেন এবং আপনি এই ত্রুটি বার্তাটি পান “A fatal error occurred: Failed to connect to ESP32: Timed out… Connecting…”। এর অর্থ হল আপনার ESP32 ফ্ল্যাশিং/আপলোডিং মোডে নেই।
সঠিক বোর্ডের নাম এবং COM por নির্বাচন করার পর, এই পদক্ষেপগুলি অনুসরণ করুন:
আপনার ESP32 বোর্ডে "BOOT" বোতামটি ধরে রাখুন।
- আপনার স্কেচ আপলোড করতে Arduino IDE তে "আপলোড" বোতাম টিপুন:
- আপনার Arduino IDE তে "Connecting..." বার্তাটি দেখার পর, "BOOT" বোতাম থেকে আঙুলটি ছেড়ে দিন:
- এর পরে, আপনি "আপলোড সম্পন্ন হয়েছে" বার্তাটি দেখতে পাবেন।
এই তো। আপনার ESP32-তে নতুন স্কেচটি চালু থাকা উচিত। ESP32 পুনরায় চালু করতে এবং নতুন আপলোড করা স্কেচটি চালাতে "সক্রিয় করুন" বোতামটি টিপুন।
প্রতিবার নতুন স্কেচ আপলোড করার সময় আপনাকে সেই বোতামের ক্রমটি পুনরাবৃত্তি করতে হবে।
প্রকল্প ১ ESP1 ইনপুট আউটপুট
এই শুরু করার নির্দেশিকাটিতে আপনি শিখবেন কিভাবে Arduino IDE ব্যবহার করে ESP32 ব্যবহার করে একটি বোতাম সুইচের মতো ডিজিটাল ইনপুট পড়তে হয় এবং LED এর মতো ডিজিটাল আউটপুট নিয়ন্ত্রণ করতে হয়।
পূর্বশর্ত
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব। তাই, এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 বোর্ড অ্যাড-অন ইনস্টল করা আছে:
- Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
ESP32 ডিজিটাল আউটপুট নিয়ন্ত্রণ করে
প্রথমে, আপনি যে GPIO টি নিয়ন্ত্রণ করতে চান তা OUTPUT হিসেবে সেট করতে হবে। pinMode() ফাংশনটি নিম্নরূপ ব্যবহার করুন:
পিনমোড(জিপিআইও, আউটপুট);
একটি ডিজিটাল আউটপুট নিয়ন্ত্রণ করতে আপনাকে কেবল digitalWrite() ফাংশন ব্যবহার করতে হবে, যা আর্গুমেন্ট হিসেবে গ্রহণ করে, আপনি যে GPIO (int নম্বর) উল্লেখ করছেন, এবং অবস্থা, হয় HIGH অথবা LOW।
ডিজিটালরাইট (জিপিআইও, স্টেট);
GPIO 6 থেকে 11 (ইন্টিগ্রেটেড SPI ফ্ল্যাশের সাথে সংযুক্ত) এবং GPIO 34, 35, 36 এবং 39 (কেবলমাত্র ইনপুট GPIO) ব্যতীত সকল GPIO আউটপুট হিসেবে ব্যবহার করা যেতে পারে;
ESP32 GPIO সম্পর্কে আরও জানুন: ESP32 GPIO রেফারেন্স গাইড
ESP32 ডিজিটাল ইনপুট পড়ুন
প্রথমে, pinMode() ফাংশনটি ব্যবহার করে আপনি যে GPIO টি পড়তে চান তা INPUT হিসেবে সেট করুন:
পিনমোড(জিপিআইও, ইনপুট);
একটি ডিজিটাল ইনপুট পড়ার জন্য, যেমন একটি বোতাম, আপনি digitalRead() ফাংশন ব্যবহার করেন, যা আপনি যে GPIO (int নম্বর) উল্লেখ করছেন তাকে আর্গুমেন্ট হিসেবে গ্রহণ করে।
ডিজিটাল রিড(জিপিআইও);
সমস্ত ESP32 GPIO ইনপুট হিসেবে ব্যবহার করা যেতে পারে, GPIO 6 থেকে 11 (ইন্টিগ্রেটেড SPI ফ্ল্যাশের সাথে সংযুক্ত) ছাড়া।
ESP32 GPIO সম্পর্কে আরও জানুন: ESP32 GPIO রেফারেন্স গাইড
প্রকল্প প্রাক্তনample
ডিজিটাল ইনপুট এবং ডিজিটাল আউটপুট কীভাবে ব্যবহার করবেন তা দেখানোর জন্য, আমরা একটি সহজ প্রকল্প তৈরি করব যেমনampএকটি পুশবাটন এবং একটি LED সহ। আমরা পুশবাটনের অবস্থা পড়ব এবং নিম্নলিখিত চিত্রে দেখানো হিসাবে LEDটি আলোকিত করব।
যন্ত্রাংশ প্রয়োজন
সার্কিট তৈরির জন্য আপনার প্রয়োজনীয় যন্ত্রাংশের একটি তালিকা এখানে দেওয়া হল:
- ESP32 DEVKIT V1 সম্পর্কে
- 5 মিমি এলইডি
- 220 ওহম প্রতিরোধক
- বোতাম চাপা
- 10k ওহম প্রতিরোধক
- ব্রেডবোর্ড
- জাম্পার তারের
পরিকল্পিত চিত্র
এগিয়ে যাওয়ার আগে, আপনাকে একটি LED এবং একটি পুশবাটন সহ একটি সার্কিট একত্রিত করতে হবে।
আমরা LED কে GPIO 5 এর সাথে এবং pushbutton কে GPIO এর সাথে সংযুক্ত করব। 4.কোড
Arduino IDE তে Project_1_ESP32_Inputs_Outputs.ino কোডটি খুলুন।কোড কিভাবে কাজ করে
নিম্নলিখিত দুটি লাইনে, আপনি পিন বরাদ্দ করার জন্য ভেরিয়েবল তৈরি করবেন:
বোতামটি GPIO 4 এর সাথে সংযুক্ত এবং LED GPIO 5 এর সাথে সংযুক্ত। ESP32 এর সাথে Arduino IDE ব্যবহার করার সময়, 4 GPIO 4 এর সাথে মিলিত হয় এবং 5 GPIO 5 এর সাথে মিলিত হয়।
এরপর, আপনি বোতামের অবস্থা ধরে রাখার জন্য একটি ভেরিয়েবল তৈরি করবেন। ডিফল্টরূপে, এটি 0 (চাপা হয় না)।
int buttonState = 0;
সেটআপ() এ, আপনি বোতামটিকে একটি INPUT হিসেবে এবং LEDটিকে একটি OUTPUT হিসেবে ইনিশিয়ালাইজ করবেন।
এর জন্য, আপনি pinMode() ফাংশন ব্যবহার করেন যা আপনার উল্লেখ করা পিনটি গ্রহণ করে, এবং মোড: INPUT অথবা OUTPUT।
পিনমোড (বোতাম পিন, ইনপুট);
পিনমোড (নেতৃত্বাধীন পিন, আউটপুট);
লুপ() এ আপনি বোতামের অবস্থা পড়বেন এবং সেই অনুযায়ী LED সেট করবেন।
পরবর্তী লাইনে, আপনি বোতামের অবস্থাটি পড়বেন এবং এটি বোতামস্টেট ভেরিয়েবলে সংরক্ষণ করবেন।
যেমনটি আমরা আগে দেখেছি, আপনি digitalRead() ফাংশনটি ব্যবহার করেন।
buttonState = digitalRead(buttonPin);
নিচের if স্টেটমেন্টটি, বোতামের অবস্থা HIGH কিনা তা পরীক্ষা করে। যদি থাকে, তাহলে এটি digitalWrite() ফাংশন ব্যবহার করে LED চালু করে যা ledPin কে আর্গুমেন্ট হিসেবে গ্রহণ করে এবং HIGH কে স্টেট করে।
যদি (বোতামস্টেট == উচ্চ)যদি বোতামের অবস্থা উচ্চ না হয়, তাহলে আপনি LED বন্ধ করে দিন। digitalWrite() ফাংশনে দ্বিতীয় আর্গুমেন্ট হিসেবে LOW সেট করুন।
কোড আপলোড করা হচ্ছে
আপলোড বোতামে ক্লিক করার আগে, Tools > Board এ যান এবং বোর্ডটি নির্বাচন করুন :DOIT ESP32 DEVKIT V1 বোর্ড।
Tools > Port-এ যান এবং ESP32 যে COM পোর্টের সাথে সংযুক্ত তা নির্বাচন করুন। তারপর, আপলোড বোতাম টিপুন এবং "Done uploading" বার্তাটির জন্য অপেক্ষা করুন।দ্রষ্টব্য: যদি আপনি ডিবাগিং উইন্ডোতে অনেকগুলি বিন্দু (সংযোগ…__…__) দেখতে পান এবং “Failed to connect to ESP32: Timed out waiting for packet header” বার্তাটি দেখতে পান, তাহলে এর অর্থ হল বিন্দুগুলির পরে আপনাকে ESP32 অন-বোর্ড BOOT বোতাম টিপতে হবে।
প্রদর্শিত হতে শুরু করুন। সমস্যা সমাধান
বিক্ষোভ
কোডটি আপলোড করার পর, আপনার সার্কিটটি পরীক্ষা করুন। পুশবোতাম টিপলে আপনার LED জ্বলে উঠবে:এবং যখন আপনি এটি ছেড়ে দেবেন তখন বন্ধ করুন:
প্রকল্প 2 ESP32 অ্যানালগ ইনপুট
এই প্রকল্পটি Arduino IDE ব্যবহার করে ESP32 এর সাথে অ্যানালগ ইনপুটগুলি কীভাবে পড়তে হয় তা দেখায়।
পটেনশিওমিটার বা অ্যানালগ সেন্সরের মতো পরিবর্তনশীল প্রতিরোধক থেকে মান পড়ার জন্য অ্যানালগ রিডিং কার্যকর।
অ্যানালগ ইনপুট (ADC)
ESP32 দিয়ে একটি অ্যানালগ মান পড়ার অর্থ হল আপনি বিভিন্ন ভলিউম পরিমাপ করতে পারবেনtage স্তর 0 V এবং 3.3 V এর মধ্যে।
ভলিউমtage পরিমাপ করা হলে 0 এবং 4095 এর মধ্যে একটি মান নির্ধারিত হয়, যেখানে 0 V 0 এর সাথে মিলে যায় এবং 3.3 V 4095 এর সাথে মিলে যায়। যেকোনো ভলিউমtag0 V এবং 3.3 V এর মধ্যে e এর মধ্যে সংশ্লিষ্ট মান দেওয়া হবে।ADC হল নন-লিনিয়ার
আদর্শভাবে, ESP32 ADC পিন ব্যবহার করার সময় আপনি একটি রৈখিক আচরণ আশা করবেন।
তবে, তা ঘটে না। আপনি যা পাবেন তা হল নিম্নলিখিত চার্টে দেখানো আচরণ:এই আচরণের অর্থ হল আপনার ESP32 3.3 V থেকে 3.2 V এর পার্থক্য করতে সক্ষম নয়।
আপনি উভয় ভলিউমের জন্য একই মান পাবেনtagসংখ্যা: 4095।
খুব কম ভলিউমের ক্ষেত্রেও একই ঘটনা ঘটেtage মান: 0 V এবং 0.1 V এর জন্য আপনি একই মান পাবেন: 0। ESP32 ADC পিন ব্যবহার করার সময় আপনাকে এটি মনে রাখতে হবে।
analogRead() ফাংশন
Arduino IDE ব্যবহার করে ESP32 দিয়ে একটি অ্যানালগ ইনপুট পড়া analogRead() ফাংশন ব্যবহারের মতোই সহজ। এটি আর্গুমেন্ট হিসেবে আপনি যে GPIO পড়তে চান তা গ্রহণ করে:
অ্যানালগরিড(জিপিআইও);
DEVKIT V15board (1টি GPIO সহ সংস্করণ) তে মাত্র 30টি উপলব্ধ।
আপনার ESP32 বোর্ড পিনআউটটি ধরুন এবং ADC পিনগুলি সনাক্ত করুন। নীচের চিত্রে এগুলি লাল বর্ডার দিয়ে হাইলাইট করা হয়েছে।এই অ্যানালগ ইনপুট পিনগুলির রেজোলিউশন ১২-বিট। এর মানে হল যে যখন আপনি একটি অ্যানালগ ইনপুট পড়েন, তখন এর পরিসর ০ থেকে ৪০৯৫ পর্যন্ত পরিবর্তিত হতে পারে।
দ্রষ্টব্য: Wi-Fi ব্যবহার করার সময় ADC2 পিন ব্যবহার করা যাবে না। তাই, যদি আপনি Wi-Fi ব্যবহার করেন এবং ADC2 GPIO থেকে মান পেতে সমস্যা হয়, তাহলে আপনি ADC1 GPIO ব্যবহার করার কথা বিবেচনা করতে পারেন, এতে আপনার সমস্যার সমাধান হবে।
সবকিছু কীভাবে একসাথে মিশে যায় তা দেখার জন্য, আমরা একটি সহজ প্রাক্তন তৈরি করবampএকটি পটেনশিওমিটার থেকে একটি অ্যানালগ মান পড়তে le।
যন্ত্রাংশ প্রয়োজন
এই জন্য প্রাক্তনampহ্যাঁ, আপনার নিম্নলিখিত অংশগুলি প্রয়োজন:
- ESP32 DEVKIT V1 বোর্ড
- potentiometer
- ব্রেডবোর্ড
- জাম্পার তারের
পরিকল্পিত
আপনার ESP32-তে একটি পটেনশিওমিটার সংযুক্ত করুন। পটেনশিওমিটারের মাঝের পিনটি GPIO 4-এর সাথে সংযুক্ত থাকতে হবে। আপনি নিম্নলিখিত স্কিম্যাটিক ডায়াগ্রামটি রেফারেন্স হিসেবে ব্যবহার করতে পারেন।কোড
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
Arduino IDE তে Project_2_ESP32_Inputs_Outputs.ino কোডটি খুলুন।এই কোডটি কেবল পটেনশিওমিটার থেকে মানগুলি পড়ে এবং সিরিয়াল মনিটরে সেই মানগুলি মুদ্রণ করে।
কোডে, আপনি পটেনশিওমিটারটি যে GPIO-এর সাথে সংযুক্ত তা সংজ্ঞায়িত করে শুরু করবেন। এই উদাহরণেampলে, জিপিআইও ৪।সেটআপ() এ, ১১৫২০০ এর বড রেটে একটি সিরিয়াল যোগাযোগ শুরু করুন।
লুপ() এ, potPin থেকে অ্যানালগ ইনপুট পড়ার জন্য analogRead() ফাংশন ব্যবহার করুন।
অবশেষে, সিরিয়াল মনিটরে পটেনশিওমিটার থেকে পঠিত মানগুলি মুদ্রণ করুন।
আপনার ESP32 এ প্রদত্ত কোডটি আপলোড করুন। নিশ্চিত করুন যে আপনি টুলস মেনুতে সঠিক বোর্ড এবং COM পোর্ট নির্বাচন করেছেন।
প্রাক্তন পরীক্ষা করাample
কোডটি আপলোড করার পর এবং ESP32 রিসেট বোতাম টিপে, 115200 এর বড রেটে সিরিয়াল মনিটরটি খুলুন। পটেনশিওমিটারটি ঘোরান এবং মানগুলি পরিবর্তন দেখুন।আপনি সর্বোচ্চ 4095 পাবেন এবং সর্বনিম্ন 0 পাবেন।
আপ মোড়ানো
এই প্রবন্ধে আপনি Arduino IDE-এর সাহায্যে ESP32 ব্যবহার করে অ্যানালগ ইনপুটগুলি কীভাবে পড়তে হয় তা শিখেছেন। সংক্ষেপে:
- ESP32 DEVKIT V1 DOIT বোর্ডে (30 পিন সহ সংস্করণ) 15টি ADC পিন রয়েছে যা আপনি অ্যানালগ ইনপুট পড়ার জন্য ব্যবহার করতে পারেন।
- এই পিনগুলির রেজোলিউশন ১২ বিট, যার অর্থ আপনি ০ থেকে ৪০৯৫ পর্যন্ত মান পেতে পারেন।
- Arduino IDE তে একটি মান পড়ার জন্য, আপনাকে কেবল analogRead() ফাংশনটি ব্যবহার করতে হবে।
- ESP32 ADC পিনগুলির কোনও রৈখিক আচরণ নেই। আপনি সম্ভবত 0 এবং 0.1V, অথবা 3.2 এবং 3.3V এর মধ্যে পার্থক্য করতে সক্ষম হবেন না। ADC পিনগুলি ব্যবহার করার সময় আপনাকে এটি মনে রাখতে হবে।
প্রকল্প 3 ESP32 PWM (অ্যানালগ আউটপুট)
এই টিউটোরিয়ালে আমরা আপনাকে দেখাবো কিভাবে Arduino IDE ব্যবহার করে ESP32 দিয়ে PWM সিগন্যাল তৈরি করতে হয়।ampআমরা ESP32 এর LED PWM কন্ট্রোলার ব্যবহার করে একটি সহজ সার্কিট তৈরি করব যা LED কে ম্লান করে দেবে।ESP32 LED PWM কন্ট্রোলার
ESP32-তে একটি LED PWM কন্ট্রোলার রয়েছে যার ১৬টি স্বাধীন চ্যানেল রয়েছে যা বিভিন্ন বৈশিষ্ট্য সহ PWM সংকেত তৈরি করতে কনফিগার করা যেতে পারে।
Arduino IDE ব্যবহার করে PWM দিয়ে LED ম্লান করার জন্য আপনাকে নিম্নলিখিত ধাপগুলি অনুসরণ করতে হবে:
- প্রথমে, আপনাকে একটি PWM চ্যানেল নির্বাচন করতে হবে। ০ থেকে ১৫ পর্যন্ত ১৬টি চ্যানেল রয়েছে।
- তারপর, আপনাকে PWM সিগন্যাল ফ্রিকোয়েন্সি সেট করতে হবে। একটি LED এর জন্য, 5000 Hz ফ্রিকোয়েন্সি ব্যবহার করা ঠিক।
- আপনাকে সিগন্যালের ডিউটি সাইকেল রেজোলিউশনও সেট করতে হবে: আপনার রেজোলিউশন ১ থেকে ১৬ বিট পর্যন্ত। আমরা ৮-বিট রেজোলিউশন ব্যবহার করব, যার অর্থ আপনি ০ থেকে ২৫৫ পর্যন্ত মান ব্যবহার করে LED এর উজ্জ্বলতা নিয়ন্ত্রণ করতে পারবেন।
- এরপর, আপনাকে নির্দিষ্ট করতে হবে কোন GPIO বা GPIO গুলিতে সিগন্যালটি প্রদর্শিত হবে। এর জন্য আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করবেন:
ledcAttachPin(GPIO, চ্যানেল)
এই ফাংশনটি দুটি আর্গুমেন্ট গ্রহণ করে। প্রথমটি হল GPIO যা সিগন্যাল আউটপুট করবে, এবং দ্বিতীয়টি হল চ্যানেল যা সিগন্যাল তৈরি করবে। - অবশেষে, PWM ব্যবহার করে LED উজ্জ্বলতা নিয়ন্ত্রণ করতে, আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করেন:
ledcWrite(চ্যানেল, ডিউটিসাইকেল)
এই ফাংশনটি PWM সিগন্যাল তৈরিকারী চ্যানেল এবং কর্তব্য চক্রকে আর্গুমেন্ট হিসেবে গ্রহণ করে।
যন্ত্রাংশ প্রয়োজন
এই টিউটোরিয়ালটি অনুসরণ করার জন্য আপনার এই অংশগুলির প্রয়োজন:
- ESP32 DEVKIT V1 বোর্ড
- 5 মিমি এলইডি
- 220 ওহম প্রতিরোধক
- ব্রেডবোর্ড
- জাম্পার তারের
পরিকল্পিত
নিচের স্কিম্যাটিক ডায়াগ্রামের মতো আপনার ESP32-তে একটি LED তারের সাথে সংযুক্ত করুন। LEDটি GPIO-এর সাথে সংযুক্ত থাকা উচিত। 4.দ্রষ্টব্য: আপনি যেকোনো পিন ব্যবহার করতে পারেন, যতক্ষণ না এটি আউটপুট হিসেবে কাজ করতে পারে। আউটপুট হিসেবে কাজ করতে পারে এমন সমস্ত পিন PWM পিন হিসেবে ব্যবহার করা যেতে পারে। ESP32 GPIO সম্পর্কে আরও তথ্যের জন্য, পড়ুন: ESP32 Pinout রেফারেন্স: আপনার কোন GPIO পিন ব্যবহার করা উচিত?
কোড
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
Arduino IDE তে Project_3_ESP32_PWM.ino কোডটি খুলুন।আপনি LED কোন পিনের সাথে সংযুক্ত তা নির্ধারণ করে শুরু করুন। এই ক্ষেত্রে LED GPIO 4 এর সাথে সংযুক্ত।
তারপর, আপনি PWM সিগন্যাল বৈশিষ্ট্য নির্ধারণ করেন। আপনি 5000 Hz ফ্রিকোয়েন্সি নির্ধারণ করেন, সংকেত তৈরির জন্য চ্যানেল 0 নির্বাচন করেন এবং 8 বিটের রেজোলিউশন সেট করেন। আপনি বিভিন্ন PWM সিগন্যাল তৈরির জন্য এই বৈশিষ্ট্যগুলি ছাড়াও অন্যান্য বৈশিষ্ট্য নির্বাচন করতে পারেন।
সেটআপ() এ, আপনাকে ledcSetup() ফাংশন ব্যবহার করে পূর্বে সংজ্ঞায়িত বৈশিষ্ট্যগুলির সাথে LED PWM কনফিগার করতে হবে যা আর্গুমেন্ট, ledChannel, ফ্রিকোয়েন্সি এবং রেজোলিউশন হিসাবে গ্রহণ করে, নিম্নরূপ:
এরপর, আপনাকে কোন GPIO থেকে সিগন্যাল পাবেন তা নির্বাচন করতে হবে। এর জন্য ledcAttachPin() ফাংশনটি ব্যবহার করুন যা GPIO-কে আর্গুমেন্ট হিসেবে গ্রহণ করে যেখানে আপনি সিগন্যাল পেতে চান এবং যে চ্যানেলটি সিগন্যাল তৈরি করছে। এই উদাহরণেampতাহলে, আমরা ledPin GPIO-তে সিগন্যাল পাব, যা GPIO 4-এর সাথে মিলে যায়। যে চ্যানেলটি সিগন্যাল তৈরি করে তা হল ledChannel, যা চ্যানেল 0-এর সাথে মিলে যায়।
লুপে, LED এর উজ্জ্বলতা বাড়ানোর জন্য আপনি 0 থেকে 255 এর মধ্যে ডিউটি সাইকেল পরিবর্তন করবেন।
এবং তারপর, উজ্জ্বলতা কমাতে 255 এবং 0 এর মধ্যে।
LED এর উজ্জ্বলতা সেট করার জন্য, আপনাকে কেবল ledcWrite() ফাংশনটি ব্যবহার করতে হবে যা সংকেত তৈরিকারী চ্যানেল এবং কর্তব্য চক্রকে আর্গুমেন্ট হিসাবে গ্রহণ করে।
যেহেতু আমরা ৮-বিট রেজোলিউশন ব্যবহার করছি, তাই ডিউটি সাইকেলটি ০ থেকে ২৫৫ এর মান ব্যবহার করে নিয়ন্ত্রিত হবে। মনে রাখবেন যে ledcWrite() ফাংশনে আমরা সেই চ্যানেলটি ব্যবহার করি যা সিগন্যাল তৈরি করছে, GPIO নয়।
প্রাক্তন পরীক্ষা করাample
আপনার ESP32 এ কোডটি আপলোড করুন। নিশ্চিত করুন যে আপনি সঠিক বোর্ড এবং COM পোর্ট নির্বাচন করেছেন। আপনার সার্কিটটি দেখুন। আপনার একটি ম্লান LED থাকা উচিত যা উজ্জ্বলতা বৃদ্ধি এবং হ্রাস করে।
প্রজেক্ট ৪ ESP4 PIR মোশন সেন্সর
এই প্রকল্পটি দেখায় কিভাবে PIR মোশন সেন্সর ব্যবহার করে ESP32 দিয়ে গতি সনাক্ত করতে হয়। গতি সনাক্ত হলে বুজারটি একটি অ্যালার্ম বাজাবে এবং একটি পূর্বনির্ধারিত সময়ের জন্য (যেমন 4 সেকেন্ড) কোনও গতি সনাক্ত না হলে অ্যালার্ম বন্ধ করবে।
HC-SR501 মোশন সেন্সর কীভাবে কাজ করে
.HC-SR501 সেন্সরের কাজের নীতি চলমান বস্তুর উপর ইনফ্রারেড বিকিরণের পরিবর্তনের উপর ভিত্তি করে। HC-SR501 সেন্সর দ্বারা সনাক্ত করার জন্য, বস্তুটিকে দুটি প্রয়োজনীয়তা পূরণ করতে হবে:
- বস্তুটি ইনফ্রারেড উপায়ে নির্গত করছে।
- বস্তুটি নড়ছে বা কাঁপছে
তাই:
যদি কোন বস্তু ইনফ্রারেড রশ্মি নির্গত করে কিন্তু NoT নড়াচড়া করে (যেমন, কোন ব্যক্তি নড়াচড়া না করে স্থির থাকে), তাহলে সেন্সর দ্বারা এটি NoT সনাক্ত করা হবে।
যদি কোন বস্তু চলমান থাকে কিন্তু NoT ইনফ্রারেড রশ্মি নির্গত করে (যেমন, রোবট বা যানবাহন), তাহলে সেন্সর তা সনাক্ত করতে পারে না।
টাইমারগুলি উপস্থাপন করা হচ্ছে
এই প্রাক্তনampআমরা টাইমারও চালু করব। আমরা চাই গতি শনাক্ত হওয়ার পর LED নির্দিষ্ট সংখ্যক সেকেন্ডের জন্য চালু থাকুক। একটি delay() ফাংশন ব্যবহার করার পরিবর্তে যা আপনার কোড ব্লক করে এবং নির্দিষ্ট সংখ্যক সেকেন্ডের জন্য আপনাকে অন্য কিছু করতে দেয় না, আমাদের একটি টাইমার ব্যবহার করা উচিত।বিলম্ব() ফাংশন
delay() ফাংশনটি বহুল ব্যবহৃত হওয়ায় আপনার এর সাথে পরিচিত হওয়া উচিত। এই ফাংশনটি ব্যবহার করা বেশ সহজ। এটি একটি একক int সংখ্যাকে আর্গুমেন্ট হিসেবে গ্রহণ করে।
এই সংখ্যাটি মিলিসেকেন্ডে প্রোগ্রামটিকে পরবর্তী লাইনের কোডে যাওয়ার জন্য অপেক্ষা করার সময়কে প্রতিনিধিত্ব করে।যখন আপনি delay(1000) করেন, তখন আপনার প্রোগ্রামটি সেই লাইনে 1 সেকেন্ডের জন্য বন্ধ হয়ে যায়।
delay() হল একটি ব্লকিং ফাংশন। ব্লকিং ফাংশনগুলি কোনও প্রোগ্রামকে সেই নির্দিষ্ট কাজটি সম্পন্ন না হওয়া পর্যন্ত অন্য কিছু করতে বাধা দেয়। যদি আপনার একই সময়ে একাধিক কাজ করার প্রয়োজন হয়, তাহলে আপনি delay() ব্যবহার করতে পারবেন না।
বেশিরভাগ প্রকল্পের জন্য আপনার বিলম্ব ব্যবহার এড়ানো উচিত এবং পরিবর্তে টাইমার ব্যবহার করা উচিত।
মিলিস() ফাংশন
millis() নামক একটি ফাংশন ব্যবহার করে আপনি প্রোগ্রামটি শুরু হওয়ার পর থেকে কত মিলিসেকেন্ড কেটে গেছে তা ফেরত দিতে পারেন।কেন এই ফাংশনটি কার্যকর? কারণ কিছু গণিত ব্যবহার করে, আপনি সহজেই যাচাই করতে পারবেন যে আপনার কোড ব্লক না করেই কতটা সময় কেটে গেছে।
যন্ত্রাংশ প্রয়োজন
এই টিউটোরিয়ালটি অনুসরণ করার জন্য আপনার নিম্নলিখিত অংশগুলির প্রয়োজন হবে
- ESP32 DEVKIT V1 বোর্ড
- পিআইআর মোশন সেন্সর (এইচসি-এসআর৫০১)
- অ্যাক্টিভ বাউজার
- জাম্পার তারের
- ব্রেডবোর্ড
পরিকল্পিতদ্রষ্টব্য: কাজের ভলিউমtagHC-SR501 এর e হল 5V। এটিকে পাওয়ার জন্য Vin পিন ব্যবহার করুন।
কোড
এই টিউটোরিয়ালটি শুরু করার আগে আপনার Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা উচিত। যদি আপনি ইতিমধ্যেই Arduino IDE তে ESP32 ইনস্টল না করে থাকেন, তাহলে নিম্নলিখিত টিউটোরিয়ালগুলির মধ্যে একটি অনুসরণ করুন। (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
Arduino IDE তে Project_4_ESP32_PIR_Motion_Sensor.ino কোডটি খুলুন।
বিক্ষোভ
আপনার ESP32 বোর্ডে কোডটি আপলোড করুন। নিশ্চিত করুন যে আপনার সঠিক বোর্ড এবং COM পোর্ট নির্বাচন করা আছে। কোড রেফারেন্স ধাপগুলি আপলোড করুন।
১১৫২০০ বড রেটে সিরিয়াল মনিটরটি খুলুন।পিআইআর সেন্সরের সামনে আপনার হাত নাড়ান। বুজারটি চালু হওয়া উচিত এবং সিরিয়াল মনিটরে "মোশন ডিটেক্টেড! বুজার অ্যালার্ম" লেখা বার্তাটি মুদ্রিত হবে।
৪ সেকেন্ড পর বাজারটি বন্ধ হয়ে যাবে।
প্রজেক্ট ৫ ESP5 সুইচ Web সার্ভার
এই প্রকল্পে আপনি একটি স্বতন্ত্র তৈরি করবেন web একটি ESP32 সহ সার্ভার যা Arduino IDE প্রোগ্রামিং পরিবেশ ব্যবহার করে আউটপুট (দুটি LED) নিয়ন্ত্রণ করে। web সার্ভারটি মোবাইল রেসপন্সিভ এবং স্থানীয় নেটওয়ার্কের ব্রাউজার হিসেবে যেকোনো ডিভাইস দিয়ে অ্যাক্সেস করা যেতে পারে। আমরা আপনাকে দেখাবো কিভাবে তৈরি করবেন web সার্ভার এবং কোডটি ধাপে ধাপে কীভাবে কাজ করে।
প্রকল্প শেষview
সরাসরি প্রকল্পে যাওয়ার আগে, আমাদের কী কী তা রূপরেখা তৈরি করা গুরুত্বপূর্ণ web সার্ভার করবে, যাতে পরবর্তীতে ধাপগুলি অনুসরণ করা সহজ হয়।
- দ web আপনি যে সার্ভারটি তৈরি করবেন তা ESP32 GPIO 26 এবং GPIO 27 এর সাথে সংযুক্ত দুটি LED নিয়ন্ত্রণ করে;
- আপনি ESP32 অ্যাক্সেস করতে পারেন web স্থানীয় নেটওয়ার্কের একটি ব্রাউজারে ESP32 IP ঠিকানা টাইপ করে সার্ভার;
- আপনার বোতামগুলিতে ক্লিক করে web সার্ভার ব্যবহার করে আপনি তাৎক্ষণিকভাবে প্রতিটি LED এর অবস্থা পরিবর্তন করতে পারবেন।
যন্ত্রাংশ প্রয়োজন
এই টিউটোরিয়ালের জন্য আপনার নিম্নলিখিত অংশগুলির প্রয়োজন হবে:
- ESP32 DEVKIT V1 বোর্ড
- ২x ৫ মিমি এলইডি
- 2x 200 ওহম প্রতিরোধক
- ব্রেডবোর্ড
- জাম্পার তারের
পরিকল্পিত
সার্কিট তৈরি করে শুরু করুন। নিচের স্কিম্যাটিক ডায়াগ্রামে দেখানো দুটি LED ESP32 এর সাথে সংযুক্ত করুন - একটি LED GPIO 26 এর সাথে সংযুক্ত, এবং অন্যটি GPIO 27 এর সাথে।
দ্রষ্টব্য: আমরা ৩৬টি পিনের ESP32 DEVKIT DOIT বোর্ড ব্যবহার করছি। সার্কিটটি একত্রিত করার আগে, আপনার ব্যবহৃত বোর্ডের পিনআউটটি পরীক্ষা করে নিন।কোড
এখানে আমরা ESP32 তৈরির কোডটি প্রদান করছি web সার্ভার। Project_5_ESP32_Switch _ কোডটি খুলুন।Webarduino IDE তে _Server.ino, কিন্তু এখনও আপলোড করো না। এটি আপনার জন্য কাজ করার জন্য আপনাকে কিছু পরিবর্তন করতে হবে।
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
আপনার নেটওয়ার্ক শংসাপত্র সেট করা
আপনার নেটওয়ার্ক শংসাপত্রের সাথে নিম্নলিখিত লাইনগুলি পরিবর্তন করতে হবে: SSID এবং পাসওয়ার্ড। কোডটি কোথায় পরিবর্তন করা উচিত সে সম্পর্কে ভালভাবে মন্তব্য করা হয়েছে।কোড আপলোড করা হচ্ছে
এখন, আপনি কোডটি আপলোড করতে পারেন এবং web সার্ভার সরাসরি কাজ করবে।
ESP32 এ কোড আপলোড করার জন্য পরবর্তী পদক্ষেপগুলি অনুসরণ করুন:
- আপনার কম্পিউটারে আপনার ESP32 বোর্ডটি প্লাগ করুন;
- Arduino IDE-তে Tools > Board-এ আপনার বোর্ড নির্বাচন করুন (আমাদের ক্ষেত্রে আমরা ESP32 DEVKIT DOIT বোর্ড ব্যবহার করছি);
- টুলস > পোর্টে COM পোর্ট নির্বাচন করুন।
- Arduino IDE-তে আপলোড বোতাম টিপুন এবং কোডটি কম্পাইল হয়ে আপনার বোর্ডে আপলোড হওয়ার জন্য কয়েক সেকেন্ড অপেক্ষা করুন।
- "আপলোড সম্পন্ন হয়েছে" বার্তাটির জন্য অপেক্ষা করুন।
ESP IP ঠিকানা খোঁজা
কোডটি আপলোড করার পর, ১১৫২০০ এর বড রেটে সিরিয়াল মনিটরটি খুলুন।ESP32 EN বোতাম টিপুন (রিসেট করুন)। ESP32 Wi-Fi এর সাথে সংযুক্ত হয় এবং সিরিয়াল মনিটরে ESP IP ঠিকানাটি আউটপুট করে। সেই IP ঠিকানাটি অনুলিপি করুন, কারণ ESP32 অ্যাক্সেস করার জন্য আপনার এটির প্রয়োজন। web সার্ভার
প্রবেশাধিকার Web সার্ভার
অ্যাক্সেস করতে web সার্ভারে যান, আপনার ব্রাউজারটি খুলুন, ESP32 IP ঠিকানাটি পেস্ট করুন, এবং আপনি নিম্নলিখিত পৃষ্ঠাটি দেখতে পাবেন।
দ্রষ্টব্য: আপনার ব্রাউজার এবং ESP32 একই LAN-এর সাথে সংযুক্ত থাকা উচিত।সিরিয়াল মনিটরটি একবার দেখলে, আপনি ব্যাকগ্রাউন্ডে কী ঘটছে তা দেখতে পাবেন। ESP একটি নতুন ক্লায়েন্টের (এই ক্ষেত্রে, আপনার ব্রাউজার) কাছ থেকে একটি HTTP অনুরোধ পায়।
আপনি HTTP অনুরোধ সম্পর্কে অন্যান্য তথ্যও দেখতে পারেন।
বিক্ষোভ
এখন তুমি পরীক্ষা করতে পারো যদি তোমার web সার্ভার ঠিকঠাক কাজ করছে। LED নিয়ন্ত্রণ করতে বোতামগুলিতে ক্লিক করুন।একই সাথে, আপনি সিরিয়াল মনিটরটি দেখে নিতে পারেন পটভূমিতে কী ঘটছে। উদাহরণস্বরূপampহ্যাঁ, যখন আপনি GPIO 26 চালু করার জন্য বোতামটি ক্লিক করেন, তখন ESP32 /26/on-এ একটি অনুরোধ পায় URL.
যখন ESP32 সেই অনুরোধটি গ্রহণ করে, তখন এটি GPIO 26 এর সাথে সংযুক্ত LED চালু করে এবং এর অবস্থা আপডেট করে web পৃষ্ঠা
GPIO 27 এর বোতামটিও একইভাবে কাজ করে। এটি সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করে দেখুন।
কোড কিভাবে কাজ করে
এই বিভাগে আমরা কোডটি কীভাবে কাজ করে তা আরও ঘনিষ্ঠভাবে দেখব।
প্রথমেই আপনাকে ওয়াইফাই লাইব্রেরি অন্তর্ভুক্ত করতে হবে।পূর্বে উল্লিখিত হিসাবে, আপনাকে ডাবল কোটের ভিতরে নিম্নলিখিত লাইনগুলিতে আপনার SSID এবং পাসওয়ার্ড প্রবেশ করাতে হবে।
তারপর, তুমি তোমার সেট করো web সার্ভার পোর্ট ৮০-তে।
নিম্নলিখিত লাইনটি HTTP অনুরোধের হেডার সংরক্ষণ করার জন্য একটি ভেরিয়েবল তৈরি করে:
এরপর, আপনি আপনার আউটপুটগুলির বর্তমান অবস্থা সংরক্ষণ করার জন্য সহায়ক ভেরিয়েবল তৈরি করবেন। আপনি যদি আরও আউটপুট যোগ করতে এবং এর অবস্থা সংরক্ষণ করতে চান, তাহলে আপনাকে আরও ভেরিয়েবল তৈরি করতে হবে।
আপনার প্রতিটি আউটপুটে একটি GPIO বরাদ্দ করতে হবে। এখানে আমরা GPIO 26 এবং GPIO 27 ব্যবহার করছি। আপনি অন্য যেকোনো উপযুক্ত GPIO ব্যবহার করতে পারেন।
সেটআপ()
এবার, সেটআপ() তে যাওয়া যাক। প্রথমে, আমরা ডিবাগিংয়ের জন্য ১১৫২০০ বড রেটে একটি সিরিয়াল যোগাযোগ শুরু করি।আপনি আপনার GPIO গুলিকে OUTPUT হিসেবে সংজ্ঞায়িত করুন এবং সেগুলিকে LOW তে সেট করুন।
নিম্নলিখিত লাইনগুলি WiFi.begin(ssid, পাসওয়ার্ড) দিয়ে Wi-Fi সংযোগ শুরু করে, একটি সফল সংযোগের জন্য অপেক্ষা করে এবং সিরিয়াল মনিটরে ESP IP ঠিকানাটি প্রিন্ট করে।
লুপ()
লুপ() এ আমরা প্রোগ্রাম করি যখন একটি নতুন ক্লায়েন্ট এর সাথে সংযোগ স্থাপন করে তখন কী ঘটে web সার্ভার
ESP32 সর্বদা নিম্নলিখিত লাইনটি ব্যবহার করে আগত ক্লায়েন্টদের কথা শুনছে:যখন কোনও ক্লায়েন্টের কাছ থেকে কোনও অনুরোধ আসে, তখন আমরা আগত ডেটা সংরক্ষণ করব। ক্লায়েন্ট যতক্ষণ সংযুক্ত থাকবে ততক্ষণ পরবর্তী while লুপটি চলবে। আপনি ঠিক কী করছেন তা না জানলে আমরা কোডের পরবর্তী অংশটি পরিবর্তন করার পরামর্শ দিই না।
if এবং else স্টেটমেন্টের পরবর্তী অংশটি আপনার web পৃষ্ঠা, এবং সেই অনুযায়ী আউটপুট নিয়ন্ত্রণ করে। যেমনটি আমরা আগে দেখেছি, আমরা বিভিন্ন বিষয়ে একটি অনুরোধ করি URLবোতাম টিপে তার উপর নির্ভর করে।
প্রাক্তন জন্যampহ্যাঁ, যদি আপনি GPIO 26 ON বোতাম টিপে থাকেন, তাহলে ESP32 /26/ON-এ একটি অনুরোধ পাবে। URL (আমরা সিরিয়াল মনিটরে HTTP হেডারে সেই তথ্যটি দেখতে পাচ্ছি)। সুতরাং, আমরা পরীক্ষা করতে পারি যে হেডারটিতে GET /26/on এক্সপ্রেশন আছে কিনা। যদি এটি থাকে, তাহলে আমরা output26state ভেরিয়েবলটিকে ON এ পরিবর্তন করি এবং ESP32 LED চালু করে।
এটি অন্যান্য বোতামগুলির ক্ষেত্রেও একইভাবে কাজ করে। সুতরাং, যদি আপনি আরও আউটপুট যোগ করতে চান, তাহলে আপনার কোডের এই অংশটি পরিবর্তন করে সেগুলি অন্তর্ভুক্ত করা উচিত।
HTML প্রদর্শন করা হচ্ছে web পৃষ্ঠা
পরবর্তী কাজটি আপনাকে করতে হবে, তা হল তৈরি করা web পৃষ্ঠা। ESP32 আপনার ব্রাউজারে কিছু HTML কোড সহ একটি প্রতিক্রিয়া পাঠাবে যাতে এটি তৈরি করা যায় web পৃষ্ঠা
দ web এই এক্সপ্রেসিং client.println() ব্যবহার করে পৃষ্ঠাটি ক্লায়েন্টের কাছে পাঠানো হয়। আপনি ক্লায়েন্টকে যা পাঠাতে চান তা একটি আর্গুমেন্ট হিসেবে লিখতে হবে।
আমাদের প্রথমেই নিম্নলিখিত লাইনটি পাঠানো উচিত, যা নির্দেশ করে যে আমরা HTML পাঠাচ্ছি।তারপর, নিম্নলিখিত লাইনটি তৈরি করে web যেকোনো পৃষ্ঠায় প্রতিক্রিয়াশীল web ব্রাউজার
এবং ফেভিকনে অনুরোধ প্রতিরোধ করার জন্য নিম্নলিখিতটি ব্যবহার করা হয়। – এই লাইনটি নিয়ে আপনার চিন্তা করার দরকার নেই।
স্টাইলিং Web পাতা
এরপর, আমাদের কাছে বোতামগুলি স্টাইল করার জন্য কিছু CSS টেক্সট আছে এবং web পৃষ্ঠার উপস্থিতি।
আমরা হেলভেটিকা ফন্ট নির্বাচন করি, একটি ব্লক হিসেবে প্রদর্শিত বিষয়বস্তু সংজ্ঞায়িত করি এবং কেন্দ্রে সারিবদ্ধ করি।আমরা আমাদের বোতামগুলিকে #4CAF50 রঙ দিয়ে স্টাইল করি, বর্ডার ছাড়াই, সাদা রঙের টেক্সট দিয়ে, এবং এই প্যাডিং দিয়ে: 16px 40px। আমরা টেক্সট-ডেকোরেশনটি none তে সেট করি, ফন্ট সাইজ, মার্জিন এবং কার্সারকে একটি পয়েন্টারে সংজ্ঞায়িত করি।
আমরা দ্বিতীয় বোতামের স্টাইলটিও সংজ্ঞায়িত করব, যেখানে আমরা আগে যে বোতামটি সংজ্ঞায়িত করেছি তার সমস্ত বৈশিষ্ট্য থাকবে, কিন্তু একটি ভিন্ন রঙ থাকবে। এটি অফ বোতামের স্টাইল হবে।
সেট করা Web পৃষ্ঠার প্রথম শিরোনাম
পরবর্তী লাইনে আপনি আপনার প্রথম শিরোনাম সেট করতে পারেন web পৃষ্ঠা। এখানে আমাদের "ESP32" আছে। Web "সার্ভার", কিন্তু আপনি এই লেখাটি আপনার পছন্দ অনুযায়ী পরিবর্তন করতে পারেন।বোতাম এবং সংশ্লিষ্ট অবস্থা প্রদর্শন করা হচ্ছে
তারপর, আপনি GPIO 26 এর বর্তমান অবস্থা প্রদর্শনের জন্য একটি অনুচ্ছেদ লিখুন। আপনি দেখতে পাচ্ছেন যে আমরা output26State ভেরিয়েবল ব্যবহার করি, যাতে এই ভেরিয়েবলটি পরিবর্তন হলে তাৎক্ষণিকভাবে অবস্থা আপডেট হয়।তারপর, আমরা GPIO-এর বর্তমান অবস্থার উপর নির্ভর করে অন বা অফ বোতামটি প্রদর্শন করি। যদি GPIO-এর বর্তমান অবস্থা বন্ধ থাকে, তাহলে আমরা ON বোতামটি প্রদর্শন করি, যদি না থাকে, তাহলে আমরা OFF বোতামটি প্রদর্শন করি।
আমরা GPIO 27 এর জন্য একই পদ্ধতি ব্যবহার করি।
সংযোগ বন্ধ করা হচ্ছে
অবশেষে, যখন প্রতিক্রিয়া শেষ হবে, আমরা হেডার ভেরিয়েবলটি সাফ করব এবং client.stop() দিয়ে ক্লায়েন্টের সাথে সংযোগ বন্ধ করব।
আপ মোড়ানো
এই টিউটোরিয়ালে আমরা আপনাকে দেখিয়েছি কিভাবে একটি তৈরি করবেন web ESP32 সহ সার্ভার। আমরা আপনাকে একটি সহজ উদাহরণ দেখিয়েছিample যা দুটি LED নিয়ন্ত্রণ করে, কিন্তু ধারণাটি হল সেই LED গুলিকে একটি রিলে দিয়ে প্রতিস্থাপন করা, অথবা আপনি যে কোনও আউটপুট নিয়ন্ত্রণ করতে চান।
প্রজেক্ট ৬ আরজিবি এলইডি Web সার্ভার
এই প্রকল্পে আমরা আপনাকে দেখাবো কিভাবে একটি ESP32 বোর্ড ব্যবহার করে একটি RGB LED দূরবর্তীভাবে নিয়ন্ত্রণ করতে হয় web রঙ চয়নকারী সহ সার্ভার।
প্রকল্প শেষview
শুরু করার আগে, আসুন দেখি কিভাবে এই প্রকল্পটি কাজ করে:
- ESP32 সম্পর্কে web সার্ভার একটি রঙ চয়নকারী প্রদর্শন করে।
- যখন আপনি একটি রঙ নির্বাচন করেন, তখন আপনার ব্রাউজার একটি অনুরোধ করে URL যাতে নির্বাচিত রঙের R, G, এবং B প্যারামিটার থাকে।
- আপনার ESP32 অনুরোধটি গ্রহণ করে এবং প্রতিটি রঙের প্যারামিটারের জন্য মান ভাগ করে।
- তারপর, এটি RGB LED নিয়ন্ত্রণকারী GPIO গুলিকে সংশ্লিষ্ট মান সহ একটি PWM সংকেত পাঠায়।
আরজিবি এলইডি কিভাবে কাজ করে?
একটি সাধারণ ক্যাথোড RGB LED-তে, তিনটি LED-ই একটি নেতিবাচক সংযোগ (ক্যাথোড) ভাগ করে নেয়। কিটে অন্তর্ভুক্ত সমস্তই কমন-ক্যাথোড RGB।কিভাবে বিভিন্ন রঙ তৈরি করবেন?
একটি RGB LED দিয়ে আপনি অবশ্যই লাল, সবুজ এবং নীল আলো তৈরি করতে পারেন এবং প্রতিটি LED এর তীব্রতা কনফিগার করে আপনি অন্যান্য রঙও তৈরি করতে পারেন।
প্রাক্তন জন্যampহ্যাঁ, সম্পূর্ণ নীল আলো তৈরি করতে, আপনাকে নীল LED সর্বোচ্চ তীব্রতায় এবং সবুজ এবং লাল LED সর্বনিম্ন তীব্রতায় সেট করতে হবে। একটি সাদা আলোর জন্য, আপনাকে তিনটি LED সর্বোচ্চ তীব্রতায় সেট করতে হবে।
রঙ মেশানো
অন্যান্য রঙ তৈরি করতে, আপনি তিনটি রঙকে বিভিন্ন তীব্রতায় একত্রিত করতে পারেন। প্রতিটি LED এর তীব্রতা সামঞ্জস্য করতে আপনি একটি PWM সংকেত ব্যবহার করতে পারেন।
যেহেতু LED গুলি একে অপরের খুব কাছাকাছি থাকে, তাই আমাদের চোখ তিনটি রঙের পৃথকভাবে দেখার পরিবর্তে রঙের সংমিশ্রণের ফলাফল দেখতে পায়।
রঙগুলি কীভাবে একত্রিত করবেন সে সম্পর্কে ধারণা পেতে, নিম্নলিখিত চার্টটি একবার দেখুন।
এটি সবচেয়ে সহজ রঙ মিশ্রণ চার্ট, তবে এটি কীভাবে কাজ করে এবং কীভাবে বিভিন্ন রঙ তৈরি করতে হয় তার একটি ধারণা দেয়।যন্ত্রাংশ প্রয়োজন
এই প্রকল্পের জন্য আপনার নিম্নলিখিত অংশগুলির প্রয়োজন:
- ESP32 DEVKIT V1 বোর্ড
- আরজিবি এলইডি
- ৩x ২২০ ওহম প্রতিরোধক
- জাম্পার তারের
- ব্রেডবোর্ড
পরিকল্পিতকোড
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
- Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
সার্কিট একত্রিত করার পরে, কোডটি খুলুন
প্রকল্প_৬_আরজিবি_এলইডি_WebArduino IDE তে _Server.ino।
কোডটি আপলোড করার আগে, আপনার নেটওয়ার্ক শংসাপত্রগুলি সন্নিবেশ করতে ভুলবেন না যাতে ESP আপনার স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত হতে পারে।কোডটি কীভাবে কাজ করে
ESP32 স্কেচটি WiFi.h লাইব্রেরি ব্যবহার করে।নিম্নলিখিত লাইনগুলি অনুরোধ থেকে R, G, এবং B প্যারামিটার ধরে রাখার জন্য স্ট্রিং ভেরিয়েবলগুলিকে সংজ্ঞায়িত করে।
পরবর্তী চারটি ভেরিয়েবল পরবর্তীতে HTTP অনুরোধটি ডিকোড করতে ব্যবহৃত হয়।
GPIO গুলির জন্য তিনটি ভেরিয়েবল তৈরি করুন যা স্ট্রিপ R, G, এবং B প্যারামিটারগুলিকে নিয়ন্ত্রণ করবে। এই ক্ষেত্রে আমরা GPIO 13, GPIO 12, এবং GPIO 14 ব্যবহার করছি।
এই GPIO গুলিকে PWM সিগন্যাল আউটপুট করতে হবে, তাই আমাদের প্রথমে PWM প্রোপার্টি কনফিগার করতে হবে। PWM সিগন্যাল ফ্রিকোয়েন্সি 5000 Hz এ সেট করুন। তারপর, প্রতিটি রঙের জন্য একটি PWM চ্যানেল সংযুক্ত করুন।
এবং অবশেষে, PWM চ্যানেলগুলির রেজোলিউশন 8-বিটে সেট করুন
সেটআপ() তে, PWM চ্যানেলগুলিতে PWM বৈশিষ্ট্যগুলি বরাদ্দ করুন।
সংশ্লিষ্ট GPIO গুলিতে PWM চ্যানেলগুলি সংযুক্ত করুন
নিম্নলিখিত কোড বিভাগটি আপনার রঙ চয়নকারী প্রদর্শন করে web পৃষ্ঠাটি দেখুন এবং আপনার নির্বাচিত রঙের উপর ভিত্তি করে একটি অনুরোধ করুন।
যখন আপনি একটি রঙ নির্বাচন করেন, তখন আপনি নিম্নলিখিত ফর্ম্যাট সহ একটি অনুরোধ পাবেন।
সুতরাং, R, G, এবং B প্যারামিটার পেতে আমাদের এই স্ট্রিংটি বিভক্ত করতে হবে। প্যারামিটারগুলি redString, greenString, এবং blueString ভেরিয়েবলে সংরক্ষিত হয় এবং এর মান 0 থেকে 255 এর মধ্যে থাকতে পারে।ESP32 দিয়ে স্ট্রিপ নিয়ন্ত্রণ করতে, HTTP থেকে ডিকোড করা মানগুলি ব্যবহার করে PWM সংকেত তৈরি করতে ledcWrite() ফাংশন ব্যবহার করুন। অনুরোধ
দ্রষ্টব্য: ESP32 এর মাধ্যমে PWM সম্পর্কে আরও জানুন: প্রকল্প 3 ESP32 PWM(অ্যানালগ আউটপুট)
ESP8266 দিয়ে স্ট্রিপটি নিয়ন্ত্রণ করতে, আমাদের কেবল ব্যবহার করতে হবে
analogWrite() ফাংশনটি HTPP অনুরোধ থেকে ডিকোড করা মানগুলি সহ PWM সংকেত তৈরি করে।
অ্যানালগরাইট(লালপিন, লালস্ট্রিং.টুইন্ট());
অ্যানালগরাইট(গ্রিনপিন, গ্রিনস্ট্রিং.টুইন্ট());
অ্যানালগ রাইট (ব্লুপিন, ব্লুস্ট্রিং.টুইন্ট ())
যেহেতু আমরা একটি স্ট্রিং ভেরিয়েবলে মানগুলি পাই, তাই আমাদের toInt() পদ্ধতি ব্যবহার করে সেগুলিকে পূর্ণসংখ্যায় রূপান্তর করতে হবে।
বিক্ষোভ
আপনার নেটওয়ার্ক শংসাপত্র সন্নিবেশ করার পরে, সঠিক বোর্ড এবং COM পোর্ট নির্বাচন করুন এবং কোডটি আপনার ESP32 এ আপলোড করুন। কোড রেফারেন্স ধাপগুলি আপলোড করুন।
আপলোড করার পর, ১১৫২০০ বড রেটে সিরিয়াল মনিটরটি খুলুন এবং ESP Enable/Reset বোতাম টিপুন। আপনি বোর্ডের IP ঠিকানাটি পেয়ে যাবেন।আপনার ব্রাউজারটি খুলুন এবং ESP IP ঠিকানাটি প্রবেশ করান। এখন, RGB LED এর জন্য একটি রঙ চয়ন করতে রঙ চয়নকারী ব্যবহার করুন।
তারপর, রঙটি কার্যকর হওয়ার জন্য আপনাকে "রঙ পরিবর্তন করুন" বোতাম টিপতে হবে।RGB LED বন্ধ করতে, কালো রঙ নির্বাচন করুন।
সবচেয়ে শক্তিশালী রঙগুলি (রঙ চয়নকারীর শীর্ষে) আরও ভাল ফলাফল দেবে।
প্রকল্প ৭ ESP7 রিলে Web সার্ভার
ESP32 এর সাথে রিলে ব্যবহার করা দূরবর্তীভাবে AC গৃহস্থালীর যন্ত্রপাতি নিয়ন্ত্রণ করার একটি দুর্দান্ত উপায়। এই টিউটোরিয়ালে ESP32 এর সাথে রিলে মডিউল কীভাবে নিয়ন্ত্রণ করবেন তা ব্যাখ্যা করা হয়েছে।
আমরা দেখব কিভাবে একটি রিলে মডিউল কাজ করে, কিভাবে রিলেটিকে ESP32 এর সাথে সংযুক্ত করতে হয় এবং একটি তৈরি করতে হয় web রিলে দূর থেকে নিয়ন্ত্রণ করার জন্য সার্ভার।
রিলে চালু করা হচ্ছে
রিলে হলো একটি বৈদ্যুতিক সুইচ এবং অন্য যেকোনো সুইচের মতো, এটিও চালু বা বন্ধ করা যেতে পারে, কারেন্ট যেতে দেওয়া হোক বা না হোক। এটি কম ভলিউম দিয়ে নিয়ন্ত্রণ করা যেতে পারে।tages, ESP3.3 GPIO দ্বারা প্রদত্ত 32V এর মতো এবং আমাদের উচ্চ ভলিউম নিয়ন্ত্রণ করতে দেয়tagযেমন ১২V, ২৪V অথবা মেইন ভলিউমtage (ইউরোপে 230V এবং মার্কিন যুক্তরাষ্ট্রে 120V)।বাম দিকে, উচ্চ ভলিউম সংযোগের জন্য তিনটি সকেটের দুটি সেট রয়েছেtages, এবং ডান দিকের পিনগুলি (নিম্ন-ভোল্টtage) ESP32 GPIO গুলির সাথে সংযোগ স্থাপন করুন।
মেইনস ভলিউমtagই সংযোগআগের ছবিতে দেখানো রিলে মডিউলটিতে দুটি সংযোগকারী রয়েছে, প্রতিটিতে তিনটি সকেট রয়েছে: সাধারণ (COM), সাধারণভাবে বন্ধ (NC), এবং সাধারণভাবে খোলা (NO)।
- COM: আপনি যে কারেন্টটি নিয়ন্ত্রণ করতে চান তা সংযুক্ত করুন (মেইন ভলিউম)tagঙ)।
- NC (সাধারণত বন্ধ): যখন আপনি রিলেটি ডিফল্টভাবে বন্ধ করতে চান তখন সাধারণত বন্ধ কনফিগারেশন ব্যবহার করা হয়। NC হল COM পিনগুলি সংযুক্ত থাকে, যার অর্থ হল কারেন্ট প্রবাহিত হচ্ছে যদি না আপনি ESP32 থেকে রিলে মডিউলে একটি সংকেত পাঠান যাতে সার্কিটটি খোলা যায় এবং কারেন্ট প্রবাহ বন্ধ করা যায়।
- NO (সাধারণত খোলা): সাধারণত খোলা কনফিগারেশনটি বিপরীতভাবে কাজ করে: NO এবং COM পিনের মধ্যে কোনও সংযোগ নেই, তাই সার্কিটটি বন্ধ করার জন্য ESP32 থেকে একটি সংকেত না পাঠানো পর্যন্ত সার্কিটটি ভেঙে যাবে।
কন্ট্রোল পিনকম ভলিউমtage সাইডে চারটি পিনের একটি সেট এবং তিনটি পিনের একটি সেট রয়েছে। প্রথম সেটটিতে মডিউলটি পাওয়ার জন্য VCC এবং GND রয়েছে, এবং নীচের এবং উপরের রিলে নিয়ন্ত্রণ করার জন্য যথাক্রমে ইনপুট 1 (IN1) এবং ইনপুট 2 (IN2) রয়েছে।
যদি আপনার রিলে মডিউলে শুধুমাত্র একটি চ্যানেল থাকে, তাহলে আপনার কাছে কেবল একটি IN পিন থাকবে। যদি আপনার চারটি চ্যানেল থাকে, তাহলে আপনার কাছে চারটি IN পিন থাকবে, ইত্যাদি।
আপনি IN পিনে যে সিগন্যাল পাঠান তা নির্ধারণ করে যে রিলে সক্রিয় আছে কি না। ইনপুট প্রায় 2V এর নিচে গেলে রিলে ট্রিগার হয়। এর অর্থ হল আপনার নিম্নলিখিত পরিস্থিতিগুলি থাকবে:
- সাধারণভাবে বন্ধ কনফিগারেশন (NC):
- উচ্চ সংকেত - বিদ্যুৎ প্রবাহিত হচ্ছে
- কম সংকেত - বিদ্যুৎ প্রবাহিত হচ্ছে না
- সাধারণত ওপেন কনফিগারেশন (NO):
- উচ্চ সংকেত - বিদ্যুৎ প্রবাহিত হচ্ছে না
- নিম্ন সংকেত - প্রবাহিত কারেন্ট
যখন বেশিরভাগ সময় কারেন্ট প্রবাহিত হওয়ার কথা, তখন আপনার স্বাভাবিকভাবে বন্ধ কনফিগারেশন ব্যবহার করা উচিত এবং আপনি কেবল মাঝে মাঝে এটি বন্ধ করতে চান।
যখন আপনি মাঝে মাঝে কারেন্ট প্রবাহিত করতে চান তখন একটি স্বাভাবিকভাবে খোলা কনফিগারেশন ব্যবহার করুন (উদাহরণস্বরূপampলে, আল চালু করোamp মাঝে মাঝে)।
পাওয়ার সাপ্লাই নির্বাচনপিনের দ্বিতীয় সেটটিতে GND, VCC, এবং JD-VCC পিন রয়েছে।
JD-VCC পিনটি রিলে এর ইলেক্ট্রোম্যাগনেটকে শক্তি দেয়। লক্ষ্য করুন যে মডিউলটিতে VCC এবং JD-VCC পিনগুলিকে সংযুক্ত করার জন্য একটি জাম্পার ক্যাপ রয়েছে; এখানে দেখানো পিনটি হলুদ, কিন্তু আপনার পিনটি ভিন্ন রঙের হতে পারে।
জাম্পার ক্যাপ চালু থাকলে, VCC এবং JD-VCC পিনগুলি সংযুক্ত থাকে। এর অর্থ হল রিলে ইলেক্ট্রোম্যাগনেট সরাসরি ESP32 পাওয়ার পিন থেকে চালিত হয়, তাই রিলে মডিউল এবং ESP32 সার্কিটগুলি একে অপরের থেকে শারীরিকভাবে বিচ্ছিন্ন নয়।
জাম্পার ক্যাপ ছাড়া, JD-VCC পিনের মাধ্যমে রিলের ইলেক্ট্রোম্যাগনেটকে পাওয়ার আপ করার জন্য আপনাকে একটি স্বাধীন পাওয়ার সোর্স প্রদান করতে হবে। এই কনফিগারেশনটি মডিউলের অন্তর্নির্মিত অপটোকাপ্লারের সাহায্যে ESP32 থেকে রিলেগুলিকে শারীরিকভাবে বিচ্ছিন্ন করে, যা বৈদ্যুতিক স্পাইকের ক্ষেত্রে ESP32 এর ক্ষতি প্রতিরোধ করে।
পরিকল্পিতসতর্কতা: উচ্চ ভলিউমের ব্যবহারtagবিদ্যুৎ সরবরাহ গুরুতর আঘাতের কারণ হতে পারে।
অতএব, উচ্চ সরবরাহ ভলিউমের পরিবর্তে 5 মিমি LED ব্যবহার করা হয়tagপরীক্ষায় e বাল্ব। যদি আপনি মেইন ভলিউমের সাথে পরিচিত না হনtagআপনাকে সাহায্য করার জন্য এমন কাউকে জিজ্ঞাসা করুন। ESP প্রোগ্রাম করার সময় বা আপনার সার্কিটের তার লাগানোর সময় নিশ্চিত করুন যে সবকিছু মেইন ভলিউম থেকে বিচ্ছিন্ন আছে।tage.ESP32 এর জন্য লাইব্রেরি ইনস্টল করা হচ্ছে
এটি তৈরি করতে web সার্ভারে, আমরা ESPAsync ব্যবহার করিWebসার্ভার লাইব্রেরি এবং AsyncTCP লাইব্রেরি।
ESPAsync ইনস্টল করা হচ্ছেWebসার্ভার লাইব্রেরি
ইনস্টল করার জন্য পরবর্তী ধাপগুলি অনুসরণ করুন ESPAsync সম্পর্কেWebসার্ভার লাইব্রেরি:
- ESPAsync ডাউনলোড করতে এখানে ক্লিক করুন।Webসার্ভার লাইব্রেরি। তোমার থাকা উচিত
আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার - .zip ফোল্ডারটি আনজিপ করুন এবং আপনার ESPAsync পাওয়া উচিতWebসার্ভার-মাস্টার ফোল্ডার
- ESPAsync থেকে আপনার ফোল্ডারের নাম পরিবর্তন করুনWebসার্ভার-মাস্টার থেকে ESPAsyncWebসার্ভার
- ESPAsync সরানWebআপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সার্ভার ফোল্ডার
অন্যথায়, আপনার Arduino IDE-তে, আপনি Sketch > Include এ যেতে পারেন
লাইব্রেরি > .ZIP লাইব্রেরি যোগ করুন… এবং আপনার ডাউনলোড করা লাইব্রেরিটি নির্বাচন করুন।
ESP32 এর জন্য AsyncTCP লাইব্রেরি ইনস্টল করা হচ্ছে
দ ESPAsync সম্পর্কেWebসার্ভার লাইব্রেরির জন্য প্রয়োজন অ্যাসিঙ্কটিসিপি কাজ করার জন্য লাইব্রেরি। অনুসরণ করুন
লাইব্রেরিটি ইনস্টল করার পরবর্তী পদক্ষেপগুলি:
- AsyncTCP লাইব্রেরি ডাউনলোড করতে এখানে ক্লিক করুন। আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার থাকা উচিত।
- .zip ফোল্ডারটি আনজিপ করুন এবং আপনার AsyncTCP-master ফোল্ডারটি পাওয়া উচিত
১. আপনার ফোল্ডারের নাম AsyncTCP-master থেকে AsyncTCP করুন।
৩. AsyncTCP ফোল্ডারটি আপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সরান।
৪. অবশেষে, আপনার Arduino IDE পুনরায় খুলুন
অন্যথায়, আপনার Arduino IDE-তে, আপনি Sketch > Include এ যেতে পারেন
লাইব্রেরি > .ZIP লাইব্রেরি যোগ করুন… এবং আপনার ডাউনলোড করা লাইব্রেরিটি নির্বাচন করুন।
কোড
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
প্রয়োজনীয় লাইব্রেরি ইনস্টল করার পরে, Project_7_ESP32_Relay_ কোডটি খুলুন।WebArduino IDE তে _Server.ino।
কোডটি আপলোড করার আগে, আপনার নেটওয়ার্ক শংসাপত্রগুলি সন্নিবেশ করতে ভুলবেন না যাতে ESP আপনার স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত হতে পারে।বিক্ষোভ
প্রয়োজনীয় পরিবর্তনগুলি করার পর, আপনার ESP32 এ কোডটি আপলোড করুন। কোড রেফারেন্স ধাপগুলি আপলোড করুন।
১১৫২০০ এর বড রেটে সিরিয়াল মনিটরটি খুলুন এবং এর আইপি ঠিকানা পেতে ESP115200 EN বোতাম টিপুন। তারপর, আপনার স্থানীয় নেটওয়ার্কে একটি ব্রাউজার খুলুন এবং অ্যাক্সেস পেতে ESP32 আইপি ঠিকানা টাইপ করুন। web সার্ভার
১১৫২০০ এর বড রেটে সিরিয়াল মনিটরটি খুলুন এবং এর আইপি ঠিকানা পেতে ESP115200 EN বোতাম টিপুন। তারপর, আপনার স্থানীয় নেটওয়ার্কে একটি ব্রাউজার খুলুন এবং অ্যাক্সেস পেতে ESP32 আইপি ঠিকানা টাইপ করুন। web সার্ভারদ্রষ্টব্য: আপনার ব্রাউজার এবং ESP32 একই LAN-এর সাথে সংযুক্ত থাকা উচিত।
আপনার কোডে সংজ্ঞায়িত রিলে সংখ্যার সমান দুটি বোতাম সহ আপনি নিম্নলিখিত কিছু পাবেন।এখন, আপনি আপনার স্মার্টফোন ব্যবহার করে আপনার রিলে নিয়ন্ত্রণ করতে বোতামগুলি ব্যবহার করতে পারেন।
প্রকল্প_৮_আউটপুট_স্টেট_সিঙ্ক্রোনাইজেশন_ Web_সার্ভার
এই প্রকল্পটি দেখায় কিভাবে ESP32 বা ESP8266 আউটপুট নিয়ন্ত্রণ করতে হয় a ব্যবহার করে web সার্ভার এবং একটি ফিজিক্যাল বোতাম একসাথে। আউটপুট অবস্থা আপডেট করা হয় web পৃষ্ঠাটি ফিজিক্যাল বোতামের মাধ্যমে পরিবর্তন করা হোক বা web সার্ভার
প্রকল্প শেষview
প্রকল্পটি কীভাবে কাজ করে তা এক ঝলকে দেখে নেওয়া যাক।ESP32 বা ESP8266 একটি হোস্ট করে web সার্ভার যা আপনাকে আউটপুটের অবস্থা নিয়ন্ত্রণ করতে দেয়;
- বর্তমান আউটপুট অবস্থা প্রদর্শিত হয় web সার্ভার
- ESP একটি ভৌত পুশবোটনের সাথেও সংযুক্ত যা একই আউটপুট নিয়ন্ত্রণ করে;
- যদি আপনি ফিজিক্যাল puhsbutton ব্যবহার করে আউটপুট অবস্থা পরিবর্তন করেন, তাহলে এর বর্তমান অবস্থাও আপডেট করা হবে web সার্ভার
সংক্ষেপে, এই প্রকল্পটি আপনাকে একটি ব্যবহার করে একই আউটপুট নিয়ন্ত্রণ করতে দেয় web সার্ভার এবং একটি পুশ বোতাম একসাথে। যখনই আউটপুট অবস্থা পরিবর্তন হয়, web সার্ভার আপডেট করা হয়েছে।
যন্ত্রাংশ প্রয়োজন
সার্কিট তৈরির জন্য আপনার প্রয়োজনীয় যন্ত্রাংশের একটি তালিকা এখানে দেওয়া হল:
- ESP32 DEVKIT V1 বোর্ড
- 5 মিমি এলইডি
- 220Ohm প্রতিরোধক
- বোতাম চাপা
- 10k ওহম প্রতিরোধক
- ব্রেডবোর্ড
- জাম্পার তারের
পরিকল্পিতESP32 এর জন্য লাইব্রেরি ইনস্টল করা হচ্ছে
এটি তৈরি করতে web সার্ভারে, আমরা ESPAsync ব্যবহার করিWebসার্ভার লাইব্রেরি এবং অ্যাসিঙ্কটিসিপি লাইব্রেরি। (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
ESPAsync ইনস্টল করা হচ্ছেWebসার্ভার লাইব্রেরি
ESPAsync ইনস্টল করার জন্য পরবর্তী পদক্ষেপগুলি অনুসরণ করুনWebসার্ভার লাইব্রেরি:
- ESPAsync ডাউনলোড করতে এখানে ক্লিক করুন।Webসার্ভার লাইব্রেরি। তোমার থাকা উচিত
আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার - .zip ফোল্ডারটি আনজিপ করুন এবং আপনার ESPAsync পাওয়া উচিতWebসার্ভার-মাস্টার ফোল্ডার
- ESPAsync থেকে আপনার ফোল্ডারের নাম পরিবর্তন করুনWebসার্ভার-মাস্টার থেকে ESPAsyncWebসার্ভার
- ESPAsync সরানWebআপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সার্ভার ফোল্ডার
অন্যথায়, আপনার Arduino IDE-তে, আপনি Sketch > Include এ যেতে পারেন
লাইব্রেরি > .ZIP লাইব্রেরি যোগ করুন… এবং আপনার ডাউনলোড করা লাইব্রেরিটি নির্বাচন করুন।
ESP32 এর জন্য AsyncTCP লাইব্রেরি ইনস্টল করা হচ্ছে
ESPAsync সম্পর্কেWebসার্ভার লাইব্রেরির কাজ করার জন্য AsyncTCP লাইব্রেরি প্রয়োজন। সেই লাইব্রেরিটি ইনস্টল করার জন্য পরবর্তী পদক্ষেপগুলি অনুসরণ করুন:
- AsyncTCP লাইব্রেরি ডাউনলোড করতে এখানে ক্লিক করুন। আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার থাকা উচিত।
- .zip ফোল্ডারটি আনজিপ করুন এবং আপনার AsyncTCP-master ফোল্ডারটি পাওয়া উচিত
- আপনার ফোল্ডারের নাম AsyncTCP-master থেকে AsyncTCP করুন।
- AsyncTCP ফোল্ডারটি আপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সরান।
- অবশেষে, আপনার Arduino IDE পুনরায় খুলুন
অন্যথায়, আপনার Arduino IDE-তে, আপনি Sketch > Include এ যেতে পারেন
লাইব্রেরি > .ZIP লাইব্রেরি যোগ করুন… এবং আপনার ডাউনলোড করা লাইব্রেরিটি নির্বাচন করুন।
কোড
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
প্রয়োজনীয় লাইব্রেরি ইনস্টল করার পরে, কোডটি খুলুন
প্রকল্প_৮_আউটপুট_স্টেট_সিঙ্ক্রোনাইজেশন_WebArduino IDE তে _Server.ino।
কোডটি আপলোড করার আগে, আপনার নেটওয়ার্ক শংসাপত্রগুলি সন্নিবেশ করতে ভুলবেন না যাতে ESP আপনার স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত হতে পারে।
কোড কিভাবে কাজ করে
বোতামের অবস্থা এবং আউটপুট অবস্থা
ledState ভেরিয়েবল LED আউটপুট অবস্থা ধরে রাখে। ডিফল্টরূপে, যখন web সার্ভার শুরু হচ্ছে, এটি কম।
পুশবোতামটি চাপা হয়েছে কিনা তা সনাক্ত করতে buttonState এবং lastButtonState ব্যবহার করা হয়।বোতাম (web সার্ভার)
আমরা index_html ভেরিয়েবলে বোতাম তৈরি করার জন্য HTML অন্তর্ভুক্ত করিনি।
কারণ আমরা বর্তমান LED অবস্থার উপর নির্ভর করে এটি পরিবর্তন করতে সক্ষম হতে চাই যা পুশবাটন দিয়েও পরিবর্তন করা যেতে পারে।
তাহলে, আমরা %BUTTONPLACEHOLDER% বোতামের জন্য একটি স্থানধারক তৈরি করেছি যা পরবর্তীতে কোডে বোতাম তৈরি করার জন্য HTML টেক্সট দিয়ে প্রতিস্থাপিত হবে (এটি processor() ফাংশনে করা হয়)।প্রসেসর()
processor() ফাংশনটি HTML টেক্সটের যেকোনো স্থানধারককে প্রকৃত মান দিয়ে প্রতিস্থাপন করে। প্রথমে, এটি পরীক্ষা করে যে HTML টেক্সটে কোন
স্থানধারক %BUTTONPLACEHOLDER%।তারপর, theoutputState() ফাংশনটি কল করুন যা বর্তমান আউটপুট অবস্থা প্রদান করে। আমরা এটি outputStateValue ভেরিয়েবলে সংরক্ষণ করি।
এরপর, সঠিক অবস্থায় বোতামটি প্রদর্শনের জন্য HTML টেক্সট তৈরি করতে সেই মানটি ব্যবহার করুন:
আউটপুট অবস্থা পরিবর্তন করার জন্য HTTP GET অনুরোধ (জাভাস্ক্রিপ্ট)
যখন আপনি বোতামটি টিপবেন, তখন toggleCheckbox() ফাংশনটি কল হবে। এই ফাংশনটি বিভিন্ন ক্ষেত্রে একটি অনুরোধ করবে URLLED চালু বা বন্ধ করার জন্য।LED চালু করার জন্য, এটি /update?state=1 এ একটি অনুরোধ করে URL:
অন্যথায়, এটি /update?state=0 এ একটি অনুরোধ করে URL.
HTTP GET আপডেটের অনুরোধের অবস্থা (জাভাস্ক্রিপ্ট)
আউটপুট অবস্থা আপডেট রাখতে web সার্ভারে, আমরা নিম্নলিখিত ফাংশনটি কল করি যা /state-এ একটি নতুন অনুরোধ করে URL প্রতি সেকেন্ডঅনুরোধগুলি পরিচালনা করুন
তারপর, আমাদের ESP32 বা ESP8266 যখন অনুরোধ গ্রহণ করে তখন কী ঘটে তা পরিচালনা করতে হবে URLs.
যখন রুটে একটি অনুরোধ পাওয়া যায় /URL, আমরা প্রসেসরের পাশাপাশি HTML পৃষ্ঠাটিও পাঠাই।নিম্নলিখিত লাইনগুলি পরীক্ষা করে যে আপনি /update?state=1 অথবা /update?state=0 এ একটি অনুরোধ পেয়েছেন কিনা। URL এবং সেই অনুযায়ী ledState পরিবর্তন করে।
যখন /state-এ একটি অনুরোধ পাওয়া যায় URL, আমরা বর্তমান আউটপুট অবস্থা পাঠাই:
লুপ()
লুপ() এ, আমরা পুশবাটনটি ডিবাউন্স করি এবং ledState এর মানের উপর নির্ভর করে LED চালু বা বন্ধ করি। পরিবর্তনশীলবিক্ষোভ
আপনার ESP32 বোর্ডে কোডটি আপলোড করুন। কোড রেফারেন্স ধাপগুলি আপলোড করুন।
তারপর, ১১৫২০০ এর বড রেটে সিরিয়াল মনিটরটি খুলুন। আইপি ঠিকানা পেতে অন-বোর্ড EN/RST বোতাম টিপুন।আপনার স্থানীয় নেটওয়ার্কে একটি ব্রাউজার খুলুন এবং ESP IP ঠিকানা টাইপ করুন। আপনার অ্যাক্সেস থাকা উচিত web সার্ভারটি নিচে দেখানো হয়েছে।
দ্রষ্টব্য: আপনার ব্রাউজার এবং ESP32 একই LAN-এর সাথে সংযুক্ত থাকা উচিত।আপনি বোতামটি টগল করতে পারেন web LED চালু করার জন্য সার্ভার।
আপনি একই LED কে ফিজিক্যাল পুশবাটন দিয়েও নিয়ন্ত্রণ করতে পারেন। এর অবস্থা সর্বদা স্বয়ংক্রিয়ভাবে আপডেট হবে web সার্ভার
প্রকল্প ৯ ESP9 DHT32 Web সার্ভার
এই প্রকল্পে, আপনি শিখবেন কিভাবে একটি অ্যাসিঙ্ক্রোনাস ESP32 তৈরি করতে হয়। web DHT11 সহ সার্ভার যা Arduino IDE ব্যবহার করে তাপমাত্রা এবং আর্দ্রতা প্রদর্শন করে।
পূর্বশর্ত
দ web আমরা যে সার্ভারটি তৈরি করব তা রিফ্রেশ করার প্রয়োজন ছাড়াই স্বয়ংক্রিয়ভাবে রিডিং আপডেট করবে web পৃষ্ঠা
এই প্রকল্পের মাধ্যমে আপনি শিখবেন:
- DHT সেন্সর থেকে তাপমাত্রা এবং আর্দ্রতা কীভাবে পড়বেন;
- একটি অ্যাসিঙ্ক্রোনাস তৈরি করুন web সার্ভার ব্যবহার করে ESPAsync সম্পর্কেWebসার্ভার লাইব্রেরি;
- রিফ্রেশ করার প্রয়োজন ছাড়াই সেন্সর রিডিং স্বয়ংক্রিয়ভাবে আপডেট করুন web পৃষ্ঠা
অ্যাসিঙ্ক্রোনাস Web সার্ভার
নির্মাণ করতে web আমরা যে সার্ভারটি ব্যবহার করব ESPAsync সম্পর্কেWebসার্ভার লাইব্রেরি এটি একটি অ্যাসিঙ্ক্রোনাস তৈরি করার একটি সহজ উপায় প্রদান করে web সার্ভার। একটি অ্যাসিঙ্ক্রোনাস সার্ভার তৈরি করা web সার্ভারের বেশ কিছু অ্যাডভান্স আছেtagলাইব্রেরি গিটহাব পৃষ্ঠায় যেমন উল্লেখ করা হয়েছে, যেমন:
- "একই সময়ে একাধিক সংযোগ পরিচালনা করুন";
- "যখন আপনি প্রতিক্রিয়া পাঠান, তখন সার্ভারটি ব্যাকগ্রাউন্ডে প্রতিক্রিয়া পাঠানোর সময় আপনি তাৎক্ষণিকভাবে অন্যান্য সংযোগগুলি পরিচালনা করতে প্রস্তুত থাকেন";
- "টেমপ্লেট পরিচালনা করার জন্য সহজ টেমপ্লেট প্রক্রিয়াকরণ ইঞ্জিন";
যন্ত্রাংশ প্রয়োজন
এই টিউটোরিয়ালটি সম্পূর্ণ করতে আপনার নিম্নলিখিত অংশগুলির প্রয়োজন:
- ESP32 ডেভেলপমেন্ট বোর্ড
- DHT11 মডিউল
- ব্রেডবোর্ড
- জাম্পার তারের
পরিকল্পিতলাইব্রেরি ইনস্টল করা
এই প্রকল্পের জন্য আপনাকে কয়েকটি লাইব্রেরি ইনস্টল করতে হবে:
- দ ডিএইচটি এবং অ্যাডাফ্রুট ইউনিফাইড সেন্সর DHT সেন্সর থেকে পড়ার জন্য ড্রাইভার লাইব্রেরি।
- ESPAsync সম্পর্কেWebসার্ভার এবং অ্যাসিঙ্ক টিসিপি অ্যাসিঙ্ক্রোনাস তৈরির জন্য লাইব্রেরি web সার্ভার
ঐ লাইব্রেরিগুলি ইনস্টল করার জন্য নিম্নলিখিত নির্দেশাবলী অনুসরণ করুন:
DHT সেন্সর লাইব্রেরি ইনস্টল করা হচ্ছে
Arduino IDE ব্যবহার করে DHT সেন্সর থেকে পড়ার জন্য, আপনাকে ইনস্টল করতে হবে ডিএইচটি সেন্সর লাইব্রেরিলাইব্রেরি ইনস্টল করার জন্য পরবর্তী ধাপগুলি অনুসরণ করুন।
- DHT সেন্সর লাইব্রেরি ডাউনলোড করতে এখানে ক্লিক করুন। আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার থাকা উচিত।
- .zip ফোল্ডারটি আনজিপ করুন এবং আপনার DHT-sensor-library-master ফোল্ডারটি পাওয়া উচিত।
- আপনার ফোল্ডারের নাম DHT-sensor-library-master থেকে DHT_sensor করুন।
- DHT_sensor ফোল্ডারটি আপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সরান।
- অবশেষে, আপনার Arduino IDE পুনরায় খুলুন
অ্যাডাফ্রুট ইউনিফাইড সেন্সর ড্রাইভার ইনস্টল করা হচ্ছে
এছাড়াও আপনি ইনস্টল করতে হবে অ্যাডাফ্রুট ইউনিফাইড সেন্সর ড্রাইভার লাইব্রেরি DHT সেন্সরের সাথে কাজ করতে। লাইব্রেরি ইনস্টল করার জন্য পরবর্তী ধাপগুলি অনুসরণ করুন।
- অ্যাডাফ্রুট ইউনিফাইড সেন্সর লাইব্রেরি ডাউনলোড করতে এখানে ক্লিক করুন। আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার থাকা উচিত।
- .zip ফোল্ডারটি আনজিপ করুন এবং আপনার Adafruit_sensor-master ফোল্ডারটি পাওয়া উচিত।
- আপনার ফোল্ডারের নাম Adafruit_sensor-master থেকে Adafruit_sensor করুন।
- Adafruit_sensor ফোল্ডারটি আপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সরান।
- অবশেষে, আপনার Arduino IDE পুনরায় খুলুন
ESPAsync ইনস্টল করা হচ্ছেWebসার্ভার লাইব্রেরি
ইনস্টল করার জন্য পরবর্তী ধাপগুলি অনুসরণ করুন ESPAsync সম্পর্কেWebসার্ভার লাইব্রেরি:
- ESPAsync ডাউনলোড করতে এখানে ক্লিক করুন।Webসার্ভার লাইব্রেরি। তোমার থাকা উচিত
আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার - .zip ফোল্ডারটি আনজিপ করুন এবং আপনার উচিত
ESPAsync পানWebসার্ভার-মাস্টার ফোল্ডার - ESPAsync থেকে আপনার ফোল্ডারের নাম পরিবর্তন করুনWebসার্ভার-মাস্টার থেকে ESPAsyncWebসার্ভার
- ESPAsync সরানWebআপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সার্ভার ফোল্ডার
ESP32 এর জন্য Async TCP লাইব্রেরি ইনস্টল করা হচ্ছে
দ ESPAsync সম্পর্কেWebসার্ভার লাইব্রেরির জন্য প্রয়োজন অ্যাসিঙ্কটিসিপি লাইব্রেরিটি কাজ করার জন্য। লাইব্রেরিটি ইনস্টল করার জন্য পরবর্তী পদক্ষেপগুলি অনুসরণ করুন:
- AsyncTCP লাইব্রেরি ডাউনলোড করতে এখানে ক্লিক করুন। আপনার ডাউনলোড ফোল্ডারে একটি .zip ফোল্ডার থাকা উচিত।
- .zip ফোল্ডারটি আনজিপ করুন এবং আপনার AsyncTCP-master ফোল্ডারটি পাওয়া উচিত
- আপনার ফোল্ডারের নাম AsyncTCP-master থেকে AsyncTCP করুন।
- AsyncTCP ফোল্ডারটি আপনার Arduino IDE ইনস্টলেশন লাইব্রেরি ফোল্ডারে সরান।
- অবশেষে, আপনার Arduino IDE পুনরায় খুলুন
কোড
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করা
প্রয়োজনীয় লাইব্রেরি ইনস্টল করার পরে, কোডটি খুলুন
প্রকল্প_৯_ESP৩২_DHT১১_WebArduino IDE তে _Server.ino।
কোডটি আপলোড করার আগে, আপনার নেটওয়ার্ক শংসাপত্রগুলি সন্নিবেশ করতে ভুলবেন না যাতে ESP আপনার স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত হতে পারে।কোড কিভাবে কাজ করে
পরবর্তী অনুচ্ছেদে আমরা ব্যাখ্যা করব কিভাবে কোডটি কাজ করে। আরও জানতে চাইলে পড়তে থাকুন অথবা চূড়ান্ত ফলাফল দেখতে ডেমোনস্ট্রেশন বিভাগে যান।
লাইব্রেরি আমদানি করা হচ্ছে
প্রথমে, প্রয়োজনীয় লাইব্রেরিগুলি আমদানি করুন। WiFi, ESPAsyncWebসার্ভার এবং ESPAsyncTCP তৈরির জন্য প্রয়োজন web সার্ভার। DHT11 বা DHT22 সেন্সর থেকে পড়ার জন্য Adafruit_Sensor এবং DHT লাইব্রেরিগুলির প্রয়োজন।চলকের সংজ্ঞা
DHT ডেটা পিনটি কোন GPIO এর সাথে সংযুক্ত তা নির্ধারণ করুন। এই ক্ষেত্রে, এটি GPIO 4 এর সাথে সংযুক্ত।তারপর, আপনি যে ধরণের DHT সেন্সর ব্যবহার করছেন তা নির্বাচন করুন। আমাদের উদাহরণেampআচ্ছা, আমরা DHT22 ব্যবহার করছি। যদি আপনি অন্য ধরণের ব্যবহার করেন, তাহলে আপনাকে কেবল আপনার সেন্সরটি আনকমেন্ট করতে হবে এবং বাকি সবগুলিতে মন্তব্য করতে হবে।
আমরা আগে যে টাইপ এবং পিনটি সংজ্ঞায়িত করেছি তার সাহায্যে একটি DHT অবজেক্টকে ইনস্ট্যান্টিয়েট করুন।একটি অ্যাসিঙ্ক তৈরি করুনWebপোর্ট ৮০-তে সার্ভার অবজেক্ট।
তাপমাত্রা এবং আর্দ্রতা ফাংশন পড়ুন
আমরা দুটি ফাংশন তৈরি করেছি: একটি তাপমাত্রা পড়ার জন্য। আমরা দুটি ফাংশন তৈরি করেছি: একটি তাপমাত্রা পড়ার জন্য (readDHTTemperature()) এবং অন্যটি আর্দ্রতা পড়ার জন্য (readDHTHumidity())।সেন্সর রিডিং পাওয়া যতটা সহজ, সেন্সর রিডিং পাওয়া ততটাই সহজ যতটা সহজ, dht অবজেক্টে readTemperature() এবং readHumidity() পদ্ধতি ব্যবহার করা।
আমাদের একটি শর্ত আছে যা সেন্সর যদি রিডিং না পায় তবে দুটি ড্যাশ (–) ফেরত দেয়।
রিডিংগুলো স্ট্রিং টাইপ হিসেবে রিটার্ন করা হয়। একটি float কে স্ট্রিং এ রূপান্তর করতে, String() ফাংশনটি ব্যবহার করুন।
ডিফল্টরূপে, আমরা তাপমাত্রা সেলসিয়াস ডিগ্রীতে পড়ছি। ফারেনহাইট ডিগ্রীতে তাপমাত্রা পেতে, সেলসিয়াসে তাপমাত্রা মন্তব্য করুন এবং ফারেনহাইট তাপমাত্রা মন্তব্য করুন, যাতে আপনার নিম্নলিখিতগুলি থাকে:
কোডটি আপলোড করুন
এখন, আপনার ESP32 এ কোডটি আপলোড করুন। নিশ্চিত করুন যে আপনার সঠিক বোর্ড এবং COM পোর্ট নির্বাচন করা আছে। কোড রেফারেন্স ধাপগুলি আপলোড করুন।
আপলোড করার পর, ১১৫২০০ বড রেটে সিরিয়াল মনিটরটি খুলুন। ESP115200 রিসেট বোতাম টিপুন। ESP32 IP ঠিকানাটি সিরিয়ালে প্রিন্ট করা উচিত। মনিটরবিক্ষোভ
একটি ব্রাউজার খুলুন এবং ESP32 IP ঠিকানা টাইপ করুন। আপনার web সার্ভারটি সর্বশেষ সেন্সর রিডিং প্রদর্শন করবে।
দ্রষ্টব্য: আপনার ব্রাউজার এবং ESP32 একই LAN-এর সাথে সংযুক্ত থাকা উচিত।
লক্ষ্য করুন যে তাপমাত্রা এবং আর্দ্রতা রিডিংগুলি রিফ্রেশ করার প্রয়োজন ছাড়াই স্বয়ংক্রিয়ভাবে আপডেট হয় web পৃষ্ঠা
প্রকল্প_১০_ESP10_OLED_প্রদর্শন
এই প্রকল্পটি দেখায় কিভাবে Arduino IDE ব্যবহার করে ESP0.96 সহ 1306 ইঞ্চি SSD32 OLED ডিসপ্লে ব্যবহার করতে হয়।
০.৯৬ ইঞ্চি OLED ডিসপ্লে পেশ করা হচ্ছে
দ OLED ডিসপ্লে এই টিউটোরিয়ালে আমরা যেটি ব্যবহার করব তা হল SSD1306 মডেল: একটি একরঙা, 0.96 ইঞ্চি ডিসপ্লে যার রেজোলিউশন 128×64 পিক্সেল, যেমনটি নিম্নলিখিত চিত্রে দেখানো হয়েছে।OLED ডিসপ্লেতে ব্যাকলাইটের প্রয়োজন হয় না, যার ফলে অন্ধকার পরিবেশে খুব সুন্দর কন্ট্রাস্ট তৈরি হয়। এছাড়াও, এর পিক্সেলগুলি কেবল তখনই শক্তি খরচ করে যখন তারা চালু থাকে, তাই OLED ডিসপ্লে অন্যান্য ডিসপ্লের তুলনায় কম শক্তি খরচ করে।
যেহেতু OLED ডিসপ্লে I2C যোগাযোগ প্রোটোকল ব্যবহার করে, তাই তারের সংযোগ খুবই সহজ। আপনি নিম্নলিখিত টেবিলটি রেফারেন্স হিসাবে ব্যবহার করতে পারেন।
OLED পিন | ESP32 |
ভিন | 3.3V |
জিএনডি | জিএনডি |
SCL | GPIO 22 |
এসডিএ | GPIO 21 |
পরিকল্পিতSSD1306 OLED লাইব্রেরি ইনস্টল করা হচ্ছে – ESP32
ESP32 দিয়ে OLED ডিসপ্লে নিয়ন্ত্রণ করার জন্য বেশ কয়েকটি লাইব্রেরি উপলব্ধ।
এই টিউটোরিয়ালে আমরা দুটি অ্যাডাফ্রুট লাইব্রেরি ব্যবহার করব: Adafruit_SSD1306 লাইব্রেরি এবং Adafruit_GFX লাইব্রেরি.
ঐ লাইব্রেরিগুলি ইনস্টল করার জন্য পরবর্তী পদক্ষেপগুলি অনুসরণ করুন।
- আপনার Arduino IDE খুলুন এবং Sketch > Include Library > Manage Libraries এ যান। Library Manager খুলবে।
- সার্চ বক্সে “SSD1306” টাইপ করুন এবং Adafruit থেকে SSD1306 লাইব্রেরিটি ইনস্টল করুন।
- Adafruit থেকে SSD1306 লাইব্রেরি ইনস্টল করার পর, অনুসন্ধান বাক্সে "GFX" টাইপ করুন এবং লাইব্রেরিটি ইনস্টল করুন।
- লাইব্রেরি ইনস্টল করার পরে, আপনার Arduino IDE পুনরায় চালু করুন।
কোড
প্রয়োজনীয় লাইব্রেরি ইনস্টল করার পরে, Arduino IDE কোডে Project_10_ESP32_OLED_Display.ino খুলুন।
আমরা Arduino IDE ব্যবহার করে ESP32 প্রোগ্রাম করব, তাই এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনার ESP32 অ্যাড-অন ইনস্টল করা আছে: (যদি আপনি ইতিমধ্যেই এই ধাপটি সম্পন্ন করে থাকেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন।)
Arduino IDE তে ESP32 অ্যাড-অন ইনস্টল করাকোড কিভাবে কাজ করে
লাইব্রেরি আমদানি করা হচ্ছে
প্রথমে, আপনাকে প্রয়োজনীয় লাইব্রেরিগুলি আমদানি করতে হবে। I2C ব্যবহার করার জন্য ওয়্যার লাইব্রেরি এবং ডিসপ্লেতে লেখার জন্য অ্যাডাফ্রুট লাইব্রেরি: অ্যাডাফ্রুট_জিএফএক্স এবং অ্যাডাফ্রুট_এসএসডি1306।OLED ডিসপ্লে আরম্ভ করুন
তারপর, আপনি আপনার OLED প্রস্থ এবং উচ্চতা নির্ধারণ করুন। এই উদাহরণেampআচ্ছা, আমরা একটি ১২৮×৬৪ OLED ডিসপ্লে ব্যবহার করছি। যদি আপনি অন্য আকার ব্যবহার করেন, তাহলে আপনি SCREEN_WIDTH এবং SCREEN_HEIGHT ভেরিয়েবলে এটি পরিবর্তন করতে পারেন।তারপর, I2C কমিউনিকেশন প্রোটোকল (&Wire) ব্যবহার করে পূর্বে সংজ্ঞায়িত প্রস্থ এবং উচ্চতা সহ একটি ডিসপ্লে অবজেক্ট ইনিশিয়ালাইজ করুন।
(-1) প্যারামিটারের অর্থ হল আপনার OLED ডিসপ্লেতে RESET পিন নেই। যদি আপনার OLED ডিসপ্লেতে RESET পিন থাকে, তাহলে এটি একটি GPIO এর সাথে সংযুক্ত থাকা উচিত। সেক্ষেত্রে, আপনার GPIO নম্বরটি একটি প্যারামিটার হিসেবে পাস করা উচিত।
সেটআপ() এ, ডিবাগিংয়ের উদ্দেশ্যে ১১৫২০০ এর বাউড রাউটে সিরিয়াল মনিটরটি ইনিশিয়ালাইজ করুন।begin() পদ্ধতি ব্যবহার করে OLED ডিসপ্লেটি শুরু করুন নিম্নরূপ:
এই স্নিপেটটি সিরিয়াল মনিটরে একটি বার্তাও প্রিন্ট করে, যদি আমরা ডিসপ্লের সাথে সংযোগ করতে না পারি।
যদি আপনি অন্য কোন OLED ডিসপ্লে ব্যবহার করেন, তাহলে আপনাকে OLED ঠিকানা পরিবর্তন করতে হতে পারে। আমাদের ক্ষেত্রে, ঠিকানাটি হল 0x3C।
ডিসপ্লেটি শুরু করার পর, দুই সেকেন্ডের বিলম্ব যোগ করুন, যাতে OLED লেখার আগে শুরু করার জন্য পর্যাপ্ত সময় পায়:
ডিসপ্লে পরিষ্কার করুন, ফন্টের আকার, রঙ সেট করুন এবং টেক্সট লিখুন
ডিসপ্লে শুরু করার পর, clearDisplay() পদ্ধতি ব্যবহার করে ডিসপ্লে বাফারটি সাফ করুন:
লেখা লেখার আগে, আপনাকে লেখার আকার, রঙ এবং OLED তে লেখাটি কোথায় প্রদর্শিত হবে তা নির্ধারণ করতে হবে।
setTextSize() পদ্ধতি ব্যবহার করে ফন্টের আকার নির্ধারণ করুন:setTextColor() পদ্ধতি ব্যবহার করে ফন্টের রঙ সেট করুন:
WHITE সাদা ফন্ট এবং কালো পটভূমি সেট করে।
setCursor(x,y) পদ্ধতি ব্যবহার করে টেক্সটটি যে অবস্থান থেকে শুরু হবে তা নির্ধারণ করুন। এই ক্ষেত্রে, আমরা টেক্সটটি (0,0) স্থানাঙ্ক থেকে শুরু করার জন্য সেট করছি - উপরের বাম কোণে।অবশেষে, আপনি println() পদ্ধতি ব্যবহার করে ডিসপ্লেতে টেক্সট পাঠাতে পারেন, নিম্নরূপ
তারপর, স্ক্রিনে টেক্সটটি প্রদর্শনের জন্য আপনাকে display() পদ্ধতিটি কল করতে হবে।
অ্যাডাফ্রুট OLED লাইব্রেরি সহজেই টেক্সট স্ক্রোল করার জন্য দরকারী পদ্ধতি প্রদান করে।
- startscrollright(0x00, 0x0F): বাম থেকে ডানে টেক্সট স্ক্রোল করুন
- startscrollleft(0x00, 0x0F): ডান থেকে বামে টেক্সট স্ক্রোল করুন
- startscrolldiagright(0x00, 0x07): নীচের বাম কোণ থেকে ডানে উপরের কোণে টেক্সট স্ক্রোল করুন startscrolldiagleft(0x00, 0x07): নীচের ডান কোণ থেকে উপরের বাম কোণে টেক্সট স্ক্রোল করুন
কোডটি আপলোড করুন
এখন, আপনার ESP32 এ কোডটি আপলোড করুন। কোড রেফারেন্স ধাপগুলি আপলোড করুন।
কোডটি আপলোড করার পর, OLED স্ক্রোলিং টেক্সট প্রদর্শন করবে।
দলিল/সম্পদ
![]() |
LAFVIN ESP32 বেসিক স্টার্টার কিট [পিডিএফ] নির্দেশিকা ম্যানুয়াল ESP32 বেসিক স্টার্টার কিট, ESP32, বেসিক স্টার্টার কিট, স্টার্টার কিট |