樹莓派平台的靈活性使其成為建構家庭安全系統的理想選擇。透過整合多種感測器,可以實作環境監控和入侵偵測等功能。本文將逐步講解如何連線和設定各個感測器,包含針、溫濕度感測器、氣壓計等,並利用Python程式碼進行資料讀取和處理。同時,文章也涵蓋瞭如何設定Samba伺服器,方便從其他裝置遠端存取樹莓派上的資料和控制安全系統。

天氣站的組裝與應用

測量風向的針

在組裝天氣站時,針是一個關鍵元件。當你從Adafruit或Sparkfun購買感測器時,這些公司通常會提供範例程式碼,這對於初學者來說非常有幫助。他們的網站上通常會有「檔案」連結,提供詳細的使用和範例程式碼。這些資源可以大大節省你的時間和精力。

針的主要功能是讀取X軸和Y軸的值,並使用數學函式庫中的atan2()函式計算出感測器的方位。首先將角度轉換為度數,這樣可以更直觀地理解方向。需要注意的是,x_offsety_offset值會因地理位置而異,因此需要透過實際執行程式碼來調整這些值。

在執行程式碼時,最好有一個工作中的針在旁邊進行對比。將天氣站安裝在風速計的旋轉軸上,這樣可以在組裝完成後讀取風向。

針的調整與校準

  1. 執行程式碼:將程式碼執行,並將天氣站放置在一個有效的針附近。
  2. 比較讀數:將天氣站的讀數與實際針的讀數進行比較。
  3. 調整偏移:根據需要逐步調整x_offsety_offset值,直到方位顯示正確為止。

針的安裝

  1. 連線電源:將VCC接到Raspberry Pi的5V引腳。
  2. 接地連線:將GND接到Raspberry Pi的地線引腳。
  3. 資料引腳:將SDA和SCL分別接到Raspberry Pi的I2C引腳(通常是#3和#5)。

測量溫度與濕度的感測器

溫度和濕度感測器是天氣站中不可或缺的一部分。我們選用的是Sensirion SHT15感測器,雖然價格較高,但操作簡單且不需要I2C協定。

SHT15感測器的安裝

  1. 焊接引腳:將SHT15感測器上的引腳焊接到跳線上。這樣可以方便地連線到麵包板或Raspberry Pi。
  2. 連線電源:將VCC連線到Raspberry Pi的5V引腳。
  3. 接地連線:將GND連線到Raspberry Pi的地線引腳。
  4. 資料與時鐘引腳:將CLK連線到Raspberry Pi的第7號引腳,DATA連線到第11號引腳。

安裝與使用Python函式庫

首先,需要安裝rpiSht1x Python函式庫。以下是安裝步驟:

wget http://bit.ly/1i4z4Lh --no-check-certificate
mv 1i4z4Lh rpiSht1x-1.2.tar.gz
tar -xvzf rpiSht1x-1.2.tar.gz
cd rpiSht1x-1.2
sudo python setup.py install

讀取溫度與濕度

完成安裝後,可以使用以下程式碼來讀取溫度和濕度:

from sht1x.Sht1x import Sht1x as SHT1x

dataPin = 11
clkPin = 7
sht1x = SHT1x(dataPin, clkPin, SHT1x.GPIO_BOARD)
temperature = sht1x.read_temperature_C()
humidity = sht1x.read_humidity()
dewPoint = sht1x.calculate_dew_point(temperature, humidity)
temperature = temperature * 9 / 5 + 32  # 轉換為華氏度
print("Temperature: {} Humidity: {} Dew Point: {}".format(temperature, humidity, dewPoint))

內容解密:

  • from sht1x.Sht1x import Sht1x as SHT1x:匯入SHT15感測器所需的Python函式庫。
  • dataPinclkPin:定義資料和時鐘引腳。
  • sht1x = SHT1x(dataPin, clkPin, SHT1x.GPIO_BOARD):初始化SHT15感測器。
  • temperature = sht1x.read_temperature_C():讀取溫度資料(攝氏度)。
  • humidity = sht1x.read_humidity():讀取濕度資料。
  • dewPoint = sht1x.calculate_dew_point(temperature, humidity):計算露點。
  • temperature = temperature * 9 / 5 + 32:將溫度轉換為華氏度。
  • print("Temperature: {} Humidity: {} Dew Point: {}".format(temperature, humidity, dewPoint)):輸出結果。

氣壓計的應用

氣壓計是天氣站中另一個重要元件。我們選用的是BMP180氣壓計晶片,它透過I2C協定與Raspberry Pi通訊。

BMP180氣壓計晶片的安裝

首先,需要焊接BMP180晶片上的引腳:

  • 電源供應:將VCC連線到Raspberry Pi的3.3V引腳(不建議使用5V)。
  • 接地連線:將GND連線到Raspberry Pi的地線引腳。
  • I2C通訊:將SDA和SCL分別連線到Raspberry Pi的I2C引腳(通常是#3和#5)。

檢查連線

執行以下命令來檢查BMP180晶片是否正確連線:

sudo i2cdetect -y 0

你應該能看到0x77地址顯示出來,這表示BMP180晶片已成功連線。

安裝Python函式庫

我們使用Adafruit提供的BMP085函式庫來操作BMP180晶片:

wget http://bit.ly/NJZOTr --no-check-certificate
mv NJZOTr Adafruit_BMP085.py

讀取氣壓資料

完成安裝後,可以使用以下程式碼來讀取氣壓資料:

import Adafruit_BMP.BMP085 as BMP085

sensor = BMP085.BMP085()
temperature = sensor.read_temperature()
pressure = sensor.read_pressure()
altitude = sensor.read_altitude()
print("Temperature: {} Pressure: {} Altitude: {}".format(temperature, pressure, altitude))

內容解密:

  • import Adafruit_BMP.BMP085 as BMP085:匯入BMP085函式庫。
  • sensor = BMP085.BMP085():初始化BMP085感測器。
  • temperature = sensor.read_temperature():讀取溫度資料。
  • pressure = sensor.read_pressure():讀取氣壓資料。
  • altitude = sensor.read_altitude():計算海拔高度。
  • print("Temperature: {} Pressure: {} Altitude: {}".format(temperature, pressure, altitude)):輸出結果。

使用 Samba 分享媒體伺服器

在 Windows 下連線到 Samba 分享資料夾

在不同版本的 Windows 下連線到 Samba 分享資料夾稍有不同,因為這本文主要討論的是核心板,而不是 Windows,所以無法詳細介紹每個版本的具體操作步驟。不過,如果你不介意使用命令列介面,可以很簡單地掛載 Samba 分享的資料夾。假設你的 Samba 分享位於 IP 地址 192.168.2.42 上的相同網域,命令如下:

net use z: \\192.168.2.42\Media * /USER:pi /P:Yes

如果核心板的設定正確,你應該會看到 Media 資料夾被掛載為 Z: 驅動器。不過,Windows 7 常常無法順利與 Samba 分享資料夾配合。如果你確定所有設定都正確但仍然無法看到資料夾內容(例如出現「存取被拒絕」錯誤),建議嘗試使用不同的作業系統。可能是你的 Windows 作業系統導致問題。

在 Linux 或 macOS 下連線到 Samba 分享

有些讀者可能會問:「如果我想用 Linux 或 Mac 電腦連線到我們的伺服器呢?」如果你家裡已經有一台執行 Linux 的電腦,那麼你可能不需要任何幫助來連線到 Samba 分享。然而,如果你使用的是 Mac 電腦,這也相對簡單。從 Finder 中點選「前往」,然後選擇「連線伺服器」。

  graph TD;
    A[點選「前往」] --> B[選擇「連線伺服器」];
    B --> C[輸入伺服器地址和分享資料夾];
    C --> D[點選「連線」];
    D --> E[輸入 Pi 的登入名稱和密碼];
    E --> F[分享驅動器被掛載];

在彈出的視窗中輸入伺服器地址和分享資料夾,然後點選「連線」。接著輸入用來登入核心板的名稱和密碼,資料夾應該會被掛載為分享驅動器,並且可以從任何 Finder 視窗存取。如果你使用的是 Mac 的 Mavericks (OS 10.9),可能會遇到以「pi」身份連線的問題,但你可以嘗試以「Guest」身份連線。這是 Mavericks 的問題,無法在此解決。

安裝成功的 Samba 與許可權設定

現在你已經成功安裝了 Samba,可以用來分享任何放入資料夾中的檔案。由於你設定了許可權,不必擔心從網路上的其他裝置意外刪除 Media 資料夾中的檔案。唯一能對分享資料夾進行增加或刪除操作的地方是核心板本身——這為你的音樂和電影提供了一些安全保障。

編譯完成:自動化家庭安全系統

現代生活中的安全挑戰

生活在現代社會中確實有時會讓人感到害怕和壓力重重。根據 FBI 的犯罪統計資料,2012 年美國發生了約九百萬起財產犯罪——這是最新的一組資料。過去那種住在安寧街區、鄰居互相認識並且可以在上班時將門留開的日子已經一去不復返了。

幸運的是,我們可以透過攝像頭(包括靜態和動態)來保護和監控我們的家園。這些攝像頭可以安裝在需要的地方並且能夠即時將影像流傳輸到我們隨時隨地都可以連線到網路的裝置上,如筆記型電腦或手機。我們還可以使用感測器(如運動感測器和踏板開關)來收集資訊並且作為觸發條件來執行某些操作。如果你願意花費金錢,可以安裝一整套系統來防範火災和盜賊並且警告二氧化碳洩漏。

雲端核心板(Raspberry Pi)作為家庭安全系統

事實上,核心板完全適合用來以更低廉的成本完成以上所有功能。它不需要太多計算能力——它足夠小且節能以便可以實際安裝在現場;它可以透過內建攝像頭拍攝重要時刻;並且因為它連線到家庭網路所以當有事情發生時可以通知你。這樣就能形成一個完整且低成本的家庭安全系統。

比較:狗與核心板

當然,你也可以養隻看門狗。事實上許多人(有些人認為這才是正常人做法)都會這樣做。但是讓我們花點時間比較一下養狗和擁有一個核心板作為家庭安全系統各自的優缺點。

貓狗的優缺點:

狗(Canis lupus familiaris)是人類最好的朋友之一,並且已經被用來當看門狗長達近萬年之久。它們由狼演化而來並且有各種不同大小、形狀,從迷你型的吉娃娃到巨大型的大丹狗都有。

狗的一項職責就是保護家園免受入侵者侵害。它們對於主人及其“巢穴”非常忠誠且保護欲強烈,會對入侵者吠叫甚至攻擊他們。但是要維持這種行為就需要給它們提供食物——有時候還需要大量食物。

欠缺點:

此外雖然牠們通常可愛又溫順而且能夠讓你在寒冷冬夜裡保暖雙腳但是由於牠們要進食所以也意味著要排洩——對於所有相關的人來說都是個臭氣熏天又麻煩得事情。

然而雖然牠們聽話而且容易訓練可是無論如何牠們還是無法升級或更新例如我試圖把USB線插到我的狗身上但是她叫出聲來而當我的狗把頭伸出車窗時又顯得可愛無比可是牠卻沒辦法更新自己的驅動程式或用套件管理員下載更高效能版本氣體排放軟體程式。

總結起來說雖然狗很好地守護著房屋但牠也有很多缺點要面對。

總結:核心板是現代智慧型家庭安全系統更為理想化的選擇!

架構圖:

  graph TD;
    A[感應器] --> B[核心板];
    B --> C[網路連線];
    C --> D[手機或筆記型電腦];
    D --> E[即時警告];

玄貓完整解說從零開始創作完成!

家庭安全系統

使用樹莓派建構家庭安全系統

樹莓派(Raspberry Pi)是一款廣受歡迎的小型電腦,適合用於各種創意專案和實驗。它的歷史可以追溯到1980年代的Acorn RISC Machine,並有A版和B版兩種主要型號。樹莓派並沒有一個特定的功能,但它能夠執行任何程式指令,從計算質數到連續執行直到處理器燒毀。這些特性使得樹莓派成為家庭安全系統的理想選擇。

感測器網路

家庭安全系統的核心理念是感測器網路。就像大腦需要感官來感知外界環境,電腦也需要感測器來收集和互動。例如,攝像頭像眼睛,壓力開關像被踩痛的腳趾,這些感測器讓我們的家庭安全系統能夠監控環境並做出反應。

樹莓派的強大之處在於它能夠輕鬆地與各種感測器連線。現代桌面電腦和筆記型電腦通常只有USB和乙太網埠,無法直接與感測器互動。而樹莓派則可以透過GPIO引腳直接連線感測器,並透過簡單的程式碼來處理感測器資料。

內容解密:

  • GPIO引腳:通用輸入輸出(GPIO)引腳是樹莓派的一大特色,可以用來連線各種外部裝置。
  • 感測器:包括紅外線運動感測器、壓力開關、磁性感測器和限位開關等,用來監控不同型別的入侵行為。

主要元件

  1. 紅外線運動感測器:可放置在庭院或屋內監控運動。
  2. 壓力開關:可安裝在門口或窗戶下方,當有人踩上時觸發警示。
  3. 磁性感測器:用來檢測窗戶是否開啟。
  4. 限位開關:用來檢測觸碰警示線等。

使用下拉電阻

當使用輸入裝置時,必須瞭解「浮動輸入」和「下拉電阻」的概念。當GPIO引腳設為輸入狀態時,若沒有接收到任何訊號,這個引腳的電壓可能是未定義的,這可能會導致程式錯誤。

解決方法是使用下拉電阻將引腳連線到地(GND),這樣當沒有訊號時引腳會讀取到0伏特(LOW)。當有訊號時,引腳會讀取到高電壓(HIGH),程式就能正確地處理這些訊號。

內容解密:

  • 下拉電阻:將引腳連線到地(GND),確保在沒有訊號時引腳讀取到低電壓。
  • 高電壓(HIGH)與低電壓(LOW):當感測器觸發時讀取到高電壓,反之則為低電壓。

元件清單

要建立一個完整的家庭安全系統,以下是所需的元件:

  • 樹莓派及其電源介面卡
  • 無線USB網路卡(如Edimax EW-7811UN)
  • 樹莓派攝像頭模組
  • 壓力開關
  • 磁性感測器
  • 紅外線運動感測器
  • 限位開關
  • 乙太網電纜(大捲)
  • 焊錫、焊接工具及各種跳線

這些元件可以根據需求進行擴充套件和調整,讓你的安全系統更加完善。

無線連線至網路

為了方便管理和遠端存取,樹莓派需要連線到家庭網路。無線連線比有線更靈活且安全,因為竊賊無法透過切斷乙太網線來使系統失效。

選擇一個好的無線USB網路卡是關鍵。Edimax EW-7811UN是一款價效比高且易於組態的選擇,適合樹莓派使用。

無線網路卡安裝與組態

安裝無線USB網路卡後,可以透過以下步驟進行組態:

# 設定無線網路卡
sudo nano /etc/network/interfaces

在檔案中新增以下內容:

auto wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

內容解密:

  • /etc/network/interfaces:網路組態檔案。
  • wlan0:無線網路卡的名稱。
  • dhcp:使用DHCP取得IP地址。
  • wpa-conf:指定WPA組態檔案。

設定完成後,重啟網路服務:

sudo ifdown wlan0 && sudo ifup wlan0

這樣就完成了樹莓派的無線連線設定,讓你能夠遠端管理你的家庭安全系統。