用Raspberry Pi和感測器製作“可自動營造舒適空間的裝置” 第二部分

大家好,我是吉田!
我們這次要創作一款讓家中更舒適、讓在家辦公更高效的設備,本文是第二部分。第一部分介紹了製作綱要和所需零件。這次我們將實際連接Bluetooth感測器和Raspberry Pi。使用羅姆SensorMedal,您甚至可以遠端輕鬆地將感測器值共用給Raspberry Pi!

1-3

 

本部分所需零件

Raspberry Pi 3 B+Raspberry Pi 4 Model B

3

Raspberry Pi 3 B+

4

Raspberry Pi 4 Model B

 

羅姆SensorMedal(SensorMedal-EVK-002)

5

 

手機電池

6

 

USB設備

使用100日元商店就能買到的USB迷你燈和迷你風扇等物件

7-2

 

本部分的流程

  1. 羅姆SensorMedal與Raspberry Pi的BLE連接
  2. Raspberry Pi的USB控制
  3. 使用感測器值讓硬體工作的程式
  4. 總結

 

1.羅姆SensorMedal與Raspberry Pi的BLE連接

第一部分中,我將羅姆SensorMedal連接到我的智慧手機上並顯示了結果。在本專案中,Raspberry Pi將作為接收資料的航空母艦使用,所以在第二部分中,我們將通過Raspberry Pi的Bluetooth功能連接SensorMedal。

首先,安裝的Python程式bluepy,以便進行Raspberry Pi的Bluetooth連接。
Code-Example

 

然後,開啟SensorMedal和Raspberry Pi的電源,並將它們放在附近。

9_1

 

通過Bluetooth將SensorMedal連接到Raspberry Pi。有一個可以顯示來自SensorMedal的數值的方便程式,我們直接下載這個程式即可(我使用的是這裡的Github)。

 

打開已下載的SensorMedal2資料夾,並執行以下示例程式。這個需要在Python 3中使用sudo許可權執行。

 

怎麼樣?是不是很簡單?如下圖所示,從Raspberry Pi能夠很輕鬆地看到SensorMedal傳來的測量值。

14

 

SensorMedal中共內置6種感測器。每種感測器的含義如下,使用這些感測器可以測量並獲取相應的數值。

  • Temperature: 溫度(℃)
  • Humidity: 濕度(%)
  • Pressure: 氣壓(hPa)
  • Illuminance: 亮度(lx)
  • Accelerometer: 加速度(x軸、y軸、z軸)(g)
  • Geomagnetic: 陀螺儀感測器值(x軸、y軸、z軸)(uT)
  • Magnetic: 霍爾感測器值(磁鐵在附近通過為1,否則為0)
  • Steps: 步數(步)
  • Battery Level: 電池電量

 

2. Raspberry Pi的USB 控制

我們已經非常輕鬆地獲得了感測器的值,現在,讓我們使用這些值來控制與Raspberry Pi連接的硬體吧。

先來實現第一部分中提到的“要是能自動搞定就好了(要是有這些功能就好了)”列表中的以下兩項。

編號 檢測功能 檢測後希望具備的功能
1 檢測房間的溫度 根據室溫控制風扇等
2 檢測工作臺周圍的亮度 亮度不夠時自動開燈

亮度會因天氣變化和房間情況而發生變化。如果亮度不夠還繼續工作的話,眼睛會很疲勞,所以我們使用SensorMedal的亮度值——Illiminance(lx)。亮度(光照強度)的單位是“勒克斯”。白天房間的亮度約為200〜300(lx)。

測好亮度後,我們用一個USB迷你燈來實現亮度不足時自動開燈的功能。如下圖所示,將迷你燈插入Raspberry Pi的 USB埠。

10

安裝一個庫來控制USB,讓它可以根據亮度開燈和關燈。如下所示,下載並安裝庫文件。

 

 

現在,就可以通過命令打開和關閉插入USB埠的設備啦。這個“hub-ctrl”的使用方法為“hub-ctrl -b [Bus Num] -d [Device Num] -P [Port Num] -p [On:1 / Off:0] ”。使用“lsusb -t”命令獲取設備連接資訊。在這裡,Bus num: 1, Device num: 2, USB埠的Port num為2。

 

如下所示,在“-p”後置“0”將關閉電源,置“1”則打開電源。

11

這是指定“-p 1”時的狀態。連接到USB埠的燈亮了

 

3.使用感測器值讓硬體工作的程式

下面,我們將創建程式,把來自SensorMedal的數值與USB控制關聯起來。
基本上,可以使用前面下載的 SensorMedal2 程式。

 

我在原程式基礎上,添加了下述第9行和第78〜85行的內容。當亮度低於300lx時,讓燈點亮。當亮度高於該值時,讓燈熄滅。

 

通過sudo python3 ble_illum.py運行該程式。

15

 

我們測試一下,如右側照片所示,用手遮蓋SensorMedal,感測器測得的亮度變暗,USB燈能夠獲取感測器的值並且很聽話地自動開燈!

12-2

 

4. 總結

在這部分中,我們嘗試用BLE連接了羅姆SensorMedal和Raspberry Pi。我想大家已經瞭解到,從遠處獲取各種感測器資料是非常容易的事。
通過6種感測器,不僅可以檢測亮度,還可以獲取溫濕度、氣壓和加速度等資料。測量辦工桌或房間裡的各種資料,可能是件很有趣的事。
在下一部分,我想通過添加人體感測器等器件,讓在家辦公環境更加舒適。

敬請期待!