Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 男女下面进入的视频,成人欧美影片在线观看免费视频,国产日韩精品一区二区在线观看播放

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          低功耗藍牙(BLE)和傳感器的使用

          低功耗藍牙(BLE)和傳感器的使用

          、低功耗藍牙的使用

          Android中關于藍牙的開發文檔,可以參考Google提供的官方藍牙文檔:https://developer.android.google.cn/guide/topics/connectivity/bluetooth.html

          在Android開發中,應用可通過官方提供的藍牙API執行以下操作:

          • 掃描其他藍牙設備
          • 查詢本地藍牙適配器的配對藍牙設備
          • 建立 RFCOMM 通道
          • 通過服務發現連接到其他設備
          • 與其他設備進行雙向數據傳輸
          • 管理多個連接

          藍牙

          一個近距離無線通信技術,最早是由愛立信研發出來。藍牙 Bluetooth 這個詞是一個丹麥的國王的綽號,當時研發它的工程師正在看一個關于這個國王的書,就起了這個名字。藍牙的技術特點是:

          • 近距離通信:典型距離是 10 米以內;
          • 傳輸效率:傳輸速度最高可達 24 Mbps
          • 多連接:藍牙技術支持多設備連接、安全性高

          藍牙從被發明到目前,經過了幾個版本的變化:

          • 1.0版本:99年發布
          • 2.1版本:使用范圍最廣泛,經典藍牙
          • 3.0版本:高速藍牙,最高傳輸速度達到24Mbps
          • 4.0/4.1版本:新增低功耗藍牙
          • 5.0版本:物聯網

          低功耗藍牙

          低功耗藍牙全稱為Bluetooth Low Energy,簡稱為BLE,最大特點就是低功耗,另外低功耗藍牙還具備成本低,連接速度快,安全性高的特點。當然,低功耗藍牙也相應的會有一些不足,比如說:低功耗對應的是低傳輸效率,因此低功耗藍牙主要用來傳輸少量數據,結合低功耗的特點,非常適合用在移動智能設備上。

          低功耗藍牙分為兩種模式:單模和雙模。

          • 單模:只能執行低功耗協議棧,即只支持BLE。
          • 雙模:既支持傳統藍牙又支持BLE藍牙。

          注意:需要在Android 4.3及以上版本才能支持具備低功耗功能的藍牙4.0。

          BLE協議棧

          首先來看一下使用藍牙的基本流程:

          先簡單來了解一下低功耗藍牙的協議框架,在BLE協議棧中,大致分為三個部分,從下到上依次為:控制器(Controller) 、主機(Host)、應用(Applications)。

          • 控制器:協議棧的最底層,直接與硬件相關,由廠商直接實現。
          • 主機:硬件層的抽象層,與具體的硬件和常見無關,可以理解為接口。
          • 應用層:使用Host層提供的API,進而開發的應用。

          協議層從下往上,依次包含如下協議:

          • Attribute Protocol:簡稱為 ATT,屬性協議,Host層的一個協議,是BLE通信的基礎。ATT 把數據封裝,向外暴露為“屬性”,提供“屬性”的為服務端,獲取“屬性”的為客戶端。ATT 是專門為低功耗藍牙設計的,結構非常簡單,數據長度很短。每個屬性都有一個唯一的UUID,屬性以characteristics and services的形式傳輸。
          • Generic Attribute Profile:簡稱為GATT,通用屬性配置文件,建立在前面說的 ATT 的基礎上,對 ATT 進行進一步的邏輯封裝,定義數據的交互方式和含義。GATT 按照層級定義了三個概念:
            • Service:服務,一個 Service 包含若干個 Characteristic。
            • Characteristic:特征,一個 Characteristic 可以包含若干 Descriptor。
            • Descriptor:描述,數據的讀寫操作。
          • Generic Access Profile:簡稱為GAP,通用訪問控制配置文件,用來控制設備連接和廣播,GAP使你的設備被其他設備可見,并決定了你的設備是否可以或者怎樣與合同設備進行交互。

          Android BLE API

          • Android SDK 中 BLE 相關的 API 都在 android.bluetooth.* 中。
          • 5.0版本中:android.bluetooth.le*

          權限

          • 要在 APP 中使用藍牙功能,需要在 Manifest 中申請藍牙相關的權限。
          • Android 6.0及以上版本:藍牙 + 定位權限。為什么會有定位權限?BLE有定位的功能和能力。

          BLE核心API

          • BluetoothManager:藍牙管理服務。在Android基本框架中可以發現藍牙屬于最底層的驅動模塊中,可以公國context.getSystemService(Context.BLUETOOTH_SERVICE) 來進行獲取。
          • BluetoothAdapter:本地設備藍牙適配器。BluetoothAdapter可以完成:啟動設備發現,查詢已綁定(配對)設備的列表,使用已知MAC地址實例化 BluetoothDevice,并創建一個 BluetoothServerSocket 以監聽來自其他設備的連接請求,并啟動掃描藍牙LE設備等操作,該類屬于核心中的核心。
          • BluetoothAdapter.LeScanCallback:BLE掃描結果回調接口,在 Android 5.0以上 使用抽象類 ScanCallback。
          • BluetoothLeScanner:藍牙LE設備執行掃描相關操作類,使用該API要求Android 5.0(API21)以上。
          • BluetoothDevice:遠程藍牙設備,BluetoothDevice允許創建與相應設備的連接或關于它的查詢信息,例如名稱,地址,類和綁定狀態等。
          • BluetoothProfile:配置文件代理。每個公共配置文件實現這個接口。它有幾個直接子類,每個子類再不同場景中使用,如 BluetoothA2dp, BluetoothGatt, BluetoothGattServer, BluetoothHeadset, BluetoothHealth。在當前例子中使用到的是 BluetoothGatt。
          • BluetoothGatt:提供藍牙GATT功能,以實現與藍牙智能或智能就緒設備的通信。使用該類做連接、斷開、關閉等操作。
          • BluetoothGattCallback:設備連接時的回調接口。

          UUID

          UUID 是全局唯一標識,是128bit的值,為了便于識別和閱讀,一般標示成:8-4-4-12 的16進制格式。

          Android 中提供了 UUID.randomUUID() 來生成一個隨機的 UUID。

          在低功耗藍牙中,長度為128bit的UUID數據長度是受限的,因此藍牙中又產生出來了16bit和32bit的UUID,本質上和128bit的UUID一樣。

          Android 中BLE的操作步驟

          • ① 獲取到BluetoothAdapter:代表設備自己的藍牙適配器,整個系統只有一個藍牙適配器,應用程序可以使用此對象與其交互。獲取方法是通過 BluetoothManager 獲取。
          • ② 啟用藍牙設備:isEnable() 查看是否啟用,通過 BluetoothAdapter.ACTION_REQUEST_ENABLE 來啟動
          • ③ 查找BLE設備:通過startLeScan(callBack); 方法來開啟掃描;另外還可以使用BluetoothLeScanner來掃描。

          與Android BLE設備通信

          開發BLE應用,主要有兩大類:

          • 基于非連接的通信應用:使用的是BLE的廣播機制,又稱作是Beacon。共有兩個角色:發送方負責發送廣播,稱之為Boradcaster,另外一方為監聽方,監聽廣播信號,稱之為Observer。
          • 基于連接的通信應用:基于連接的通信是通過建立GATT連接,讓后進行數據的收發。也有兩個角色:連接發起方,稱之為中心設備(Central),另外一方是被連接的設備,稱之為外設Peripheral。

          本篇文章中,我們來討論面向連接的通信的情況。如果要與另外一個BLE設備進行通信,需要經過連接,確認狀態,然后再通信的過程。首先是開啟連接,然后會觸發對應的連接回調,然后發現服務,觸發發現服務回調,獲取服務內部的特征值,對其讀寫命令(和 BLE 共同約束的規范),就是這么一個過程,比較簡單。

          • 連接到GATT服務器:如果要與BLE進行通信,第一步就是要連接到該設備的 GATT 服務。使用connectGatt方法鏈接,有三個參數,最后一個參數為連接的回調函數,表是處理鏈接的狀態,所有交互均從回調中進行處理。
          • 讀 BLE 屬性:一旦Android設備連接到GATT的服務器并且發現了BLE服務,則可以讀取或者寫入相關的屬性,執行相關的操作了。
          • 釋放GATT:當操作完成后,要記得關閉設備bluetoothGatt.close()。

          二、WIFI的使用

          每個移動智能設備幾乎都帶有WIFI連接功能,在Android系統中,同樣也提供了WIFI開發的相關的API。

          WIFI API

          Android系統提供的WIFI API,主要包含在兩個包中:

          • android.net.wifi包
          • android.net.wifi.p2p包

          和wifi相關的核心API主要有以下幾個內容:

          • WifiManager:提供管理WiFI連接的大部分API
          • ScanResult:已經檢測出的接入點(包括接入點的地址、名稱、身份認證、頻率、信號強度)
          • WifiConfiguration:WiFi連接的網絡配置(包括安全配置等)
          • WifiInfo:WiFi無線連接的描述,主要包括接入點、網絡連接狀態、隱藏的接入點、IP地址、連接速度、MAC地址、網絡ID、信號強度等等信息。
          • WifiManager.WifiLock:通常情況下當用戶在一段時間內沒有任何操作的時候,WiFi網絡會自動關閉。我們使用WifiLock來鎖定WiFi網絡,使其一直保持連接,直到這個鎖被釋放。多個應用程序可能有多個鎖,當多有的應用程序的鎖都被釋放的時候,WiFi才被關閉。

          WIFI 使用說明

          • WifiManager:context.getSystemService(Context.WIFI_SERVICE);
          • 打開WiFi:mWifiManager.setWifiEnabled(true); 關閉wifi為false
          • 創建一個WifiLock:mWifiManager.createWifiLock("lock_name");
          • 鎖定WifiLock:mWifiLock.acquire();
          • 釋放WifiLock:mWifiLock.release();
          • WiFi連接:
          public void addNetworkAndConn(WifiConfiguration wcg) {
              int netId=mWifiManager.addNetwork(wcg);
              mWifiManager.enableNetwork(netId, true);
          }
          • 斷開一個指定ID的WiFi:
          public void disconnectWifi(int netId) {
              mWifiManager.disableNetwork(netId);
              mWifiManager.disconnect();
          }
          • 掃描可接入的WiFi:
          public void startScan() {
              mWifiManager.startScan();
              // 得到掃描結果
              List<ScanResult> wifiList=mWifiManager.getScanResults();
              // 得到配置好的網絡連接
              List<WifiConfiguration> wifiConfigList=mWifiManager.getConfiguredNetworks();
          }

          WIFI 權限

          在進行wifi開發時,既要用到網絡,也要用到硬件資源,因此需要申請一些必要的權限,而且涉及到的還比較的多,主要的權限如下:

          <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
          <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"></uses-permission> 
          <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 
          <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
          <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 
          <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission>

          WIFI直連

          WIFI Direct 意為通過 WIFI 直接建立連接。允許無線網絡中的設備無須通過無線路由器即可相互連接。這種標準支持 WIFI 的無線設備像藍牙那樣以點對點的形式互連,但是在傳輸速度與傳輸距離方面都比藍牙有大幅提升。

          WIFI Direct 提供 WifiP2pManager 類,其功能主要分為以下三部分:

          • WifiP2pManager 類提供相關 API 用于發現可連接的點,并進行請求和建立連接。
          • 每個 WifiP2pManager 的方法都要求傳入對應的監聽器,用于監聽對該方法是否成功運行。
          • 當檢測到特定事件,如可連接的點減少或者發現了新的可連接的點,WIFI Direct 框架會通過 Intent 通知用戶。

          WifiP2pManager的核心API用法說明如下所示:

          • initialize:為應用程序注冊 WIFI 框架。該方法必須在任何其他 WIFI Direct 方法被調用前調用,常放在Application中調用。
          • connect:與具有指定配置的 WIFI 設備建立點對點連接
          • cancelConnect:斷開連接
          • requestConnectInfo:獲取設備的連接信息
          • createGroup:以當前設備為擁有者創建一個點對點組
          • removeGroup:刪除當前的點對點組
          • requestGroupInfo:獲取點對點組的信息
          • discoverPeers:初始化發現對等點設備服務
          • requestPeers:獲取當前已發現的對等點設備列表

          在WifiP2pManager使用時,同樣支持使用各種監聽回調接口:

          • ActionListener:Wifi連接過程中的某個動作監聽。主要包括:connect、cancelConnect、createGroup、removeGroup、discoverPeers等回調函數
          • ChannelListener:initialize初始化的回調
          • ConnectionInfoListener:請求連接的回調,回傳連接信息
          • GroupInfoListener:點對點組的監聽信息
          • PeerListListener:點對點設備的監聽回調接口

          三、傳感器

          Android 傳感器屬于虛擬設備,可提供來自以下各種物理傳感器的數據:

          • 加速度計
          • 陀螺儀
          • 磁力計、
          • 氣壓計
          • 濕度傳感器
          • 壓力傳感器
          • 光傳感器
          • 近程傳感器
          • 心率傳感器

          以上的這些均可以歸納為傳感器類別,在Android中,這些傳感器有一個相同的定義文件,存在一個 sensors.h文件,其中定義了Android系統支持的每一種傳感器。格式為:ENSOR_TYPE_傳感器名稱。


          該圖為Android系統中傳感器的的架構和分層。可以看出,幾乎和Android系統整體的架構一樣。從上層到下層,從應用層到底層內核層。

          傳奇器核心API

          Android傳感器框架放在android.hardware包中,核心的API如下所示:

          • SensorManager:用于創建傳感器服務實例。該類提供了訪問和羅列傳感器的各種方法,用于注冊和注銷傳感器事件監聽器并獲取方向信息。該類也提供了幾個常量,用于報告傳感器的精度、數據獲取率和校正傳感器。
          • Sensor:用作創建某個特定傳感器的實例。該類提供了用于確定傳感器能力的各種方法。
          • SensorEvent:創建傳感器事件對象。傳感器事件對象包含傳感器事件的相關信息,包括原始的傳感器數據、傳感器類型、產生的事件、事件精度以及事件發生的時間戳等。
          • SensorEventListener:是一個接口,包含兩個回調方法。當傳感器的值發生改變或者傳感器的精度發生改變時,相關方法就會自動被調用。

          傳感器核心操作

          無論如何變化,其實通過上面的描述和介紹,我們看到,傳感器是底層系統提供的,數據也是相關的API返回獲取的。因此,在涉及到傳感器開發時,開發者的核心操作只有兩個:

          • 分析需求,明確使用哪個一個類別的傳感器,明確要獲取的傳感器數據。
          • 調用系統的API方法,監聽傳感器的的回調時間,獲取數據。

          因此,Android中的傳感器部分的應用開發,重點不是在于傳感器的使用,是開發者自己特定的應用,在獲取到數據后,對數據的處理和挖掘,是重中之重。

          Android傳感器分類

          Android中支持的傳感器分為很多類別,主要有:

          • TYPE_ACCELEROMETER:運動探測傳感器,硬件傳感器
          • TYPE_AMBIENT_TEMPERATURE:環境溫度傳感器,硬件傳感器
          • TYPE_GRAVITY:運動探測,軟件或者硬件傳感器
          • TYPE_GYROSCOPE:旋轉,硬件傳感器
          • TYPE_LIGHT:屏幕亮度傳感器,屬于硬件傳感器
          • TYPE_LINEAR_ACCELERATION:加速度傳感器,軟件或者硬件都有
          • TYPE_ORIENTATION:方向傳感器,屬于軟件傳感器
          • TYPE_PRESSURE:空氣壓力傳感器,屬于硬件傳感器
          • TYPE_PROXIMITY:距離傳感器,用于監測打電話時手機與耳朵的距離,屬于硬件傳感器

          四、SystemService

          經過本篇文檔的介紹,結合之前的課程內容,我們可以總結出一個規律。在Android開發時,很多情況下我們都可以直接通過某個上下文,獲取xxxManager,往往是某個管理者。這些管理者是Android系統提供的系統服務,我們可以統稱為SystemService,現在我們了解一下SystemService有關的內容,并做個總結。

          SystemService

          SystemService是系統提供給開發者的調用系統層的控制接口,應用層的開發者只需要了解這些接口的使用方式,就可以非常方便的進行系統控制,完成自己想要的功能操作,獲取系統的相關信息,而不需要了解接口的具體內部實現方式。這些SystemManager是在framework層或者更底層進行實現的。

          相反的對于Framework層的開發者而言,需要了解XXXManager服務的實現細節和方式,并維護Manager接口,擴展或者實現新接口等。

          我們可以列舉一下我們在學習過程中遇到的Manager,比如:

          • WindowManager:窗口操作的窗口管理服務
          • NotifacationManager:通知管理
          • AudioManager:Android系統的音頻管理者
          • LocationManager:GPS定位服務管理
          • StatusBarManager:狀態欄的管理者

          除此以外,還有很多很多,以上這些管理者,其實背后都是有一個系統服務SystemService。

          getSystemService

          getSystemService是Android很重要的一個API,它是Activity的一個方法,根據傳入的NAME來取得對應的Object,然后轉換成相應的服務對象。

          O.1前置準備

          電腦端Chrome瀏覽器在地址欄打開以下網址,修改配置

          chrome://flags/

          把以下4個屬性開啟

          找不到的話可以在頂部搜索欄搜索關鍵字

          Experimental Web Platform features

          Bluetooth


          NO.2Web Bluetooth

          Web Bluetooth文檔

          https://developer.mozilla.org/zh-CN/docs/Web/API/Bluetooth

          注意以下幾點:

          1. chrome版本需要>=53
          2. 需要部署到HTTPS的網頁進行測試和使用
          3. 需要用戶手勢出發,也就是真實的鼠標點擊之類的操作,才能出發藍牙掃描和連接

          體驗網站Demo效果,需要對應的ESP32代碼

          https://bluetooth.dsx2020.com/

          效果如圖

          ESP32會收到對應的測試字符串

          網頁代碼

          那其中的service_uuid和receive_uuid換成你自己的藍牙廣告ID就可以了

          如果不確定,就繼續參考ESP32藍牙廣播對應的代碼

          
          
          
          
          <html lang="en">
              <head>
                  <meta charset="UTF-8" />
                  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
                  <title>BL</title>
              </head>
              <body>
                  <!-- 只有通過真實點擊才能連接藍牙 -->
                  <div onclick="blList()">blue</div>
              </body>
              <script>
                  // let uuid=// 定義連接藍牙方法
                  async function blList() {  
                      navigator.bluetooth
                          .requestDevice({
                              // 藍牙名稱前綴
                              filters: [{ name: "ESP32" }],
                              // 藍牙uuid
                               optionalServices: ["ae25a5c1-4601-143c-12bb-8bc45a18749c"], 
                          })
                          .then(async (device)=> {
                              console.log("Name: " + device.name, device);
                              // 連接設備
                              let server=await device.gatt.connect();
                              console.log(`server`, server);
                              // 獲取藍牙uuid相關內容
                              let service=await server.getPrimaryService("ae25a5c1-4601-143c-12bb-8bc45a18749c");
                              console.log(`service`, service);
                              // 獲取可以讀寫字符流的服務
                              let characteristic=await service.getCharacteristic(
                                  "ae25a5c2-4601-143c-12bb-8bc45a18749c"
                              );
                              // 寫入字節(括號中的方法為把字符串轉為字符流,傳輸給藍牙)
                              characteristic.writeValue(
                                  new Uint8Array(
                                      new TextEncoder("utf-8").encode("str")
                                  )
                              );
                              alert("已發送字符")
                          })
                          .catch(function (error) {
                              // 監聽錯誤
                              console.log("Something went wrong. " + error);
                              alert(error)
                          });
                  }
                  // blList();
          </script>
          </html>
          
          
          
          

          NO.3ESP32 Bluetooth

          參考上一篇文章

          《MicroPython[ESP32]物聯網開發-Bluetooth藍牙通信-002》

          這里貼上完整的代碼

          # 引入依賴
          import ubluetooth
          # 實例化藍牙
          class BLE():
              def __init__(self, name):   
                  # 藍牙名稱
                  self.name=name
                  # 創建藍牙實例
                  self.ble=ubluetooth.BLE()
                  # 開啟藍牙
                  self.ble.active(True)
                  # 藍牙事件回調
                  # 參考文檔
                  # https://docs.micropython.org/en/latest/library/bluetooth.html?highlight=irq
                  self.ble.irq(self.ble_irq)
                  # 配置藍牙UUID
                  self.register()
                  # 特征和描述符的默認最大大小為 20 個字節,修改允許為100個字節(藍牙數據的發送和接收字節大小限制)
                  self.ble.gatts_write(self.rx, bytes(100))
                  # 藍牙廣播
                  self.advertiser()
                  print("已開啟藍牙廣播")
                  
              # 藍牙連接成功后回調
              def connected(self):        
                  print("connected")
              # 藍牙斷開連接后回調
              def disconnected(self):        
                  print("disconnected")  
          
          
              # 藍牙事件回調函數
              def ble_irq(self, event, data):
                  #藍牙已連接
                  if event==1:
                      print("藍牙已連接")
                      # 連接后的執行函數
                      self.connected()
                  #藍牙已斷開連接
                  elif event==2:
                      print("藍牙已斷開連接")
                      # 斷開連接后的執行函數
                      self.advertiser()
                      self.disconnected()
                  #藍牙已發送數據
                  elif event==3 :
                      print("藍牙已接收到數據")        
                      # 讀取二進制數據
                      buffer=self.ble.gatts_read(self.rx)
                      # 使用UTF-8格式把二進制數據轉為字符串
                      message=buffer.decode('UTF-8').strip()
                      # 打印收到的字符數據
                      print("message",message)    
                      # 對指定的數據做處理并藍牙返回數據        
                      if message=='test':
                          print('test')
                          ble.send('test')
                      if message=='str':
                          print('str')
                          ble.send('str')
              # 注冊藍牙UUID
              def register(self):        
                  # 自定義UUID
                  # 藍牙服務UUID service_uuid(后續藍牙建議連接會用到)
                  NUS_UUID='AE25A5C1-4601-143C-12BB-8BC45A18749C'
                  # 藍牙接收特征UUId receive_uuid
                  RX_UUID='AE25A5C2-4601-143C-12BB-8BC45A18749C'
                  # 藍牙發送特征UUId transmit_uuid
                  TX_UUID='AE25A5C3-4601-143C-12BB-8BC45A18749C'
                  # UUID組合(一個包含UUID和特征列表的二元元組)
                  BLE_NUS=ubluetooth.UUID(NUS_UUID)
                  BLE_RX=(ubluetooth.UUID(RX_UUID), ubluetooth.FLAG_WRITE)
                  BLE_TX=(ubluetooth.UUID(TX_UUID), ubluetooth.FLAG_NOTIFY)
                  BLE_UART=(BLE_NUS, (BLE_TX, BLE_RX,))
                  SERVICES=(BLE_UART, )
                  # 使用指定的服務配置外圍設備
                  # 文檔地址:
                  # https://docs.micropython.org/en/latest/library/bluetooth.html?highlight=irq#peripheral-role
                  ((self.tx, self.rx,), )=self.ble.gatts_register_services(SERVICES)
              # 發送數據
              def send(self, data):
                  # 向連接的客戶端發送通知請求
                  # 文檔地址:
                  # https://docs.micropython.org/en/latest/library/bluetooth.html?highlight=irq#gatt-client
                  self.ble.gatts_notify(0, self.tx, data + '\n')
              # 藍牙廣播配置
              def advertiser(self):
                  name=bytes(self.name, 'UTF-8')
                  # 以指定的時間間隔(以微秒為單位)開始廣播
                  # 文檔地址
                  # https://docs.micropython.org/en/latest/library/bluetooth.html?highlight=irq#broadcaster-role-advertiser
                  self.ble.gap_advertise(100, bytearray('\x02\x01\x02') + bytearray((len(name) + 1, 0x09)) + name)
                  
          # 創建一個名為ESP32的藍牙廣播
          ble=BLE("ESP32")
          
          

          NO.4Tips

          目前Web Bluetooth只支持安卓和Windows上的Chrome瀏覽器

          不支持MacOS和Iphone上Chrome瀏覽器

          使用安卓手機Chrome瀏覽器同樣可以測試網頁藍牙通信,但是也要設置前置權限

          手機權限

          1. 在系統設置中打開藍牙
          2. 應用設置中允許開啟或者關閉藍牙
          3. 允許桌面快捷方式
          4. 允許鎖屏顯示
          5. 允許后臺彈出界面
          6. 允許常駐通知
          7. 允許讀寫手機存儲

          因為網頁藍牙掃描和配對時,會以彈框的形式展示,所以需要一些顯示和通知的應用權限,確保能展示藍牙提示彈框

          相比APP和微信小程序的藍牙開發和調試,顯然網頁相對方便一些

          可以用來測試簡單的字符通信,測試藍牙廣播是否被正常掃描,以及特定字符的發送和接收邏輯處理等

          本文的網頁藍牙UUID默認是固定的,后期有時間再改為動態輸入

          END.

          35藍牙模塊升級款B35S首發上架,B35S不僅支持BLE5.2藍牙+2.4G WiFi,還支持低功耗模式,功耗最低200uA。


          B35S資料文檔:

          https://h.hlktech.com/Mobile/download/fdetail/267.html



          藍牙WiFi模塊優勢


          藍牙技術大多用來做短距離的設備間通信,例如無線耳機和智能手環等產品,WiFi技術則為產品提供了相對更高速的長距離數據傳輸能力,適用于連接互聯網和局域網。


          在各種場景的實際應用中,會經常出現需要多個設備之間進行快速連接以及數據傳輸,因而用戶經常要同時使用藍牙和WiFi,這可能使得頻繁多次、資源浪費和用戶體驗不佳等問題的出現。


          為了解決上述問題,藍牙WiFi二合一的概念正式產生。藍牙WiFi模塊由于在實際應用中可以給用戶提供更便利的無線連接選項,被廣泛使用。



          產品功能特點


          01

          BLE5.2藍牙+2.4G WiFi二合一

          HLK-B35S藍牙模塊支持WiFi 802.11b/g/n 和 BLE5.2 基帶/MAC 設計,主頻支持從 1MHz 到 160MHz,內置 32 位 CPU,288KB RAM,2M 嵌入式 Flash 閃存。


          HLK-B35S藍牙模塊支持BLE 協助實現 Wi-Fi 快速配網,支持 AP/STA 和 BLE 共存模式,其中 WiFi 安全支持:WPS/WEP/WPA/WPA2 Personal/WPA2。B35S輸出功率 0~10dBm,接收靈敏度 -98dBm。


          (串口轉 WIFI STA)


          (串口轉 WIFI AP)



          02

          微安級超低功耗

          B35S藍牙模塊相較于B35藍牙模塊,不僅僅將BLE5.0藍牙協議升級為BLE5.2,更重要在低功耗方案上的再進化。B35S藍牙模塊接收模式30mA,低功耗待機模式功耗低至200uA。


          B35S微安級的超低功耗,再加上模塊體積小巧,尺寸僅24x16x2mm,非常適用于水電水表以及可穿戴產品等對模塊體積和功耗有嚴苛要求的產品。



          03

          傳輸距離40-100米

          B35S藍牙模塊自帶BLE5.2藍牙,傳輸距離更遠,傳輸距離可達40-100米。相比藍牙4,藍牙5.2協議的覆蓋范圍將是它的4倍。


          同時,B35S藍牙模塊傳輸速率 9600-921600bps,傳輸速率相比BLE4.0藍牙協議提高2倍,傳輸速度更快。




          04

          測試簡單性價比高

          B35S藍牙模塊支持直插安裝,安裝簡單易拆卸。首次使用B35S可購買配套測試底板,便于快速測試驗證。


          與此同時,超低功耗藍牙模塊B35S,支持BLE5.2藍牙+2.4G WiFi二合一,性能優越,單價低至個位數,低功耗低成本,應用場景廣泛。


          應用場景

          在工業、智能家居等領域中,藍牙WiFi模塊的作用大多用來控制某個智能設備或者被放置在某個智能設備內,一般用紐扣電池供電,然后通過無線端進行數據傳輸和數據控制。這些智能設備往往需要有長時間續航能力,因而對功耗有著較為嚴苛的要求,B35S這類低功耗的藍牙WiFi模塊正好滿足其需求。


          01

          超低功耗藍牙在工業自動化中的應用

          在工業自動化中,傳感器網絡對于實時監測和控制生產過程至關重要。


          B35S這類低功耗藍牙模塊用于工業自動化場景中,主要是為了讓傳感器節點之間的數據傳輸更加高效,實現實時采集和傳遞數據,進而在一定程度上提高了工業系統應對不同生產環境變化的靈敏度。




          02

          超低功耗藍牙在儀器儀表中的應用

          B35S應用于可穿戴醫療設備中,可以讓醫療設備實現與手機或者其他智能終端的實時連接,進而實時輸出數據,更好地監控患者的健康情況。心率監測、睡眠追蹤等數據可以實時傳輸到醫療專業人士,支持遠程監測和診斷。


          常見的醫療健康設備有:藍牙手環、血糖計、血壓計、活動傳感器等產品。



          03

          超低功耗藍牙在穿戴產品中的應用


          B35S這類低功耗藍牙WiFi模塊是很多智能設備的配件之一,通過藍牙模塊實現數據的傳輸和交換。


          常見是的智能運動手環、智能眼鏡以及智能項鏈,通過藍牙模塊以低成本低功耗實現短距離的通信,提高產品的使用壽命和運行時間。


          B35S模塊數據

          無線子系統包含 2.4G 無線電,Wi-Fi 802.11b/g/n 和 BLE5.2 基帶/MAC 設計

          主頻支持從 1MHz 到 160MHz

          內置 32 位 CPU,288KB RAM,2M 嵌入式 Flash 閃存

          工作電壓 支持 2.7-3.6V,典型值為 3.3V

          BLE 協助實現 Wi-Fi 快速配網

          支持 AP/STA 和 BLE 共存模式,其中 WiFi 安全支持:WPS/WEP/WPA/WPA2 Personal/WPA2

          集成 balun,PA/LNA

          豐富的外設接口,1*SPI 主/從,2*UART,6*PWM,18*GPIO,1*IIC 主/從

          廣泛應用于物聯網

          接收模式:30mA,低功耗待機模式:200uA


          主站蜘蛛池模板: 国产成人久久精品区一区二区| 日韩精品无码人妻一区二区三区| 亚洲一区二区三区无码影院| 久久精品一区二区东京热| 国产精品第一区揄拍无码| 精品永久久福利一区二区| 亚洲一区二区三区免费| 日本一区二区三区在线视频观看免费| 91秒拍国产福利一区| 国产在线精品一区二区在线观看| 久久99久久无码毛片一区二区| 日本在线视频一区二区三区 | 国产伦精品一区二区三区视频猫咪| 精品一区二区三区四区在线播放| 国产乱码精品一区二区三区中文| 国产精品区AV一区二区| 日本免费精品一区二区三区| 中文字幕日韩欧美一区二区三区| 国产福利微拍精品一区二区| 亚洲高清美女一区二区三区| 秋霞无码一区二区| 精品永久久福利一区二区| 色噜噜狠狠一区二区三区| 国产精品一区在线播放| 国产成人精品日本亚洲专一区| 亚洲熟妇无码一区二区三区导航 | 亚洲AV无码一区二区三区在线| 久久久久人妻一区二区三区vr| 亚洲码一区二区三区| 国产一区二区三区乱码网站| 亚洲综合在线一区二区三区| 亚洲码欧美码一区二区三区| 国产成人高清亚洲一区91| 一区二区三区在线播放| 日韩人妻无码一区二区三区| 无码人妻精品一区二区在线视频| 91video国产一区| 国产午夜精品一区二区三区极品| 国产在线步兵一区二区三区| 99国产精品一区二区| 久久精品黄AA片一区二区三区|