குறியீட்டை தேடு

ESP32 பயிற்சி 37/55 - ESP32 BLE உடன் புளூடூத் பயன்பாட்டைப் பயன்படுத்துதல் | SunFounder இன் ESP32 IoT கற்றல் கிட்

ESP32 பயிற்சி 37/55 - ESP32 BLE உடன் புளூடூத் பயன்பாட்டைப் பயன்படுத்துதல் | SunFounder இன் ESP32 IoT கற்றல் கிட்

இந்த டுடோரியலில், ESP32-ஐ புளூடூத் சர்வராக பயன்படுத்தி மொபைல் ஆப்-லிருந்து செய்திகளை அனுப்பவும் பெறவும் எப்படி என்பதை ஆராய்வோம். இது உங்கள் ESP32 போர்டுக்கும் உங்கள் மொபைல் சாதனத்திற்கும் இடையே ஊடாடும் தொடர்பை அனுமதிக்கிறது, இது உங்கள் IoT திட்டங்களுக்கு பல்துறை சேர்ப்பாக அமைகிறது. இந்த பாடத்தின் முடிவில், உங்கள் மொபைல் சாதனத்திலிருந்து ESP32-க்கு உரையை அனுப்பவும், அது சீரியல் மானிட்டரில் காட்டப்படுவதைப் பார்க்கவும் முடியும்.

bluetooth_lightblue

ESP32-உடன் தொடர்பு கொள்ள iOS மற்றும் Android இரண்டிலும் கிடைக்கும் LightBlue Explorer ஆப்-ஐ பயன்படுத்துவோம். இந்த டுடோரியல் புளூடூத் லோ எனர்ஜி (BLE) தொடர்பைப் புரிந்துகொள்வதற்கான அடிப்படையாகும், மேலும் மேம்பட்ட திட்டங்களுக்கான அடித்தளத்தை அமைக்கிறது. காட்சி வழிகாட்டிக்கு, வீடியோவை (வீடியோவில் 02:00 இல்) பார்க்கவும்.

வன்பொருள் விளக்கம்

இந்த திட்டத்தின் முதன்மை கூறு ESP32 மைக்ரோகண்ட்ரோலர் ஆகும், இது Wi-Fi மற்றும் புளூடூத் திறன்கள் இரண்டையும் ஒருங்கிணைக்கிறது. இது ESP32 ஒரு சர்வராக செயல்பட அனுமதிக்கிறது, தரவை வயர்லெஸ் முறையில் பெறவும் அனுப்பவும் செய்கிறது. ESP32-இன் உள்ளமைக்கப்பட்ட புளூடூத் செயல்பாடு BLE-ஐ ஆதரிக்கிறது, இது குறைந்த மின்சக்தி பயன்பாடுகளுக்கு திறமையானதாக அமைகிறது.

ESP32-க்கு கூடுதலாக, LightBlue ஆப் நிறுவப்பட்ட மொபைல் சாதனத்தைப் பயன்படுத்துவோம். இந்த ஆப் பயனர்களை ESP32-உடன் இணைக்கவும் புளூடூத் மூலம் தரவை அனுப்பவும் அனுமதிக்கிறது. இந்த கூறுகளின் ஒருங்கிணைப்பு ESP32-க்கும் மொபைல் சாதனங்களுக்கும் இடையே தடையற்ற தொடர்பை செயல்படுத்துகிறது, பயனர் ஊடாடலை மேம்படுத்துகிறது.

டேட்டாஷீட் விவரங்கள்

உற்பத்தியாளர் Espressif Systems
பகுதி எண் ESP32-WROOM-32
லாஜிக்/IO மின்னழுத்தம் 3.3 V
வழங்கல் மின்னழுத்தம் 3.0 – 3.6 V
வெளியீட்டு மின்னோட்டம் (ஒரு சேனலுக்கு) 40 mA
உச்ச மின்னோட்டம் (ஒரு சேனலுக்கு) 160 mA
PWM அதிர்வெண் வழிகாட்டுதல் 1 kHz
உள்ளீட்டு லாஜிக் வரம்புகள் 0.2 VCC (குறைந்த), 0.8 VCC (உயர்ந்த)
மின்னழுத்த வீழ்ச்சி / RDS(on) / செறிவு 0.1 V
வெப்ப வரம்புகள் 125 °C
பேக்கேஜ் QFN48
குறிப்புகள் / மாறுபாடுகள் ESP32-WROOM-32, ESP32-WROVER

 

  • பிரவுன்அவுட்களைத் தடுக்க நிலையான மின்சார வழங்கலை (3.3 V) உறுதி செய்யவும்.
  • மின்சார பின்களுக்கு அருகில் டிகப்ளிங்கிற்கு மின்தேக்கிகளைப் பயன்படுத்தவும்.
  • அதிக மின்னோட்டத்தைப் பயன்படுத்தினால் சரியான வெப்ப வெளியேற்றத்தை பராமரிக்கவும்.
  • GPIO பின் மின்னழுத்த அளவுகளில் கவனமாக இருங்கள்; அவை 3.3 V தாங்கும் திறன் கொண்டவை.
  • GPIO உள்ளமைவுகளுக்கு தேவைக்கேற்ப புல்-அப் அல்லது புல்-டவுன் மின்தடையங்களைப் பயன்படுத்தவும்.
  • BLE இணைப்புகளை கண்காணிக்கவும்; ஆப் சரியாக இணைக்கப்பட்டுள்ளதை உறுதி செய்யவும்.
  • சேவைகள் மற்றும் பண்புகளுக்கான UUID கள் தனித்துவமானவை என்பதை சரிபார்க்கவும்.
  • டீபக்கிங் செய்திகளுக்கு சீரியல் மானிட்டரை தவறாமல் சரிபார்க்கவும்.
  • சிக்கலான சிக்னல் சரிசெய்தலுக்கு லாஜிக் அனலைசரைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளவும்.

வயரிங் வழிமுறைகள்

ESP32 முதன்மையாக USB வழியாக மின்சாரம் மற்றும் நிரலாக்கத்திற்காக இணைக்கப்படுவதால், இந்த திட்டத்திற்கான வயரிங் எளிதானது. மைக்ரோ USB கேபிளைப் பயன்படுத்தி ESP32-ஐ உங்கள் கணினியுடன் இணைக்கவும். USB போர்ட் போதுமான மின்சாரத்தை (பொதுவாக 5 V) வழங்குவதை உறுதி செய்யவும். டீபக்கிங்கிற்கு சீரியல் மானிட்டர் பயன்படுத்தப்படும், எனவே இந்த பயன்பாட்டிற்கு கூடுதல் வன்பொருள் இணைப்புகள் தேவையில்லை.

எதிர்கால திட்டங்களில் வெளிப்புற கூறுகளுடன் ESP32-ஐப் பயன்படுத்தும்போது, கிரவுண்ட் பின்களை பொதுவான கிரவுண்டுடன் இணைக்க நினைவில் கொள்ளுங்கள். இது ESP32 மற்றும் இணைக்கப்பட்ட சென்சார்கள் அல்லது தொகுதிகள் ஒரே குறிப்பு புள்ளியைப் பகிர்வதை உறுதி செய்கிறது. கூடுதலாக, நீங்கள் பேட்டரியைப் பயன்படுத்தினால், நேர்மறை முனையத்தை 3.3 V பின்னுடனும், எதிர்மறை முனையத்தை ESP32-இல் உள்ள கிரவுண்ட் பின்னுடனும் இணைக்கவும்.

குறியீடு எடுத்துக்காட்டுகள் & விளக்கம்

வழங்கப்பட்ட குறியீடு புளூடூத் சர்வரை துவக்குகிறது, தேவையான சேவைகள் மற்றும் பண்புகளை அமைக்கிறது, மற்றும் உள்வரும் செய்திகளை கையாளுகிறது. முக்கிய அடையாளங்காட்டிகளில் bleName அடங்கும், இது புளூடூத் சாதனத்தின் பெயரை வரையறுக்கிறது, மற்றும் receivedText, இது மொபைல் ஆப்-லிருந்து வரும் உள்வரும் செய்தியை சேமிக்கிறது.

const char *bleName = "ESP32_Bluetooth";
String receivedText = "";
 

setup() செயல்பாடு சீரியல் தொடர்பு மற்றும் BLE அமைப்பை துவக்குகிறது. LightBlue ஆப்-உடன் இணைப்பை நிறுவுவதற்கு இது முக்கியமானது.

void setup() {
  Serial.begin(115200);  // சீரியல் போர்ட்டை துவக்குகிறது
  setupBLE();            // புளூடூத் BLE-ஐ துவக்குகிறது
}
 

loop() செயல்பாட்டிற்குள், குறியீடு உள்வரும் செய்திகளை சரிபார்க்கிறது. புதிய செய்தி பெறப்பட்டால், அது சீரியல் மானிட்டரில் அச்சிடப்படுகிறது, மேலும் இணைக்கப்பட்ட BLE சாதனத்திற்கு அறிவிப்பு அனுப்பப்படுகிறது.

if (receivedText.length() > 0 && millis() - lastMessageTime > 1000) {
    Serial.print("Received message: ");
    Serial.println(receivedText);
    pCharacteristic->setValue(receivedText.c_str());
    pCharacteristic->notify();
    receivedText = "";
}
 

முழுமையான புரிதலுக்கு, கட்டுரைக்கு கீழே ஏற்றப்படும் முழு குறியீட்டைப் பார்க்கவும். இது திட்டத்தை வெற்றிகரமாக செயல்படுத்த தேவையான அனைத்து விவரங்களையும் உங்களுக்கு வழங்கும்.

நிரூபணம் / என்ன எதிர்பார்க்கலாம்

வெற்றிகரமான செயல்பாட்டிற்குப் பிறகு, LightBlue ஆப்-லிருந்து ESP32-க்கு செய்திகளை அனுப்ப முடியும். "Hello" போன்ற செய்தியை தட்டச்சு செய்யும்போது, அது சீரியல் மானிட்டரில் தோன்றும். கூடுதலாக, ஆப்-க்கு செய்திகளை மீண்டும் அனுப்பலாம், இரு வழி தொடர்பை உறுதிப்படுத்துகிறது. செய்திகள் தோன்றாதது போன்ற சிக்கல்களை எதிர்கொண்டால், ESP32 ஆப்-உடன் சரியாக இணைக்கப்பட்டுள்ளதா மற்றும் UUID கள் பொருந்துகின்றனவா என்பதை உறுதி செய்யவும்.

வீடியோ நேரக்குறியீடுகள்

  • 00:00 தொடக்கம்
  • 2:10 திட்டத்திற்கான அறிமுகம்
  • 2:45 ஆவணப்படுத்தல் பக்கம்
  • 4:04 Arduino குறியீடு
  • 6:31 புளூடூத் பயன்பாட்டை நிறுவுதல்
  • 7:12 ESP32 போர்டு மற்றும் COM போர்ட்டைத் தேர்ந்தெடுத்தல்
  • 8:54 திட்டத்தின் செயல்விளக்கம்

படங்கள்

bluetooth_lightblue
bluetooth_lightblue
838-ESP32 Tutorial 37/55- Arduino code for Bluetooth app test
மொழி: C++
#include "BLEDevice.h"
#include "BLEServer.h"
#include "BLEUtils.h"
#include "BLE2902.h"

// Define the Bluetooth device name
const char *bleName = "ESP32_Bluetooth";

// Define the received text and the time of the last message
String receivedText = "";
unsigned long lastMessageTime = 0;

// Define the UUIDs of the service and characteristics
#define SERVICE_UUID           "your_service_uuid_here"
#define CHARACTERISTIC_UUID_RX "your_rx_characteristic_uuid_here"
#define CHARACTERISTIC_UUID_TX "your_tx_characteristic_uuid_here"

// Define the Bluetooth characteristic
BLECharacteristic *pCharacteristic;

void setup() {
  Serial.begin(115200);  // Initialize the serial port
  setupBLE();            // Initialize the Bluetooth BLE
}

void loop() {
  // When the received text is not empty and the time since the last message is over 1 second
  // Send a notification and print the received text
  if (receivedText.length() > 0 && millis() - lastMessageTime > 1000) {
    Serial.print("Received message: ");
    Serial.println(receivedText);
    pCharacteristic->setValue(receivedText.c_str());
    pCharacteristic->notify();
    receivedText = "";
  }

  // Read data from the serial port and send it to BLE characteristic
  if (Serial.available() > 0) {
    String str = Serial.readStringUntil('\n');
    const char *newValue = str.c_str();
    pCharacteristic->setValue(newValue);
    pCharacteristic->notify();
  }
}

// Define the BLE server callbacks
class MyServerCallbacks : public BLEServerCallbacks {
  // Print the connection message when a client is connected
  void onConnect(BLEServer *pServer) {
    Serial.println("Connected");
  }
  // Print the disconnection message when a client is disconnected
  void onDisconnect(BLEServer *pServer) {
    Serial.println("Disconnected");
  }
};

// Define the BLE characteristic callbacks
class MyCharacteristicCallbacks : public BLECharacteristicCallbacks {
  void onWrite(BLECharacteristic *pCharacteristic) {
    // When data is received, get the data and save it to receivedText, and record the time
    std::string value = std::string(pCharacteristic->getValue().c_str());
    receivedText = String(value.c_str());
    lastMessageTime = millis();
    Serial.print("Received: ");
    Serial.println(receivedText);
  }
};

// Initialize the Bluetooth BLE
void setupBLE() {
  BLEDevice::init(bleName);                        // Initialize the BLE device
  BLEServer *pServer = BLEDevice::createServer();  // Create the BLE server
  // Print the error message if the BLE server creation fails
  if (pServer == nullptr) {
    Serial.println("Error creating BLE server");
    return;
  }
  pServer->setCallbacks(new MyServerCallbacks());  // Set the BLE server callbacks

  // Create the BLE service
  BLEService *pService = pServer->createService(SERVICE_UUID);
  // Print the error message if the BLE service creation fails
  if (pService == nullptr) {
    Serial.println("Error creating BLE service");
    return;
  }
  // Create the BLE characteristic for sending notifications
  pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
  pCharacteristic->addDescriptor(new BLE2902());  // Add the descriptor
  // Create the BLE characteristic for receiving data
  BLECharacteristic *pCharacteristicRX = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
  pCharacteristicRX->setCallbacks(new MyCharacteristicCallbacks());  // Set the BLE characteristic callbacks
  pService->start();                                                 // Start the BLE service
  pServer->getAdvertising()->start();                                // Start advertising
  Serial.println("Waiting for a client connection...");              // Wait for a client connection
}

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

கோப்புகள் கிடைக்கவில்லை.