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 ডিসপ্লেতে কোন প্রকার চাপ প্রয়োগে নষ্ট হতে পারে।
Should I use mobile phone adapter which output voltage is 5v to power ESP32?
Any kinds of 5V Adapter can be use. If you confirm your mobile phone adapter output is fixed 5V, then you can use it. Otherwise not.
This is Very Useful Develoment Board.
Thank you sir
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.