{"id":15420,"date":"2020-07-24T00:03:27","date_gmt":"2020-07-23T19:33:27","guid":{"rendered":"http:\/\/thecaferobot.com\/learn\/?p=15420"},"modified":"2021-11-16T17:02:41","modified_gmt":"2021-11-16T13:32:41","slug":"esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial","status":"publish","type":"post","link":"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/","title":{"rendered":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u06cc\u0627 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc ESP32 \u0628\u0627 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 IDE"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"15420\" class=\"elementor elementor-15420\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-61ec70e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"61ec70e\" data-element_type=\"section\">\r\n\t\t\t\r\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-row\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-154e1cbe\" data-id=\"154e1cbe\" data-element_type=\"column\">\r\n\r\n\t\t\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\r\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-559a8aba elementor-widget elementor-widget-heading\" data-id=\"559a8aba\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0645\u0642\u062f\u0645\u0647<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c45e0b5 elementor-widget elementor-widget-text-editor\" data-id=\"4c45e0b5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0627\u0645\u0631\u0648\u0632\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062a\u062f\u0648\u0627\u0644 \u062a\u0631\u06cc\u0646 \u0648 \u067e\u0631\u06a9\u0627\u0631\u0628\u0631\u062f\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0645\u06cc \u0628\u0627\u0634\u062f \u0648 \u0634\u0645\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0631\u0648\u0632\u060c \u062e\u0648\u0627\u0633\u062a\u0647 \u06cc\u0627 \u0646\u0627\u062e\u0648\u0627\u0633\u062a\u0647 \u0628\u0627 \u0622\u0646 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f. \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u06af\u0648\u0634\u06cc \u0647\u0627\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644\u060c \u0633\u0627\u0639\u062a \u0647\u0627 \u0648 \u06af\u062c\u062a \u0647\u0627\u06cc \u0647\u0648\u0634\u0645\u0646\u062f\u060c \u0647\u062f\u0641\u0648\u0646 \u0647\u0627\u06cc \u0628\u06cc \u0633\u06cc\u0645\u060c \u0645\u0627\u0648\u0633 \u0648 \u06a9\u06cc\u0628\u0648\u0631\u062f\u0647\u0627\u06cc \u0628\u06cc \u0633\u06cc\u0645 \u0648 \u2026 \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0648 \u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0628\u0644\u0648\u062a\u0648\u062b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p><p>\u062a\u0631\u0627\u0634\u0647 \u0647\u0627\u06cc ESP32 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0648\u0627\u06cc \u0641\u0627\u06cc\u060c \u062f\u0627\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b \u0646\u06cc\u0632 \u0647\u0633\u062a\u0646\u062f \u0648 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0631\u0627 \u0646\u06cc\u0632 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e91a4ce elementor-widget elementor-widget-heading\" data-id=\"1e91a4ce\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0622\u0646\u0686\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627\u062f \u0645\u06cc \u06af\u06cc\u0631\u06cc\u062f<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-77507af0 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"77507af0\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">BLE \u0686\u06cc\u0633\u062a\u061f<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\u0645\u0639\u0645\u0627\u0631\u06cc BLE \u0648 \u0645\u062f\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0622\u0646<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 ESP32 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 Arduino IDE<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0631\u0648\u06cc \u06cc\u06a9 ESP32 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06af\u0648\u0634\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0631\u062a\u0628\u0627\u0637 BLE<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\u0627\u062a\u0635\u0627\u0644 \u062f\u0648 ESP32 \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0631\u062a\u0628\u0627\u0637 BLE<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79989294 elementor-widget elementor-widget-heading\" data-id=\"79989294\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0645\u0639\u0631\u0641\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2fa791e6 elementor-widget elementor-widget-text-editor\" data-id=\"2fa791e6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0628\u0644\u0648\u062a\u0648\u062b \u06cc\u06a9 \u062a\u06a9\u0646\u0648\u0644\u0648\u0698\u06cc \u0628\u06cc \u0633\u06cc\u0645 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0648 \u0645\u062a\u0639\u0627\u0631\u0641 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u0641\u0627\u0635\u0644\u0647 \u06cc \u06a9\u0645 \u0627\u0633\u062a \u0648 \u0628\u06cc\u0634 \u0627\u0632 20 \u0633\u0627\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f. \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0628\u0644\u0648\u062a\u0648\u062b \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u0645\u0635\u0631\u0641 \u062a\u0648\u0627\u0646 \u0648 \u0647\u0632\u06cc\u0646\u0647 \u06cc \u06a9\u0645 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f. \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u062f\u0648 \u062f\u0633\u062a\u0647 \u06cc \u06a9\u0644\u0627\u0633\u06cc\u06a9 (\u0646\u0648\u0639 \u0645\u062a\u062f\u0627\u0648\u0644 \u0622\u0646) \u0648 \u06a9\u0645 \u062a\u0648\u0627\u0646 (BLE) \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f.<\/p><p>ESP32\u060c \u0647\u0631\u062f\u0648 \u0646\u0648\u0639 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0644\u0627\u0633\u06cc\u06a9 \u0648 \u06a9\u0645 \u062a\u0648\u0627\u0646 \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74aa0e1c elementor-widget elementor-widget-heading\" data-id=\"74aa0e1c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">BLE \u0686\u06cc\u0633\u062a\u061f<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1d3ef929 elementor-widget elementor-widget-text-editor\" data-id=\"1d3ef929\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>BLE \u0645\u062e\u0641\u0641 \u0639\u0628\u0627\u0631\u062a\u00a0<strong>Bluetooth Low Energy<\/strong>\u00a0\u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0645\u0635\u0631\u0641 \u0627\u0633\u062a. \u062f\u0631 \u0633\u0627\u0644 2001\u060c \u0645\u062d\u0642\u0642\u0627\u0646 \u0634\u0631\u06a9\u062a\u00a0<strong>\u0646\u0648\u06a9\u06cc\u0627<\/strong>\u00a0(Nokia) \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u062f\u0631 \u0628\u0644\u0648\u062a\u0648\u062b \u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644 \u0648 \u06a9\u0645 \u06a9\u0631\u062f\u0646 \u0645\u0635\u0631\u0641 \u062a\u0648\u0627\u0646 \u0622\u0646\u060c \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0646\u0633\u062e\u0647 \u06cc \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0648\u062f\u0646\u062f. \u0646\u062a\u0627\u06cc\u062c \u0627\u06cc\u0646 \u062a\u062d\u0642\u06cc\u0642\u0627\u062a \u062f\u0631 \u0633\u0627\u0644\u00a0<a href=\"https:\/\/ieeexplore.ieee.org\/document\/1389107\/?reload=true&amp;arnumber=1389107\">2004<\/a>\u00a0\u0628\u0647 \u0635\u0648\u0631\u062a \u062a\u0626\u0648\u0631\u06cc \u0645\u0646\u062a\u0634\u0631 \u0634\u062f.<\/p><p>\u0633\u067e\u0633 \u0634\u0631\u06a9\u062a \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u062c\u0645\u0644\u0647 Logitech (\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u06cc MIMOSA) \u0628\u0631\u0627\u06cc \u0628\u0647\u0628\u0648\u062f \u0627\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062f\u0646\u062f \u0648 \u062f\u0631\u0646\u0647\u0627\u06cc\u062a \u062f\u0631 \u0633\u0627\u0644 2006\u060c \u0646\u0645\u0648\u0646\u0647 \u06cc \u0639\u0645\u0648\u0645\u06cc \u0627\u06cc\u0646 \u0628\u0644\u0648\u062a\u0648\u062b \u0628\u0627 \u0646\u0627\u0645 Wibree \u0645\u0646\u062a\u0634\u0631 \u0634\u062f \u06a9\u0647 \u0645\u0635\u0631\u0641 \u0627\u0646\u0631\u0698\u06cc \u0622\u0646 \u062a\u0642\u0631\u06cc\u0628\u0627 10 \u0628\u0631\u0627\u0628\u0631 \u06a9\u0645 \u062a\u0631 \u0627\u0632 \u0628\u0644\u0648\u062a\u0648\u062b \u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644 \u0628\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3434754b elementor-widget elementor-widget-image\" data-id=\"3434754b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-wibree.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-wibree.png\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2Mjk1IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLXdpYnJlZS5wbmcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img width=\"300\" height=\"78\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-wibree.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ef704e9 elementor-widget elementor-widget-text-editor\" data-id=\"6ef704e9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u067e\u0633 \u0627\u0632 \u0645\u0630\u0627\u06a9\u0631\u0627\u062a \u0648 \u062a\u0648\u0627\u0641\u0642\u0627\u062a\u06cc \u06a9\u0647 \u0628\u0627\u00a0<a href=\"http:\/\/www.bluetooth.com\/\">Bluetooth Special Interest Group<\/a>\u00a0\u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u060c \u062f\u0631 \u0633\u0627\u0644 2010 \u0647\u0633\u062a\u0647 \u06cc \u0628\u0644\u0648\u062a\u0648\u062b \u0646\u0633\u062e\u0647 \u06cc 4 \u0628\u0627 \u0647\u0645\u0631\u0627\u0647 \u062f\u0627\u0634\u062a\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc \u0645\u0646\u062a\u0634\u0631 \u0634\u062f. \u0627\u06cc\u0646 \u0628\u0644\u0648\u062a\u0648\u062b \u0628\u0627 \u0646\u0627\u0645 Bluetooth Smart \u0646\u06cc\u0632 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1e20b2 elementor-widget elementor-widget-image\" data-id=\"a1e20b2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-bluetoothsmart.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-bluetoothsmart.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2Mjk2IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLWJsdWV0b290aHNtYXJ0LmpwZyJ9\">\n\t\t\t\t\t\t\t<img width=\"308\" height=\"134\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-bluetoothsmart.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2faaf2db elementor-widget elementor-widget-text-editor\" data-id=\"2faaf2db\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0627\u06a9\u062b\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0644\u0648\u062a\u0648\u062b \u0646\u0633\u062e\u0647 \u06cc 4 \u0648 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631 \u0631\u0627 \u062f\u0627\u0631\u0627 \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0631\u062a\u0628\u0627\u0637 BLE \u0631\u0627 \u0646\u06cc\u0632 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p><p>\u0645\u0642\u0627\u06cc\u0633\u0647 \u06cc \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0644\u0627\u0633\u06cc\u06a9 \u0648 \u06a9\u0645 \u0645\u0635\u0631\u0641 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u062c\u062f\u0648\u0644 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c20ebca elementor-widget elementor-widget-image\" data-id=\"4c20ebca\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-compare.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-compare.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2Mjk3IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLWNvbXBhcmUuanBnIn0%3D\">\n\t\t\t\t\t\t\t<img width=\"941\" height=\"800\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-compare.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74f5b8eb elementor-widget elementor-widget-heading\" data-id=\"74f5b8eb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0646\u06af\u0627\u0647 \u0627\u062c\u0645\u0627\u0644\u06cc \u0628\u0647 \u0645\u0639\u0645\u0627\u0631\u06cc BLE<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b69532d elementor-widget elementor-widget-text-editor\" data-id=\"b69532d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t\u067e\u0631\u0648\u062a\u06a9\u0644 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0645\u0635\u0631\u0641 \u0627\u0632 \u0628\u062e\u0634 \u0647\u0627 \u0648\u0644\u0627\u06cc\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0647\u062f\u0641 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u062a\u0646\u0647\u0627 \u0645\u0639\u0631\u0641\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u0647\u0645 \u0622\u0646 \u0627\u0633\u062a. \u062f\u0631\u0635\u0648\u0631\u062a \u0627\u062d\u062a\u06cc\u0627\u062c \u0628\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u06a9\u0627\u0645\u0644 \u062a\u0631 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0628\u0644\u0648\u062a\u0648\u062b ESP32 \u0648 \u0633\u0627\u06cc\u062a Bluetooth SIG \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-405e2e11 elementor-widget elementor-widget-shortcode\" data-id=\"405e2e11\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\"><div class='w3eden'><!-- WPDM Link Template: Default Template -->\n\n<div class=\"link-template-default card mb-2\">\n    <div class=\"card-body\">\n        <div class=\"media\">\n            <div class=\"mr-3 img-48\"><img class=\"wpdm_icon\" alt=\"Icon\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/plugins\/download-manager\/assets\/file-type-icons\/pdf.svg\" \/><\/div>\n            <div class=\"media-body\">\n                <h3 class=\"package-title\"><a href='https:\/\/thecaferobot.com\/learn\/download\/esp32_bluetooth_architecture_en-pdf\/'>esp32_bluetooth_architecture_en.pdf<\/a><\/h3>\n                <div class=\"text-muted text-small\"><i class=\"fas fa-copy\"><\/i> 1 file(s) <i class=\"fas fa-hdd ml-3\"><\/i> 850.07 KB<\/div>\n            <\/div>\n            <div class=\"ml-3\">\n                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl=\"https:\/\/thecaferobot.com\/learn\/download\/esp32_bluetooth_architecture_en-pdf\/?wpdmdl=15435&refresh=6a123e7f422db1779580543\">Download<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<\/div><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-510b7107 elementor-widget elementor-widget-heading\" data-id=\"510b7107\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0645\u0639\u0631\u0641\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644 GAP<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-24f3408c elementor-widget elementor-widget-text-editor\" data-id=\"24f3408c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>GAP\u00a0\u0645\u062e\u0641\u0641\u00a0Generic\u00a0Access\u00a0Profile\u00a0\u0627\u0633\u062a \u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0628\u0644\u0648\u062a\u0648\u062b \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u062f\u06cc\u06af\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0627\u0637\u0631\u0627\u0641\u060c\u00a0\u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 (Visible)\u00a0\u0645\u06cc \u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 GAP \u0646\u062d\u0648\u0647 \u06cc \u0627\u062a\u0635\u0627\u0644 \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u0628\u0627 \u0628\u0644\u0648\u062a\u0648\u062b \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p><p>GAP \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u00a0\u0686\u0647\u0627\u0631 \u0646\u0642\u0634\u00a0\u0645\u062e\u062a\u0644\u0641 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0642\u0634 \u0647\u0627 \u0631\u0627 \u062f\u0627\u0631\u0627 \u0628\u0627\u0634\u062f:<\/p><p>\u067e\u062e\u0634 \u06a9\u0646\u0646\u062f\u0647 (Broadcaster):\u00a0\u062f\u0633\u062a\u06af\u0627\u0647\u06cc \u06a9\u0647 \u0641\u0642\u0637 \u0648\u0638\u06cc\u0641\u0647 \u06cc \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc (packets)\u00a0\u0627\u0639\u0644\u0627\u0646 (advertising)\u00a0\u0631\u0627 \u062f\u0627\u0631\u062f \u062a\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0622\u0646 \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u062a\u0646\u0647\u0627 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 \u0647\u0627 \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u062f\u06cc\u06af\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<br \/>\u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u0647 (Observer):\u00a0\u0627\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0648\u0638\u06cc\u0641\u0647 \u06cc\u00a0\u0627\u0633\u06a9\u0646\u00a0\u06a9\u0631\u062f\u0646 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0627\u06cc \u06cc\u0627\u0641\u062a\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u067e\u062e\u0634 \u06a9\u0646\u0646\u062f\u0647 \u0648 \u06af\u0632\u0627\u0631\u0634 \u06a9\u0631\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0633\u06a9\u0646 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 (application) \u0631\u0627 \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u062a\u0646\u0647\u0627 \u0642\u0627\u062f\u0631 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0627\u0633\u06a9\u0646 \u0645\u06cc \u0628\u0627\u0634\u062f \u0648 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u062f\u06cc\u06af\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<br \/>\u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc (Peripheral):\u00a0\u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u062c\u0627\u0646\u0628\u06cc \u0645\u0639\u0645\u0648\u0644\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0648 \u06a9\u0645 \u0645\u0635\u0631\u0641\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u06cc (connectable advertising packets)\u060c \u0628\u0647 \u062f\u06cc\u06af\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0645\u062a\u0635\u0644 \u0634\u0648\u0646\u062f. \u067e\u0633 \u0627\u0632 \u0627\u062a\u0635\u0627\u0644\u060c \u0627\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646\u00a0\u0627\u0633\u0644\u06cc\u0648\u00a0(Slave)\u00a0\u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f. (\u0645\u062b\u0644: \u0633\u0646\u0633\u0648\u0631\u0647\u0627\u060c \u062a\u06af \u0647\u0627\u06cc \u0645\u062c\u0627\u0648\u0631\u062a\u06cc BLE \u0648 \u2026)<br \/>\u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc (Central):\u00a0\u0627\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u062f\u06cc\u06af\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0631\u0627 \u0622\u063a\u0627\u0632 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u00a0\u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646\u00a0\u0645\u0633\u062a\u0631 (Master)\u00a0\u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0645\u0639\u0645\u0648\u0644\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc\u060c \u062f\u0633\u062a\u06af\u0627\u0647\u06cc \u0628\u0627 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0628\u0627\u0644\u0627 \u0648 \u062d\u0627\u0641\u0638\u0647 \u06cc \u0632\u06cc\u0627\u062f \u0627\u0633\u062a (\u0645\u062b\u0644: \u06af\u0648\u0634\u06cc \u0647\u0627\u06cc \u062a\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647 \u0648 \u062a\u0628\u0644\u062a \u0647\u0627 \u0648 \u2026)<\/p><p>\u0627\u0632 \u0645\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0646\u0642\u0634 \u0647\u0627\u060c \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc\u00a0\u062c\u0627\u0646\u0628\u06cc\u00a0\u0648\u00a0\u0645\u0631\u06a9\u0632\u06cc\u00a0\u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0647\u0645 \u062a\u0631\u06cc \u062f\u0627\u0631\u0646\u062f.<\/p><p>\u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u062c\u0627\u0646\u0628\u06cc \u0628\u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc \u0645\u062a\u0635\u0644 \u0634\u0648\u0646\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9\u00a0\u0628\u0627\u0632\u0647 \u0647\u0627\u06cc \u0632\u0645\u0627\u0646\u06cc (advertising interval)\u00a0\u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0646 \u0632\u0645\u0627\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0633\u067e\u0633 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0632\u0647 \u0647\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 (advertising packets) \u0645\u06cc \u06a9\u0646\u0646\u062f (\u062f\u0631 \u0647\u0631 \u0628\u0627\u0632\u0647 \u06cc\u06a9 \u0628\u0627\u0631 \u0628\u0633\u062a\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f). \u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0647\u0627 \u062a\u0648\u0633\u0637 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u060c \u067e\u0627\u0633\u062e\u06cc \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc \u0628\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16a1837e elementor-widget elementor-widget-image\" data-id=\"16a1837e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-advertise-resized.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-advertise-resized.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2Mjk4IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLWFkdmVydGlzZS1yZXNpemVkLmpwZyJ9\">\n\t\t\t\t\t\t\t<img width=\"800\" height=\"282\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-advertise-resized.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e10198c elementor-widget elementor-widget-text-editor\" data-id=\"7e10198c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u062a\u0635\u0627\u0644 \u0628\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc \u0648 \u062c\u0627\u0646\u0628\u06cc \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u062f\u060c \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 \u062a\u0648\u0633\u0637 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc \u0642\u0637\u0639 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0628\u0627\u0642\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc\u060c \u062f\u06cc\u06af\u0631 \u0642\u0627\u062f\u0631 \u0628\u0647 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f.<\/p><p>\u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 GAP\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 GATT\u060c \u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u06cc\u0633\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-69856f0a elementor-widget elementor-widget-heading\" data-id=\"69856f0a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0645\u0639\u0631\u0641\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644 GATT<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2320b8a8 elementor-widget elementor-widget-text-editor\" data-id=\"2320b8a8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u0648\u0633\u06cc\u0644\u0647 \u06cc\u00a0GAP\u00a0\u062f\u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0645\u062a\u0635\u0644 \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632\u00a0GATT\u00a0\u0628\u0647 \u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u0646\u062f.<\/p><p>GATT\u00a0\u0645\u062e\u0641\u0641\u00a0Generic\u00a0Attribute Profile\u00a0\u0627\u0633\u062a. \u0648\u0638\u06cc\u0641\u0647 \u06cc GATT \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0646 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc\u00a0\u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u00a0\u062f\u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u062a\u0635\u0644 \u0634\u062f\u0647 \u0628\u0627 \u0628\u0644\u0648\u062a\u0648\u062b \u0647\u0627\u06cc \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc (BLE) \u0627\u0633\u062a.<\/p><p>\u062a\u0628\u0627\u062f\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 GATT \u062a\u0648\u0633\u0637 \u062f\u0648 \u0645\u0641\u0647\u0648\u0645 Services \u0648 Characteristics \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f.<\/p><p>GATT \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0645\u0639\u0631\u0648\u0641 Attribute Protocol \u06cc\u0627 \u0647\u0645\u0627\u0646\u00a0ATT\u00a0\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 Services \u0648 Characteristics \u0647\u0627 \u0648 \u062f\u06cc\u062a\u0627 \u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644\u06cc (LUT) \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64b10187 elementor-widget elementor-widget-heading\" data-id=\"64b10187\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0646\u062d\u0648\u0647 \u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0628\u0647 \u0648\u0633\u06cc\u0644\u0647 \u06cc GATT<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-584f3a59 elementor-widget elementor-widget-text-editor\" data-id=\"584f3a59\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0627\u0631\u062a\u0628\u0627\u0637\u06cc GATT \u0645\u0634\u0627\u0628\u0647 \u0627\u0631\u062a\u0628\u0627\u0637\u00a0\u0633\u0631\u0648\u0631 (Server)\u00a0\u0648\u00a0\u06a9\u0644\u0627\u06cc\u0646\u062a (Client)\u00a0\u062f\u0631 \u0645\u0628\u0627\u062d\u062b \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637\u060c \u0645\u06cc \u062a\u0648\u0627\u0646 \u0647\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u0631\u060c \u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u0627\u06cc\u0646\u062a \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a.<\/p><p>\u0647\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc (\u0633\u0631\u0648\u0631) \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u062c\u062f\u0648\u0644 ATT \u0648 \u0645\u0634\u062e\u0635\u0627\u062a (Characteristic) \u0648 \u062e\u062f\u0645\u0627\u062a (Service) \u0622\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0627\u0633\u062a.<\/p><p>\u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc \u0648 \u0645\u0631\u06a9\u0632\u06cc\u060c \u06cc\u06a9\u00a0\u0628\u0627\u0632\u0647 \u06cc \u0632\u0645\u0627\u0646\u06cc (Connection Interval)\u00a0\u0628\u0631\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0646 \u0632\u0645\u0627\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u062a\u0648\u0633\u0637 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc \u0634\u0648\u062f \u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0632\u0647 \u062e\u0637 \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f\u06cc \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a \u06cc\u0627 \u0646\u0647. \u0627\u0644\u0628\u062a\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc \u062f\u0631 \u0622\u0646 \u0628\u0627\u0632\u0647 \u06cc \u0632\u0645\u0627\u0646\u06cc \u0645\u0634\u063a\u0648\u0644 \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0645\u062b\u0644 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc \u0647\u0645\u06cc\u0634\u0647 \u0645\u0637\u06cc\u0639 \u0627\u06cc\u0646 \u0628\u0627\u0632\u0647 \u06cc \u0632\u0645\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a.<\/p><p>\u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u06cc \u0633\u0627\u062f\u0647 \u0627\u0632 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0648 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63c7f1c3 elementor-widget elementor-widget-image\" data-id=\"63c7f1c3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server-client.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-server-client.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2Mjk5IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLXNlcnZlci1jbGllbnQuanBnIn0%3D\">\n\t\t\t\t\t\t\t<img width=\"800\" height=\"201\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server-client.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ce8ace3 elementor-widget elementor-widget-text-editor\" data-id=\"1ce8ace3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0627\u0632 \u0634\u06a9\u0644 \u0641\u0648\u0642 \u0647\u0645 \u0645\u0634\u062e\u0635 \u0627\u0633\u062a\u060c \u0647\u0645\u0648\u0627\u0631\u0647 \u0634\u0631\u0648\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0631\u06a9\u0632\u06cc (\u0633\u0631\u0648\u0631) \u0627\u0633\u062a \u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u062c\u0627\u0646\u0628\u06cc (\u06a9\u0644\u0627\u06cc\u0646\u062a) \u0628\u0647 \u0622\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0627\u0633\u062e \u0645\u06cc \u062f\u0647\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1bf8f1b6 elementor-widget elementor-widget-heading\" data-id=\"1bf8f1b6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u067e\u0631\u0648\u0641\u0627\u06cc\u0644\u060c \u062e\u062f\u0645\u0627\u062a \u0648 \u0645\u0634\u062e\u0635\u0627\u062a<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48e091e1 elementor-widget elementor-widget-text-editor\" data-id=\"48e091e1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>GATT \u0634\u0627\u0645\u0644 \u0634\u0628\u06a9\u0647 \u0627\u06cc \u0627\u0632 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0647 \u0646\u0627\u0645 \u0647\u0627\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0647\u0627 (Profile)\u060c \u062e\u062f\u0645\u0627\u062a (Service) \u0648 \u0645\u0634\u062e\u0635\u0627\u062a (Characteristic) \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0633\u0644\u0633\u0644\u0647 \u0645\u0631\u0627\u062a\u0628\u06cc \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0645\u0631\u062a\u0628\u0637 \u0647\u0633\u062a\u0646\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e4c9eed elementor-widget elementor-widget-image\" data-id=\"e4c9eed\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-hierarchy.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-hierarchy.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzAwIiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLWhpZXJhcmNoeS5qcGcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img width=\"500\" height=\"453\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-hierarchy.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28da8c9 elementor-widget elementor-widget-heading\" data-id=\"28da8c9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0647\u0627\n\n<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d845d6 elementor-widget elementor-widget-text-editor\" data-id=\"d845d6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u062e\u062f\u0645\u0627\u062a \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062a\u0648\u0633\u0637 \u06af\u0631\u0648\u0647 Bluetooth SIG (\u06af\u0631\u0648\u0647 \u0645\u062a\u0648\u0644\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b) \u0648 \u06cc\u0627 \u062a\u0648\u0633\u0637 \u0637\u0631\u0627\u062d\u0627\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u062c\u0627\u0646\u0628\u06cc\u060c \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u0646\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0633\u0646\u0633\u0648\u0631 \u0647\u0627\u06cc \u0627\u0646\u062f\u0627\u0632\u0647 \u06af\u06cc\u0631\u06cc \u0641\u0634\u0627\u0631 \u062e\u0648\u0646 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632\u00a0\u0627\u06cc\u0646\u062c\u0627\u00a0\u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f23fdd elementor-widget elementor-widget-heading\" data-id=\"0f23fdd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u062e\u062f\u0645\u0627\u062a (\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627)\n\n<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-621c768 elementor-widget elementor-widget-text-editor\" data-id=\"621c768\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062e\u062f\u0645\u0627\u062a (Services)\u060c \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0633\u0627\u062f\u0647 (\u0645\u062b\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06cc\u06a9 \u0633\u0646\u0633\u0648\u0631) \u0647\u0633\u062a\u0646\u062f. \u0647\u0631 \u062e\u062f\u0645\u062a\u060c \u0628\u0647 \u0632\u06cc\u0631 \u0628\u062e\u0634 \u0647\u0627\u06cc\u06cc \u0628\u0647 \u0646\u0627\u0645 \u201c\u0645\u0634\u062e\u0635\u0627\u062a\u201d \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u0634\u0648\u062f.<\/p><p>\u062e\u062f\u0645\u0627\u062a \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u062c\u0645\u0644\u0647 \u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u06cc\u0632\u0627\u0646 \u0628\u0627\u062a\u0631\u06cc\u060c \u0641\u0634\u0627\u0631 \u062e\u0648\u0646\u060c \u0646\u0631\u062e \u0636\u0631\u0628\u0627\u0646 \u0642\u0644\u0628 \u0648 \u2026 \u062a\u0648\u0633\u0637 \u06af\u0631\u0648\u0647\u00a0 Bluetooth SIG \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0647\u0631 \u062e\u062f\u0645\u062a \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u06a9\u062f (ID) \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0628\u0647 \u0646\u0627\u0645 UUID \u0627\u0633\u062a. UUID \u0645\u06cc \u062a\u0648\u0627\u0646\u062f 16 \u0628\u06cc\u062a\u06cc (\u0628\u0631\u0627\u06cc \u062e\u062f\u0645\u0627\u062a \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0633\u0645\u06cc) \u0648 \u06cc\u0627 128 \u0628\u06cc\u062a\u06cc (\u0628\u0631\u0627\u06cc \u062e\u062f\u0645\u0627\u062a\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u062f\u06cc\u06af\u0631 \u0637\u0631\u0627\u062d\u0627\u0646 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u0634\u0648\u062f) \u0628\u0627\u0634\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 UUID 16 \u0628\u06cc\u062a\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0641\u0634\u0627\u0631 \u062e\u0648\u0646\u060c 0X1810 \u0627\u0633\u062a.<\/p><p>\u062c\u062f\u0648\u0644 \u06a9\u0627\u0645\u0644 \u062e\u062f\u0645\u0627\u062a \u0645\u062e\u062a\u0644\u0641\u06cc \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0633\u0645\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0646\u062f \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632\u00a0\u0627\u06cc\u0646\u062c\u0627\u00a0\u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f7e90d3 elementor-widget elementor-widget-heading\" data-id=\"f7e90d3\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0645\u0634\u062e\u0635\u0627\u062a<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b10b2a4 elementor-widget elementor-widget-text-editor\" data-id=\"b10b2a4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0647\u0631 \u062e\u062f\u0645\u062a \u0628\u0647 \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0645\u0634\u062e\u0635\u0647 (Characteristic ) \u0634\u06a9\u0633\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062a\u0627\u0628 \u062e\u0637\u06cc\u060c \u062f\u0627\u0631\u0627\u06cc 3 \u0645\u0634\u062e\u0635\u0647 \u06cc \u0634\u062a\u0627\u0628 \u062f\u0631 \u062c\u0647\u062a \u0645\u062d\u0648\u0631 x\u060c y \u0648 z \u0627\u0633\u062a.<\/p><p>\u0645\u0634\u0627\u0628\u0647 \u062e\u062f\u0645\u0627\u062a\u060c \u0645\u0634\u062e\u0635\u0627\u062a \u0646\u06cc\u0632 \u062f\u0627\u0631\u0627\u06cc UUID 16 \u06cc\u0627 128 \u0628\u06cc\u062a\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0647\u0633\u062a\u0646\u062f. \u062c\u062f\u0648\u0644 \u06a9\u0627\u0645\u0644 \u0645\u0634\u062e\u0635\u0627\u062a \u0631\u0633\u0645\u06cc \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631\u00a0\u0627\u06cc\u0646\u062c\u0627\u00a0\u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-14173c6c elementor-widget elementor-widget-heading\" data-id=\"14173c6c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0644\u0648\u0627\u0632\u0645\u06cc \u06a9\u0647 \u0628\u0647 \u0622\u0646 \u0627\u062d\u062a\u06cc\u0627\u062c \u062f\u0627\u0631\u06cc\u062f<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63e729a8 elementor-widget elementor-widget-image\" data-id=\"63e729a8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-required-materials.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-required-materials.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzAxIiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLXJlcXVpcmVkLW1hdGVyaWFscy5qcGcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img width=\"400\" height=\"400\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-required-materials.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4d1e268b elementor-widget elementor-widget-heading\" data-id=\"4d1e268b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0642\u0637\u0639\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32a8e13a elementor-widget elementor-widget-html\" data-id=\"32a8e13a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"table-2\">\r\n<table width=\"100%\" class=\"zebra\"><tbody><tr><td width=\"70%\">ESP32\r\n<\/td>\r\n\t<td class=\"center\" width=\"10%\">\u00d7<\/td>\r\n    <td class=\"center\" width=\"10%\">2<\/td>\r\n\t<td class=\"center\" width=\"10%\"><a href=\"http:\/\/thecaferobot.com\/store\/node-mcu-esp32-edition-wifi-module\" target=\"_blank\"><i class=\"fa fa-shopping-cart\" style=\"\"><\/i><\/a><\/td>\r\n<\/tr><\/tbody><\/table><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5b37a498 elementor-widget elementor-widget-text-editor\" data-id=\"5b37a498\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062a\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u062b\u0627\u0644 \u062f\u0648\u0645 \u0646\u06cc\u0627\u0632 \u0628\u0647 2 \u0645\u0627\u0698\u0648\u0644 ESP32 \u062f\u0627\u0631\u06cc\u062f. \u0628\u0627\u0642\u06cc \u0645\u062b\u0627\u0644 \u0647\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46b6b91f elementor-widget elementor-widget-heading\" data-id=\"46b6b91f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-62507320 elementor-widget elementor-widget-html\" data-id=\"62507320\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"table-2\">\r\n<table width=\"100%\" class=\"zebra\"><tbody><tr><td width=\"90%\">Arduino IDE<\/td>\r\n\t<td class=\"center\" width=\"10%\"><a href=\"https:\/\/www.arduino.cc\/en\/Main\/Software\" target=\"_blank\"><i class=\"fa fa-info\" style=\"\"><\/i><\/a><\/td>\r\n<\/tr><tr><td width=\"90%\">nRF Connect for Android<\/td>\r\n\t<td class=\"center\" width=\"10%\"><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=no.nordicsemi.android.mcp\" target=\"_blank\"><i class=\"fa fa-info\" style=\"\"><\/i><\/a><\/td>\r\n<\/tr><tr><td width=\"90%\">nRF Connect for IOS<\/td>\r\n\t<td class=\"center\" width=\"10%\"><a href=\"https:\/\/apps.apple.com\/us\/app\/nrf-connect\/id1054362403\" target=\"_blank\"><i class=\"fa fa-info\" style=\"\"><\/i><\/a><\/td>\r\n<\/tr><\/tbody><\/table><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4fe1b2b5 elementor-widget elementor-widget-heading\" data-id=\"4fe1b2b5\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u0645\u0627\u0698\u0648\u0644 ESP32 \u062f\u0631 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63f5b248 elementor-widget elementor-widget-text-editor\" data-id=\"63f5b248\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc (BLE) \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc\u00a0<strong>ESP32\u00a0<\/strong>\u0628\u0647 \u0648\u0633\u06cc\u0644\u0647 \u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u00a0<strong>Arduino IDE\u060c<\/strong> \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0631\u062f\u0647\u0627\u06cc ESP32 \u0631\u0627 \u0628\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p><p>\u0627\u06af\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 ESP32 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f <a href=\"https:\/\/thecaferobot.com\/learn\/getting-started-with-the-esp32\/\">\u0628\u0647\u00a0\u0622\u0645\u0648\u0632\u0634 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc ESP32\u00a0<\/a>\u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/p><p>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u06cc BLE library \u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u06a9\u0627\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc ESP32 \u062f\u0627\u0631\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-af9a368 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"af9a368\" data-element_type=\"section\">\r\n\t\t\t\r\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-row\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-462fdb47\" data-id=\"462fdb47\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\r\n\r\n\t\t\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\r\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1684e86c elementor-view-stacked elementor-widget__width-auto elementor-absolute elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"1684e86c\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<i aria-hidden=\"true\" class=\"fas fa-pen\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ed8b79e elementor-widget elementor-widget-heading\" data-id=\"3ed8b79e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">\u0646\u06a9\u062a\u0647<\/h5>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6e13d2fa elementor-widget elementor-widget-text-editor\" data-id=\"6e13d2fa\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06cc \u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u06cc\u00a0ESP32\u00a0\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0645\u0646\u0648\u06cc\u00a0Tools \u0646\u0648\u0639 \u0628\u0631\u062f \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/section>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-63098be5 elementor-widget elementor-widget-image\" data-id=\"63098be5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-lib.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-lib.png\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzAyIiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLWxpYi5wbmcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img width=\"652\" height=\"800\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-lib.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-51992e74 elementor-widget elementor-widget-heading\" data-id=\"51992e74\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u062f\u0631 \u0645\u062f \u0633\u0631\u0648\u0631<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b57d179 elementor-widget elementor-widget-text-editor\" data-id=\"4b57d179\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0627\u0632 \u0645\u0633\u06cc\u0631\u00a0<strong>File&gt;Examples&gt;ESP32 BLE Arduino<\/strong>\u00a0\u0645\u062b\u0627\u0644\u00a0<strong>BLE_server<\/strong> \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3414fcec elementor-widget elementor-widget-heading\" data-id=\"3414fcec\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u06a9\u062f<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19754bd elementor-widget elementor-widget-html\" data-id=\"19754bd\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>\/*\r\n    Based on Neil Kolban example for IDF: https:\/\/github.com\/nkolban\/esp32-snippets\/blob\/master\/cpp_utils\/tests\/BLE%20Tests\/SampleServer.cpp\r\n    Ported to Arduino ESP32 by Evandro Copercini\r\n    updates by chegewara\r\n*\/\r\n\r\n#include &lt;BLEDevice.h&gt;\r\n#include &lt;BLEUtils.h&gt;\r\n#include &lt;BLEServer.h&gt;\r\n\r\n\/\/ See the following for generating UUIDs:\r\n\/\/ https:\/\/www.uuidgenerator.net\/\r\n\r\n#define SERVICE_UUID        &quot;4fafc201-1fb5-459e-8fcc-c5c9c331914b&quot;\r\n#define CHARACTERISTIC_UUID &quot;beb5483e-36e1-4688-b7f5-ea07361b26a8&quot;\r\n\r\nvoid setup() {\r\n  Serial.begin(115200);\r\n  Serial.println(&quot;Starting BLE work!&quot;);\r\n\r\n  BLEDevice::init(&quot;Long name works now&quot;);\r\n  BLEServer *pServer = BLEDevice::createServer();\r\n  BLEService *pService = pServer-&gt;createService(SERVICE_UUID);\r\n  BLECharacteristic *pCharacteristic = pService-&gt;createCharacteristic(\r\n                                         CHARACTERISTIC_UUID,\r\n                                         BLECharacteristic::PROPERTY_READ |\r\n                                         BLECharacteristic::PROPERTY_WRITE\r\n                                       );\r\n\r\n  pCharacteristic-&gt;setValue(&quot;Hello World says Neil&quot;);\r\n  pService-&gt;start();\r\n  \/\/ BLEAdvertising *pAdvertising = pServer-&gt;getAdvertising();  \/\/ this still is working for backward compatibility\r\n  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();\r\n  pAdvertising-&gt;addServiceUUID(SERVICE_UUID);\r\n  pAdvertising-&gt;setScanResponse(true);\r\n  pAdvertising-&gt;setMinPreferred(0x06);  \/\/ functions that help with iPhone connections issue\r\n  pAdvertising-&gt;setMinPreferred(0x12);\r\n  BLEDevice::startAdvertising();\r\n  Serial.println(&quot;Characteristic defined! Now you can read it in your phone!&quot;);\r\n}\r\n\r\nvoid loop() {\r\n  \/\/ put your main code here, to run repeatedly:\r\n  delay(2000);\r\n}\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-768c6f00 elementor-widget elementor-widget-text-editor\" data-id=\"768c6f00\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062a\u0648\u0636\u06cc\u062d \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u062f<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a14c9a elementor-widget elementor-widget-html\" data-id=\"5a14c9a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>#include &lt;BLEDevice.h&gt;\r\n#include &lt;BLEUtils.h&gt;\r\n#include &lt;BLEServer.h&gt;\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-745e2b5 elementor-widget elementor-widget-text-editor\" data-id=\"745e2b5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0641\u0648\u0642\u060c \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0633\u0631\u0648\u0631 BLE \u0631\u0627 \u0628\u0647 \u06a9\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-66b9083 elementor-widget elementor-widget-html\" data-id=\"66b9083\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>#define SERVICE_UUID        \"4fafc201-1fb5-459e-8fcc-c5c9c331914b\"\r\n#define CHARACTERISTIC_UUID \"beb5483e-36e1-4688-b7f5-ea07361b26a8\"\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38611864 elementor-widget elementor-widget-text-editor\" data-id=\"38611864\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0645\u0637\u0627\u0628\u0642 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0641\u0648\u0642\u060c \u06cc\u06a9 UUID \u0628\u0631\u0627\u06cc Service \u0648 \u06cc\u06a9 UUID \u0628\u0631\u0627\u06cc Characteristic \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u062f\u0648 UUID \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0646\u062f\u0648\u0645 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0627\u0646\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f UUID \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646\u00a0<a href=\"https:\/\/www.uuidgenerator.net\/\">\u0633\u0627\u06cc\u062a<\/a>\u00a0\u0628\u0633\u0627\u0632\u06cc\u062f.<br \/>\u062f\u0631 \u0628\u062e\u0634 setup\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c142b56 elementor-widget elementor-widget-html\" data-id=\"c142b56\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>Serial.begin(115200);\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33bec4e3 elementor-widget elementor-widget-text-editor\" data-id=\"33bec4e3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06cc \u0646\u062a\u0627\u06cc\u062c \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u06cc \u0633\u0631\u06cc\u0627\u0644\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u0633\u0631\u06cc\u0627\u0644 \u0628\u0627 \u0628\u0627\u062f\u0631\u06cc\u062a 115200 \u0628\u06cc\u062a \u0628\u0631 \u062b\u0627\u0646\u06cc\u0647 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b7a2dce elementor-widget elementor-widget-html\" data-id=\"b7a2dce\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>BLEDevice::init(\"Long name works now\");\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-31c29145 elementor-widget elementor-widget-text-editor\" data-id=\"31c29145\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t\u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code class=\"lang-arduino\">init<\/code> \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0627\u0645 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0647 \u062c\u0627\u06cc \u0639\u0628\u0627\u0631\u062a \u201cLong name works now\u201d \u0646\u0627\u0645 \u0645\u062f\u0646\u0638\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23cb5df elementor-widget elementor-widget-html\" data-id=\"23cb5df\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>BLEServer *pServer = BLEDevice::createServer();\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-55324ff0 elementor-widget elementor-widget-text-editor\" data-id=\"55324ff0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u0633\u0631\u0648\u0631\u06cc \u0628\u0627 \u0646\u0627\u0645\u06cc \u06a9\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-345f5dc elementor-widget elementor-widget-html\" data-id=\"345f5dc\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>BLEService *pService = pServer->createService(SERVICE_UUID);\r\nBLECharacteristic *pCharacteristic = pService->createCharacteristic(\r\n                                       CHARACTERISTIC_UUID,\r\n                                       BLECharacteristic::PROPERTY_READ |\r\n                                       BLECharacteristic::PROPERTY_WRITE\r\n                                       );\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25f28d78 elementor-widget elementor-widget-text-editor\" data-id=\"25f28d78\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062f\u0648 \u062f\u0633\u062a\u0648\u0631 \u0641\u0648\u0642 Service \u0648 Characteristic \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<br \/>PROPERTY_READ\u060c PROPERTY_WRITE \u0648 \u2026 \u0627\u062c\u0627\u0632\u0647 \u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 Characteristic \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0645\u062b\u0644\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 Characteristic\u060c \u06a9\u0644\u0627\u06cc\u0646\u062a\u06cc \u06a9\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0645\u062a\u0635\u0644 \u0645\u06cc \u0634\u0648\u062f\u060c \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0642\u062f\u0627\u0631 Characteristic \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u062f \u0648 \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u062f.<br \/>\u0628\u0639\u062f \u0627\u0632 \u0633\u0627\u062e\u062a Characteristic \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0645\u062a\u062f\u00a0setValue()\u00a0\u0628\u0647 \u0622\u0646 \u0645\u0642\u062f\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19ac10d elementor-widget elementor-widget-html\" data-id=\"19ac10d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>pCharacteristic->setValue(\"Hello World says Neil\");\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7882aeeb elementor-widget elementor-widget-text-editor\" data-id=\"7882aeeb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u0642\u062f\u0627\u0631 Characteristic \u06cc\u06a9 \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 (Hello World says Neil) \u0627\u0633\u062a. \u0634\u0645\u0627 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0645\u062a\u0646 \u062f\u06cc\u06af\u0631 \u0648 \u06cc\u0627 \u0645\u0642\u062f\u0627\u0631 \u062e\u0631\u0648\u062c\u06cc \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0633\u0646\u0633\u0648\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a6d3605 elementor-widget elementor-widget-html\" data-id=\"a6d3605\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>pService->start();\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-69072f9a elementor-widget elementor-widget-text-editor\" data-id=\"69072f9a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t\u067e\u0633 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0631\u0648\u0631\u060c \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u00a0<code>start()<\/code>\u00a0\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.\n\u067e\u0633 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0633\u0631\u0648\u0631\u060c \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u062a\u0627 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0648\u0633\u062a\u0647 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 (Advertising) \u06a9\u0646\u062f \u062a\u0627 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u062f\u06cc\u06af\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0628\u0627\u0634\u062f.\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c12f40 elementor-widget elementor-widget-html\" data-id=\"0c12f40\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-510be4c6 elementor-widget elementor-widget-text-editor\" data-id=\"510be4c6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u06a9\u062f \u0641\u0648\u0642 \u0648\u0638\u06cc\u0641\u0647 \u06cc \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f.<br \/>\u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u06cc \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0633\u0631\u0648\u0631 BLE \u0627\u0633\u062a \u0648 \u062f\u0631 \u0628\u062e\u0634 loop() \u06a9\u062f\u060c \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc \u0634\u0648\u062f. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f\u060c \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0631\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u0646\u06cc\u062f. (\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0628\u0647 BLE_notify \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.)<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4cfce1e2 elementor-widget elementor-widget-heading\" data-id=\"4cfce1e2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u06cc\u0627\u0641\u062a\u0646 \u0633\u0631\u0648\u0631 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0627 \u06af\u0648\u0634\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-71580a77 elementor-widget elementor-widget-text-editor\" data-id=\"71580a77\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0645\u0646 \u0627\u0628\u062a\u062f\u0627 \u0646\u0627\u0645 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0647 \u201cMy_ESP32_Server\u201d \u0648 Characteristic \u0631\u0627 \u0628\u0647 \u201d Hello World from Electropeak \u201d \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0645. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0634\u062e\u0635\u0627\u062a \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p><p>\u067e\u0633 \u0627\u0632 \u0622\u067e\u0644\u0648\u062f \u06a9\u062f \u0631\u0648\u06cc ESP32\u060c \u0628\u0644\u0648\u062a\u0648\u062b \u06af\u0648\u0634\u06cc \u062e\u0648\u062f \u0631\u0627 \u0631\u0648\u0634\u0646 \u06a9\u0631\u062f\u0647 \u0648 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u00a0nRF Connect\u00a0(\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062f\u06cc\u06af\u0631 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f) \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0627\u0633\u06a9\u0646 BLE \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fe49c64 elementor-widget elementor-widget-image\" data-id=\"fe49c64\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server1.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-server1.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzAzIiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLXNlcnZlcjEuanBnIn0%3D\">\n\t\t\t\t\t\t\t<img width=\"369\" height=\"800\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server1.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b10b4dd elementor-widget elementor-widget-text-editor\" data-id=\"3b10b4dd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u06a9\u0644\u06cc\u062f \u201cCONNECT\u201d \u0631\u0627 \u0628\u0632\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f. \u067e\u0633 \u0627\u0632 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06cc \u0645\u0642\u062f\u0627\u0631 Characteristic\u060c \u0641\u0644\u0634 \u0628\u0647 \u0633\u0645\u062a \u067e\u0627\u06cc\u06cc\u0646 \u0631\u0627 \u062f\u0631 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f. (\u0641\u0644\u0634 \u062f\u0627\u0631\u0627\u06cc \u06a9\u0627\u062f\u0631 \u0633\u0628\u0632 \u062f\u0631 \u0634\u06a9\u0644 \u0632\u06cc\u0631)<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3787e5be elementor-widget elementor-widget-image\" data-id=\"3787e5be\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server2.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-server2.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzA0IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLXNlcnZlcjIuanBnIn0%3D\">\n\t\t\t\t\t\t\t<img width=\"369\" height=\"800\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server2.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ade3fcd elementor-widget elementor-widget-heading\" data-id=\"1ade3fcd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u062f\u0631 \u0645\u062f \u06a9\u0644\u0627\u06cc\u0646\u062a<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e1a40c2 elementor-widget elementor-widget-text-editor\" data-id=\"1e1a40c2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0627\u0632 \u0645\u0633\u06cc\u0631 \u0645\u062b\u0627\u0644\u0647\u0627\u060c \u0645\u062b\u0627\u0644 BLE_client \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9211432 elementor-widget elementor-widget-heading\" data-id=\"9211432\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">\u06a9\u062f<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-340d88c elementor-widget elementor-widget-html\" data-id=\"340d88c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>\/**\r\n * A BLE client example that is rich in capabilities.\r\n * There is a lot new capabilities implemented.\r\n * author unknown\r\n * updated by chegewara\r\n *\/\r\n\r\n#include \"BLEDevice.h\"\r\n\/\/#include \"BLEScan.h\"\r\n\r\n\/\/ The remote service we wish to connect to.\r\nstatic BLEUUID serviceUUID(\"4fafc201-1fb5-459e-8fcc-c5c9c331914b\");\r\n\/\/ The characteristic of the remote service we are interested in.\r\nstatic BLEUUID    charUUID(\"beb5483e-36e1-4688-b7f5-ea07361b26a8\");\r\n\r\nstatic boolean doConnect = false;\r\nstatic boolean connected = false;\r\nstatic boolean doScan = false;\r\nstatic BLERemoteCharacteristic* pRemoteCharacteristic;\r\nstatic BLEAdvertisedDevice* myDevice;\r\n\r\nstatic void notifyCallback(\r\n  BLERemoteCharacteristic* pBLERemoteCharacteristic,\r\n  uint8_t* pData,\r\n  size_t length,\r\n  bool isNotify) {\r\n    Serial.print(\"Notify callback for characteristic \");\r\n    Serial.print(pBLERemoteCharacteristic->getUUID().toString().c_str());\r\n    Serial.print(\" of data length \");\r\n    Serial.println(length);\r\n    Serial.print(\"data: \");\r\n    Serial.println((char*)pData);\r\n}\r\n\r\nclass MyClientCallback : public BLEClientCallbacks {\r\n  void onConnect(BLEClient* pclient) {\r\n  }\r\n\r\n  void onDisconnect(BLEClient* pclient) {\r\n    connected = false;\r\n    Serial.println(\"onDisconnect\");\r\n  }\r\n};\r\n\r\nbool connectToServer() {\r\n    Serial.print(\"Forming a connection to \");\r\n    Serial.println(myDevice->getAddress().toString().c_str());\r\n    \r\n    BLEClient*  pClient  = BLEDevice::createClient();\r\n    Serial.println(\" - Created client\");\r\n\r\n    pClient->setClientCallbacks(new MyClientCallback());\r\n\r\n    \/\/ Connect to the remove BLE Server.\r\n    pClient->connect(myDevice);  \/\/ if you pass BLEAdvertisedDevice instead of address, it will be recognized type of peer device address (public or private)\r\n    Serial.println(\" - Connected to server\");\r\n\r\n    \/\/ Obtain a reference to the service we are after in the remote BLE server.\r\n    BLERemoteService* pRemoteService = pClient->getService(serviceUUID);\r\n    if (pRemoteService == nullptr) {\r\n      Serial.print(\"Failed to find our service UUID: \");\r\n      Serial.println(serviceUUID.toString().c_str());\r\n      pClient->disconnect();\r\n      return false;\r\n    }\r\n    Serial.println(\" - Found our service\");\r\n\r\n\r\n    \/\/ Obtain a reference to the characteristic in the service of the remote BLE server.\r\n    pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID);\r\n    if (pRemoteCharacteristic == nullptr) {\r\n      Serial.print(\"Failed to find our characteristic UUID: \");\r\n      Serial.println(charUUID.toString().c_str());\r\n      pClient->disconnect();\r\n      return false;\r\n    }\r\n    Serial.println(\" - Found our characteristic\");\r\n\r\n    \/\/ Read the value of the characteristic.\r\n    if(pRemoteCharacteristic->canRead()) {\r\n      std::string value = pRemoteCharacteristic->readValue();\r\n      Serial.print(\"The characteristic value was: \");\r\n      Serial.println(value.c_str());\r\n    }\r\n\r\n    if(pRemoteCharacteristic->canNotify())\r\n      pRemoteCharacteristic->registerForNotify(notifyCallback);\r\n\r\n    connected = true;\r\n}\r\n\/**\r\n * Scan for BLE servers and find the first one that advertises the service we are looking for.\r\n *\/\r\nclass MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {\r\n \/**\r\n   * Called for each advertising BLE server.\r\n   *\/\r\n  void onResult(BLEAdvertisedDevice advertisedDevice) {\r\n    Serial.print(\"BLE Advertised Device found: \");\r\n    Serial.println(advertisedDevice.toString().c_str());\r\n\r\n    \/\/ We have found a device, let us now see if it contains the service we are looking for.\r\n    if (advertisedDevice.haveServiceUUID() && advertisedDevice.isAdvertisingService(serviceUUID)) {\r\n\r\n      BLEDevice::getScan()->stop();\r\n      myDevice = new BLEAdvertisedDevice(advertisedDevice);\r\n      doConnect = true;\r\n      doScan = true;\r\n\r\n    } \/\/ Found our server\r\n  } \/\/ onResult\r\n}; \/\/ MyAdvertisedDeviceCallbacks\r\n\r\n\r\nvoid setup() {\r\n  Serial.begin(115200);\r\n  Serial.println(\"Starting Arduino BLE Client application...\");\r\n  BLEDevice::init(\"\");\r\n\r\n  \/\/ Retrieve a Scanner and set the callback we want to use to be informed when we\r\n  \/\/ have detected a new device.  Specify that we want active scanning and start the\r\n  \/\/ scan to run for 5 seconds.\r\n  BLEScan* pBLEScan = BLEDevice::getScan();\r\n  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());\r\n  pBLEScan->setInterval(1349);\r\n  pBLEScan->setWindow(449);\r\n  pBLEScan->setActiveScan(true);\r\n  pBLEScan->start(5, false);\r\n} \/\/ End of setup.\r\n\r\n\r\n\/\/ This is the Arduino main loop function.\r\nvoid loop() {\r\n\r\n  \/\/ If the flag \"doConnect\" is true then we have scanned for and found the desired\r\n  \/\/ BLE Server with which we wish to connect.  Now we connect to it.  Once we are \r\n  \/\/ connected we set the connected flag to be true.\r\n  if (doConnect == true) {\r\n    if (connectToServer()) {\r\n      Serial.println(\"We are now connected to the BLE Server.\");\r\n    } else {\r\n      Serial.println(\"We have failed to connect to the server; there is nothin more we will do.\");\r\n    }\r\n    doConnect = false;\r\n  }\r\n\r\n  \/\/ If we are connected to a peer BLE Server, update the characteristic each time we are reached\r\n  \/\/ with the current time since boot.\r\n  if (connected) {\r\n    String newValue = \"Time since boot: \" + String(millis()\/1000);\r\n    Serial.println(\"Setting new characteristic value to \\\"\" + newValue + \"\\\"\");\r\n    \r\n    \/\/ Set the characteristic's value to be the array of bytes that is actually a string.\r\n    pRemoteCharacteristic->writeValue(newValue.c_str(), newValue.length());\r\n  }else if(doScan){\r\n    BLEDevice::getScan()->start(0);  \/\/ this is just eample to start scan after disconnect, most likely there is better way to do it in arduino\r\n  }\r\n  \r\n  delay(1000); \/\/ Delay a second between loops.\r\n} \/\/ End of loop\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-522f3daf elementor-widget elementor-widget-heading\" data-id=\"522f3daf\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">\u062a\u0648\u0636\u06cc\u062d \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u062f<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8fddf66 elementor-widget elementor-widget-html\" data-id=\"8fddf66\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>#include \"BLEDevice.h\"\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-482f663e elementor-widget elementor-widget-text-editor\" data-id=\"482f663e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u06cc BLEDevice \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6a5ba8 elementor-widget elementor-widget-html\" data-id=\"b6a5ba8\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>static BLEUUID serviceUUID(\"4fafc201-1fb5-459e-8fcc-c5c9c331914b\");\r\nstatic BLEUUID    charUUID(\"beb5483e-36e1-4688-b7f5-ea07361b26a8\");\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5fbf613e elementor-widget elementor-widget-text-editor\" data-id=\"5fbf613e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0645\u0634\u0627\u0628\u0647 \u062d\u0627\u0644\u062a \u0633\u0631\u0648\u0631\u060c \u0628\u0627 \u062f\u0648 \u062e\u0637 \u0641\u0648\u0642 UUID \u0647\u0627\u06cc Service \u0648 Characteristic \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 UUID \u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0633\u0631\u0648\u0631 \u06cc\u06a9\u06cc \u0628\u0627\u0634\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-303cd59 elementor-widget elementor-widget-html\" data-id=\"303cd59\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>static void notifyCallback(\r\n  BLERemoteCharacteristic* pBLERemoteCharacteristic,\r\n  uint8_t* pData,\r\n  size_t length,\r\n  bool isNotify) {\r\n    Serial.print(\"Notify callback for characteristic \");\r\n    Serial.print(pBLERemoteCharacteristic->getUUID().toString().c_str());\r\n    Serial.print(\" of data length \");\r\n    Serial.println(length);\r\n    Serial.print(\"data: \");\r\n    Serial.println((char*)pData);\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b2a6c27 elementor-widget elementor-widget-text-editor\" data-id=\"1b2a6c27\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t\u062a\u0627\u0628\u0639 <code>notifyCallback<\/code> \u0628\u0631\u0627\u06cc \u0646\u0648\u062a\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 \u062f\u0627\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 Characteristic \u062e\u0648\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f45bf6a elementor-widget elementor-widget-html\" data-id=\"f45bf6a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {\r\n \/**\r\n   * Called for each advertising BLE server.\r\n   *\/\r\n  void onResult(BLEAdvertisedDevice advertisedDevice) {\r\n    Serial.print(\"BLE Advertised Device found: \");\r\n    Serial.println(advertisedDevice.toString().c_str());\r\n\r\n    \/\/ We have found a device, let us now see if it contains the service we are looking for.\r\n    if (advertisedDevice.haveServiceUUID() && advertisedDevice.isAdvertisingService(serviceUUID)) {\r\n\r\n      BLEDevice::getScan()->stop();\r\n      myDevice = new BLEAdvertisedDevice(advertisedDevice);\r\n      doConnect = true;\r\n      doScan = true;\r\n\r\n    } \/\/ Found our server\r\n  } \/\/ onResult\r\n}; \/\/ MyAdvertisedDeviceCallbacks\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-362b7343 elementor-widget elementor-widget-text-editor\" data-id=\"362b7343\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u06a9\u0644\u0627\u0633 \u0641\u0648\u0642\u060c \u0645\u062d\u06cc\u0637 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06cc\u0627\u0641\u062a\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u06a9\u0647 Service \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u062c\u0633\u062a\u062c\u0648 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0628\u0631\u0631\u0648\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0631\u0648\u0631 \u0647\u0627\u06cc \u0627\u0637\u0631\u0627\u0641 \u0686\u06a9 \u0645\u06cc \u0634\u0648\u062f \u062a\u0627 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 Service \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0645\u0627 \u0631\u0627 \u062f\u0627\u0631\u062f\u060c \u067e\u06cc\u062f\u0627 \u0634\u0648\u062f \u0648 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0639\u062f \u0627\u0632 \u06cc\u0627\u0641\u062a\u0646 \u0633\u0631\u0648\u0631 \u0645\u0648\u0631\u062f \u0646\u0638\u0631\u060c \u0627\u0633\u06a9\u0646 \u0645\u062d\u06cc\u0637 \u0631\u0627 \u0642\u0637\u0639 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\u062f\u0631 \u0628\u062e\u0634 setup \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d5a78ed elementor-widget elementor-widget-html\" data-id=\"d5a78ed\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>void loop() {\r\n  if (doConnect == true) {\r\n    if (connectToServer()) {\r\n      Serial.println(\"We are now connected to the BLE Server.\");\r\n    } else {\r\n      Serial.println(\"We have failed to connect to the server; there is nothin more we will do.\");\r\n    }\r\n    doConnect = false;\r\n  }\r\n  if (connected) {\r\n    String newValue = \"Time since boot: \" + String(millis()\/1000);\r\n    Serial.println(\"Setting new characteristic value to \\\"\" + newValue + \"\\\"\");\r\n    \r\n    \/\/ Set the characteristic's value to be the array of bytes that is actually a string.\r\n    pRemoteCharacteristic->writeValue(newValue.c_str(), newValue.length());\r\n  }else if(doScan){\r\n    BLEDevice::getScan()->start(0);  \/\/ this is just eample to start scan after disconnect, most likely there is better way to do it in arduino\r\n  }\r\n  \r\n  delay(1000); \/\/ Delay a second between loops.\r\n}\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c7a83bd elementor-widget elementor-widget-text-editor\" data-id=\"6c7a83bd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062f\u0631 \u0628\u062e\u0634 loop \u0627\u06af\u0631 \u067e\u0631\u0686\u0645 (flag) doConnect \u062f\u0627\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631 true \u0628\u0627\u0634\u062f\u060c \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0633\u0631\u0648\u0631 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0645\u06cc \u06af\u0631\u062f\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0622\u0646 \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<br \/>\u0628\u0639\u062f \u0627\u0632 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u0648\u0631\u062f\u0646\u0638\u0631\u060c \u0647\u0631 \u062b\u0627\u0646\u06cc\u0647 \u06cc\u06a9 \u0628\u0627\u0631 \u0645\u0642\u062f\u0627\u0631 Characteristic \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f Characteristic \u062f\u0631 \u0647\u0631 \u0644\u062d\u0638\u0647 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a \u0628\u0627 \u0632\u0645\u0627\u0646 \u0633\u067e\u0631\u06cc \u0634\u062f\u0647 \u0627\u0632 \u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 ESP32. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u062f\u0644\u062e\u0648\u0627\u0647 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-67ee0488 elementor-widget elementor-widget-heading\" data-id=\"67ee0488\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u0627\u062a\u0635\u0627\u0644 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0648 \u06cc\u06a9 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0647 \u0647\u0645<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-10f494db elementor-widget elementor-widget-text-editor\" data-id=\"10f494db\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0631\u0648\u06cc \u06cc\u06a9 ESP32 \u06a9\u062f \u0633\u0631\u0648\u0631 \u0648 \u0631\u0648\u06cc \u062f\u06cc\u06af\u0631\u06cc \u06a9\u062f \u06a9\u0644\u0627\u06cc\u0646\u062a \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633 \u067e\u0646\u062c\u0631\u0647 \u06cc \u0633\u0631\u06cc\u0627\u0644 ESP32 \u06a9\u0647 \u0631\u0648 \u0622\u0646 \u06a9\u062f \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u0633\u062a \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-41acd3ad elementor-widget elementor-widget-image\" data-id=\"41acd3ad\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server-client2.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-server-client2.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzA1IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLXNlcnZlci1jbGllbnQyLmpwZyJ9\">\n\t\t\t\t\t\t\t<img width=\"1000\" height=\"478\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-server-client2.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2dc7d239 elementor-widget elementor-widget-text-editor\" data-id=\"2dc7d239\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u06a9\u0644\u0627\u06cc\u0646\u062a\u060c \u062f\u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u0633\u0631\u0648\u0631 BLE \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0627\u0645\u0627 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 UUID \u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0633\u0631\u0648\u0631 My_ESP32_Server \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a\u060c \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0645\u062a\u0635\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36e72253 elementor-widget elementor-widget-heading\" data-id=\"36e72253\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u062f\u0631 \u0645\u062f notify<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63fd4a29 elementor-widget elementor-widget-text-editor\" data-id=\"63fd4a29\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a ESP32 \u00a0\u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a \u0639\u0627\u062f\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u06cc \u06a9\u0646\u062f \u0648\u0644\u06cc \u062f\u0631 \u062d\u0627\u0644\u062a notify \u062a\u0642\u0631\u06cc\u0628\u0627 \u0628\u0631\u0639\u06a9\u0633 \u0627\u06cc\u0646 \u0627\u062a\u0641\u0627\u0642 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u062e\u0648\u0627\u0647\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 (\u0645\u062b\u0644\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0645\u0627)\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0628\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u062f.<\/p><p>\u0627\u0632 \u0645\u0633\u06cc\u0631 \u0645\u062b\u0627\u0644\u0647\u0627\u060c \u0645\u062b\u0627\u0644\u00a0<strong>BLE_notify\u00a0<\/strong>\u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-264a8124 elementor-widget elementor-widget-heading\" data-id=\"264a8124\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u06a9\u062f<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9073ec7 elementor-widget elementor-widget-html\" data-id=\"9073ec7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class=\"line-numbers lang-arduino\"><code>\/*\r\n    Video: https:\/\/www.youtube.com\/watch?v=oCMOYS71NIU\r\n    Based on Neil Kolban example for IDF: https:\/\/github.com\/nkolban\/esp32-snippets\/blob\/master\/cpp_utils\/tests\/BLE%20Tests\/SampleNotify.cpp\r\n    Ported to Arduino ESP32 by Evandro Copercini\r\n    updated by chegewara\r\n\r\n   Create a BLE server that, once we receive a connection, will send periodic notifications.\r\n   The service advertises itself as: 4fafc201-1fb5-459e-8fcc-c5c9c331914b\r\n   And has a characteristic of: beb5483e-36e1-4688-b7f5-ea07361b26a8\r\n\r\n   The design of creating the BLE server is:\r\n   1. Create a BLE Server\r\n   2. Create a BLE Service\r\n   3. Create a BLE Characteristic on the Service\r\n   4. Create a BLE Descriptor on the characteristic\r\n   5. Start the service.\r\n   6. Start advertising.\r\n\r\n   A connect hander associated with the server starts a background task that performs notification\r\n   every couple of seconds.\r\n*\/\r\n#include &lt;BLEDevice.h&gt;\r\n#include &lt;BLEServer.h&gt;\r\n#include &lt;BLEUtils.h&gt;\r\n#include &lt;BLE2902.h&gt;\r\n\r\nBLEServer* pServer = NULL;\r\nBLECharacteristic* pCharacteristic = NULL;\r\nbool deviceConnected = false;\r\nbool oldDeviceConnected = false;\r\nuint32_t value = 0;\r\n\r\n\/\/ See the following for generating UUIDs:\r\n\/\/ https:\/\/www.uuidgenerator.net\/\r\n\r\n#define SERVICE_UUID        \"4fafc201-1fb5-459e-8fcc-c5c9c331914b\"\r\n#define CHARACTERISTIC_UUID \"beb5483e-36e1-4688-b7f5-ea07361b26a8\"\r\n\r\n\r\nclass MyServerCallbacks: public BLEServerCallbacks {\r\n    void onConnect(BLEServer* pServer) {\r\n      deviceConnected = true;\r\n    };\r\n\r\n    void onDisconnect(BLEServer* pServer) {\r\n      deviceConnected = false;\r\n    }\r\n};\r\n\r\n\r\n\r\nvoid setup() {\r\n  Serial.begin(115200);\r\n\r\n  \/\/ Create the BLE Device\r\n  BLEDevice::init(\"ESP32\");\r\n\r\n  \/\/ Create the BLE Server\r\n  pServer = BLEDevice::createServer();\r\n  pServer->setCallbacks(new MyServerCallbacks());\r\n\r\n  \/\/ Create the BLE Service\r\n  BLEService *pService = pServer->createService(SERVICE_UUID);\r\n\r\n  \/\/ Create a BLE Characteristic\r\n  pCharacteristic = pService->createCharacteristic(\r\n                      CHARACTERISTIC_UUID,\r\n                      BLECharacteristic::PROPERTY_READ   |\r\n                      BLECharacteristic::PROPERTY_WRITE  |\r\n                      BLECharacteristic::PROPERTY_NOTIFY |\r\n                      BLECharacteristic::PROPERTY_INDICATE\r\n                    );\r\n\r\n  \/\/ https:\/\/www.bluetooth.com\/specifications\/gatt\/viewer?attributeXmlFile=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml\r\n  \/\/ Create a BLE Descriptor\r\n  pCharacteristic->addDescriptor(new BLE2902());\r\n\r\n  \/\/ Start the service\r\n  pService->start();\r\n\r\n  \/\/ Start advertising\r\n  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();\r\n  pAdvertising->addServiceUUID(SERVICE_UUID);\r\n  pAdvertising->setScanResponse(false);\r\n  pAdvertising->setMinPreferred(0x0);  \/\/ set value to 0x00 to not advertise this parameter\r\n  BLEDevice::startAdvertising();\r\n  Serial.println(\"Waiting a client connection to notify...\");\r\n}\r\n\r\nvoid loop() {\r\n    \/\/ notify changed value\r\n    if (deviceConnected) {\r\n        pCharacteristic->setValue((uint8_t*)&value, 4);\r\n        pCharacteristic->notify();\r\n        value++;\r\n        delay(1000); \/\/ bluetooth stack will go into congestion, if too many packets are sent, in 6 hours test i was able to go as low as 3ms\r\n    }\r\n    \/\/ disconnecting\r\n    if (!deviceConnected && oldDeviceConnected) {\r\n        delay(500); \/\/ give the bluetooth stack the chance to get things ready\r\n        pServer->startAdvertising(); \/\/ restart advertising\r\n        Serial.println(\"start advertising\");\r\n        oldDeviceConnected = deviceConnected;\r\n    }\r\n    \/\/ connecting\r\n    if (deviceConnected && !oldDeviceConnected) {\r\n        \/\/ do stuff here on connecting\r\n        oldDeviceConnected = deviceConnected;\r\n    }\r\n}\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4d0479c3 elementor-widget elementor-widget-heading\" data-id=\"4d0479c3\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">\u062a\u0648\u0636\u06cc\u062d \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u062f<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-11da32f elementor-widget elementor-widget-text-editor\" data-id=\"11da32f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t\u067e\u0633 \u0627\u0632 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0627\u06cc\u062f UUID \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc Service \u0648\u00a0 Characteristic \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.\n<pre class=\"line-numbers lang-arduino\"><code>class MyServerCallbacks: public BLEServerCallbacks {\nvoid onConnect(BLEServer* pServer) {\ndeviceConnected = true;\n};\n\nvoid onDisconnect(BLEServer* pServer) {\ndeviceConnected = false;\n}\n};\n<\/code><\/pre>\n\u06a9\u0644\u0627\u0633 MyServerCallbacks \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u062a\u0635\u0627\u0644 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u0642\u062f\u0627\u0631 \u0645\u062a\u063a\u06cc\u0631 deviceConnected \u0631\u0627 true \u0648 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0631\u0627 false \u0645\u06cc \u06a9\u0646\u062f.\n\u062f\u0631 \u0628\u062e\u0634 setup \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0647\u0645 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u060c ESP32 \u062f\u0631 \u062d\u0627\u0644\u062a \u0633\u0631\u0648\u0631 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.\n<pre class=\"line-numbers lang-arduino\"><code>BLEDevice::init(\"ESP32\");<\/code><\/pre>\n\u0646\u0627\u0645 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u06a9\u062f \u0641\u0648\u0642 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.\n<pre class=\"line-numbers lang-arduino\"><code>pServer = BLEDevice::createServer();\npServer-&gt;setCallbacks(new MyServerCallbacks());\n<\/code><\/pre>\n\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0648 \u062e\u0637 \u0641\u0648\u0642\u060c \u0633\u0631\u0648\u0631\u06cc \u0628\u0627 \u0646\u0627\u0645\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f.\n<pre class=\"line-numbers lang-arduino\"><code>BLEService *pService = pServer->createService(SERVICE_UUID);\n<\/code><\/pre>\n\n\u0633\u067e\u0633 \u0633\u0631\u0648\u06cc\u0633\u06cc \u0628\u0627 UUID \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f.\n<pre class=\"line-numbers lang-arduino\"><code><div data-settings=\" show\">pCharacteristic = pService-&gt;createCharacteristic(\nCHARACTERISTIC_UUID,\nBLECharacteristic::PROPERTY_READ |\nBLECharacteristic::PROPERTY_WRITE |\nBLECharacteristic::PROPERTY_NOTIFY |\nBLECharacteristic::PROPERTY_INDICATE\n);\n<\/code><\/pre>\n\n\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u06cc\u06a9 Characteristic \u0628\u0627 UUID \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f. PROPERTY_READ\u060c PROPERTY_WRITE \u0648 \u2026 \u0627\u062c\u0627\u0632\u0647 \u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 Characteristic \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u0646\u062f.\n<pre class=\"line-numbers lang-arduino\"><code>pService->start();<\/code><\/pre>\n\u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code>start()<\/code>\u00a0\u060c \u0633\u0631\u0648\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647\u060c \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.\n<pre class=\"line-numbers lang-arduino\"><code>BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();\npAdvertising-&gt;addServiceUUID(SERVICE_UUID);\npAdvertising-&gt;setScanResponse(false);\npAdvertising-&gt;setMinPreferred(0x0); \/\/ set value to 0x00 to not advertise this parameter\nBLEDevice::startAdvertising();\n<\/code><\/pre>\n\n\u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0641\u0648\u0642\u060c \u0633\u0631\u0648\u0631 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 (Advertising) \u0645\u06cc \u06a9\u0646\u062f.\n\n\u062f\u0631 \u0628\u062e\u0634 loop \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u0627\u0635\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f.\n\n\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u062f\u0631 \u0627\u06cc\u0646 \u06a9\u062f:\n<pre class=\"line-numbers lang-arduino\"><code>if (deviceConnected) {\npCharacteristic-&gt;setValue((uint8_t*)&amp;value, 4);\npCharacteristic-&gt;notify();\nvalue++;\ndelay(3); \/\/ bluetooth stack will go into congestion, if too many packets are sent, in 6 hours test i was able to go as low as 3ms\n}<\/code><\/pre>\n\n\u0627\u06af\u0631 \u06a9\u0644\u0627\u06cc\u0646\u062a\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0633\u0627\u062e\u062a\u0647 \u0627\u06cc\u0645 \u0645\u062a\u0635\u0644 \u0628\u0627\u0634\u062f\u060c \u0633\u0631\u0648\u0631 \u0647\u0631 3 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647 \u06cc\u06a9 \u0628\u0627\u0631 \u0645\u0642\u062f\u0627\u0631 value \u0631\u0627 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u0637\u0644\u0627\u0639 (notify) \u0645\u06cc \u062f\u0647\u062f.\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-17268968 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"17268968\" data-element_type=\"section\">\r\n\t\t\t\r\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-row\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-33c3804e\" data-id=\"33c3804e\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\r\n\r\n\t\t\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\r\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-64da4f43 elementor-view-stacked elementor-widget__width-auto elementor-absolute elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"64da4f43\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<i aria-hidden=\"true\" class=\"fas fa-exclamation\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2aac05ab elementor-widget elementor-widget-heading\" data-id=\"2aac05ab\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\"><span style=\"background-color: transparent;\">\u0647\u0634\u062f\u0627\u0631<\/span><\/h5>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-65ba7403 elementor-widget elementor-widget-text-editor\" data-id=\"65ba7403\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0632\u0645\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u062a\u063a\u06cc\u0631 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632\u00a03 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647 \u0628\u0627\u0634\u062f. \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0627\u0632 \u062f\u0633\u062a \u0628\u0631\u0648\u062f \u0648 \u0628\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u0648\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/section>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-44b81529 elementor-widget elementor-widget-text-editor\" data-id=\"44b81529\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<pre class=\"line-numbers lang-arduino\"><code>if (!deviceConnected &amp;&amp; oldDeviceConnected) {\ndelay(500); \/\/ give the bluetooth stack the chance to get things ready\npServer-&gt;startAdvertising(); \/\/ restart advertising\nSerial.println(\"start advertising\");\noldDeviceConnected = deviceConnected;\n} <\/code><\/pre><p>\u0627\u06af\u0631 \u0627\u062a\u0635\u0627\u0644 \u0628\u06cc\u0646 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0648 \u0633\u0631\u0648\u0631 \u0642\u0637\u0639 \u0634\u0648\u062f\u060c \u0633\u0631\u0648\u0631 \u0645\u062c\u062f\u062f\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0647\u0627 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0628\u0627\u0634\u062f.<\/p><p>\u00a0<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58d35d16 elementor-widget elementor-widget-heading\" data-id=\"58d35d16\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\u062a\u0633\u062a \u06a9\u062f \u0641\u0648\u0642 \u0628\u0627 \u06af\u0648\u0634\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b704ac4 elementor-widget elementor-widget-text-editor\" data-id=\"7b704ac4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0627\u0628\u062a\u062f\u0627 \u0646\u0627\u0645 \u0633\u0631\u0648\u0631 \u0628\u0647 \u201cMy-ESP32_Notify\u201d \u0648 \u0632\u0645\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u062a\u063a\u06cc\u0631 value \u0628\u0647 \u062c\u0627\u06cc \u0647\u0631 3 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647 \u06cc\u06a9 \u0628\u0627\u0631\u060c \u0628\u0647 \u0647\u0631 \u062b\u0627\u0646\u06cc\u0647 \u06cc\u06a9 \u0628\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b9f377c elementor-widget elementor-widget-image\" data-id=\"7b9f377c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-notify.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-notify.jpg\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzA2IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLW5vdGlmeS5qcGcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img width=\"369\" height=\"800\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-notify.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3cd0a73f elementor-widget elementor-widget-text-editor\" data-id=\"3cd0a73f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u062a\u063a\u06cc\u0631 value\u060c \u06a9\u0644\u06cc\u062f\u06cc \u06a9\u0647 \u062f\u0631 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0627\u0633\u062a \u0631\u0627 \u0628\u0632\u0646\u06cc\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21bacbe8 elementor-widget elementor-widget-image\" data-id=\"21bacbe8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-notify2.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ESP32-BLE-notify2.png\" e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6IjE2MzA3IiwidXJsIjoiaHR0cHM6XC9cL3RoZWNhZmVyb2JvdC5jb21cL2xlYXJuXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIwXC8wOVwvRVNQMzItQkxFLW5vdGlmeTIucG5nIn0%3D\">\n\t\t\t\t\t\t\t<img width=\"500\" height=\"731\" src=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2020\/09\/ESP32-BLE-notify2.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-23d67ca8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"23d67ca8\" data-element_type=\"section\">\r\n\t\t\t\r\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-row\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-3ccdc50b\" data-id=\"3ccdc50b\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\r\n\r\n\t\t\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\r\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-33b08be1 elementor-view-stacked elementor-widget__width-auto elementor-absolute elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"33b08be1\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<i aria-hidden=\"true\" class=\"fas fa-pen\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9d52102 elementor-widget elementor-widget-heading\" data-id=\"9d52102\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">\u0646\u06a9\u062a\u0647<\/h5>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-22d86f17 elementor-widget elementor-widget-text-editor\" data-id=\"22d86f17\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0641\u06cc\u0644\u0645 \u0641\u0648\u0642 \u0646\u06cc\u0632 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0647\u0631\u0628\u0627\u0631 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0645\u062a\u063a\u06cc\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f\u00a0\u062e\u0648\u062f \u0628\u0647 \u062e\u0648\u062f\u00a0\u0631\u0648\u06cc \u06af\u0648\u0634\u06cc \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a \u0633\u0631\u0648\u0631 (\u06a9\u062f \u0627\u0648\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634) \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a \u0648\u00a0 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0628\u0627\u0631 \u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 <strong>Characteristic<\/strong>\u060c \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0627\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u06cc \u0641\u0631\u0633\u062a\u0627\u062f.<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/section>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/section>\r\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0627\u0645\u0631\u0648\u0632\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062a\u062f\u0648\u0627\u0644 \u062a\u0631\u06cc\u0646 \u0648 \u067e\u0631\u06a9\u0627\u0631\u0628\u0631\u062f\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627 \u0645\u06cc \u0628\u0627\u0634\u062f \u0648 \u0634\u0645\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0631\u0648\u0632\u060c \u062e\u0648\u0627\u0633\u062a\u0647 \u06cc\u0627 \u0646\u0627\u062e\u0648\u0627\u0633\u062a\u0647 \u0628\u0627 \u0622\u0646 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f. \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u06af\u0648\u0634\u06cc \u0647\u0627\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644\u060c \u0633\u0627\u0639\u062a \u0647\u0627 \u0648 \u06af\u062c\u062a \u0647\u0627\u06cc \u0647\u0648\u0634\u0645\u0646\u062f\u060c \u0647\u062f\u0641\u0648\u0646 \u0647\u0627\u06cc \u0628\u06cc \u0633\u06cc\u0645\u060c \u0645\u0627\u0648\u0633 \u0648 \u06a9\u06cc\u0628\u0648\u0631\u062f\u0647\u0627\u06cc \u0628\u06cc \u0633\u06cc\u0645 [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":15434,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[938,5,948],"tags":[4605,4598],"platform":[2732],"bytype":[1075],"difficulty":[1078],"related_products":[3676,3283,3677,3678,4734,3681,3679,3680,4733,4736,4735],"featured_image_src":{"landsacpe":["https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2019\/10\/ESP32-BLE-Video-Teaser.gif",320,240,false],"list":["https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2019\/10\/ESP32-BLE-Video-Teaser.gif",320,240,false],"medium":["https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2019\/10\/ESP32-BLE-Video-Teaser.gif",320,240,false],"full":["https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2019\/10\/ESP32-BLE-Video-Teaser.gif",320,240,false]},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v14.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u06cc\u0627 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc ESP32 \u0628\u0627 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 IDE - \u06a9\u0627\u0641\u0647 \u0631\u0628\u0627\u062a<\/title>\n<meta name=\"description\" content=\"\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u06a9\u0627\u0645\u0644 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc BLE \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0648 \u06cc\u0627\u062f \u0645\u06cc \u06af\u06cc\u0631\u06cc\u062f \u0686\u0637\u0648\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 ESP32 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f. \u0627\u0632 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 IDE \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647\" \/>\n<meta name=\"robots\" content=\"index, follow\" \/>\n<meta name=\"googlebot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta name=\"bingbot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"fa_IR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc BLE \u06cc\u0627 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc ESP32 \u0628\u0627 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 IDE - \u06a9\u0627\u0641\u0647 \u0631\u0628\u0627\u062a\" \/>\n<meta property=\"og:description\" content=\"\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u06a9\u0627\u0645\u0644 \u0628\u0644\u0648\u062a\u0648\u062b \u06a9\u0645 \u0627\u0646\u0631\u0698\u06cc BLE \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0648 \u06cc\u0627\u062f \u0645\u06cc \u06af\u06cc\u0631\u06cc\u062f \u0686\u0637\u0648\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 ESP32 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0644\u0648\u062a\u0648\u062b \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f. \u0627\u0632 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 IDE \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"\u06a9\u0627\u0641\u0647 \u0631\u0628\u0627\u062a\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-23T19:33:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-16T13:32:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2019\/10\/ESP32-BLE-Video-Teaser.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"320\" \/>\n\t<meta property=\"og:image:height\" content=\"240\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/thecaferobot.com\/learn\/#organization\",\"name\":\"\\u06a9\\u0627\\u0641\\u0647 \\u0631\\u0628\\u0627\\u062a\",\"url\":\"https:\/\/thecaferobot.com\/learn\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/thecaferobot.com\/learn\/#logo\",\"inLanguage\":\"fa-IR\",\"url\":\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2018\/08\/Logo-small.png\",\"width\":250,\"height\":250,\"caption\":\"\\u06a9\\u0627\\u0641\\u0647 \\u0631\\u0628\\u0627\\u062a\"},\"image\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/thecaferobot.com\/learn\/#website\",\"url\":\"https:\/\/thecaferobot.com\/learn\/\",\"name\":\"\\u06a9\\u0627\\u0641\\u0647 \\u0631\\u0628\\u0627\\u062a\",\"description\":\"\\u0622\\u0645\\u0648\\u0632\\u0634 \\u0627\\u0644\\u06a9\\u062a\\u0631\\u0648\\u0646\\u06cc\\u06a9\\u060c \\u0631\\u0628\\u0627\\u062a\\u06cc\\u06a9\\u060c \\u0622\\u0631\\u062f\\u0648\\u06cc\\u0646\\u0648 \\u0648 \\u0631\\u0633\\u067e\\u0628\\u0631\\u06cc \\u067e\\u0627\\u06cc\",\"publisher\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/thecaferobot.com\/learn\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fa-IR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#primaryimage\",\"inLanguage\":\"fa-IR\",\"url\":\"https:\/\/thecaferobot.com\/learn\/wp-content\/uploads\/2019\/10\/ESP32-BLE-Video-Teaser.gif\",\"width\":320,\"height\":240},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#webpage\",\"url\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/\",\"name\":\"\\u0631\\u0627\\u0647\\u0646\\u0645\\u0627\\u06cc \\u062c\\u0627\\u0645\\u0639 \\u0631\\u0627\\u0647 \\u0627\\u0646\\u062f\\u0627\\u0632\\u06cc BLE \\u06cc\\u0627 \\u0628\\u0644\\u0648\\u062a\\u0648\\u062b \\u06a9\\u0645 \\u0627\\u0646\\u0631\\u0698\\u06cc ESP32 \\u0628\\u0627 \\u0622\\u0631\\u062f\\u0648\\u06cc\\u0646\\u0648 IDE - \\u06a9\\u0627\\u0641\\u0647 \\u0631\\u0628\\u0627\\u062a\",\"isPartOf\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#primaryimage\"},\"datePublished\":\"2020-07-23T19:33:27+00:00\",\"dateModified\":\"2021-11-16T13:32:41+00:00\",\"description\":\"\\u062f\\u0631 \\u0627\\u06cc\\u0646 \\u0622\\u0645\\u0648\\u0632\\u0634 \\u062a\\u0648\\u0636\\u06cc\\u062d\\u0627\\u062a \\u06a9\\u0627\\u0645\\u0644 \\u0628\\u0644\\u0648\\u062a\\u0648\\u062b \\u06a9\\u0645 \\u0627\\u0646\\u0631\\u0698\\u06cc BLE \\u0622\\u0648\\u0631\\u062f\\u0647 \\u0634\\u062f\\u0647 \\u0648 \\u06cc\\u0627\\u062f \\u0645\\u06cc \\u06af\\u06cc\\u0631\\u06cc\\u062f \\u0686\\u0637\\u0648\\u0631 \\u0628\\u0627 \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u0627\\u0632 ESP32 \\u0627\\u0631\\u062a\\u0628\\u0627\\u0637 \\u0628\\u0644\\u0648\\u062a\\u0648\\u062b \\u0628\\u0631\\u0642\\u0631\\u0627\\u0631 \\u06a9\\u0646\\u06cc\\u062f. \\u0627\\u0632 \\u0622\\u0631\\u062f\\u0648\\u06cc\\u0646\\u0648 IDE \\u0646\\u06cc\\u0632 \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u0634\\u062f\\u0647\",\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/\"]}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#webpage\"},\"author\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/#\/schema\/person\/90df17e0df9d3c90563c270ae65ec3fc\"},\"headline\":\"\\u0631\\u0627\\u0647\\u0646\\u0645\\u0627\\u06cc \\u062c\\u0627\\u0645\\u0639 \\u0631\\u0627\\u0647 \\u0627\\u0646\\u062f\\u0627\\u0632\\u06cc BLE \\u06cc\\u0627 \\u0628\\u0644\\u0648\\u062a\\u0648\\u062b \\u06a9\\u0645 \\u0627\\u0646\\u0631\\u0698\\u06cc ESP32 \\u0628\\u0627 \\u0622\\u0631\\u062f\\u0648\\u06cc\\u0646\\u0648 IDE\",\"datePublished\":\"2020-07-23T19:33:27+00:00\",\"dateModified\":\"2021-11-16T13:32:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#webpage\"},\"commentCount\":17,\"publisher\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/#organization\"},\"image\":{\"@id\":\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#primaryimage\"},\"keywords\":\"\\u0628\\u0644\\u0648\\u062a\\u0648\\u062b,\\u0645\\u06cc\\u06a9\\u0631\\u0648\\u06a9\\u0646\\u062a\\u0631\\u0644\\u0631 ESP32\",\"articleSection\":\"\\u0627\\u0631\\u062a\\u0628\\u0627\\u0637\\u0627\\u062a,\\u0628\\u0631\\u06af\\u0632\\u06cc\\u062f\\u0647 \\u0647\\u0627,\\u0628\\u0631\\u0646\\u0627\\u0645\\u0647 \\u0646\\u0648\\u06cc\\u0633\\u06cc\",\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/thecaferobot.com\/learn\/esp32-bluetooth-low-energy-ble-on-arduino-ide-tutorial\/#respond\"]}]},{\"@type\":[\"Person\"],\"@id\":\"https:\/\/thecaferobot.com\/learn\/#\/schema\/person\/90df17e0df9d3c90563c270ae65ec3fc\",\"name\":\"\\u0645\\u062d\\u0645\\u062f\\u0631\\u0636\\u0627 \\u0627\\u06a9\\u0628\\u0631\\u06cc\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/thecaferobot.com\/learn\/#personlogo\",\"inLanguage\":\"fa-IR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a1f89f4484a071b6569e017dc3507ee1?s=96&d=mm&r=g\",\"caption\":\"\\u0645\\u062d\\u0645\\u062f\\u0631\\u0636\\u0627 \\u0627\\u06a9\\u0628\\u0631\\u06cc\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/posts\/15420"}],"collection":[{"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/comments?post=15420"}],"version-history":[{"count":28,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/posts\/15420\/revisions"}],"predecessor-version":[{"id":26182,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/posts\/15420\/revisions\/26182"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/media\/15434"}],"wp:attachment":[{"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/media?parent=15420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/categories?post=15420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/tags?post=15420"},{"taxonomy":"platform","embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/platform?post=15420"},{"taxonomy":"bytype","embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/bytype?post=15420"},{"taxonomy":"difficulty","embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/difficulty?post=15420"},{"taxonomy":"related_products","embeddable":true,"href":"https:\/\/thecaferobot.com\/learn\/wp-json\/wp\/v2\/related_products?post=15420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}