د ESP32 ټیوټوریل 37/55 - د ESP32 BLE سره د بلوتوت اپ کارول | سن فاونډر د ESP32 IoT زده کړې کټ
په دې ټیوټوریل کې، موږ به وپلټو چې څنګه ESP32 د بلوتوت سرور په توګه وکاروو ترڅو له ګرځنده اپلیکیشن څخه پیغامونه واستوو او ترلاسه کړو. دا ستاسو د ESP32 بورډ او ګرځنده وسیلې ترمنځ متقابل اړیکه فعالوي، چې دا ستاسو د IoT پروژو لپاره یو څو اړخیزه اضافه ګرځوي. د دې درس په پای کې، تاسو به وکولی شئ له خپل ګرځنده وسیلې څخه ESP32 ته متن واستوئ او په سیریل مانیټر کې یې وګورئ چې ښودل کیږي.
موږ به د LightBlue Explorer اپلیکیشن وکاروو، چې په iOS او Android دواړو کې شتون لري، ترڅو له ESP32 سره اړیکه ونیسو. دا ټیوټوریل د بلوتوت ټیټ انرژي (BLE) اړیکې د پوهیدو لپاره بنسټیز دی او د لا پرمختللو پروژو لپاره مرحله جوړوي. د لید لارښود لپاره، مهرباني وکړئ په ویډیو کې (په ویډیو کې په 02:00) ته مراجعه وکړئ.
هارډویر تشریح شوی
په دې پروژه کې اصلي برخه ESP32 مایکروکنټرولر دی، چې دواړه وای-فای او بلوتوت وړتیاوې مدغم کوي. دا 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 اړیکې څارنه وکړئ؛ ډاډ ترلاسه کړئ چې اپلیکیشن په سمه توګه جوړه شوې ده.
- ډاډ ترلاسه کړئ چې د خدماتو او ځانګړتیاو لپاره UUIDs ځانګړي دي.
- د ډیبګینګ پیغامونو لپاره په منظم ډول سیریل مانیټر وګورئ.
- د پیچلي سیګنال ستونزو حل لپاره د منطق شنونکي کارولو په اړه غور وکړئ.
د تارونو لارښوونې
د دې پروژې لپاره تارونه ساده دي ځکه چې ESP32 په عمده توګه د بریښنا او پروګرام کولو لپاره د USB له لارې وصل کیږي. ESP32 خپل کمپیوټر ته د مایکرو USB کیبل په کارولو سره وصل کړئ. ډاډ ترلاسه کړئ چې د 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("ترلاسه شوی پیغام: ");
Serial.println(receivedText);
pCharacteristic->setValue(receivedText.c_str());
pCharacteristic->notify();
receivedText = "";
}
د بشپړ پوهیدو لپاره، بشپړ کوډ ته مراجعه وکړئ چې د مقالې لاندې بار کیږي. دا به تاسو ته د پروژې په بریالیتوب سره پلي کولو لپاره ټول اړین تفصیلات درکړي.
ډیمونسټریشن / څه تمه وکړئ
د بریالي پلي کولو په صورت کې، تاسو باید وکولی شئ د LightBlue اپلیکیشن څخه ESP32 ته پیغامونه واستوئ. لکه څنګه چې تاسو یو پیغام ټایپ کوئ، لکه "سلام،" دا به په سیریل مانیټر کې ښکاره شي. سربیره پردې، تاسو کولی شئ اپلیکیشن ته پیغامونه بیرته واستوئ، چې د دوه اړخیزه اړیکې تایید کوي. که تاسو د پیغامونو نه ښکاریدو په څیر ستونزو سره مخ شئ، ډاډ ترلاسه کړئ چې ESP32 په سمه توګه له اپلیکیشن سره جوړه شوې ده او UUIDs سره سمون لري.
د ویډیو مهالوېشونه
- 00:00 پیل
- 2:10 د پروژې پېژندنه
- 2:45 د اسنادو پاڼه
- 4:04 د آردوینو کوډ
- 6:31 د بلوتوټ اپ نصبول
- 7:12 د ESP32 بورډ او COM پورټ غوره کول
- 8:54 د پروژې ننداره
#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
}
Common Course Links
Common Course Files
سرچینې او حوالې
-
اسنادESP32 Tutorial 37/55 - SunFounder doc page for Bluetooth appdocs.sunfounder.com
فایلونه📁
هیڅ فایل شتون نلري.