স্মার্ট হোম with ESP8266 NodeMCU V2 & Blynk

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

ইন্টারনেট অফ থিংস (IoT) ব্যবহারের মাধ্যমে পৃথিবীর যে কোন প্রান্ত থেকেই আপনি সব ধরণের ইলেকট্রিক্যাল অ্যাপ্লায়েন্স সহজেই নিয়ন্ত্রণ করতে পারবেন। আর এই কাজের জন্য দামে সস্তা, শক্তিশালী প্রসেসর, এবং বিল্ট-ইন Wi-Fi সুবিধার কারণে ESP8266 NodeMCU V2 এখন খুবই জনপ্রিয় হয়ে উঠেছে। 

তবে ডিভাইস নিয়ন্ত্রণের জন্য Web Page বা Mobile App তো প্রয়োজনই হবে। কিন্তু আমরা যারা Website / App Development জানি না, তাদের জন্য Blynk IoT একটি সুখবর হতে পারে। মূলত এই প্ল্যাটফর্মটি সম্পূর্ণ ফ্রিতে Cloud Service দিয়ে থাকে। ফলে Website/App নিয়ে আমাদের একদমই চিন্তা করতে হবে না।

এই টিউটোরিয়্যালে আমরা Blynk IoT Platform ব্যবহার করে একটি স্মার্ট হোম অটোমেশন সিস্টেম তৈরি করতে যাচ্ছি। যা ব্যবহার করে যে কোন দূরত্ব থেকেই আমরা আমাদের বাসার বিভিন্ন ধরণের ইলেকট্রনিক ডিভাইস যেমনঃ লাইট, ফ্যান ইত্যাদি নিয়ন্ত্রণ করতে পারবো। 

(স্কুল/কলেজ/বিশ্ববিদ্যালয় পড়ুয়া শিক্ষার্থীরা তোমরা এখান থেকে সায়েন্স-ফেয়ার বা প্রোজেক্ট-সাবমিশনের জন্য আইডিয়া নিতে পারো।) 

কম্পোনেন্ট লিস্ট

প্রোজেক্টটি তৈরি করতে যেসব কম্পোনেন্ট প্রয়োজন হবে, তার নাম, পরিমাণ এবং Purhcase লিংক নিচে দেওয়া হলো।

কম্পোনেন্টের নাম পরিমান
NodeMCU ESP8266 V2
1
Relay Module 4 Channel 5V
1
Breadboard
1
Male to Male Jumper Wire
6

সার্কিট ডায়াগ্রাম 

এ পর্যায়ে আমরা নিচের ডায়াগ্রামটি অনুসরণ করে NodeMCU ESP8266 V2,  Relay এবং কাঙ্খিত লোডের মধ্যে প্রয়োজনীয় বৈদ্যুতিক সংযোগ গুলো দিয়ে নেব। 

home-automation-with-esp8266-circuit-diagram

বিশেষ সতর্কতাঃ AC 220V সংযোগের ক্ষেত্রে অবশ্যই এবং অবশ্যই অভিজ্ঞ ব্যক্তির সহযোগিতা নিন।

আরডুইনো IDE তে ESP8266 বোর্ড ইন্সটল 

যেহেতু NodeMCU ESP8266 V2 তে SoC হিসেবে ESP8266 সিরিজের মাইক্রোকন্ট্রোলার ব্যবহার করা হয়েছে, তাই প্রোগ্রাম করতে ESP8266 বোর্ডটি Arduino IDE তে ইন্সটল করে নিতে হবে। (Arduino IDE তে কিভাবে ESP8266 বোর্ড ইন্সটল করতে হয়, বিষয়ভিত্তিক পূর্বের টিউটরিয়্যালটি দেখতে এই লিংকে ক্লিক করুন।)

লাইব্রেরী ইন্সটল

Arduino IDE ওপেন করে Sketch মেনু থেকে Include Library → Manage Libraries অপশনটি ক্লিক করুন। এখন “Blynk” লিখে সার্চ করুন এবং Blynk by Volodymyr Shymanskyy লাইব্রেরিটি Install করুন।

Blynk কনফিগারেশন 

Blynk IoT Platform ওয়েবসাইটে ভিজিট করে Get Started বাটনটি ক্লিক করুন।

এখন Sign Up বাটনে ক্লিক করে প্রয়োজনীয় তথ্য দিয়ে নতুন একটি Account তৈরি করে নিতে হবে। অতঃপর Log In বাটনে ক্লিক করে লগইন করলে, ছবির মতো একটি Dashboard দেখা যাবে।

এখন “+ New Template” বাটনে ক্লিক করলে একটি নতুন Interface দেখতে পাবেন।

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

Name: Relay Project
Device: ESP8266
Connection Type: WiFi

ইত্যাদি তথ্য দিয়ে Done বাটনটি ক্লিক করুন।

ফলে Relay Project নামে একটি 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 Hover করলে একটি 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 প্লাটফর্মের কনফিগারেশন সম্পন্ন হলো। এখন আমাদের পরবর্তী সকল কাজ হবে কোডিং সেকশনে।

কোডিং

নিচের কোডটি কপি করে 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 বাটনে ক্লিক করার মাধ্যমে কোডটি সফলভাবে NodeMCU ESP8266 V2 বোর্ডে আপলোড করে নিন। সাথে সাথেই আমাদের ডিভাইস Blynk IoT Platform-এ অনলাইন হয়ে যাবে এবং বাটন গুলো ক্লিক করার মাধ্যমে লাইট, ফ্যান ইত্যাদি কন্ট্রোল করা যাবে। 

ইন্টারনেট সংযোগ চালু থাকলে যে কোন প্রান্ত থেকে এবং যে কোন ডিভাইস ব্যবহার করে Blynk ওয়েবসাইট বা অ্যাপের মাধ্যমে Relay Switch গুলো নিয়ন্ত্রণ করা সম্ভব হবে।

Mahbub Morshed Rifat
Mahbub Morshed Rifat

Engineer
TechShop Bangladesh

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.