Smart Home এখন আর শুধু Luxury এর মধ্যে সীমাবদ্ধ নয়—এটা এখন তোমার জন্য Convenience, Safety আর Energy Efficiency নিশ্চিত করার অন্যতম উপায়। আর IoT Modules দিন দিন যত ছোট আর Powerful হচ্ছে, Automation তোমার ঘরে আনা এখন অনেক সহজ।
আজকের এই টিউটোরিয়ালে আমরা আলোচনা করবো ESP8266 ভিত্তিক 4-Channel Relay Module নিয়ে। এটি একটি Compact All-in-One Module, যেখানে একই বোর্ডে রয়েছে AC/DC Power Supply, চারটি Relay, আর Built-in WiFi Connectivity।

Traditional DIY Relay Circuits-এ যেখানে প্রতিটি Connection আলাদা আলাদাভাবে করতে হয়, সেখানে এই Module দিচ্ছে একদম Plug & Play Home Automation Solution। শুধু একটি বোর্ড ব্যবহার করেই তুমি চারটি আলাদা Device—যেমন Light, Fan, Charger কিংবা অন্য Household Appliances—WiFi এর মাধ্যমে সরাসরি তোমার Smartphone থেকে Control করতে পারবে।
Onboard থাকা ESP8266 নিশ্চিত করে Stable Wireless Communication, আর Integrated AC/DC System এর কারণে আলাদা Converter ছাড়াই সহজে এবং নিরাপদে Module-টি Power দেওয়া যায়।
এই ব্লগে আমরা ধাপে ধাপে দেখবো—এই Module আসলে কিভাবে কাজ করে, কিভাবে Connect করতে হবে, কিভাবে Program Upload করতে হয়। ব্লগের শেষে গিয়ে তুমি পরিষ্কারভাবে বুঝতে পারবে কিভাবে একটি ছোট্ট Compact Board তোমার ঘরকে একদম Smart IoT-Enabled Living Space এ রূপান্তরিত করতে পারে।
Get Started
প্রোজেক্টটি শুরু করার আগে কিছু প্রাথমিক প্রস্তুতি দরকার, যাতে করে তোমার Development Time এ কোনো ঝামেলায় না পড়তে হয়। এই রিকেরমেন্টসগুলো ফুলফিল করে নিলেই তুমি Smoothly প্রোজেক্টটি Go Through করতে পারবে।
Requirements
- কম্পোনেন্ট কালেকশন
- আরডুইনো IDE ইন্সটল
- Adding ESP8266 Board to Arduino IDE
- Connecting Serial Converter to the Board
কম্পোনেন্ট কালেকশন:
প্রোজেক্টটি শুরু করতে প্রয়োজনীয় কম্পোনেন্টের তালিকা নিচের Component List নামক টেবিলে Purchase Link সহ সংযোজন করা হলো। (যদি আগে থেকেই তোমার সংগ্রহে কম্পোনেন্টগুলো থেকে থাকে, তাহলে তুমি এই অংশটি Skip করতে পারো।)
Component List:
Arduino IDE Install:
যদি তোমার কম্পিউটারে আগে থেকেই Arduino IDE ইনস্টল করা থাকে, তবে এই রিকেরমেন্টসটি সহজেই Skip করতে পারো। আর যদি না থাকে সেক্ষেত্রে এই টিউটোরিয়্যালটি ফলো করে Arduino IDE তোমার কম্পিউটারে Install করে নিতে পারো।

Adding ESP8266 Board to Arduino IDE:
এই স্টেপটি Complete করতে এই টিউটোরিয়্যালটি ফলো করতে পারো। ১-২ মিনিটেই ESP8266 Board টি তোমার IDE তে ইন্সটল হয়ে যাবে। আর যদি আগে থেকেই করা থাকে তাহলে পরের স্টেপে চলে যাও।

Connecting Serial Converter to the Board
বোর্ডটিতে প্রোগ্রাম আপলোড করতে আমরা অনেক বেশি কনফিউড থাকি, কিন্তু কনফিউশনের কিছু নেই। মাইক্রোকন্ট্রোলারের সাথে আমাদের কম্পিউটার সিরিয়াল ইন্টারফেসের মাধ্যমে যোগাযোগ করে। তাই একটি USB to Serial Converter দিয়ে মাইক্রোকন্ট্রোলারে প্রোগ্রাম আপলোড করতে হবে। তাই নিচের ডায়াগ্রাম অথবা টেবিল অনুযায়ী সিরিয়াল কনভার্টার আর ESP8266 4 Channel Relay Module এর সাথে কানেকশনগুলো দিয়ে নাও!

এইখানে TX, RX পিনগুলো ডাটা ট্রান্সফারের কাজে লাগে। আর DTR এবং RST কাজ করে প্রোগ্রাম আপলোডের সময় মাইক্রোকন্ট্রোলারকে Auto Reset করে বুডলোডার মোডে নেয়ার জন্য। যদি ESP ভিত্তিক মাইক্রোকন্ট্রোলারে Auto Reset Circuit সম্পর্কে জানতে চাও সেক্ষেত্রে এই টিউটোরিয়্যালটি পড়তে পারো।
CODE
প্রথমে তোমার Serial Converter টি পিসির USB Port এ কানেক্ট করো। এরপর কোডের ভেতরে নিজের WiFi SSID এবং Password দিয়ে Credentials আপডেট করে নাও। সব ঠিক থাকলে এখন Board হিসেবে Generic ESP8266 Module এবং সঠিক COM Port সিলেক্ট করে নিচের কোডটি Upload করে ফেলো।
/*
=============================================================
Project : ESP12F (ESP8266) 4-Channel Relay Web Controller
Board : ESP12F / NodeMCU / ESP8266-based Module
Function : Control 4 relays via WiFi using a simple web server
Developer: Mahbub Morshed Rifat
Department: TechShopBD R&D Department
Date : January 2026
=============================================================
Description:
---------------------------------------
This firmware creates a local web server hosted on the ESP8266
which allows controlling 4 relays through an HTML-based interface.
Each relay can be turned ON or OFF through individual buttons
on a simple web page.
Hardware Notes:
- Active LOW Relay Module (logic LOW = Relay ON)
- WiFi credentials must be updated before uploading
- Suitable for home automation or IoT control systems
Pin Mapping (GPIO -> Relay):
---------------------------------------
Relay 1 → GPIO16
Relay 2 → GPIO14
Relay 3 → GPIO12
Relay 4 → GPIO13
=============================================================
*/
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
/// ==========================
/// WiFi Configuration Section
/// ==========================
const char* ssid = "Your_WiFi_SSID"; // Replace with your WiFi SSID
const char* password = "Your_PASSWORD"; // Replace with your WiFi Password
/// ==========================
/// Static IP Configuration
/// ==========================
IPAddress local_IP(192, 168, 3, 150); // Desired Static IP
IPAddress gateway(192, 168, 3, 1); // Router IP
IPAddress subnet(255, 255, 255, 0); // Subnet Mask
IPAddress primaryDNS(8, 8, 8, 8); // Optional
IPAddress secondaryDNS(8, 8, 4, 4); // Optional
/// ==========================
/// Relay Pin Configuration
/// ==========================
#define RELAY1 16 // GPIO16 -> Relay 1
#define RELAY2 14 // GPIO14 -> Relay 2
#define RELAY3 12 // GPIO12 -> Relay 3
#define RELAY4 13 // GPIO13 -> Relay 4
/// ==========================
/// Web Server Initialization
/// ==========================
ESP8266WebServer server(80); // Create a web server object on port 80
/// ==========================
/// Web Page Handler
/// ==========================
void handleRoot() {
String html = "<h1>ESP12F Relay Control</h1>";
html += "<p><a href=\"/relay1/on\"><button>Relay 1 ON</button></a> ";
html += "<a href=\"/relay1/off\"><button>Relay 1 OFF</button></a></p>";
html += "<p><a href=\"/relay2/on\"><button>Relay 2 ON</button></a> ";
html += "<a href=\"/relay2/off\"><button>Relay 2 OFF</button></a></p>";
html += "<p><a href=\"/relay3/on\"><button>Relay 3 ON</button></a> ";
html += "<a href=\"/relay3/off\"><button>Relay 3 OFF</button></a></p>";
html += "<p><a href=\"/relay4/on\"><button>Relay 4 ON</button></a> ";
html += "<a href=\"/relay4/off\"><button>Relay 4 OFF</button></a></p>";
server.send(200, "text/html", html);
}
/// ==========================
/// Setup Function
/// ==========================
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("========== ESP12F Relay Control ==========");
// Configure relay pins as outputs
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
// Initialize all relays to OFF (Active LOW relay means HIGH = OFF)
digitalWrite(RELAY1, HIGH);
digitalWrite(RELAY2, HIGH);
digitalWrite(RELAY3, HIGH);
digitalWrite(RELAY4, HIGH);
// ==========================
// WiFi Connection
// ==========================
Serial.printf("Connecting to WiFi: %s", ssid);
// Set Static IP
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("Static IP configuration failed!");
}
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected Successfully!");
Serial.println("IP Address: " + WiFi.localIP().toString());
// ==========================
// Define Web Routes
// ==========================
// Root Page
server.on("/", handleRoot);
// Relay 1 Routes
server.on("/relay1/on", []() {
digitalWrite(RELAY1, LOW); // Turn ON Relay 1
server.sendHeader("Location", "/");
server.send(303);
});
server.on("/relay1/off", []() {
digitalWrite(RELAY1, HIGH); // Turn OFF Relay 1
server.sendHeader("Location", "/");
server.send(303);
});
// Relay 2 Routes
server.on("/relay2/on", []() {
digitalWrite(RELAY2, LOW);
server.sendHeader("Location", "/");
server.send(303);
});
server.on("/relay2/off", []() {
digitalWrite(RELAY2, HIGH);
server.sendHeader("Location", "/");
server.send(303);
});
// Relay 3 Routes
server.on("/relay3/on", []() {
digitalWrite(RELAY3, LOW);
server.sendHeader("Location", "/");
server.send(303);
});
server.on("/relay3/off", []() {
digitalWrite(RELAY3, HIGH);
server.sendHeader("Location", "/");
server.send(303);
});
// Relay 4 Routes
server.on("/relay4/on", []() {
digitalWrite(RELAY4, LOW);
server.sendHeader("Location", "/");
server.send(303);
});
server.on("/relay4/off", []() {
digitalWrite(RELAY4, HIGH);
server.sendHeader("Location", "/");
server.send(303);
});
// Start HTTP Server
server.begin();
Serial.println("HTTP Server started successfully!");
Serial.println("=========================================");
}
/// ==========================
/// Main Loop Function
/// ==========================
void loop() {
server.handleClient(); // Continuously handle incoming client requests
}
কোডটি সফলভাবে আপলোড সম্পন্ন হলে, এখন ব্রাউজার ওপেন করে http://192.168.3.150/ এই অ্যাড্রেসে প্রবেশ করো। সেখানে একটি Relay Control Dashboard ওপেন হবে। এই ড্যাশবোর্ড থেকেই খুব সহজে এক ক্লিকেই প্রতিটি Relay ON/OFF করে লোড কন্ট্রোল করা যাবে।

Output
এখন নিচের সার্কিট ডায়াগ্রামটি ভালোভাবে দেখে, তোমার কাঙ্ক্ষিত লোডের সাথে মডিউলের প্রয়োজনীয় সংযোগগুলো সম্পন্ন করো। চাইলে এই মডিউলটি সরাসরি একটি সুইচ বোর্ডের ভেতরেও ইনস্টল করতে পারো।

এই বোর্ডের একটি বড় সুবিধা হলো এর on-board Power Management System। ফলে আলাদা করে কোনো DC অ্যাডাপ্টার বা অতিরিক্ত পাওয়ার সার্কিটের প্রয়োজন হয় না। শুধু AC 220V ইনপুট কানেক্ট করলেই ESP8266 ভিত্তিক পুরো IoT বোর্ডটি স্বয়ংক্রিয়ভাবে পাওয়ার আপ হয়ে যায়।
⚠ বিশেষ সতর্কতা: যদি AC 220 ভোল্ট নিয়ে কাজ করার পূর্ব অভিজ্ঞতা না থাকে, তাহলে নিজে থেকে এই ধরনের সার্কিটে কাজ না করার জন্য দৃঢ়ভাবে পরামর্শ দেওয়া হচ্ছে। এই পর্যায়ে একজন অভিজ্ঞ বা এক্সপার্ট টেকনিশিয়ানের সরাসরি তত্ত্বাবধানে কাজ করা অথবা তাঁর সহায়তা নেওয়াই সর্বোত্তম ও নিরাপদ সিদ্ধান্ত হবে।
এখন চাইলেই তোমার বাসার লোডগুলোকে http://192.168.3.150/ এই এড্রেস থেকে সহজেই ON কিংবা OFF করতে পারবে।

