“মাইক্রোকন্ট্রোলারের আদ্যোপান্ত” সিরিজের আগের কয়েকটি টিউটোরিয়ালে আমরা ইতিমধ্যে ESP32-এর হার্ডওয়্যার থেকে শুরু করে কোডিং পর্যন্ত নানা বিষয় শিখেছি। আজকে তোমার দীর্ঘ অপেক্ষার অবসান হতে যাচ্ছে! কারণ, তোমাদেরকে শিখাবো কিভাবে ESP32 তে কোড করে একটি LED-কে Blink করানো যায়। ব্যাপারটা বেশ এক্সাইটিং, তাই না? তাহলে আর দেরি না করে, চলো শুরু করা যাক আমাদের প্রথম Real-Life প্রোজেক্টের Implementation!

প্রয়োজনীয় সরঞ্জাম
প্রোজেক্টটি তৈরি করার আগে আমাদের কিছু প্রয়োজনীয় সরঞ্জাম সংগ্রহ করতে হবে। নিচে একটি Component List শেয়ার করা হলো, যেখানে প্রতিটি কম্পোনেন্টের লিংকও দেওয়া রয়েছে। তুমি চাইলে এই লিংক থেকে সরাসরি কিনতে পারো, অথবা নিজের মতো করে সংগ্রহ করতে পারো!

কম্পোনেন্ট List-
| কম্পোনেন্টের নাম | পরিমান |
|---|---|
| Breadboard | 1 |
| ESP32 Development Board DEVKIT V1 | 1 |
| Red LED | 1 |
| 47 Ohm 1/4W Resistor | 1 |
| Male to Male Jumper Wire | 2 |
সার্কিট ডায়াগ্রাম
নিচের ডায়াগ্রামটি দেখে সুন্দর করে প্রোজেক্টের কানেকশনগুলো দেও-

উপরে ডায়াগ্রাম অনুযায়ী LED-এর নেগেটিভ প্রান্ত মাইক্রোকন্ট্রোলারের GND পিনের সাথে সংযুক্ত করতে হবে, আর পজিটিভ প্রান্ত 47Ω রেজিস্টরের মাধ্যমে D4 পিনের সাথে সংযোগ করতে হবে।
D4 পিন ব্যবহার করার কারণ হলো, এই পিনের মাধ্যমে মাইক্রোকন্ট্রোলার HIGH (3.3V) এবং LOW (0V) সিগনাল পাঠিয়ে LED ON ও OFF অর্থাৎ ব্লিংক করতে পারবে।
Espressif IDE ইন্সটল
প্রোগ্রামিং-এ যাওয়ার আগে একটি বিষয় নিশ্চিত হওয়া দরকার—আমি এর আগের টিউটোরিয়ালে Espressif IDE ইন্সটল করার সম্পূর্ণ গাইডলাইন দিয়েছি। যদি তুমি সেই গাইডলাইন অনুসরণ করে তোমার কম্পিউটারে Espressif IDE ইন্সটল করে থাকো, তবে দারুণ! আর যদি এখনো ইন্সটল না করে থাকো, তাহলে আমার আগের টিউটোরিয়ালটি দেখে ধাপে ধাপে IDE ইন্সটল করে নাও।

কোডিং এবং আলোচনা
এখন আমরা ESP32 দিয়ে LED ১ সেকেন্ড পরপর ON এবং OFF করিয়ে ব্লিংক করাবে। তার আগে তোমার ESP32-কে কম্পিউটারের সাথে USB দিয়ে কানেক্ট করে নিতে হবে। তারপর Espressif IDE-তে একটি নতুন প্রোজেক্ট তৈরি করতে হবে এবং main.c ফাইলে কোড লিখতে হবে।

নিচে ESP32 এর জন্য Blink LED প্রোগ্রামের কোড দেওয়া হলো, সাথে প্রতিটি লাইনের ব্যাখ্যাও করা হয়েছে। সবচেয়ে ভালো হবে যদি তুমি প্রথমে কোডটি ভালোভাবে পড়ে বোঝার চেষ্টা করো, তারপর নিজে লেখার চেষ্টা করো। যদি না বুঝে শুধু কপি-পেস্ট করেই কাজ চালিয়ে যাও, তাহলে সামনে আরও জটিল প্রোজেক্ট করতে গিয়ে সমস্যায় পড়তে পারো।

প্রোগ্রামিংয়ের বেসিক যত বেশি শক্তিশালী করতে পারবে, ততই তোমার জন্য কাস্টমাইজড ডেভেলপমেন্ট সহজ হয়ে যাবে। শুরু থেকেই প্রতিটি ধাপে ধাপে ভালোভাবে শিখে নাও, কারণ স্ট্রং Basic-ই ভবিষ্যতে জটিল প্রোজেক্ট তৈরি করতে তোমাকে দক্ষ করে তুলবে।
#include <driver/gpio.h>
#include <unistd.h>
#define LED_PIN GPIO_NUM_4
void app_main(void)
{
gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
while(1)
{
gpio_set_level(LED_PIN, 1);
sleep(1);
gpio_set_level(LED_PIN, 0);
sleep(1);
}
}
কোডের বিশ্লেষণ
প্রথমেই, তোমাকে প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করতে হবে। #include <driver/gpio.h> লাইব্রেরিটি GPIO কন্ট্রোলের জন্য এবং #include <unistd.h> Delay যোগ করতে sleep() ফাংশনের জন্য ব্যবহার করা হবে। এরপর, #define LED_PIN GPIO_NUM_4 দিয়ে GPIO4 পিনকে LED_PIN নামে ডিফাইন করা হয়েছে, যাতে এটি কোডে বারবার ব্যবহার করা যায়।
ESP32 চালু হওয়ার পর app_main() ফাংশনটি স্বয়ংক্রিয়ভাবে কাজ শুরু করবে। প্রথমেই, gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT); ব্যবহার করে GPIO4 পিনকে Output মোডে সেট করো, যাতে এটি LED-এর মতো ডিভাইস নিয়ন্ত্রণ করতে পারে। এরপর আমরা while(1) ইনফিনিটি লুপ ব্যবহার করব যাতে বারবার LED অন এবং অফ হতে থাকে।

তাই, while(1) লুপের মধ্যে gpio_set_level(LED_PIN, 1); দিয়ে LED চালু করো, তারপর sleep(1); ব্যবহার করে এক সেকেন্ড অপেক্ষা করো। এরপর gpio_set_level(LED_PIN, 0); দিয়ে LED বন্ধ করে আবার sleep(1); দিয়ে এক সেকেন্ড অপেক্ষা করো। এই প্রক্রিয়াটি অবিরত চলতে থাকবে, কারণ এটি একটি ইনফিনিটি লুপের মধ্যে রয়েছে। ফলে LED প্রতি ১ সেকেন্ড পরপর অন এবং অফ হবে।
এখন Espressif IDE থেকে সঠিক COM Port সিলেক্ট করো!

তারপর পুরো কোডটি Build করে Run করার মাধ্যমে ESP32 তে Upload করো!!

Upload হয়ে গেলে দেখবে ESP32-এর D4 পিনে কানেক্ট করা LED ১ সেকেন্ড পর পর ব্লিংক করছে।

ESP32-তে GPIO কন্ট্রোল শেখার জন্য এটি তোমার প্রথম কিন্তু গুরুত্বপূর্ণ প্রোগ্রাম, যা IoT, Embedded Systems, এবং Home Automation-এর মতো অনেক প্রজেক্টের ভিত্তি তৈরি করবে। সুতরাং, সময় নষ্ট না করে এখনই প্রোজেক্টটি বানিয়ে ফেলো।
