{"id":3802,"date":"2023-07-03T10:32:11","date_gmt":"2023-07-03T10:32:11","guid":{"rendered":"https:\/\/picockpit.com\/raspberry-pi\/?p=3802"},"modified":"2023-08-09T15:49:53","modified_gmt":"2023-08-09T15:49:53","slug":"everything-about-bluetooth-on-the-raspberry-pi-pico-w","status":"publish","type":"post","link":"https:\/\/picockpit.com\/raspberry-pi\/ja\/%e3%83%a9%e3%82%ba%e3%83%99%e3%83%aa%e3%83%bc%e3%83%bb%e3%83%91%e3%82%a4%e3%83%bb%e3%83%94%e3%82%b3%e3%81%aebluetooth%e3%81%ab%e9%96%a2%e3%81%99%e3%82%8b%e3%81%99%e3%81%b9%e3%81%a6-w\/","title":{"rendered":"Raspberry Pi Pico W\u306eBluetooth\u306e\u3059\u3079\u3066"},"content":{"rendered":"<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11-1024x576.png\" alt=\"PiCockpit Pico W Bluetooth Title Image\" class=\"wp-image-4642\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11-1024x576.png 1024w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11-300x169.png 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11-768x432.png 768w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11-18x10.png 18w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>The Raspberry Pi Foundation recently announced <a href=\"https:\/\/www.raspberrypi.com\/news\/new-functionality-bluetooth-for-pico-w\/\">Bluetooth support with the release of the C\/C++ SDK version 1.5.1<\/a> with a new release of the C\/C++ SDK and of Micropython on the Pico W.<\/p>\n\n\n\n<p>And guess what! If you have a Pico W, you don\u2019t need to purchase a new one. <\/p>\n\n\n\n<p>And if you don&#8217;t have a Pico W yet, then you can purchase one <a href=\"https:\/\/buyzero.de\/en\/products\/raspberry-pi-pico-w-h-konfigurator-pico-pico-w-pico-h-pico-wh?variant=43536400187659\">here<\/a>.<\/p>\n\n\n\n<p>We already have an article covering <a href=\"https:\/\/picockpit.com\/raspberry-pi\/everything-about-the-raspberry-pi-pico-w\/\">everything you need to know about the Pico W<\/a>. Furthermore, if you&#8217;re a beginner with the Pico W, you can <a href=\"https:\/\/picockpit.com\/raspberry-pi\/raspberry-pi-pico-w-beginners-components-tutorial\/\">check out this article<\/a>. <\/p>\n\n\n\n<p>But here, we\u2019re covering everything you need to know about <em>Bluetooth<\/em> on the Raspberry Pi Pico W.<\/p>\n\n\n\n<div class=\"toc\">\n<p>Table of Contents<\/p>\n<ol>\n<li><a rel=\"noopener\" target=\"_blank\" href=\"#background\">Pico W Background<\/a><\/li>\n<li><a rel=\"noopener\" target=\"_blank\" href=\"#bluetooth\">Bluetooth Classic &#038; BLE<\/a><\/li>\n<li><a rel=\"noopener\" target=\"_blank\" href=\"#starting\">Getting started with Bluetooth on the Pico W<\/a><\/li>\n<li><a rel=\"noopener\" target=\"_blank\" href=\"#picockpit\">Control the Pico W with PiCockpit<\/a><\/li>\n<li><a rel=\"noopener\" target=\"_blank\" href=\"#projects\">Pico W Bluetooth Projects<\/a><\/li>\n<li><a rel=\"noopener\" target=\"_blank\" href=\"#picovsesp\">Pico W vs. ESP32<\/a><\/li>\n<li><a rel=\"noopener\" target=\"_blank\" href=\"#faq\">FAQ<\/a><\/li>\n<\/ol>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"background\">Pico W Background<\/h2>\n\n\n\n<p>Let&#8217;s first get into some of the specs of the Pico W.<\/p>\n\n\n\n<p>The Pico W has wireless capabilities thanks to the CYW43439 wireless chip.<\/p>\n\n\n\n<p>At the heart of each Pico W is the RP2040, which is Raspberry Pi\u2019s first silicon chip.<\/p>\n\n\n\n<p>The Infineon CYW43439 supports IEEE 802.11 b\/g\/n WLAN (Wi-Fi) and Bluetooth 5.2. At launch, only Wi-Fi was supported by the firmware and software.<\/p>\n\n\n\n<p>The CYW43439 supports BLE and a single antenna shared between Wi-Fi and Bluetooth.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/antenna-raspberry-pi.jpg\" alt=\"Raspberry Pi and Pico W Antennae\" class=\"wp-image-4173\" style=\"width:550px;height:580px\" width=\"550\" height=\"580\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/antenna-raspberry-pi.jpg 869w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/antenna-raspberry-pi-285x300.jpg 285w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/antenna-raspberry-pi-768x810.jpg 768w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/antenna-raspberry-pi-11x12.jpg 11w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n<\/div>\n\n\n<p>If you take a closer look at the Pico W, you will notice the triangle shaped PCB antenna similar to the Raspberry Pi 4. Raspberry Pi uses an onboard antenna licensed from ABRACON.<\/p>\n\n\n\n<p>That means that no additional antenna is needed. The wireless interface is connected via SPI to the RP2040.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/datasheets.raspberrypi.com\/picow\/pico-w-datasheet.pdf\">official datasheet<\/a> also suggests that for best wireless performance, you should not put any metal under or close to the antenna. However, adding grounded metal to the sides of the antenna can improve the antenna\u2019s bandwidth.<\/p>\n\n\n\n<p>The onboard LED is controlled via the WL_GPIO0 Pin of the Infineon 43439 chip. On the Pico, the LED was connected to GPIO Pin 25.<\/p>\n\n\n\n<p>Furthermore, the SWD debug pins were moved towards the center of the board, to create space for the PCB antenna. You can find them between the RP2040 and the CYW43439 and the order from left to right is still SWCLK, GND, SWDIO.<\/p>\n\n\n\n<p>With the Pico W, you can program in C\/C++ and MicroPython.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bluetooth\">Bluetooth Classic &amp; BLE<\/h2>\n\n\n\n<p>The Pico W works with both Bluetooth Classic and Bluetooth Low Energy. Bluetooth Classic and Bluetooth Low Energy (BLE) are two different ways for devices to communicate within the Bluetooth specification.<\/p>\n\n\n\n<p>Bluetooth Classic, also known as Bluetooth Basic Rate\/Enhanced Data Rate (BR\/EDR), is the original version of Bluetooth. It was designed for high-speed data transmission, audio streaming, and device pairing. Bluetooth Classic is commonly used for applications like wireless audio speakers, keyboards, mice, and file transfer between devices.<\/p>\n\n\n\n<p>Bluetooth Low Energy (BLE), also known as Bluetooth Smart, is a power-efficient variant of Bluetooth. BLE was introduced as part of the Bluetooth 4.0 specification and is optimized for low-power devices that require long battery life, such as fitness trackers, smartwatches, home automation devices, and wireless sensors.<\/p>\n\n\n\n<p>The Pico W can function as both a central device and a peripheral device.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"starting\">Getting started with Bluetooth on the Pico W<\/h2>\n\n\n\n<p>Let&#8217;s get started with a quick project to ensure that you&#8217;ve got Bluetooth working properly. <\/p>\n\n\n\n<p>We&#8217;ll run a classic program to get the on-board LED on the Pico W to turn on, but with Bluetooth.<\/p>\n\n\n\n<p>For this, you&#8217;ll need a Pico W, a micro-USB cable, and a breadboard.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/picow3-1-edited-1.jpg\" alt=\"Pico W\" class=\"wp-image-4645\" style=\"width:594px\" width=\"594\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/picow3-1-edited-1.jpg 754w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/picow3-1-edited-1-300x225.jpg 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/picow3-1-edited-1-16x12.jpg 16w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>STEP ONE<\/strong><\/p>\n\n\n\n<p>The first thing you&#8217;ll need is to download <a href=\"https:\/\/thonny.org\/\">Thonny IDE<\/a>, if you don&#8217;t have it already. <\/p>\n\n\n\n<p>Thonny is a super easy way to program MicroPython onto the Pico W.<\/p>\n\n\n\n<p>You also need to download <a href=\"https:\/\/datasheets.raspberrypi.com\/soft\/micropython-firmware-pico-w-130623.uf2\">this UF2 file<\/a>, which has both Wi-Fi and BLE support. Once you&#8217;ve got it downloaded, hold down the BOOTSEL button on the Pico W and connect your it to your computer via USB. Let go of the BOOTSEL button after about 3 seconds.<\/p>\n\n\n\n<p>A remote drive will appear called &#8220;RPI-RP2&#8221;. Move the UF2 file to this drive.<\/p>\n\n\n\n<p>Then the drive will disappear.<\/p>\n\n\n\n<p><strong>STEP TWO<\/strong><\/p>\n\n\n\n<p>You can now disconnect and reconnect your Pico W (this time, don&#8217;t hold down the BOOTSEL button).<\/p>\n\n\n\n<p>Open up Thonny.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/thonny1-1.jpg\" alt=\"Image of Pico W Bluetooth the Thonny IDE\" class=\"wp-image-4178\" style=\"width:598px;height:587px\" width=\"598\" height=\"587\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/thonny1-1.jpg 806w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/thonny1-1-300x294.jpg 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/thonny1-1-768x754.jpg 768w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/thonny1-1-12x12.jpg 12w\" sizes=\"auto, (max-width: 598px) 100vw, 598px\" \/><figcaption class=\"wp-element-caption\">Change the theme &amp; font to save your eyes!<\/figcaption><\/figure>\n<\/div>\n\n\n<p>After you&#8217;ve got Thonny open, go to Tools &gt; Options &gt; Interpreter and then make sure that the interpreter is set to Micropython and that the Port is your Pico W. Here&#8217;s an example:<\/p>\n\n\n\n<p>Your Pico W might appear under a different name.<\/p>\n\n\n\n<p>Once you&#8217;ve done that, click OK and you&#8217;re ready to go.<\/p>\n\n\n\n<p>Now, copy the following code and paste it into &lt;untitled&gt; section:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"from micropython import const\nimport struct\nimport bluetooth\n\n_ADV_TYPE_FLAGS = const(0x01)\n_ADV_TYPE_NAME = const(0x09)\n_ADV_TYPE_UUID16_COMPLETE = const(0x3)\n_ADV_TYPE_UUID32_COMPLETE = const(0x5)\n_ADV_TYPE_UUID128_COMPLETE = const(0x7)\n_ADV_TYPE_UUID16_MORE = const(0x2)\n_ADV_TYPE_UUID32_MORE = const(0x4)\n_ADV_TYPE_UUID128_MORE = const(0x6)\n_ADV_TYPE_APPEARANCE = const(0x19)\n\ndef advertising_payload(limited_disc=False, br_edr=False, name=None, services=None, appearance=0):\n    payload = bytearray()\n\n    def _append(adv_type, value):\n        nonlocal payload\n        payload += struct.pack(&quot;BB&quot;, len(value) + 1, adv_type) + value\n\n    _append(\n        _ADV_TYPE_FLAGS,\n        struct.pack(&quot;B&quot;, (0x01 if limited_disc else 0x02) + (0x18 if br_edr else 0x04)),\n    )\n\n    if name:\n        _append(_ADV_TYPE_NAME, name)\n\n    if services:\n        for uuid in services:\n            b = bytes(uuid)\n            if len(b) == 2:\n                _append(_ADV_TYPE_UUID16_COMPLETE, b)\n            elif len(b) == 4:\n                _append(_ADV_TYPE_UUID32_COMPLETE, b)\n            elif len(b) == 16:\n                _append(_ADV_TYPE_UUID128_COMPLETE, b)\n\n    if appearance:\n        _append(_ADV_TYPE_APPEARANCE, struct.pack(&quot;<h&quot;, appearance))\n\n    return payload\n\n\ndef decode_field(payload, adv_type):\n    i = 0\n    result = []\n    while i + 1 < len(payload):\n        if payload[i + 1] == adv_type:\n            result.append(payload[i + 2 : i + payload[i] + 1])\n        i += 1 + payload[i]\n    return result\n\n\ndef decode_name(payload):\n    n = decode_field(payload, _ADV_TYPE_NAME)\n    return str(n[0], &quot;utf-8&quot;) if n else &quot;&quot;\n\n\ndef decode_services(payload):\n    services = []\n    for u in decode_field(payload, _ADV_TYPE_UUID16_COMPLETE):\n        services.append(bluetooth.UUID(struct.unpack(&quot;<h&quot;, u)[0]))\n    for u in decode_field(payload, _ADV_TYPE_UUID32_COMPLETE):\n        services.append(bluetooth.UUID(struct.unpack(&quot;<d&quot;, u)[0]))\n    for u in decode_field(payload, _ADV_TYPE_UUID128_COMPLETE):\n        services.append(bluetooth.UUID(u))\n    return services\n\n\ndef demo():\n    payload = advertising_payload(\n        name=&quot;micropython&quot;,\n        services=[bluetooth.UUID(0x181A), bluetooth.UUID(&quot;6E400001-B5A3-F393-E0A9-E50E24DCCA9E&quot;)],\n    )\n    print(payload)\n    print(decode_name(payload))\n    print(decode_services(payload))\n\n\nif __name__ == &quot;__main__&quot;:\n    demo()\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">micropython<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">const<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">struct<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_FLAGS<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x01<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_NAME<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x09<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID16_COMPLETE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x3<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID32_COMPLETE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x5<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID128_COMPLETE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x7<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID16_MORE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x2<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID32_MORE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x4<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID128_MORE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x6<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_ADV_TYPE_APPEARANCE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x19<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">advertising_payload<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">limited_disc<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #8FBCBB\">False<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">br_edr<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #8FBCBB\">False<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #8FBCBB\">None<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #8FBCBB\">None<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">appearance<\/span><span style=\"color: #D8DEE9FF\">=0):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">bytearray<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">adv_type<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">value<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">nonlocal<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">payload<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\"> += <\/span><span style=\"color: #8FBCBB\">struct<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">pack<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">BB<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">len<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">value<\/span><span style=\"color: #D8DEE9FF\">) + 1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">adv_type<\/span><span style=\"color: #D8DEE9FF\">) + <\/span><span style=\"color: #8FBCBB\">value<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">_append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_FLAGS<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">struct<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">pack<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">B<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> (0<\/span><span style=\"color: #8FBCBB\">x01<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">limited_disc<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">else<\/span><span style=\"color: #D8DEE9FF\"> 0<\/span><span style=\"color: #8FBCBB\">x02<\/span><span style=\"color: #D8DEE9FF\">) + (0<\/span><span style=\"color: #8FBCBB\">x18<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">br_edr<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">else<\/span><span style=\"color: #D8DEE9FF\"> 0<\/span><span style=\"color: #8FBCBB\">x04<\/span><span style=\"color: #D8DEE9FF\">))<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">_append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_NAME<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">uuid<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">b<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">bytes<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">uuid<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">len<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">b<\/span><span style=\"color: #D8DEE9FF\">) == 2:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">_append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID16_COMPLETE<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">b<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">elif<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">len<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">b<\/span><span style=\"color: #D8DEE9FF\">) == 4:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">_append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID32_COMPLETE<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">b<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">elif<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">len<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">b<\/span><span style=\"color: #D8DEE9FF\">) == 16:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">_append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID128_COMPLETE<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">b<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">appearance<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">_append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_APPEARANCE<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">struct<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">pack<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&lt;h<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">appearance<\/span><span style=\"color: #D8DEE9FF\">))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">payload<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">decode_field<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">adv_type<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> = 0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">result<\/span><span style=\"color: #D8DEE9FF\"> = []<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">while<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> + 1 &lt; <\/span><span style=\"color: #8FBCBB\">len<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">[<\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> + 1] == <\/span><span style=\"color: #8FBCBB\">adv_type<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">result<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">[<\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> + 2 : <\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> + <\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">[<\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\">] + 1])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> += 1 + <\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">[<\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">result<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">decode_name<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">n<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">decode_field<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_NAME<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">str<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">n<\/span><span style=\"color: #D8DEE9FF\">[0]<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">utf-8<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">n<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">decode_services<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\"> = []<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">u<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">decode_field<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID16_COMPLETE<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">struct<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">unpack<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&lt;h<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">u<\/span><span style=\"color: #D8DEE9FF\">)[0]))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">u<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">decode_field<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID32_COMPLETE<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">struct<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">unpack<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&lt;d<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">u<\/span><span style=\"color: #D8DEE9FF\">)[0]))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">u<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">decode_field<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_ADV_TYPE_UUID128_COMPLETE<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">append<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">u<\/span><span style=\"color: #D8DEE9FF\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">services<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">demo<\/span><span style=\"color: #D8DEE9FF\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">advertising_payload<\/span><span style=\"color: #D8DEE9FF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">micropython<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">=[<\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x181A<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">6E400001-B5A3-F393-E0A9-E50E24DCCA9E<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">)]<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">decode_name<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">decode_services<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">payload<\/span><span style=\"color: #D8DEE9FF\">))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">__name__<\/span><span style=\"color: #D8DEE9FF\"> == <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">__main__<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">demo<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Save that file onto the Raspberry Pi Pico W as &#8220;ble_advertising.py&#8221;. This file is designed make it possible for the Pico W to read and be read by other devices.<\/p>\n\n\n\n<p>Next, open up a new file in Thonny and paste the following code into it:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# PiCockpit.com\n\nimport bluetooth\nimport random\nimport struct\nimport time\nfrom machine import Pin\nfrom ble_advertising import advertising_payload\n\nfrom micropython import const\n\n_IRQ_CENTRAL_CONNECT = const(1)\n_IRQ_CENTRAL_DISCONNECT = const(2)\n_IRQ_GATTS_WRITE = const(3)\n\n_FLAG_READ = const(0x0002)\n_FLAG_WRITE_NO_RESPONSE = const(0x0004)\n_FLAG_WRITE = const(0x0008)\n_FLAG_NOTIFY = const(0x0010)\n\n_UART_UUID = bluetooth.UUID(&quot;6E400001-B5A3-F393-E0A9-E50E24DCCA9E&quot;)\n_UART_TX = (\n    bluetooth.UUID(&quot;6E400003-B5A3-F393-E0A9-E50E24DCCA9E&quot;),\n    _FLAG_READ | _FLAG_NOTIFY,\n)\n_UART_RX = (\n    bluetooth.UUID(&quot;6E400002-B5A3-F393-E0A9-E50E24DCCA9E&quot;),\n    _FLAG_WRITE | _FLAG_WRITE_NO_RESPONSE,\n)\n_UART_SERVICE = (\n    _UART_UUID,\n    (_UART_TX, _UART_RX),\n)\n\n\nclass BLESimplePeripheral:\n    def __init__(self, ble, name=&quot;mpy-uart&quot;):\n        self._ble = ble\n        self._ble.active(True)\n        self._ble.irq(self._irq)\n        ((self._handle_tx, self._handle_rx),) = self._ble.gatts_register_services((_UART_SERVICE,))\n        self._connections = set()\n        self._write_callback = None\n        self._payload = advertising_payload(name=name, services=[_UART_UUID])\n        self._advertise()\n\n    def _irq(self, event, data):\n        if event == _IRQ_CENTRAL_CONNECT:\n            conn_handle, _, _ = data\n            print(&quot;New connection&quot;, conn_handle)\n            self._connections.add(conn_handle)\n        elif event == _IRQ_CENTRAL_DISCONNECT:\n            conn_handle, _, _ = data\n            print(&quot;Disconnected&quot;, conn_handle)\n            self._connections.remove(conn_handle)\n            self._advertise()\n        elif event == _IRQ_GATTS_WRITE:\n            conn_handle, value_handle = data\n            value = self._ble.gatts_read(value_handle)\n            if value_handle == self._handle_rx and self._write_callback:\n                self._write_callback(value)\n\n    def send(self, data):\n        for conn_handle in self._connections:\n            self._ble.gatts_notify(conn_handle, self._handle_tx, data)\n\n    def is_connected(self):\n        return len(self._connections) &gt; 0\n\n    def _advertise(self, interval_us=500000):\n        print(&quot;Starting advertising&quot;)\n        self._ble.gap_advertise(interval_us, adv_data=self._payload)\n\n    def on_write(self, callback):\n        self._write_callback = callback\n\n\ndef demo():\n    led_onboard = Pin(&quot;LED&quot;, Pin.OUT)\n    ble = bluetooth.BLE()\n    p = BLESimplePeripheral(ble)\n\n    def on_rx(v):\n        print(&quot;RX&quot;, v)\n\n    p.on_write(on_rx)\n\n    i = 0\n    while True:\n        if p.is_connected():\n            led_onboard.on()\n            for _ in range(3):\n                data = str(i) + &quot;_&quot;\n                print(&quot;TX&quot;, data)\n                p.send(data)\n                i += 1\n        time.sleep_ms(100)\n\n\nif __name__ == &quot;__main__&quot;:\n    demo()\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\"># <\/span><span style=\"color: #D8DEE9\">PiCockpit<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">com<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">random<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">struct<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">machine<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">ble_advertising<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">advertising_payload<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">micropython<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">const<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_IRQ_CENTRAL_CONNECT<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_IRQ_CENTRAL_DISCONNECT<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(2)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_IRQ_GATTS_WRITE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(3)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_FLAG_READ<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x0002<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_FLAG_WRITE_NO_RESPONSE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x0004<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_FLAG_WRITE<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x0008<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_FLAG_NOTIFY<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">const<\/span><span style=\"color: #D8DEE9FF\">(0<\/span><span style=\"color: #8FBCBB\">x0010<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_UART_UUID<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">6E400001-B5A3-F393-E0A9-E50E24DCCA9E<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_UART_TX<\/span><span style=\"color: #D8DEE9FF\"> = (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">6E400003-B5A3-F393-E0A9-E50E24DCCA9E<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">_FLAG_READ<\/span><span style=\"color: #D8DEE9FF\"> | <\/span><span style=\"color: #8FBCBB\">_FLAG_NOTIFY<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_UART_RX<\/span><span style=\"color: #D8DEE9FF\"> = (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">UUID<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">6E400002-B5A3-F393-E0A9-E50E24DCCA9E<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">_FLAG_WRITE<\/span><span style=\"color: #D8DEE9FF\"> | <\/span><span style=\"color: #8FBCBB\">_FLAG_WRITE_NO_RESPONSE<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">_UART_SERVICE<\/span><span style=\"color: #D8DEE9FF\"> = (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">_UART_UUID<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    (<\/span><span style=\"color: #8FBCBB\">_UART_TX<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_UART_RX<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">BLESimplePeripheral<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">__init__<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">ble<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">mpy-uart<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_ble<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">ble<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_ble<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">active<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">True<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_ble<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">irq<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_irq<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ((<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_handle_tx<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_handle_rx<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">) = <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_ble<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">gatts_register_services<\/span><span style=\"color: #D8DEE9FF\">((<\/span><span style=\"color: #8FBCBB\">_UART_SERVICE<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_connections<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">set<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_write_callback<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">None<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_payload<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">advertising_payload<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">services<\/span><span style=\"color: #D8DEE9FF\">=[<\/span><span style=\"color: #8FBCBB\">_UART_UUID<\/span><span style=\"color: #D8DEE9FF\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_advertise<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_irq<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">event<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">data<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">event<\/span><span style=\"color: #D8DEE9FF\"> == <\/span><span style=\"color: #8FBCBB\">_IRQ_CENTRAL_CONNECT<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">New connection<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_connections<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">add<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">elif<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">event<\/span><span style=\"color: #D8DEE9FF\"> == <\/span><span style=\"color: #8FBCBB\">_IRQ_CENTRAL_DISCONNECT<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Disconnected<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_connections<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">remove<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_advertise<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">elif<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">event<\/span><span style=\"color: #D8DEE9FF\"> == <\/span><span style=\"color: #8FBCBB\">_IRQ_GATTS_WRITE<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">value_handle<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">value<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_ble<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">gatts_read<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">value_handle<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">value_handle<\/span><span style=\"color: #D8DEE9FF\"> == <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_handle_rx<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_write_callback<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_write_callback<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">value<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">data<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_connections<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_ble<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">gatts_notify<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">conn_handle<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_handle_tx<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">data<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">is_connected<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">len<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_connections<\/span><span style=\"color: #D8DEE9FF\">) &gt; 0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_advertise<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">interval_us<\/span><span style=\"color: #D8DEE9FF\">=500000):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Starting advertising<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_ble<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">gap_advertise<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">interval_us<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">adv_data<\/span><span style=\"color: #D8DEE9FF\">=<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_payload<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">on_write<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">callback<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">self<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">_write_callback<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">callback<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">demo<\/span><span style=\"color: #D8DEE9FF\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">led_onboard<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">LED<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">OUT<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">ble<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">bluetooth<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">BLE<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">p<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">BLESimplePeripheral<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">ble<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">on_rx<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">v<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">RX<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">v<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">p<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">on_write<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">on_rx<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> = 0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">while<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">True<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">p<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">is_connected<\/span><span style=\"color: #D8DEE9FF\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">led_onboard<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">on<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">_<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">range<\/span><span style=\"color: #D8DEE9FF\">(3):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">data<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">str<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\">) + <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">_<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">print<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">TX<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">data<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">p<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">data<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">i<\/span><span style=\"color: #D8DEE9FF\"> += 1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">time<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">sleep_ms<\/span><span style=\"color: #D8DEE9FF\">(100)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">__name__<\/span><span style=\"color: #D8DEE9FF\"> == <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">__main__<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">demo<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Now, just as before, save the file onto the Pico W and this time, you can call it &#8220;led_peripheral.py&#8221;. While the advertising file enables the Pico W to communicate with other devices, the peripheral file enables it to <em>function<\/em> as a peripheral device. In this case, that function will be turning the LED on.<\/p>\n\n\n\n<p>Now hit &#8220;Run current script&#8221; in the Thonny toolbar.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-33-57.png\" alt=\"Image of Pico W Bluetooth the Thonny IDE\" class=\"wp-image-4179\" style=\"width:602px;height:541px\" width=\"602\" height=\"541\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-33-57.png 790w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-33-57-300x270.png 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-33-57-768x691.png 768w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-33-57-13x12.png 13w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n<\/div>\n\n\n<p>As you can see in the picture, the console will output &#8220;Starting advertising&#8221;. At this point, you can connect with a Bluetooth device such as your phone. Find and pair with &#8220;mpy-uart&#8221;.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/bluetoothconnect-461x1024.jpg\" alt=\"Image of the Bluetooth Connections on an Android Phone\" class=\"wp-image-4180\" style=\"width:188px;height:418px\" width=\"188\" height=\"418\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/bluetoothconnect-461x1024.jpg 461w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/bluetoothconnect-135x300.jpg 135w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/bluetoothconnect-5x12.jpg 5w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/bluetoothconnect.jpg 576w\" sizes=\"auto, (max-width: 188px) 100vw, 188px\" \/><\/figure>\n<\/div>\n\n\n<p>Once you pair the two, the Pico W&#8217;s LED will turn on and the Thonny console will begin to count how long the two are counted:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-34-52.png\" alt=\"Image of Pico W Bluetooth the Thonny IDE\" class=\"wp-image-4181\" style=\"width:573px;height:514px\" width=\"573\" height=\"514\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-34-52.png 790w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-34-52-300x270.png 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-34-52-768x690.png 768w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-01-09-34-52-13x12.png 13w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/figure>\n<\/div>\n\n\n<p>Congratulations! You&#8217;ve now confirmed that your Pico W&#8217;s Bluetooth is working and you can now begin to focus on your next project!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"projects\">Pico W Bluetooth Projects<\/h2>\n\n\n\n<p>When beginning your next Pico W project, you can turn to some of the projects that others have done. Since the Pico W just received official Bluetooth support, new projects are just beginning to pop up. <\/p>\n\n\n\n<p>Here is a (growing) list of some of the projects that have appeared so far:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Pico W Bluetooth <a href=\"https:\/\/www.youtube.com\/watch?v=-0wCtKz1l78\">Remote Control<\/a><\/li>\n\n\n\n<li>Pico W Bluetooth <a href=\"https:\/\/twitter.com\/Elec_Robot\/status\/1671848675516243968\">Robot<\/a><\/li>\n\n\n\n<li>Pico W Bluetooth <a href=\"https:\/\/forums.raspberrypi.com\/viewtopic.php?p=2116676&amp;hilit=pico+w+bluetooth#p2116676\">Mouse<\/a><\/li>\n\n\n\n<li>Pico W Bluetooth <a href=\"https:\/\/www.youtube.com\/watch?v=V7spAtwrQIY\">Lights<\/a><\/li>\n\n\n\n<li>Pico W USB to Bluetooth <a href=\"https:\/\/github.com\/wasdwasd0105\/PicoW-usb2bt-audio\">Audio Adapter<\/a><\/li>\n\n\n\n<li>Pico W Bluetooth <a href=\"https:\/\/www.youtube.com\/watch?v=nd3AwP03nww\">PicoDRO (digital readout)<\/a><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<p><strong>Can I use Bluetooth Classic with the Pico W?<\/strong><\/p>\n\n\n\n<p>Absolutely, the Pico W supports Bluetooth Classic and BLE!<\/p>\n\n\n\n<p><strong>Can I connect multiple devices to the Pico W simultaneously?<\/strong><\/p>\n\n\n\n<p>Yes, the Pico W can act as a central device and connect to multiple Bluetooth peripherals simultaneously. You can also use Bluetooth Classic and BLE simultaneously. So you can create ultra-complex systems where the Pico W communicates with a bunch of sensors or controls multiple devices at once.<\/p>\n\n\n\n<p><strong>What is the Bluetooth range on the Pico W?<\/strong><\/p>\n\n\n\n<p>Typically up to 30 meters (98 feet) in open space. However, the range may vary depending on environmental factors such as obstacles, interference, and signal strength.<\/p>\n\n\n\n<p><strong>Can I use the Pico W as a Bluetooth peripheral device?<\/strong><\/p>\n\n\n\n<p>The Pico W can function as a central or a peripheral device. So it allows other Bluetooth central devices (such as smartphones, tablets, or computers) to connect to it. All of this works beautifully with <a href=\"https:\/\/picockpit.com\/\">PiCockpit<\/a>, by the way!<\/p>\n\n\n\n<p><strong>How do I program Bluetooth functionality on the Pico W?<\/strong><\/p>\n\n\n\n<p>You can program Bluetooth functionality on the Pico W using the Raspberry Pi Pico SDK version 1.5.1. The SDK provides libraries and examples specifically for Bluetooth development. It allows you to implement Bluetooth services, characteristics, and handle communication protocols.<\/p>\n\n\n\n<p><strong>What are the power requirements for Bluetooth on the Pico W?<\/strong><\/p>\n\n\n\n<p>Bluetooth is designed to be power-efficient. So the Pico W consumes minimal power during idle periods and you can optimize your code further by using techniques like sleep modes and low-power states. The specific power requirements depend on the application and usage scenario, obviously.<\/p>\n<div class=\"shariff shariff-align-center shariff-widget-align-left shariff-buttonstretch\"><ul class=\"shariff-buttons theme-white orientation-horizontal buttonsize-medium\"><li class=\"shariff-button twitter shariff-nocustomcolor\" style=\"background-color:#595959\"><a href=\"https:\/\/twitter.com\/share?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fja%2F%25e3%2583%25a9%25e3%2582%25ba%25e3%2583%2599%25e3%2583%25aa%25e3%2583%25bc%25e3%2583%25bb%25e3%2583%2591%25e3%2582%25a4%25e3%2583%25bb%25e3%2583%2594%25e3%2582%25b3%25e3%2581%25aebluetooth%25e3%2581%25ab%25e9%2596%25a2%25e3%2581%2599%25e3%2582%258b%25e3%2581%2599%25e3%2581%25b9%25e3%2581%25a6-w%2F&text=Everything%20about%20Bluetooth%20on%20the%20Raspberry%20Pi%20Pico%20W\" title=\"Share on X\" aria-label=\"Share on X\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#000; color:#000\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#000\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"><path fill=\"#000\" d=\"M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#000\">\u5171\u6709<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button facebook shariff-nocustomcolor\" style=\"background-color:#4273c8\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fja%2F%25e3%2583%25a9%25e3%2582%25ba%25e3%2583%2599%25e3%2583%25aa%25e3%2583%25bc%25e3%2583%25bb%25e3%2583%2591%25e3%2582%25a4%25e3%2583%25bb%25e3%2583%2594%25e3%2582%25b3%25e3%2581%25aebluetooth%25e3%2581%25ab%25e9%2596%25a2%25e3%2581%2599%25e3%2582%258b%25e3%2581%2599%25e3%2581%25b9%25e3%2581%25a6-w%2F\" title=\"\u30d5\u30a7\u30a4\u30b9\u30d6\u30c3\u30af\u4e0a\u3067\u5171\u6709\" aria-label=\"\u30d5\u30a7\u30a4\u30b9\u30d6\u30c3\u30af\u4e0a\u3067\u5171\u6709\" role=\"button\" rel=\"nofollow\" class=\"shariff-link\" style=\"; background-color:#3b5998; color:#3b5998\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#3b5998\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 18 32\"><path fill=\"#3b5998\" d=\"M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#3b5998\">\u5171\u6709<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button telegram shariff-nocustomcolor\" style=\"background-color:#4084A6\"><a href=\"https:\/\/telegram.me\/share\/url?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fja%2F%25e3%2583%25a9%25e3%2582%25ba%25e3%2583%2599%25e3%2583%25aa%25e3%2583%25bc%25e3%2583%25bb%25e3%2583%2591%25e3%2582%25a4%25e3%2583%25bb%25e3%2583%2594%25e3%2582%25b3%25e3%2581%25aebluetooth%25e3%2581%25ab%25e9%2596%25a2%25e3%2581%2599%25e3%2582%258b%25e3%2581%2599%25e3%2581%25b9%25e3%2581%25a6-w%2F&text=Everything%20about%20Bluetooth%20on%20the%20Raspberry%20Pi%20Pico%20W\" title=\"Telegram\u4e0a\u3067\u5171\u6709\" aria-label=\"Telegram\u4e0a\u3067\u5171\u6709\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#0088cc; color:#0088cc\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#0088cc\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#0088cc\" d=\"M30.8 6.5l-4.5 21.4c-.3 1.5-1.2 1.9-2.5 1.2L16.9 24l-3.3 3.2c-.4.4-.7.7-1.4.7l.5-7L25.5 9.2c.6-.5-.1-.8-.9-.3l-15.8 10L2 16.7c-1.5-.5-1.5-1.5.3-2.2L28.9 4.3c1.3-.5 2.3.3 1.9 2.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#0088cc\">\u5171\u6709<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button reddit shariff-nocustomcolor\" style=\"background-color:#ff5700\"><a href=\"https:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fja%2F%25e3%2583%25a9%25e3%2582%25ba%25e3%2583%2599%25e3%2583%25aa%25e3%2583%25bc%25e3%2583%25bb%25e3%2583%2591%25e3%2582%25a4%25e3%2583%25bb%25e3%2583%2594%25e3%2582%25b3%25e3%2581%25aebluetooth%25e3%2581%25ab%25e9%2596%25a2%25e3%2581%2599%25e3%2582%258b%25e3%2581%2599%25e3%2581%25b9%25e3%2581%25a6-w%2F\" title=\"Reddit\u4e0a\u3067\u5171\u6709\" aria-label=\"Reddit\u4e0a\u3067\u5171\u6709\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#ff4500; color:#ff4500\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#ff4500\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"><path fill=\"#ff4500\" d=\"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#ff4500\">\u5171\u6709<\/span>&nbsp;<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>Raspberry Pi Foundation\u306f\u6700\u8fd1\u3001C\/C++ SDK\u30d0\u30fc\u30b8\u30e7\u30f31.5.1\u3068Pico W\u306eMicropython\u306e\u65b0\u3057\u3044\u30ea\u30ea\u30fc\u30b9\u306eBluetooth\u30b5\u30dd\u30fc\u30c8\u3092\u767a\u8868\u3057\u305f\uff01Pico W\u3092\u304a\u6301\u3061\u306e\u65b9\u306f\u3001\u65b0\u305f\u306b\u8cfc\u5165\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u3060Pico W\u3092\u304a\u6301\u3061\u3067\u306a\u3044\u65b9\u306f\u3001\u3053\u3053\u3067\u8cfc\u5165\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30d4\u30b3W\u306e\u521d\u5fc3\u8005\u306e\u65b9\u306f\u3001\u3053\u3061\u3089\u306e\u8a18\u4e8b\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u3057\u304b\u3057\u3053\u3053\u3067\u306f\u3001Raspberry Pi Pico...\u306eBluetooth\u306b\u3064\u3044\u3066\u77e5\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3059\u3079\u3066\u3092\u53d6\u308a\u4e0a\u3052\u307e\u3059\u3002<\/p>","protected":false},"author":2,"featured_media":4642,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,220],"tags":[380,376,379,377,11,221,378,1759,193,447,187],"class_list":["post-3802","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-raspberry-pi-pico","category-raspberry-pi-projects","tag-ble","tag-bluetooth","tag-bluetooth-classic","tag-esp32","tag-pico","tag-pico-w","tag-pico-w-bluetooth-projects","tag-pico-w-project","tag-picockpit","tag-projects","tag-raspberry-pi"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Everything about Bluetooth on the Raspberry Pi Pico W | PiCockpit<\/title>\n<meta name=\"description\" content=\"In this post, we&#039;re looking at the spectacular universe of Bluetooth on the Raspberry Pi Pico W, which received official support in June 2023.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/picockpit.com\/raspberry-pi\/ja\/\u30e9\u30ba\u30d9\u30ea\u30fc\u30fb\u30d1\u30a4\u30fb\u30d4\u30b3\u306ebluetooth\u306b\u95a2\u3059\u308b\u3059\u3079\u3066-w\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Everything about Bluetooth on the Raspberry Pi Pico W | PiCockpit\" \/>\n<meta property=\"og:description\" content=\"In this post, we&#039;re looking at the spectacular universe of Bluetooth on the Raspberry Pi Pico W, which received official support in June 2023.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/picockpit.com\/raspberry-pi\/ja\/\u30e9\u30ba\u30d9\u30ea\u30fc\u30fb\u30d1\u30a4\u30fb\u30d4\u30b3\u306ebluetooth\u306b\u95a2\u3059\u308b\u3059\u3079\u3066-w\/\" \/>\n<meta property=\"og:site_name\" content=\"PiCockpit\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pi3gshop\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-03T10:32:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-09T15:49:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"raspi berry\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@pi3g\" \/>\n<meta name=\"twitter:site\" content=\"@pi3g\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"raspi berry\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/\"},\"author\":{\"name\":\"raspi berry\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/person\\\/7af3a7a8c999bc722029ef9ca9d78eee\"},\"headline\":\"Everything about Bluetooth on the Raspberry Pi Pico W\",\"datePublished\":\"2023-07-03T10:32:11+00:00\",\"dateModified\":\"2023-08-09T15:49:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/\"},\"wordCount\":1355,\"commentCount\":12,\"publisher\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Untitled11.png\",\"keywords\":[\"BLE\",\"Bluetooth\",\"Bluetooth Classic\",\"ESP32\",\"Pico\",\"Pico W\",\"Pico W Bluetooth Projects\",\"Pico W project\",\"picockpit\",\"Projects\",\"Raspberry Pi\"],\"articleSection\":[\"Raspberry Pi Pico\",\"Raspberry Pi projects\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/\",\"name\":\"Everything about Bluetooth on the Raspberry Pi Pico W | PiCockpit\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Untitled11.png\",\"datePublished\":\"2023-07-03T10:32:11+00:00\",\"dateModified\":\"2023-08-09T15:49:53+00:00\",\"description\":\"In this post, we're looking at the spectacular universe of Bluetooth on the Raspberry Pi Pico W, which received official support in June 2023.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#primaryimage\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Untitled11.png\",\"contentUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Untitled11.png\",\"width\":1200,\"height\":675,\"caption\":\"PiCockpit Pico W Bluetooth Title Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/zh\\\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Pi Pico\",\"item\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/category\\\/raspberry-pi-pico\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Everything about Bluetooth on the Raspberry Pi Pico W\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#website\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\",\"name\":\"PiCockpit\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\",\"name\":\"PiCockpit.com\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Screenshot-from-2023-07-24-15-01-24.png\",\"contentUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Screenshot-from-2023-07-24-15-01-24.png\",\"width\":1165,\"height\":283,\"caption\":\"PiCockpit.com\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pi3gshop\",\"https:\\\/\\\/x.com\\\/pi3g\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/person\\\/7af3a7a8c999bc722029ef9ca9d78eee\",\"name\":\"raspi berry\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"caption\":\"raspi berry\"},\"description\":\"I'm here to help you with all your Raspberry Pi related questions &amp; love to share about new project ideas for the Raspberry Pi, and give quick tips. Of course I'll also help you with PiCockpit and how to make your Raspberry Pi even easier to use with this raspberry pi monitoring solution :-)\",\"sameAs\":[\"https:\\\/\\\/picockpit.com\"],\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/ja\\\/author\\\/raspi-berry\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Raspberry Pi Pico W\u306eBluetooth\u306e\u3059\u3079\u3066\uff5cPiCockpit\u30d1\u30a4\u30b3\u30c3\u30af\u30d4\u30c3\u30c8","description":"\u3053\u306e\u8a18\u4e8b\u3067\u306f\u30012023\u5e746\u6708\u306b\u6b63\u5f0f\u30b5\u30dd\u30fc\u30c8\u304c\u958b\u59cb\u3055\u308c\u305fRaspberry Pi Pico W\u306eBluetooth\u306e\u58ee\u5927\u306a\u4e16\u754c\u3092\u7d39\u4ecb\u3059\u308b\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/picockpit.com\/raspberry-pi\/ja\/\u30e9\u30ba\u30d9\u30ea\u30fc\u30fb\u30d1\u30a4\u30fb\u30d4\u30b3\u306ebluetooth\u306b\u95a2\u3059\u308b\u3059\u3079\u3066-w\/","og_locale":"ja_JP","og_type":"article","og_title":"Everything about Bluetooth on the Raspberry Pi Pico W | PiCockpit","og_description":"In this post, we're looking at the spectacular universe of Bluetooth on the Raspberry Pi Pico W, which received official support in June 2023.","og_url":"https:\/\/picockpit.com\/raspberry-pi\/ja\/\u30e9\u30ba\u30d9\u30ea\u30fc\u30fb\u30d1\u30a4\u30fb\u30d4\u30b3\u306ebluetooth\u306b\u95a2\u3059\u308b\u3059\u3079\u3066-w\/","og_site_name":"PiCockpit","article_publisher":"https:\/\/www.facebook.com\/pi3gshop","article_published_time":"2023-07-03T10:32:11+00:00","article_modified_time":"2023-08-09T15:49:53+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11.png","type":"image\/png"}],"author":"raspi berry","twitter_card":"summary_large_image","twitter_creator":"@pi3g","twitter_site":"@pi3g","twitter_misc":{"\u57f7\u7b46\u8005":"raspi berry","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"8\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#article","isPartOf":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/"},"author":{"name":"raspi berry","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/person\/7af3a7a8c999bc722029ef9ca9d78eee"},"headline":"Everything about Bluetooth on the Raspberry Pi Pico W","datePublished":"2023-07-03T10:32:11+00:00","dateModified":"2023-08-09T15:49:53+00:00","mainEntityOfPage":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/"},"wordCount":1355,"commentCount":12,"publisher":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#primaryimage"},"thumbnailUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11.png","keywords":["BLE","Bluetooth","Bluetooth Classic","ESP32","Pico","Pico W","Pico W Bluetooth Projects","Pico W project","picockpit","Projects","Raspberry Pi"],"articleSection":["Raspberry Pi Pico","Raspberry Pi projects"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/","url":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/","name":"Raspberry Pi Pico W\u306eBluetooth\u306e\u3059\u3079\u3066\uff5cPiCockpit\u30d1\u30a4\u30b3\u30c3\u30af\u30d4\u30c3\u30c8","isPartOf":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#primaryimage"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#primaryimage"},"thumbnailUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11.png","datePublished":"2023-07-03T10:32:11+00:00","dateModified":"2023-08-09T15:49:53+00:00","description":"\u3053\u306e\u8a18\u4e8b\u3067\u306f\u30012023\u5e746\u6708\u306b\u6b63\u5f0f\u30b5\u30dd\u30fc\u30c8\u304c\u958b\u59cb\u3055\u308c\u305fRaspberry Pi Pico W\u306eBluetooth\u306e\u58ee\u5927\u306a\u4e16\u754c\u3092\u7d39\u4ecb\u3059\u308b\u3002","breadcrumb":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#primaryimage","url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11.png","contentUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Untitled11.png","width":1200,"height":675,"caption":"PiCockpit Pico W Bluetooth Title Image"},{"@type":"BreadcrumbList","@id":"https:\/\/picockpit.com\/raspberry-pi\/zh\/\u5173\u4e8e\u8986\u76c6\u5b50\u4e0a\u7684\u84dd\u7259\u7684\u4e00\u5207-pico-w\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/picockpit.com\/raspberry-pi\/"},{"@type":"ListItem","position":2,"name":"Raspberry Pi Pico","item":"https:\/\/picockpit.com\/raspberry-pi\/category\/raspberry-pi-pico\/"},{"@type":"ListItem","position":3,"name":"Everything about Bluetooth on the Raspberry Pi Pico W"}]},{"@type":"WebSite","@id":"https:\/\/picockpit.com\/raspberry-pi\/#website","url":"https:\/\/picockpit.com\/raspberry-pi\/","name":"PiCockpit","description":"","publisher":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/picockpit.com\/raspberry-pi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization","name":"PiCockpit.com","url":"https:\/\/picockpit.com\/raspberry-pi\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/logo\/image\/","url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-24-15-01-24.png","contentUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-24-15-01-24.png","width":1165,"height":283,"caption":"PiCockpit.com"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pi3gshop","https:\/\/x.com\/pi3g"]},{"@type":"Person","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/person\/7af3a7a8c999bc722029ef9ca9d78eee","name":"\u30e9\u30ba\u30d1\u30a4\u30fb\u30d9\u30ea\u30fc","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","caption":"raspi berry"},"description":"\u79c1\u306fRaspberry Pi\u306b\u95a2\u3059\u308b\u3042\u3089\u3086\u308b\u8cea\u554f\u306b\u304a\u7b54\u3048\u3057\u3001Raspberry Pi\u306e\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30a2\u30a4\u30c7\u30a2\u3084\u7c21\u5358\u306a\u30d2\u30f3\u30c8\u3092\u5171\u6709\u3059\u308b\u306e\u304c\u5927\u597d\u304d\u3067\u3059\u3002\u3082\u3061\u308d\u3093\u3001PiCockpit\u306b\u3064\u3044\u3066\u3082\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3057\u3001\u3053\u306e\u30e9\u30ba\u30d9\u30ea\u30fc\u30d1\u30a4\u30fb\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30fb\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066Raspberry Pi\u3092\u3088\u308a\u4f7f\u3044\u3084\u3059\u304f\u3059\u308b\u65b9\u6cd5\u3082\u3054\u7d39\u4ecb\u3057\u307e\u3059 :-)","sameAs":["https:\/\/picockpit.com"],"url":"https:\/\/picockpit.com\/raspberry-pi\/ja\/author\/raspi-berry\/"}]}},"_links":{"self":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/posts\/3802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/comments?post=3802"}],"version-history":[{"count":32,"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/posts\/3802\/revisions"}],"predecessor-version":[{"id":4705,"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/posts\/3802\/revisions\/4705"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/media\/4642"}],"wp:attachment":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/media?parent=3802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/categories?post=3802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/ja\/wp-json\/wp\/v2\/tags?post=3802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}