কেমন হতো যদি দূরে বসে এক ট্যাপেই ঘরের লাইট বা ফ্যান অন করে ফেলা যেতো? শুনতে ভবিষ্যতের মতো লাগলেও, IoT System Development এর জন্য খুব সহজেই বাস্তবায়ন করা সম্ভব। Internet of Things (IoT) আমাদের দৈনন্দিন কাজকে অবিশ্বাস্যভাবে সহজ করে দিচ্ছে।
ESP8266 NodeMCU V2 ডেভেলপমেন্ট বোর্ড তার শক্তিশালী প্রসেসিং পাওয়ার, WiFi support এবং easy programming environment এর কারণে IoT ডেভেলপমেন্টে অত্যান্ত জনপ্রিয় হয়ে উঠেছে।

তাই, আজকের টিউটোরিয়্যালে দেখাবো কীভাবে NodeMCU ESP8266 V2 এবং Blynk IoT Platform ব্যবহার করে একটি IoT ভিত্তিক স্মার্ট হোম অটোমেশন সিস্টেম তৈরি করা যায়।
ধারণাটা খুব সোজা — ঘরের বিভিন্ন ইলেকট্রনিক ডিভাইসকে Internet-এর মাধ্যমে কন্ট্রোল করা।
অর্থাৎ, আপনি সোফায় আরাম করে বসে থাকুন বা শহরের বাইরে ভ্রমণে, যেকোনো জায়গা থেকে কন্ট্রোল করতে পারবেন।
কম্পোনেন্ট লিস্ট
প্রোজেক্টটি শুরু করার জন্য প্রয়োজনীয় সব কম্পোনেন্টগুলো নিচের Component List টেবিলে Purchase Link সহ দেওয়া হলো।
যাদের কাছে আগে থেকেই এসব কম্পোনেন্ট রয়েছে, তারা চাইলে এই সেকশনটি Skip করতে পারি।
| কম্পোনেন্টের নাম | পরিমান |
|---|---|
| NodeMCU ESP8266 V2 |
1 |
| Relay Module 4 Channel 5V |
1 |
| Breadboard |
1 |
| Male to Male Jumper Wire |
6 |
সার্কিট ডায়াগ্রাম
নিচের ডায়াগ্রামটি অনুসরণ করে NodeMCU ESP8266 V2, Relay এবং কাঙ্খিত লোডের মধ্যে সংযোগ সম্পন্ন করি।

এইখানে একটি বিশেষ সতর্কতা!!! আমাদের বাসার এপ্লাইয়েন্সেসগুলো AC 220V চলে। সেক্ষেত্রে AC কারেন্ট নিয়ে কাজ করার খুব ভালো অভিজ্ঞতা না থাকলে, কোনো এক্সপার্ট লোকের সহযোগীতায় Relay সাথের AC কারেন্ট এর সংযোগ দেয়ার পরামর্শ থাকলো!
আরডুইনো IDE তে ESP8266 বোর্ড ইন্সটল
যেহেতু NodeMCU ESP8266 V2 এর মেইন SoC হিসেবে ESP8266 সিরিজের মাইক্রোকন্ট্রোলার ব্যবহার করা হয়েছে, তাই ESP8266 এর বোর্ডটি Arduino IDE তে ইন্সটল করে নিতে হবে। তাই এ পর্যায়ে ESP8266 বোর্ডটি Arduino IDE তে ইন্সটল করে নিতে হবে।

লাইব্রেরী ইন্সটল
Arduino IDE ওপেন করে Sketch → Include Library → Manage Libraries এ যান। এরপর সার্চ বারে “Blynk” লিখে সার্চ দিন।
তালিকা থেকে Blynk by Volodymyr Shymanskyy লাইব্রেরিটি সিলেক্ট করে Install বাটনে ক্লিক করলেই লাইব্রেরিটি Arduino IDE-তে যুক্ত হয়ে যাবে।
Blynk কনফিগারেশন
প্রজেক্টের প্রথম ধাপ হিসেবে এই লিংকে ক্লিক করে Blynk Platform-এ প্রবেশ করতে হবে। সেখানে গিয়ে Get Started বাটনটি সিলেক্ট করুন।

এরপর স্ক্রিনে দেখানো নির্দেশনা অনুসরণ করে একটি নতুন Account তৈরি করি। Sign Up সম্পন্ন হলে নিচের ছবির মতো একটি Dashboard Interface দেখতে পাবো।

এখন বাম পাশের Side Panel থেকে Developer Zone → My Templates এ প্রবেশ করুন।

সেখানে গিয়ে “+ New Template” বাটনে ক্লিক করলে একটি নতুন Interface ওপেন হবে।

এখানে Name ঘরে Relay Project, Device থেকে ESP8266 এবং Connection Type হিসেবে WiFi সিলেক্ট করে Done প্রেস করুন।

সাথে সাথে একটি Template ক্রিয়েট হয়ে যাবে।

এরপর Sidebar থেকে Datastreams ওপেন করুন।

এখন “+ New Datastream” বাটনে ক্লিক করলে একটি Drop-down Menu আসবে।

সেখান থেকে Virtual Pin অপশনটি সিলেক্ট করুন।

এবার Pop-up Window আসবে। এখানে Name: Relay1, Virtual Pin: V0 এবং ছবির মতো বাকি কনফিগারেশনগুলো ঠিক রেখে Create বাটনে ক্লিক করুন।

একই প্রক্রিয়ায় Relay2, Relay3, Relay4 এর জন্য যথাক্রমে V1, V2, V3 Virtual Pins ব্যবহার করে আরও তিনটি Datastream তৈরি করুন।

এরপর Relay Project এর Sidebar থেকে Web Dashboard ওপেন করতে হবে এবং Widget Box থেকে একটি Switch ড্র্যাগ করে Dashboard-এ স্থাপন করুন।

Switch-এর উপর Cursor নিলে Settings আইকন দেখা যাবে—এটি ক্লিক করলে একটি Pop-up Window আসবে।

সেখানে Datastream Drop-down থেকে তৈরি করা Relay1 (V0) সিলেক্ট করে Save প্রেস করুন।

একইভাবে বাকি তিনটি Switch-ও Relay2, Relay3 এবং Relay4 অনুযায়ী কনফিগার করতে হবে।

সব কিছু ঠিক থাকলে ডান পাশে উপরের Save বাটন ক্লিক করে Dashboard কনফিগারেশনটি সেভ করুন।

এবার মূল Side Panel থেকে Device অপশনে যাই।

“+ New Device” বাটনে ক্লিক করে From Template সিলেক্ট করতে হবে।

তারপর আমাদের তৈরি করা Relay Project Template টি সিলেক্ট করে Create বাটনে প্রেস করুন।

এক মুহূর্তেই চারটি বাটনসহ নতুন Device Interface তৈরি হবে।

ডান পাশের উপরের তিন লাইনের আইকনে ক্লিক করলে প্রয়োজনীয় Configuration Code দেখা যাবে—এটি কপি করে সংরক্ষণ করতে হবে।

এতে করে Blynk IoT প্লাটফর্মের কনফিগারেশন সম্পন্ন হলো। এখন পরবর্তী ফোকাস হবে মূল কোডিং সেকশনে।
কোডিং
প্রথমেই Blynk IoT থেকে পাওয়া কোডটি কপি করে Arduino IDE–এর কোড এডিটরে পেস্ট করতে হবে। এরপর Blynk কনফিগারেশন থেকে কপি করা কোড থেকে BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, এবং Auth Token এবং WiFi Credentials (SSID এবং Password) সেট করতে হবে।
/***************************************************
* Project: 4-Channel Relay Control via Blynk IoT (Active-LOW)
* Board: NodeMCU V2 (ESP8266)
* Author: Mahbub Morshed Rifat
* Description:
* Control 4 active-LOW relays from Blynk IoT app
* using virtual pins V0–V3. Includes reconnection logic.
***************************************************/
// ====== Blynk Template Details (from your Blynk Cloud) ======
//Replace This Three Lines with Your Blynk Cloud
//#define BLYNK_TEMPLATE_ID ""
//#define BLYNK_TEMPLATE_NAME ""
//#define BLYNK_AUTH_TOKEN ""
// ====== Wi-Fi Credentials ======
#define WIFI_SSID "YOUR_SSID"
#define WIFI_PASS "YOUR_WIFI_PASSWORD"
// ====== Relay Configuration ======
#define NUM_RELAYS 4
int relayPins[NUM_RELAYS] = {4, 14, 12, 13}; // D2, D7, D6, D5
#define RELAY_ACTIVE_LOW true // LOW = ON, HIGH = OFF
// ====== Libraries ======
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// ====== Timer for Reconnection ======
BlynkTimer timer;
// ====== Function Prototype ======
void checkConnection();
// ====== Blynk Handler ======
BLYNK_WRITE_DEFAULT()
{
int pin = request.pin; // Virtual pin number (V0–V3)
int value = param.asInt(); // Button value (0 or 1)
if (pin < NUM_RELAYS)
{
int relayState = RELAY_ACTIVE_LOW ? !value : value;
digitalWrite(relayPins[pin], relayState);
Serial.printf("Relay %d -> %s\n", pin + 1, value ? "ON" : "OFF");
}
}
// ====== Setup ======
void setup()
{
Serial.begin(115200);
delay(100);
Serial.println("\n=== Starting Blynk Relay Controller (Active-LOW, NodeMCU V2) ===");
// Initialize relays (start all OFF)
for (int i = 0; i < NUM_RELAYS; i++)
{
pinMode(relayPins[i], OUTPUT);
digitalWrite(relayPins[i], RELAY_ACTIVE_LOW ? HIGH : LOW); // OFF
}
// Connect to Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, WIFI_SSID, WIFI_PASS);
// Check connection every 10 seconds
timer.setInterval(10000L, checkConnection);
}
// ====== Loop ======
void loop()
{
if (Blynk.connected())
{
Blynk.run();
}
timer.run();
}
// ====== Reconnection Logic ======
void checkConnection()
{
if (!Blynk.connected())
{
Serial.println(" Blynk disconnected! Attempting reconnection...");
if (Blynk.connect())
{
Serial.println(" Reconnected to Blynk Cloud!");
}
else
{
Serial.println(" Reconnection failed, retrying...");
}
}
}
সমস্ত সেটিং সঠিকভাবে সম্পন্ন হলে এবার Arduino IDE–তে Board Type হিসেবে NodeMCU 1.0 (ESP-12E Module) সিলেক্ট করে নেই এবং সঠিক COM Port নির্বাচন করি।
সবশেষে Upload বাটনে ক্লিক করি। কোডটি সফলভাবে আপলোড হলেই আমাদের ডিভাইস Blynk IoT Platform-এ অনলাইন হয়ে যাবে এবং বাটনের মাধ্যমে লাইট, ফ্যান কন্ট্রোল করা যাবে।
