{"id":40,"date":"2025-01-04T00:11:05","date_gmt":"2025-01-03T16:11:05","guid":{"rendered":"https:\/\/ikarox.cn\/?p=40"},"modified":"2025-10-28T19:30:47","modified_gmt":"2025-10-28T11:30:47","slug":"%e6%88%91%e5%8e%bb%e5%9b%be%e4%b9%a6%e9%a6%86%e8%bf%9c%e7%a8%8b%e8%93%9d%e7%89%99%e7%ad%be%e5%88%b0","status":"publish","type":"post","link":"https:\/\/blog.ikarox.cn\/index.php\/2025\/01\/04\/%e6%88%91%e5%8e%bb%e5%9b%be%e4%b9%a6%e9%a6%86%e8%bf%9c%e7%a8%8b%e8%93%9d%e7%89%99%e7%ad%be%e5%88%b0\/","title":{"rendered":"\u6211\u53bb\u56fe\u4e66\u9986\u8fdc\u7a0b\u84dd\u7259\u7b7e\u5230"},"content":{"rendered":"<h1>esp32\u5b9e\u73b0\u6211\u53bb\u56fe\u4e66\u9986\u8fdc\u7a0b\u84dd\u7259\u7b7e\u5230<\/h1>\n<h3>\u80cc\u666f<\/h3>\n<p>\u7531\u4e8e\u51ac\u5929\u975e\u5e38\u5bd2\u51b7\uff0c\u5f88\u5bb9\u6613\u628a\u6211\u4eec\u51bb\u6b7b <s>(bushi)<\/s>\uff0c\u6240\u4ee5\u65e9\u4e0a\u4eba\u4e0e\u5e8a\u5f80\u5f80\u96be\u820d\u96be\u5206\uff1b\u4f46\u662f\u53e6\u4e00\u65b9\u9762\u53c8\u8981\u65e9\u8d77\u53bb\u56fe\u4e66\u9986\u7b7e\u5230\uff0c\u56e0\u6b64\u6211\u4eec\u5f88\u5bb9\u6613\u9677\u5165\u4e24\u96be\u7684\u5883\u5730\u3002<\/p>\n<h3>\u5b9e\u73b0<\/h3>\n<p>\u521a\u597d\u524d\u4e9b\u65e5\u5b50\u5728\u5c0f\u9ec4\u9c7c\u4e0a\u770b\u5230\u4e86\u4e00\u4e2a\u6211\u53bb\u56fe\u4e66\u9986\u8fdc\u7a0b\u7b7e\u5230\u7684\u8f6f\u4ef6\uff0c\u5f53\u5373\u7ed9\u4ed6\u4e70\u4e86\u4e0b\u6765\uff0c\u5f88\u5feb\uff0c\u554a\u3002\u4f46\u662f\u5462\uff0c\u6709\u4e2a\u7f3a\u70b9\u5c31\u662f\u9700\u8981\u4e24\u4e2a\u79fb\u52a8\u8bbe\u5907\u624d\u80fd\u7b7e\u5230\u6210\u529f\u3002<\/p>\n<blockquote>\n<p>\u8fd9\u91cc\u7b80\u5355\u4ecb\u7ecd\u4e00\u4e0b\u65b9\u6cd5\uff1a<\/p>\n<ol>\n<li><code>\u4e24\u4e2a\u79fb\u52a8\u8bbe\u5907(\u5e73\u677for\u624b\u673a)<\/code>\u786e\u4fdd\u90fd\u6253\u5f00\u84dd\u7259\uff0c\u5176\u4e2d\u4e00\u4e2a\u4e0b\u8f7dBrightBeacon\uff0c\u82f9\u679c: appstore\u4e0b\u8f7d\uff0c\u5b89\u5353: <a href=\"https:\/\/app.brtbeacon.com\/d\/brightbeacon\" target=\"_blank\"  rel=\"nofollow\" >\u4e0b\u8f7d\u94fe\u63a5<\/a><\/li>\n<li>\u5e95\u90e8\u5bfc\u822a\u680f\u4e2d\u95f4\u84dd\u8272\u9009\u9879 -&gt; \u6a21\u62dfBeacon -&gt; \u5206\u522b\u586b\u5165 UUID: FDA50693-A4E2-4FB1-AFCF-C6EB07647825, Major: 10199, Minor: 42474<\/li>\n<li>\u7528\u53e6\u4e00\u4e2a\u8bbe\u5907\u8fdb\u884c\u84dd\u7259\u7b7e\u5230\u5c31\u884c\u4e86<\/li>\n<\/ol>\n<\/blockquote>\n<p>\u521a\u597d\u8fd9\u4e24\u5929\u53c8\u770b\u5230\u4e86\u4e00\u4e2a\u5173\u4e8eesp32\u84dd\u7259\u6a21\u62df\u5e94\u7528\u7684\u89c6\u9891(<a href=\"https:\/\/www.bilibili.com\/video\/BV1E54y137r3\/?spm_id_from=333.880.my_history.page.click&amp;vd_source=946d91ef8e978d916f518f74017b6842\" target=\"_blank\"  rel=\"nofollow\" >bilibili<\/a>)\uff0c\u4e8e\u662f\u53bbGitHub\u4e0a\u9762\u641c\u4e86\u4e00\u4e0b\uff0c\u679c\u7136\u627e\u5230\u4e00\u4e2a\u5173\u4e8e\u7528<a href=\"https:\/\/github.com\/zanjie1999\/dingBle\/tree\/master\" target=\"_blank\"  rel=\"nofollow\" >esp32\u6a21\u62df\u84dd\u7259\u7b7e\u5230<\/a>\u7684\u9879\u76ee\uff0c\u4eac\u4e1c\u4e0a\u9762\u4e00\u770b\uff0c\u4e00\u4e2aesp32\u7684\u677f\u5b50\u624d\u4e8c\u5341\u6765\u5757\u94b1\uff0c\u76f4\u63a5\u5c31\u7ed9\u4ed6\u62ff\u4e0b\u4e86\u3002\u7b49\u4e86\u4e09\u5929\uff0c\u677f\u5b50\u5230\u8d27\u4e86\uff0c\u76f4\u63a5\u62ff\u53bb\u8ddf\u7740GitHub\u7684\u6559\u7a0b\u8dd1\u4e86\u4e00\u904d\uff0c\u53ef\u60dc\u5e76\u6ca1\u6709\u8fbe\u5230\u9884\u671f\u6548\u679c\u3002<br \/>\n\u4e8e\u662f\u6162\u6162\u987a\u7740\u95ee\u9898\u5bfb\u627e\u89e3\u51b3\u65b9\u6848\uff0c\u7b2c\u4e00\u6b21\u77e5\u9053\u539f\u6765\u8fd9\u4e2a\u6570\u636e\u7ebf\u8fd8\u5206\u5145\u7535\u7ebf\u548c\u6570\u636e\u7ebf\u7684\uff01\u5145\u7535\u7ebf\u53ea\u80fd\u5145\u7535\uff0c\u6570\u636e\u7ebf\u8fd8\u53ef\u4ee5\u8fdb\u884c\u6570\u636e\u4f20\u8f93\uff0c\u4f46\u6211\u4e00\u5f00\u59cb\u7528\u7684\u51e0\u6839\u7ebf\u90fd\u662f\u5145\u7535\u7ebf\uff08\u8fd9\u4e9busb\u7ebf\u90fd\u662f\u5f53\u65f6\u4e70\u7684\u4e00\u4e9b\u5176\u4ed6\u8bbe\u5907\u9001\u7684\uff0c\u4e5f\u602a\u4e0d\u5f97\uff09\uff0c\u5bfc\u81f4\u7535\u8111\u5df2\u77e5\u65e0\u6cd5\u8bc6\u522b\u677f\u5b50\uff0c\u54ce : ( \u53c8\u82b1\u4e86\u5341\u5757\u94b1\u4e70\u4e86\u6839\u6570\u636e\u7ebf\uff08\u4ee5\u524d\u4e70\u4e1c\u897f\u90fd\u4e70\u7684\u5feb\u9012\uff0c\u73b0\u5728\u53d1\u73b0\u6709\u4e9b\u4e1c\u897f\u76f4\u63a5\u5916\u5356\u5c31\u884c\u4e86~\u771f\u7684\u5f88\u5feb\u554a\uff0c\u534a\u4e2a\u5c0f\u65f6\u5c31\u5230\u4e86\uff09<br \/>\n\u7136\u540e\u5c31\u5f00\u59cb\u5404\u79cd\u627e\u6559\u7a0b\u627e\u65b9\u6cd5\uff0c\u4e00\u5f00\u59cb\u90fd\u662f\u95ee\u7684chatgpt\uff0c\u4f46\u662fchatgpt\u7ed9\u7684\u4ee3\u7801\u5168\u90fd\u662f\u9519\u8bef\uff0c\u679c\u7136AI\u8fd8\u662f\u9760\u4e0d\u4f4f\u554a\uff0c\u5173\u952e\u65f6\u5019\u8fd8\u662f\u5f97\u9760\u81ea\u5df1\u3002\u7f51\u4e0a\u627e\u4e86\u4e00\u5708\uff0c\u53c8\u627e\u4e0d\u5230\u76f8\u5173\u7684\u4ee3\u7801\uff0c\u6700\u540e\u6ca1\u529e\u6cd5\uff0c\u5e72\u8106\u76f4\u63a5\u5f00\u59cb\u5b66\u4e60esp32\u84dd\u7259\u5f00\u53d1\u3002\u8fd9\u91cc\u627e\u5230\u4e00\u4e2a<a href=\"https:\/\/blog.csdn.net\/Naisu_kun\/article\/details\/115958024\" target=\"_blank\"  rel=\"nofollow\" >\u5f88\u8be6\u7ec6\u7684\u57fa\u7840\u6559\u7a0b<\/a>\u3002\u8ddf\u7740\u6559\u7a0b\u4e00\u6b65\u4e00\u6b65\uff0c\u6700\u540e\u7ed3\u5408\u4e0a\u9762\u7684GitHub\u7684\u90e8\u5206\u4ee3\u7801\uff0c\u7ecf\u8fc7\u5728\u5bbf\u820d\u7684\u6d4b\u8bd5\uff0c\u6700\u540e\u4e5f\u662f\u5b9e\u73b0\u4e86\u8fdc\u7a0b\u7b7e\u5230\u3002<br \/>\n\u548c\u722c\u866b\u8fd8\u662f\u633a\u50cf\u7684\u611f\u89c9\uff0c\u5c31\u662f\u6293\u5305+\u6a21\u62df\u7684\u4e00\u4e2a\u8fc7\u7a0b\u3002<\/p>\n<h3>\u4ee3\u7801<\/h3>\n<p>\u4ee5\u4e0b\u662f\u4ee3\u7801\u90e8\u5206\uff1a<\/p>\n<pre><code class=\"language-cpp\">#include &lt;BLEDevice.h&gt;\n#define SERVICE_UUID &quot;FDA50693-A4E2-4FB1-AFCF-C6EB07647825&quot;  \/\/ \u81ea\u5df1\u901a\u8fc7brightbeacon\u4ee5\u53canRF Connect\u6293\u5230\u7684\u7b7e\u5230\u7684UUID\nuint8_t bleRaw[] = {0x02,0x01,0x06,0x1A,0xFF,0x4C,0x00,0x02,0x15,0xFD,0xA5,0x06,0x93,0xA4,0xE2,0x4F,0xB1,0xAF,0xCF,0xC6,0xEB,0x07,0x64,0x78,0x25,0x27,0xD7,0xA5,0xEA,0xC5};  \/\/ nRF Connect\u4e2d\u6293\u5230\u7684\u5e7f\u64ad\u6570\u636e\nclass MyServerCallbacks: public BLEServerCallbacks {\n\u00a0 \u00a0 void onConnect(BLEServer* pServer) {\n\u00a0 \u00a0 \u00a0 Serial.println(&quot;\u7b7e\u5230\u6210\u529f\u8fbd~&quot;);  \/\/ \u597d\u50cf\u5e76\u6ca1\u4ec0\u4e48\u5375\u7528\n\u00a0 \u00a0 \u00a0 pServer-&gt;startAdvertising(); \/\/ \u6709\u5ba2\u6237\u7aef\u8fde\u63a5\u540e\u5e7f\u64ad\u4f1a\u505c\u6b62\uff0c\u8fd9\u91cc\u518d\u6b21\u6253\u5f00\u4f7f\u5176\u5b83\u8bbe\u5907\u53ef\u4ee5\u641c\u7d22\u5230\n\u00a0 \u00a0 };\n\u00a0 \u00a0 void onDisconnect(BLEServer* pServer) {}\n};\n\nvoid setup() {\n\u00a0 Serial.begin(115200);\n\u00a0 Serial.println();\n\u00a0 BLEDevice::init(&quot;ESP32-BLE&quot;);\n\u00a0 BLEServer *pServer = BLEDevice::createServer();\n\u00a0 pServer-&gt;setCallbacks(new MyServerCallbacks());\n\u00a0 BLEService *pService = pServer-&gt;createService(SERVICE_UUID);\n\u00a0 pService-&gt;start();\n\u00a0 BLEAdvertising *pAdvertising = BLEDevice::getAdvertising(); \/\/ \u83b7\u53d6Advertising\u5bf9\u8c61\n\u00a0 \/\/ \u8bbe\u5907\u4fe1\u606f\u8bbe\u7f6e\u6210\u7a7a\u767d\u7684\n\u00a0 BLEAdvertisementData oScanResponseData = BLEAdvertisementData();\n\u00a0 pAdvertising-&gt;setScanResponseData(oScanResponseData);\n\u00a0 \/\/ \u91cc\u9762\u6709\u4e2a m_customScanResponseData = true; \u548c m_customScanResponseData = true; \u6240\u4ee5\u53ea\u80fd\u5148\u968f\u4fbf\u8bbe\u7f6e\u4e00\u4e0b\n\u00a0 BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();\n\u00a0 pAdvertising-&gt;setAdvertisementData(oAdvertisementData);\n\u00a0 \u00a0 \/\/ \u7b80\u5355\u7c97\u66b4\u76f4\u63a5\u5e95\u5c42api\u91cd\u65b0\u8bbe\u7f6e\u4e00\u4e0b\u6293\u5230\u7684raw\n\u00a0 esp_err_t errRc = ::esp_ble_gap_config_adv_data_raw(bleRaw, 31);\n\u00a0 if (errRc != ESP_OK) {\n\u00a0 \u00a0 Serial.printf(&quot;esp_ble_gap_config_adv_data_raw: %d\\n&quot;, errRc);\n\u00a0 }\n\u00a0 \/\/ pAdvertising-&gt;setMaxInterval(30);\n\u00a0 pAdvertising-&gt;addServiceUUID(SERVICE_UUID); \/\/ \u5e7f\u64adService\u7684UUID\n\u00a0 BLEDevice::startAdvertising();\n}\n\nvoid loop() {}\n<\/code><\/pre>\n<h3>TODO<\/h3>\n<p>\u76ee\u524d\u8fd8\u662f\u9700\u8981\u65e9\u4e0a\u9192\u6765\u624b\u52a8\u8fdb\u884c\u7b7e\u5230\uff0c\u4e0b\u4e00\u6b65\u6253\u7b97\u5f00\u53d1\u4e00\u4e2a\u624b\u673a\u4e0a\u9762\u7684\u811a\u672c\uff0c\u65e9\u4e0a\u5230\u65f6\u95f4\u5c31\u81ea\u52a8\u8fdb\u884c\u7b7e\u5230\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>esp32\u5b9e\u73b0\u6211\u53bb\u56fe\u4e66\u9986\u8fdc\u7a0b\u84dd\u7259\u7b7e\u5230 \u80cc\u666f \u7531\u4e8e\u51ac\u5929\u975e\u5e38\u5bd2\u51b7\uff0c\u5f88\u5bb9\u6613\u628a\u6211\u4eec\u51bb\u6b7b (bushi)\uff0c\u6240\u4ee5\u65e9\u4e0a\u4eba\u4e0e\u5e8a\u5f80\u5f80\u96be\u820d\u96be\u5206\uff1b\u4f46\u662f\u53e6 &#8230;<\/p>","protected":false},"author":1,"featured_media":83,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/img.ikarox.cn\/i\/2025\/10\/28\/vx6sh1.jpg","fifu_image_alt":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-40","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":2,"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"predecessor-version":[{"id":85,"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/posts\/40\/revisions\/85"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/media\/83"}],"wp:attachment":[{"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ikarox.cn\/index.php\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}