用超低功耗藍牙控制樹莓派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命令就可以實現,如下圖

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

相關焦點

  • 一起玩樹莓派3+樹莓派藍牙音箱
    上期回顧:一起玩樹莓派3+牛刀小試一起玩樹莓派3+工欲善其事必先利其器
  • 藍牙模塊有哪些種類?BLE低功耗藍牙模塊有什麼特點?
    按照一般的用途來分類的話可以簡單的分3類: 語音,音頻類SOC藍牙模塊:一般用來做音箱,耳機類音訊產品 語音與數據複合的SOC:可以同時傳輸語音,音頻,數據 單純的數據傳輸類SOC:一般用來傳輸近距離,小數據傳輸(也有人叫透傳藍牙模塊,BLE藍牙模塊,低功耗藍牙模塊等等
  • ...幫助加快開發智能家居、工業物聯網等藍牙低功耗網狀網絡應用
    藍牙低功耗技術是用於物聯網的一種流行的短距離無線協議,最顯著的優勢是能效高,正越來越多地被用於物聯網各細分領域。而藍牙低功耗網狀網絡使以前無法用傳統藍牙技術實現的各種應用成為可能,其價值在於消除範圍限制,現已在工業、農業、企業和物流領域以及新興的智慧城市等多個不同環境得到認可。但運作限制和實施便利性仍是主要挑戰。
  • 免換電池,無線射頻晶片顛覆者將低功耗藍牙模塊功耗降百倍
    讓低功耗藍牙設備功耗再降低十到百倍 《EE Times》2020年發布的全球前100名最具發展潛力的電子和半導體初創企業名單,Atmosic 憑藉其能最大程度延長物聯網設備電池壽命的藍牙技術躋身其中。
  • 昂瑞微張書遷:無線連接時代,藍牙低功耗市場持續爆發
    集微網消息,作為無線連接技術中的明星,藍牙低功耗(BLE)大量應用於移動IoT設備之間的無線連接;同時,作為使用最廣泛的一種低功耗通信協議,其市場需求正在持續爆發。當下,全球正進入一個各種系統都需要採集和交換數據的物聯網(IoT)時代。
  • 天易合芯HX3003M超低功耗的距離傳感器發布
    打開APP 天易合芯HX3003M超低功耗的距離傳感器發布 我愛音頻網 發表於 2020-12-11 14:00:43 這顆紅外線距離傳感器解決了傳統傳感器體積大,外圍元件多的痛點,超精簡的外圍大大助力真無線藍牙耳機紅外線距離傳感器的普及。 耳機上採用紅外線距離傳感器,用來佩戴檢測,控制音頻播放暫停或者是在通話時切換耳機和手機聽筒。這是一個非常實用的功能,為產品加分。
  • 50套免費樹莓派3B,尋找基於樹莓派3B的創意解決方案!
    Hi,電子愛好者:愛板網正在進行「尋找基於樹莓派3B的創意解決方案」的活動,我們想尋找到那些有創意,有想法,愛動手的小夥伴,用樹莓派
  • 超低功耗電路的設計原則及設計分析
    而動態功耗除了與電源電壓的平方有關外,還與其工作脈衝重複頻率、脈衝波形以及輸出容性負載有關。 2 超低功耗系統設計原則 通過以上分析,可以總結出超低功耗系統的設計原則。在設計超低功耗系統時,要對電源電壓、時鐘頻率以及靜態功耗進行控制。這就形成了電源宜低不宜高、時鐘宜慢不宜快、系統(器件)宜靜不宜動的「三相宜」原則。
  • 多功能Aqara智能門鎖N200擁有低功耗藍牙無需進行WIFI連接
    Aqara智能門鎖N200使用八節AAA電池供電,在普通操作下的電池壽命長達18個月,這在一定程度上要歸功於Nordic SoC的超低功耗特性。nRF52840 SoC經過精心設計,可通過全自動電源管理系統將功耗降至最低,與nRF51系列器件相比,其功耗降低多達80%。 Nordic的nRF52840是Nordic最先進的超低功耗nRF52系列SoC器件。
  • 可支持低功耗藍牙音頻:高通發布QCC305x藍牙耳機晶片
    可支持低功耗藍牙音頻:高通發布 QCC305x 藍牙耳機晶片此外,QCC305x將可支持即將推出的低功耗藍牙音頻(BluetoothLowEnergyAudio)標準,讓早期採用此標準的OEM廠商可開始針對智能型手機和真無線耳機開發端到端解決方案,以支持令人期盼的全新音頻分享使用情境。
  • 低功耗藍牙為創鴻新智能深紫外LED測溫消毒筆提供無線連接
    *總部位於深圳的物聯網(IoT)解決方案供應商創鴻新智能科技有限公司選擇Nordic入門級nRF52810低功耗藍牙(Bluetooth Low Energy /Bluetooth LE)晶片級系統(SoC),為其「深紫外(UVC) LED測溫消毒筆」提供核心處理能力和無線連接。
  • 藍牙5.1/低功耗藍牙模塊推動OEM廠商開發具有測向和長距離連接功能...
    1月17日,Nordic Semiconductor宣布位於唐山的唐山宏佳電子科技有限公司已選擇使用Nordic支持藍牙5.1測向功能的nRF52832低功耗藍牙 (Bluetooth® Low Energy /Bluetooth LE)系統級晶片(SoC)和nRF52811 SoC以助力其 HJ-380和HJ-180緊湊型模塊。
  • 低功耗Sensor Hub成標配 穿戴裝置傳感功耗驟降
    ,這種設計方式也為其他業者指引另一條道路,未來可望形成另一種設計風潮值得注意的是,MCU並非唯一能提供低功耗Sensor Hub的解方,業界還有許多以超低功耗為訴求的Sensor Hub產品形式,如現場可編程閘陣列(FPGA)或是客戶特定標準產品(CSSP)等。
  • LED燈帶藍牙晶片控制解決方案
    LED燈帶簡介LED燈帶常規分為柔性LED燈帶和LED硬燈條兩種,但一般也包含了用線材連接LED的老式燈帶,如扁三線4.3W/米、扁四線6.48W/米、扁五線8.64W/米燈帶等。這樣燈帶的叫法也包含了以前很多大二線、大三線、圓二線等等的直接用線材連接LED而不用FPC或PCB的老式燈帶,當然也就包含了柔性燈帶和硬燈帶。
  • 功耗僅60uA,隔空科技攜業界首款微安級超低功耗微波雷達傳感器重磅...
    功耗僅60uA,隔空科技攜業界首款微安級超低功耗微波雷達傳感器重磅亮相深圳
  • 門鎖低功耗WiFi方案_SKYLAB串口WiFi模塊
    門鎖低功耗WiFi方案_SKYLAB串口WiFi模塊2020年12月17日 18:21    ​智能家居的蓬勃發展,帶來的便利顯而易見,目前市場上的智能門鎖方案多種多樣,其中Zigbee、WiFi和藍牙是最常見的智能鎖協議方案。
  • 遠程控制樹莓派3b上的pi pico
    遠程控制樹莓派3b上的pi pico1.說明2.樹莓派3b上安裝系統3.pi pico的環境搭建4.遠程控制與ADC採集1.說明樹莓派pi pico和樹莓派4相比差別很大,但是pi pico有一些特點是樹莓派4上沒有的,
  • ChipON KF32LS201締造安全智能門鎖 高集成度超低功耗並駕齊驅
    KF32LS201是一款基於KungFu32處理器架構的單組電源超低功耗型32位MCU,具備高GPIO佔比和超低功耗性能;集成豐富外設資源,包括高靈敏度TouchKey、RTC實時時鐘和LCD驅動等模塊。內置128KB Flash容量和32KB超達RAM空間,主頻達到48Mhz,可以輕鬆應對智能門鎖複雜功能。
  • 藍牙5.0到底提升的音質?還是降低了功耗提升了穩定性
    【藍牙5.0到底提升的音質?還是降低了功耗提升了穩定性】我們確實很疑惑,到底藍牙5.0比藍牙4.0提升了多少呢?最直接的說法是,藍牙5.0能夠提升音質,讓手機或者耳機的音樂能夠穩定的提升。實際上,真的如此嗎?
  • 玩吃雞遊戲用哪種藍牙耳機好,低延遲藍牙耳機如何選擇
    許多朋友在購買藍牙耳機的時候,經常會問:哪款耳機延遲最低?有沒有可以玩吃雞遊戲的藍牙耳機推薦?其實理論上來說,所有的藍牙耳機都存在一定程度的延時。因此如果有玩槍擊遊戲的需求,那麼就需要專門針對遊戲玩家開發的低延遲藍牙耳機。