用超低功耗藍牙控制樹莓派3

2021-02-13 21ic電子網

樹莓派3和樹莓派2相比較,除了主頻的提升外,還添加了WIFI和藍牙模塊,大大的增強了無線連接功能,因而也更適合IoT平臺應用。

可穿戴設備大多都是通過藍牙來進行數據通信,實現設備間的數據交換。與Bluetooth Classic相比較而言,BLE的低功耗特性對於可穿戴設備而言,在電池消耗上更具優勢。某種程度上可以說,BLE成就了今天的可穿戴市場,反過來,可穿戴市場的崛起,讓BLE更具生命力了!

在RASPBIAN中,默認已提供了對藍牙的一些支持,提供了bluetoothctl等命令來進行基本的藍牙操作,通過命令行的方式來對BLE設備進行操作當然可行,不過用程序來控制的話,一則更靈活,另一方面也顯得高大上。

RPI上對藍牙的開發,大多以bluez為主,不過說實話,bluez看上去還是比較複雜的。考慮到js的使用者比較多,另外nodejs對硬體的要求也不算高,很適合在RPI上使用。下面的操作結合nodejs及mraa硬體庫來操作RPI3,至於BLE部分的操作,則使用的是nodejs的bleno來操作。

只點一個燈,為的是了解基本操作步驟。

硬體使用的是RPI3,如果是RPI2或更老的版本,需要準備一個Bluetooth Dongle,就是讓RPI具有藍牙通信功能就是了。

RPI3的系統下載及燒寫就不說了,漫天都是。

先準備好nodejs環境,在PI上執行如下命令

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install nodejs npm

nodejs是必須的,這是JS解釋器,非WEB端的那個解釋器,npm是用來安裝依賴組件的。

bleno是一個nodejs模塊,用來實現BLE外設功能,官方github地址為https://github.com/sandeepmistry/bleno,如果想要在PI上實現central功能,則要使用noble。

bleno依賴其它一些軟體框架,主要包括bluetooth及bluez。執行如下命令安裝這些依賴

sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev

安裝完成後,可以使用hciconfig命令來查看設備信息,如下

pi@raspberrypi:~/iot $ hciconfig dev

hci0: Type: Primary Bus: UART

BD Address: B8:27:EB:93:37:B8 ACL MTU: 1021:8 SCO MTU: 64:1

UP RUNNING

RX bytes:10076 acl:287 sco:0 events:589 errors:0

TX bytes:12302 acl:287 sco:0 commands:363 errors:0

pi@raspberrypi:~/iot $

可以看到設備hci0,這個就是RPI3上的藍牙設備,另外也可以看到BD地址,BUS等其它硬體信息。

注意UP RUNNING信息,表明藍牙已啟用,否則需要使用命令hciconfig hci0 up來啟用藍牙設備。

接下來使用npm init命令來建立一個空的工程,package.json內容如下

{

"name": "iot",

"version": "1.0.0",

"description": "iot for raspberry pi 3",

"main": "index.js",

"scripts": {

"test": "echo \"Error: no test specified\" && exit 1"

},

"keywords": [

"iot",

"nodejs",

"rpi3"

],

"author": "netlhx",

"license": "ISC",

"dependencies": {

"bleno": "^0.4.2",

"mraa": "^1.8.0"

}

}

這裡的模塊依賴主要有兩個,一個是bleno,實現BLE PERIPHERAL的功能由該模塊來實現,另一個模塊是mraa,這是intel推出的一個低級硬體庫,包括C/PYTHON/NODEJS等實現,除了支持intel自家的galileo及edison等硬體外,其它還支持包括RPI在內的許多硬體。另外還有一個upm庫,支持大量的傳感器及輸出外設。

基本的環境準備就緒,可以使用bleno自帶的測試腳本來測試硬體是否工作正常。測試方法見下圖

上圖輸出表明硬體工作正常,開始藍牙廣播並開啟相關的服務

使用nordic nrf connect應用可以來連接並實現簡單的通信

這是掃描並連接到RPI3的情況,可以對各種預設的Characteristic進行讀/寫操作並加以驗證。

這個test.js程序也可以做為我們點燈程序的藍本,稍加修改就可以用來實現BLE點燈程序了。

先看基本的信息配置

var led = new mraa.Gpio(36);

led.dir(mraa.DIR_OUT);

var name = 'RPI3';

var service_rpi3_uuid = '98860000ca0011e7b3fcf714f9f939b3';

var charact_led_uuid = '98860001ca0011e7b3fcf714f9f939b3';

試驗用到的LED燈連接在PIN36上面,注意使用了mraa庫來進行操作,另外這裡還定義了一些常量,其中包括設備名,服務及characteristic的UUID值,注意這是用戶自定義的服務類型,所以要使用128位的UUID值。

接下來是控制LED燈的代碼,如下

LedCharacteristic.prototype.onWriteRequest = function(data, offset, withoutResponse, callback) {

console.log('LedCharacteristic write request: ' + data.toString('hex') + ' ' + offset + ' ' + withoutResponse);

if(data.readUInt8(0) == 0) {

console.log('led off');

led.write(0); //led off

} else {

console.log('led on');

led.write(1);

}

callback(this.RESULT_SUCCESS);

};

當手機端通過藍牙向LedCharacteristic寫入一個0值的時候,關閉LED燈;反之,當用戶寫入非0值,則點亮LED燈。注意這裡的data,這是一個byte型數組,這裡也沒有檢測數組的長度,簡單的取第一個字節值並進行判斷,然後使用mraa庫來控制GPIO輸出狀態。

就是這麼簡單。

看看實際測試的結果,控制臺輸出如下

NRF CONNECT的掃描結果如下

注意這裡的UUID值,與代碼中的UUID值是一致的。

向LedCharacteristic寫入0x01值,代表點亮LED燈。

RPI上的LED燈顯示效果

測試沒有問題,就可以寫個簡單的APP來控制RPI3了。

雖然現在還只有GPIO操作,不過藉助mraa庫及upm庫,可以為RPI添加大量的外設,包括氣壓計、溫溼度計、LCD屏等等,只限於你的想像力。

不過在使用其它外設之前,記得打開相關的驅動支持,使用raspi-config命令就可以實現,如下圖

只點個燈,是有點太簡單了,不過只要燈點亮了,各種應用也就不遠了!

相關焦點

  • Nordic Semiconductor低功耗藍牙控制機械開關
    Nordic Semiconductor低功耗藍牙控制機械開關   Nordic Semiconductor宣布,智能家居機器人公司WonderLabs, Inc.推出無線控制家中開關和按鈕的機械設備SwitchBot 及實現SwitchBot
  • 為什麼低功耗藍牙需要功率控制?
    為什麼低功耗藍牙需要功率控制? 首先,功率控制對於藍牙並不是什麼新的技術術語。它已被用於藍牙BR/EDR控制器(請參見藍牙核心規格第2卷C部分第4.1.3節),描述了配有BR/EDR控制器的藍牙設備之間如何協商和調整傳輸功率。
  • 物騏超低功耗藍牙音頻SoC晶片WQ7033有何特點?
    物騏超低功耗藍牙音頻SoC晶片WQ7033有何特點?這就對TWS耳機主晶片的先進工藝、高集成度和超低功耗提出新的要求。 上海物騏微電子有限公司(物奇微電子全資子公司)設計的超低功耗藍牙音頻SoC晶片WQ7033引起了高度關注。
  • 低功耗藍牙晶片功耗主要來源
    無線連接設備對功耗要求高,平衡BLE性能和功耗十分關鍵。在可穿戴設備、藍牙位置服務、智能家居、工業物聯網等藍牙新興應用方向中,這些設備不需要時刻保持運行,只需在被喚醒時,進行數據傳輸或執行控制,而且每次傳輸的數據量不大。出於體積限制和無線連接的要求,要設備保持長久運行就需要功耗極低,這就對ble藍牙晶片的功耗提出了要求。
  • 低功耗藍牙的全面技術解析
    、低功耗的藍牙無線技術。相比於傳統藍牙,為什麼它能在短時間內快速成為物聯網產品的普遍無線標準?快跟我們一起看看吧!低功耗藍牙的特性 高成本效益與兼容性:具備低功耗藍牙技術與傳統藍牙功能的雙模技術與專為小型電池供電設備優化的純低功耗藍牙技術兩種晶片組可供選擇。穩定性、安全性與可靠性:使用自適應跳頻 (AFH) 技術,將通道數量減少至40個2兆赫茲的寬通道。
  • 一起玩樹莓派3+樹莓派藍牙音箱
    上期回顧:一起玩樹莓派3+牛刀小試一起玩樹莓派3+工欲善其事必先利其器
  • 藍牙低功耗(BLE)技術發展趨勢
    藍牙低功耗技術讓電池供電產品有更長的運作時間藍牙低功耗(Bluetooth® Low Energy,或稱Bluetooth® LE、BLE)是藍牙技術聯盟設計和銷售的一種個人區域網路技術,旨在用於醫療保健、運動健身、信標(Beacon)、安防、家庭娛樂等領域的新興應用。
  • 低功耗藍牙模塊在藍牙智能門鎖方案和藍牙定位市場的應用
    有別於經典藍牙,低功耗藍牙憑藉低功耗、UART串口透明傳輸、空中升級等特性在物聯網行業有快速的發展,為讓物聯網智能終端產品設計及開發者更進一步了解低功耗藍牙,本篇SKYLAB小編就從低功耗藍牙產品為切入點,簡單介紹低功耗藍牙的市場應用。
  • 樹莓派3、Banana Pro、pcDuino3S、Cubietruck對比評測,用哪個你自己做主吧!
    近日,e絡盟正式推出全新第三代樹莓派B型板,其內置無線和藍牙連接,運行速度更快且功能更強大,進一步擴充了其已擁有世界一流樹莓派配件生態系統的產品範圍,其中包括近期推出的樹莓派觸控螢幕顯示器。說到樹莓派,很多人會聯想到Banana Pro、PcDuino3S、Cubietruck,它們各有哪些獨到之處呢?隨《單片機與嵌入式系統應用》小編一起來看看吧!
  • BLE低功耗藍牙的優勢及典型應用
    低功耗藍牙模塊是最常見的無線模塊之一。低功耗藍牙也被稱為「智能藍牙」,是SIG修訂後上市的無線通信技術。2、藍牙低功耗技術廣泛應用於移動終端。低功耗藍牙受主流行動電話作業系統(如Android和ios系統)的支持。這個巨大的生態系統創造了藍牙低耗電技術。
  • 搶佔低功耗IoT市場!Dialog推出超低功耗Wi-Fi晶片DA16200及模組
    超低功耗Wi-Fi SoC DA16200隨著智能門鎖、溫控器和安防監控攝像頭等要求始終保持Wi-Fi聯網的IoT設備的興起,對於Wi-Fi晶片的功耗要求越來越高,需要開發人員提供更強電池續航能力的解決方案。
  • 一起玩樹莓派3+藍牙的配置與評測
    上期回顧:一起玩樹莓派3+牛刀小試一起玩樹莓派3+工欲善其事必先利其器
  • 低功耗藍牙的7大典型應用,你都知道嗎?
    低功耗藍牙的一些主要優點 低成本,低功耗:藍牙4.0版本提高了藍牙數據傳輸的低功耗性能,與傳統藍牙相比,功耗降低了90% 高可靠性,高安全性 快速啟動,即時連接:藍牙4.0版本只需3毫秒即可完成幾乎即時的連接
  • 低功耗藍牙的7大典型應用,你都知道嗎?
    低功耗藍牙的一些主要優點低成本,低功耗:藍牙4.0版本提高了藍牙數據傳輸的低功耗性能,與傳統藍牙相比,功耗降低了90%高可靠性,高安全性快速啟動,即時連接:藍牙4.0版本只需3毫秒即可完成幾乎即時的連接藍牙4.0的有效傳輸距離可以達到60〜100m,大大拓寬了藍牙技術的應用前景
  • 經典藍牙、低功耗藍牙和雙模藍牙的有什麼差異?
    低功耗藍牙模塊(BLE):是指支持藍牙協議4.0或者以上的模塊,也被稱為BLE模塊,最大的特點就是成本和功耗的降低,可以應用於實時性要求較高的產品當中。  它們之前的應用分在哪些方面又有什麼差異?  2)、傳大量數據: 例如某些工控場景,使用Android或Linux主控,外掛藍牙遙控設備的,可以使用經典藍牙裡的SPP協議,當作一個無線串口使用。速度比BLE傳輸快多了。  第二、低功耗藍牙:  1)、耗電低,數據量小,如遙控類(滑鼠、鍵盤),傳感設備(心跳帶、血壓計、溫度傳感器、共享單車鎖、智能鎖、防丟器、室內定位)。
  • CEVA低功耗藍牙IP助力Ambiq新一代專利技術平臺
    「Ambiq Micro 很高興與 CEVA 進行合作,將其低功耗藍牙連接解決方案集成到我們基於 SPOT 的下一代無線 SoC 中。 Apollo3 Blue 系列 SoC 解決方案代表了超低功耗設計的巨大飛躍,其運行模式和睡眠模式下的功耗數值均十分出色,並且具有高性能的處理引擎。Apollo3 Blue 器件提供了市場上最高效的處理解決方案。為了實現連接性,Apollo3 Blue 產品集成了節能的低功耗藍牙 5 無線電和改進的通信功能,可實現超低功耗的始終連接。
  • 功耗堪比低功耗藍牙,瑞芯微將推新款WiFi晶片
    雷鋒網(公眾號:雷鋒網)最新消息,瑞芯微(Rockchip)將在6月2日的臺北COMPUTEX電子展上與第三方共同推出全球最低功耗WiFi晶片——RKi6000,這款WiFi晶片功耗與BLE4.0低功耗藍牙接近,比現有的IoT設備WiFi功耗低85%。
  • Nordic Semiconductor低功耗藍牙控制機械開關,不需昂貴改造即可實現照明和家用電器的遠程操作
    Nordic Semiconductor宣布,智能家居機器人公司WonderLabs, Inc.推出無線控制家中開關和按鈕的機械設備SwitchBot 及實現SwitchBot遠程操作的低功耗藍牙「網關」 SwitchLink。
  • 一文了解如何加快開發藍牙低功耗網狀網絡應用
    藍牙低功耗技術是用於物聯網的一種流行的短距離無線協議,最顯著的優勢是能效高,正越來越多地被用於物聯網各細分領域。而藍牙低功耗網狀網絡使以前無法用傳統藍牙技術實現的各種應用成為可能,其價值在於消除範圍限制,現已在工業、農業、企業和物流領域以及新興的智慧城市等多個不同環境得到認可。但運作限制和實施便利性仍是主要挑戰。
  • 低功耗藍牙模塊DWM1001包含數千個標籤且開箱即用的實時定位
    打開APP 低功耗藍牙模塊DWM1001包含數千個標籤且開箱即用的實時定位 發表於 2018-03-14 03:29:00 Decawave