ESP32 IOT Board কিভাবে ব্যবহার করবো?

ESP32 IOT Board টি মূলত ESP32 ভিত্তিক এক্সপেরিমেন্ট বোর্ড। যার মধ্যে রয়েছে ESP32 বসানোর ফিমেইল হেডার এবং তার দুইপাশে পিন হেডার। এই পিন হেডার ব্যবহার করে অন্যান্য কম্পোনেন্ট খুব সহজেই কানেক্ট করা যাবে। এছাড়াও বোর্ডের মধ্যে রয়েছে তাপমাত্রা এবং আদ্রতা পরিমাপ করার জন্য DHT11 সেন্সর। রয়েছে OLED Display Blue I2C 128×64 0.96 inch যার মধ্যে দেখানো যাবে গ্রাফিক্সসহ বিভিন্ন লেখা। অন্যদিকে রয়েছে দুইটা পুশ বাটন সুইচ। আরও কিছু হেডার রয়েছে, যেমন, MFRC-522 RFID Module Header, I2C LCD Display 16X2 Header, Power Bus, SPI Header.

ESP32 IOT Board কে দুইভাবে পাওয়ার দেওয়া যাবে, মাইক্রো USB ক্যাবল ও ডিসি এডাপটার। ডিসি সকেটে ৫ থেকে ৬ ভোল্টেজের বেশি দেওয়া যাবে না। এই বিষয়টা অবশ্যই লক্ষ রাখতে হবে। সঠিক বোর্ড এবং পোর্ট সিলেক্ট করে খুব সহজেই Arduino IDE দিয়ে প্রোগ্রাম করা যাবে। যদি প্রোগ্রাম করার সময় Connecting…….. এইরুপ লেখা আসে তাহলে ESP32 এর মধ্যে থাকা EN BOOT সুইচ প্রেস করলেই প্রোগাম শুরু হবে।

 

বিবরণঃ

  • মডিউলঃ ESP32 Development Board 30 Pin
  • টেম্পারেচার এবং হিউমিডিটি সেন্সরঃ DHT11 Sensor
  • ডিসপ্লেঃ OLED Display Blue I2C 128×64 0.96 inch
  • অপারেটিং ভোল্টেজঃ ৫ ভোল্ট ডিসি সাপ্লাই
  • প্রোগ্রামিং পোর্টঃ মাইক্রো USB Port
  • পাওয়ার নির্দেশকঃ লাল এল.ই.ডি (LED)
  • অন বোর্ড এল.ই.ডিঃ নির্দেশকঃ নীল এল.ই.ডি (LED)
  • সাইজঃ ৩.৮ x ২.৪ ইঞ্চি।
  • মাইক্রো SD কার্ড স্লট (কার্ড থাকবে না)

 

দৈর্ঘ্য-প্রস্থ্যঃ

বোর্ডের সাইজ ৩.৮ x ২.৪ ইঞ্চি যা সহজেই বহন করা যাবে।

 

প্রয়োজনীয় কম্পোনেন্টঃ

কম্পোনেন্টগুলো বোর্ডের সাথে দেওয়া থাকবে। এর মধ্যে ১ ও ২ আলাদা থাকবে। ৩ ও ৪ বোর্ডের মধ্যেই রয়েছে। ESP32 IOT Starter Kit এর মধ্যে বেশ কিছু কম্পোনেন্ট দেওয়া রয়েছে, যা এক্সপেরিমেন্ট করতে বিশেষ সহায়তা করবে।

ক্রমিক নং  কম্পোনেন্টের নাম মডেল পরিমাণ লিংক
ESP32 Development Board 30 Pin WIR-00072 ১টি কম্পোনেন্ট লিংক
Micro USB Data Cable C&C-00259 ১টি কম্পোনেন্ট লিংক
OLED Display Blue I2C 128×64 0.96 inch DIS-00079 ১টি কম্পোনেন্ট লিংক
DHT11 Sensor Module SEN-00236 ১টি কম্পোনেন্ট লিংক

 

সার্কিট কানেকশনঃ

Sonar Sensor HC-SR04

দূরত্ব পরিমাপ করার জন্য ডেমো কোড

#include <Wire.h>
#include <Adafruit_GFX.h>           
#include <Adafruit_SSD1306.h>  

Adafruit_SSD1306 display(128, 64, &Wire, -1);

const int trigPin = 5;
const int echoPin = 18;

//define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701

long duration;
int distanceCm;
int distanceInch;

void setup() {
  Serial.begin(115200);
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(500);
  display.clearDisplay();

  display.setTextSize(2);
  display.setTextColor(WHITE);
}

void loop() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  
  // Calculate the distance
  distanceCm = duration * SOUND_SPEED/2;
  
  // Convert to inches
  distanceInch = distanceCm * CM_TO_INCH;
  
  // Prints the distance in the Serial Monitor
  Serial.print("Distance (cm): ");
  Serial.println(distanceCm);
  Serial.print("Distance (inch): ");
  Serial.println(distanceInch);

  display.clearDisplay();
  display.setCursor(0, 25);
  //Display distance in cm
  display.print(distanceCm);
  display.print(" cm");
  display.display(); 

  delay(500);  
}

 

MFRC-522 RFID Module

RFID Module এর মধ্যে মোট ৮টি পিন রয়েছে। এর মধ্যে 3.3V ও GND পাওয়ার পিন।  SS, SCK, MOSI, MISO and RST ডাটা পিন। অন্যদিকে IRQ পিনকে কোন সংযোগ দিতে হবে না। যেহেতু ESP32 IOT Board ব্যবহার করছি তাই আলাদা তার দিয়ে সংযোগ দেওয়ার কোন প্রয়োজন হবেনা।

ডেমো কোড ডিজিটাল এটেন্ডেন্স সিস্টেম।

RFID Demo Code

#define SS_PIN 25     
#define RST_PIN 27    
#include <SPI.h>
#include <Wire.h>
#include <MFRC522.h>
#include <Adafruit_GFX.h>           
#include <Adafruit_SSD1306.h>  

MFRC522 mfrc522(SS_PIN, RST_PIN);
Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup(){
  
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) 
 { 
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
}

void loop()
{
   display.clearDisplay();
   display.setTextSize(2);             // Normal 1:1 pixel scale
   display.setTextColor(SSD1306_WHITE);        // Draw white text
   display.setCursor(3, 0);            // Start at top-left corner
   display.println(("TechShopBD"));
   display.setCursor(13, 25);            // Start at top-left corner
   display.println(("ESP32 IOT"));
   display.setCursor(33, 50);
   display.println("Board");
   display.display();
   delay(1000);            //don't need to run this at full speed.
  
  // New cards scan
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // if the card was read
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  //Read the UID of the card and write to the serial port
  Serial.println();
  Serial.print("UID Tag :");
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  Serial.println();
    if (content.substring(1) == "30 5B 94 0E") 
    {
      access_granted();
    }
    else if (content.substring(1) == "26 69 12 F0")
    {
      access_granted();
    }
    else   
    {
      access_denied();
    }
}

void access_granted(){
   Serial.println("Access Granted! ");
   display.clearDisplay();
   display.setTextSize(2);             // Normal 1:1 pixel scale
   display.setTextColor(SSD1306_WHITE);        // Draw white text
   display.setCursor(25, 0);            // Start at top-left corner
   display.println(("Welcome"));
   display.setCursor(52, 25);
   display.println("To");
   display.setCursor(42, 50);
   display.println("Home");
   display.display();
   Serial.println("Welcome To Home");
   delay(5000);
   display.clearDisplay();   
}

void access_denied(){
   Serial.println("Access Denied! ");
   display.clearDisplay();
   display.setTextSize(2);             
   display.setTextColor(SSD1306_WHITE);        
   display.setCursor(33, 0);            
   display.println(("Wrong!"));
   display.setCursor(40, 25);
   display.println("RFID");
   display.setCursor(37, 50);
   display.println("Card");
   display.display();
   Serial.println("Not Valid Card");
   delay(2000);
   display.clearDisplay();
 }

 

DHT11

অভ্যন্তরীণ সার্কিট ডায়াগ্রাম। ESP32 IOT Board ব্যবহারের ফলে আলাদা করে সার্কিট প্রয়োজন হবে না।

 

DHT11 Demo Code

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

#define DHTPIN 4          // Digital pin connected to the DHT sensor
#define DHTTYPE    DHT11  // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(1000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  delay(2000);

  //read temperature and humidity
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(h) || isnan(t)) {
  Serial.println("Failed to read from DHT sensor!");
  }
  //Clear Display
  display.clearDisplay();
  
  //Display Temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(t);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
  
  //Display Humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h);
  display.print(" %"); 
  display.display();   
}

 

আউটপুটঃ

 

সতর্কতাঃ

১। ডিসি সকেটে ইনপুট ৫-৬ ভোল্টের অধিক সাপ্লাই দেওয়া যাবে না।

২। দুইটা সোর্স (এডাপটার এবং USB পাওয়ার) একসাথে দেওয়া যাবে না।

৩। OLED ডিসপ্লেতে কোন প্রকার চাপ প্রয়োগে নষ্ট হতে পারে।

 

 

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

6 Comments

  1. I want to connect LCD I2C and RFID card reader(MFRC522) to esp32 devkit. My problem is they both have SDA pin and on ESP I only see one, so how can I work on that?

    • On the ESP32, the I2C interface can be configured on different pins. The two default I2C pins are GPIO21 (SDA), and GPIO22 (SCL). You can use it for I2C LCD. MFRC522 RFID Reader SDA pin is also a Slave Select (SS) Pin. The specific pin for the SS signal on the ESP32 can vary depending on the board and the configuration. However, the most common pin used for SS on the ESP32 is GPIO5, also known as pin D5.

Leave a Reply

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