ESP8266 WiFi 4 Channel IoT Smart Switch কিভাবে ব্যবহার করবো?

১। প্রোডাক্ট পরিচিতি

ESP8266 WiFi 4 Channel IoT Smart Switch একটি ইন্টারনেট কন্ট্রোল রিলে বোর্ড। অর্থাৎ ব্যবহারকারী ইন্টারনেটের মাধ্যমে এই বোর্ডের সাথে সংযুক্ত রিলে গুলোকে নিয়ন্ত্রণ করতে পারবেন। ESP8266 WiFi 4 Channel IoT Smart Switch এর কারেন্ট রেটিং অনুযায়ী লোড সংযোগ করে Mobile দিয়ে নিয়ন্ত্রণ করতে পারবেন।

Blynk এই App টি ডাউনলোড করে নিতে হবে। অতপর, রেজিস্ট্রেশন করতে হবে। রেজিস্ট্রেশন হলে App এর মধ্যে একটি প্রজেক্ট তৈরি করতে হবে। প্রজেক্ট তৈরি হলে মেইলে একটি authentication Token দেওয়া হবে। এই Token টি প্রোগ্রামের মধ্যে দিয়ে প্রোগ্রামটি NodeNCU তে আপলোড দিতে হবে।

যা যা রয়েছেঃ

  • Supports Wifi Board: ESP8266 NodeMCU Lua WiFi with CP2012
  • DHT11 Temperature and Humidity Sensor (Not Included)
  • AC 220V Supported
  • 4 Independently Controlled Relays
  • Operating Voltage: 5V (From AC 220V / USB 5V)
  • Power Indication: Red LED
  • Relay Output Status: Blue LED CH1, CH2, CH3, CH4
  • Each relay output capacity: 220VAC / 10A
  • Three Terminal Output AC-DC Control (NO COM NC)
  • Single Pole Double Throw Relay Output (SPDT)
  • Relay current consumption at 5V is 72mA each when switched on
  • Back EMF protection
  • Mounting Holes: 2.65 Inch

ধাপ-১ঃ কম্পোনেন্ট সংগ্রহ

প্রয়োজনীয় কম্পোনেন্ট গুলো তালিকা থেকে সংগ্রহ করতে হবে।

প্রয়োজনীয় যন্ত্রপাতি পরিমাণ Link
ESP8266 WiFi 4 Channel IoT Smart Switch ১ টি https://bit.ly/2NXKiDt
Micro USB Cable ১ টি
Power Cable 2 Pin ১ টি https://bit.ly/2Ma0Xlx

ধাপ-২ঃ সার্কিট কানেকশন

Relay NodeMCU
R1 (Relay-1) D5
R2 (Relay-2) D6
R3 (Relay-3) D7
R4 (Relay-4) D8

টেম্পারেচার দেখতে চাইলে DHT11 কানেক্টরের সাথে এই সেন্সর মডিউলটি সংযোগ করতে হবে। সেই অনুপাতে প্রোগ্রাম করতে হবে।

Temperature Sensor NodeMCU
DHT11 D4

ধাপ-৩ঃ প্রোগ্রামিং

ESP8266 WiFi 4 Channel IoT Smart Switch কে দুই ভাবে ব্যবহার করা যাবে।

১। ইন্টারনেটের মাধ্যমে

২। ইন্টারনেট ছাড়া (শুধুমাত্র রাউটারের রেঞ্জ অনুযায়ী)

   ১। ইন্টারনেটের মাধ্যমে নিয়ন্ত্রণ। 

ইন্টারনেটের মাধ্যমে কন্ট্রোল করতে হলে এই  প্রোগ্রামটি ব্যবহার করতে হবে। প্রোগ্রামে তিন যায়গায় পরিবর্তন করতে হবে। token, SSID ও Password এই তিনটি দিয়ে প্রোগ্রাম NodeMCU তে আপলোড করে দিতে হবে। token: Blynk এ রেজিস্ট্রেশন করে প্রজেক্ট তৈরির পর আপনাকে একটি auth token মেইল করে দিবে।  SSID & Password: এটি আপনার রাউটারের নাম ও পাসওয়ার্ড।

একটি বিষয় লক্ষণীয় যে, যদি ইন্টারনেট না থাকে থাহলে এই ডিভাইস কে নিয়ন্ত্রণ করা যাবে না।

How to Install the ESP8266 Board in Arduino IDE

Open the preferences window from the Arduino IDE. Go to File > Preferences

Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into the “Additional Board Manager URLs” field as shown in the figure below. Then, click the “OK” button.

Open Boards manager. Go to Tools > Board > Boards Manager…

Enter esp8266 into the filter your search… field as shown in the figure below. Then, click the “Install” button.

ESP8266 Board Installation Complete. Then, click the “Close” button.

How to Install Blynk Library in Arduino IDE

Open Manage Libraries… Go to Sketch > Include Library > Manage Libraries…

Enter Blynk into the filter your search… field as shown in the figure below. Then, click the “Install” button.

Blynk Library Installation Complete. Then, click the “Close” button.

Download the Adafruit_Sensor & DHT Library.

Adafruit_Sensor  & DHT

Add ZIP Library. Goto Sketch > Include Library > Add .ZIP Library…

Now Select your library file DHT (it should be .ZIP), Then select your Adafruit_Sensor library file

Choose your ESP8266 board from Tools > Board > NodeMCU 1.0 (ESP-12E Module)

Check your Com Port from Device Manager.

Choose your Com Port from Tools > Port > COM3

Now Click the Upload

Done Uploading.

Code for Blynk App

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>

char auth[] = "token";  //Auth Token from Blynk Project
char ssid[] = "SSID";   //Router Name
char pass[] = "Password"; //Router Password

#define DHTPIN 2 // D4-GPIO 02   // What digital pin we're connected to
#define DHTTYPE DHT11     // DHT 11
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
const int relay1 = 14; // D5-GPIO 14
const int relay2 = 12; // D6-GPIO 12
const int relay3 = 13; // D7-GPIO 13
const int relay4 = 15; // D8-GPIO 15
const int button1Pin = 5;  // D1-GPIO 05
const int button2Pin = 4;  // D2-GPIO 04
const int button3Pin = 0;  // D3-GPIO 00
const int button4Pin = 10; // SD3-GPIO 10

int relay1State = LOW;
int relay2State = LOW;
int relay3State = LOW;
int relay4State = LOW;
int button1State = HIGH;
int button2State = HIGH;
int button3State = HIGH;
int button4State = HIGH;

void checkPhysicalButton();
// Every time we connect to the cloud...
BLYNK_CONNECTED() {
  // Request the latest state from the server
  Blynk.syncVirtual(V1);
  Blynk.syncVirtual(V2);
  Blynk.syncVirtual(V3);
  Blynk.syncVirtual(V4);
}

//*********************************************
// When App button is pushed - switch the state
BLYNK_WRITE(V1) {
  relay1State = param.asInt();
  digitalWrite(relay1, relay1State);
}

// When App button is pushed - switch the state
BLYNK_WRITE(V2) {
  relay2State = param.asInt();
  digitalWrite(relay2, relay2State);
}

// When App button is pushed - switch the state
BLYNK_WRITE(V3) {
  relay3State = param.asInt();
  digitalWrite(relay3, relay3State);
}

// When App button is pushed - switch the state
BLYNK_WRITE(V4) {
  relay4State = param.asInt();
  digitalWrite(relay4, relay4State);
}
//*********************************************

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
//button1
  if (digitalRead(button1Pin) == LOW) {
    // btnState is used to avoid sequential toggles
    if (button1State != LOW) {

      // Toggle LED state
      relay1State = !relay1State;
      digitalWrite(relay1, relay1State);

      // Update Button Widget
      Blynk.virtualWrite(V1, relay1State);
    }
    button1State = LOW;
  } else {
    button1State = HIGH;
  }

//button2
if (digitalRead(button2Pin) == LOW) {
    // btnState is used to avoid sequential toggles
    if (button2State != LOW) {

      // Toggle LED state
      relay2State = !relay2State;
      digitalWrite(relay2, relay2State);

      // Update Button Widget
      Blynk.virtualWrite(V2, relay2State);
    }
    button2State = LOW;
  } else {
    button2State = HIGH;
  }

//button3
if (digitalRead(button3Pin) == LOW) {
    // btnState is used to avoid sequential toggles
    if (button3State != LOW) {

      // Toggle LED state
      relay3State = !relay3State;
      digitalWrite(relay3, relay3State);

      // Update Button Widget
      Blynk.virtualWrite(V3, relay3State);
    }
    button3State = LOW;
  } else {
    button3State = HIGH;
  }

//button4
if (digitalRead(button4Pin) == LOW) {
    // btnState is used to avoid sequential toggles
    if (button4State != LOW) {

      // Toggle LED state
      relay4State = !relay4State;
      digitalWrite(relay4, relay4State);

      // Update Button Widget
      Blynk.virtualWrite(V4, relay4State);
    }
    button4State = LOW;
  } else {
    button4State = HIGH;
  } 
}

void setup()
{
  // Debug console
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  pinMode(button1Pin, INPUT_PULLUP);
  pinMode(button2Pin, INPUT_PULLUP);
  pinMode(button3Pin, INPUT_PULLUP);
  pinMode(button4Pin, INPUT_PULLUP);
  digitalWrite(relay1, relay1State);
  digitalWrite(relay2, relay2State);
  digitalWrite(relay3, relay3State);
  digitalWrite(relay4, relay4State);
  dht.begin();
  // Setup a function to be called every 100 ms
  timer.setInterval(100L, sendSensor);
}

void loop()
{
  Blynk.run();
  timer.run();
}

সংযোগ প্রক্রিয়াঃ 

  • শুরুতেই Micro USB Cable দিয়ে  ESP8266 WiFi 4 Channel IoT Smart Switch কে কম্পিউটারের সাথে কানেক্ট করতে হবে।
  • অতপর, Arduino IDE ব্যবহার করে নিচে দেওয়া প্রোগ্রামটি আপলোড দিতে হবে।
  • Blynk App এ গিয়ে প্রজেক্ট তৈরি করতে হবে।  Blynk App দিয়ে নিয়ন্ত্রণ প্রক্রিয়াঃ
  • লাইট-ফ্যান ইত্যাদি সংযোগ করুন।
  • AC 220 INPUT কানেক্টরে পাওয়ার ক্যাবল ব্যবহার করে লাইন দিতে হবে।

সাবধানতাঃ  ২২০ ভোল্ট নিয়ে পূর্বে কাজের অভিজ্ঞতা না থাকলে ESP8266 WiFi 4 Channel IoT Smart Switch টি ব্যবহার না করাই উচিৎ 

ESP8266 WiFi 4 Channel IoT Smart Switch টি ৩”/৩” বক্স সাইজের উপযুক্ত। এই বক্সটি যে কোন ইলেকট্রিক্যাল দোকানে পাওয়া যায়। 

আউটপুটঃ

প্রোডাক্ট ডেমো ভিডিও:

5/5 - (1 vote)
Share with your friends
Default image
Nur Mohammad
Senior Research Engineer | Techshop Bangladesh | E-mail: nur@techshopbd.com
Articles: 38

52 Comments

    • এই কোড দ্বারা রিলে গুলোকে শুধুমাত্র অন/অফ করতে পারবেন। আলাদা করে সুইচ ও তাপ পরিমাপক সেন্সর ব্যবহার করতে পারবেন না, যা নিচের কোডের মধ্যে দেওয়া আছে।

  1. শুধু AC 220v ইনপুট ভোল্টেজ দিলেই কি হবে? DC 5V অপারেটিং ভোল্টেজ দেওয়ার প্রয়োজন নেই?

    • প্রোগ্রাম আপলোড করার জন্য শুধু মাত্র মাইক্রো ইউএসবি ক্যবল ব্যবহার করলেই হবে, এই সময় ২২০ ভোল্ট দেওয়ার প্রয়োজন নেই। আপলোড শেষ হলে ২২০ ভোল্ট লাইনে দিলেই সম্পূর্ণ সিস্টেমে ৫ ভোল্ট পেয়ে যাবে আলাদা করে ৫ ভোল্ট দেওয়ার দরকার হবে না।

    • সার্কিটের কানেকশনের জন্য আপনি (ধাপ-২ঃ সার্কিট কানেকশন) ধাপ ২টি দেখতে হবে।

  2. সব কিছুই ঠিক আছে কিন্তু Output দিচ্ছেনা, কেনো দিচ্ছেনা এটাও বুঝতে পারছিনা। আপনার সাথে contact করা যাবে?

  3. আমি আপনাদের কাছ থেকে ESP8266 WiFi 4 Channel IoT Smart switch একটি নিয়েছি কিন্তু সেটার AC ইনপুট 220v relay এর সাথে কানেক্ট করা নেই শুধু 5v অপারেটিং করতেছে । সুতরাং আমি এখন কি করবো?

    • আউটপুট কানেকশনের জন্য আপনি (ধাপ-২ঃ সার্কিট কানেকশন) ধাপ ২টি দেখতে হবে। রিলের সাথে সরাসরি ২২০ ভোল্ট কানেকশন থাকবে না। আপনি সার্কিট কানেকশন দেখলেই বুঝতে পারবেন।

    • ডিভাইসটি আসলে অন লাইন অফ লাইন বলে কিছু নেই। এটি সম্পূর্ণ কোডের উপর নির্ভর করে। আমাদের কোডটি শুধু মাত্র অনলাইনের জন্য লিখা। আপনি চাইলে অফ লাইন কোড লিখে এটি চালাতে পারবেন। অনলাইনের মাধ্যমে (ইন্টারনেট কানেকশন) যে কোন স্থান থেকে নিয়ন্ত্রণ করতে পারবেন। আপনার মোবাইলে ইন্টারনেট থাকার অর্থ হলো ডিভাইসটি চলবে আপনার নিয়ন্ত্রনে।

  4. গতকাল আপনাদের সাইট থেকে আমি দুইটি ESP8266 4 channel IoT smart switch কিনেছি। আমি একটি লাইট জ্বালাতে চাই, তাহলে এর সার্কিট কনেকসান টা কি হবে আর এর কোড টা কি হবে ?

    • আপনাকে ধন্যবাদ। আপনি যেহেতু ব্লগে প্রশ্ন করেছেন, একটু লক্ষ করে দেখুন এই পেজে কোড এবং সার্কিট কানেকশন দেওয়া আছে। এই নিয়মে প্রোগ্রাম আপলোড এবং সার্কিট কানেকশন দিলেই আপনার ডিভাইস দুইটি কাজ করতে সক্ষম।

    • আপনি যদি Code for Blynk App (ON/OFF Relay, DHT11 & Switch প্রোগ্রামটি ব্যবহার করে থাকেন, তাহলে Button ব্যবহার করতে হলে DHT11 Sensor কানেক্ট করতে হবে। অন্যথা কাজ করবে না।

  5. Device টি USB power এ চলছে, কিন্তু AC 220v দিলে আর চলছে না।

    • এসি লাইন দেওয়ার পর পাওয়ার সুইচটি অন করুন। তবে এই অবস্থায় USB পাওয়ার খুলে নিতে হবে।

    • সম্ভব হলে যেই এররটি পাচ্ছেন, সেটি মেইল করুন। কোডটি পুনরায় চেক করে হার্ডওয়ারে আপলোড করা হয়েছে। কোন প্রকার এরর পরিলক্ষিত হয়নি।

  6. ২২০ ভোল্ট ছাড়া এইটাকে পাওয়ার করা যাবে না?? ২২০ ভোল্ট দিয়ে পাওয়ার দেয়ার পর নরমাল ৫ভোল্ট এল ই ডি অথবা ডিসি মটর গুলো কি এই বোর্ড দিয়ে চালানো যাবে। একটা ডেমো প্রোজেক্ট করার জন্য.

    • ৫ ভোল্ট দিয়ে পাওয়ার দিতে পারবেন। শুধুমাত্র বোর্ডটিকে পাওয়ার দেওয়ার জন্য ২২০ ভোল্ট ব্যবহার করা হয়েছে।

  7. আমি এই বোর্ডে কি নরমাম ৫ ভোল্টের এল ই ডি ব্যবহার করতে পারবো। ২২০ভোল্ট সাপ্লাই না দিয়ে অন্য কোনো ভাবে ৫ থেকে ৯ ভোল্টের মধ্যে পাওয়ার করতে পারবো?

    • Micro USB Cable দিয়ে ৫ ভোল্ট দিতে পারবেন, অবশ্যই ৫ ভোল্ট । রিলের আউটপুটে আপনি এসি ডিসি দুই ধরনের লোডই নিয়ন্ত্রণ করতে পারবেন। এখানে এসি লোডের জন্য সার্কিট দেখানো হয়েছে।

  8. বোর্ডে একটা 3 pin এর কানেক্টর এবং একটি 5-pin কানেক্টর লাগানোর জায়গা দেখছি। 3 pin er টা DHT11 sensor er জন্য। কিন্তু 5 pin er টা কিসের জন্য? এবং আমার ধারণা এই বোর্ডে আমি আমার তৈরি প্রোগ্রামলোড করতে পারি ,আমার ধারণা কি সঠিক?

    • প্যাকেজের সাথে চার সুইচ সম্বলিত একটি সুইচ মডিউল আছে এবং এদের পিন সংখ্যা ৫টি। এই সুইচ মডিউলটি কানেক্ট করার জন্য ৫ পিনের কানেক্টর রাখা হয়েছে। অন্যদিকে বোর্ডটিতে আলাদা করে প্রোগ্রাম তৈরি করেও আপলোড দেওয়া যাবে।

  9. Can we arrange “by hand/manual” control & internet control by this system? Also I want to know this controller control with temperature/humidity base. Wait for your reply.

    • এই ডিভাইসকে চারটি সুইচের মাধ্যমে ম্যানুয়াল নিয়ন্ত্রণ সম্ভব, অন্যদিকে একই কাজ করা যাবে অ্যাপ দিয়ে। যদি DHT11 সেন্সর কানেক্ট করা হয়, তখন তাপমাত্রা ও আদ্রতা দেখা সম্ভব।

    • অসংখ্য ধন্যবাদ আপনার ডিভাইসের ফিডব্যাক জানানোর জন্য। সর্বদা ভালো থাকুন।

  10. এটা দিয়ে কি পৃথিবীর যেকোনো প্রান্ত থেকে কন্ট্রোল করা যাবে ইন্টারনেটের মাধ্যমে

    • জি। এই জন্য ডিভাইসটিকে সর্বদা ইন্টারনেটের সাথে যুক্ত রাখতে হবে।

Leave a Reply

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