陽光記錄器

七月 17, 2014
Facebook
Twitter
學習如何為 Arduino 增添永續儲存能力、光度感測器,並把它變成資料記錄裝置。
图片

材料

1×40 排針1’ 間距 (1)
100k 電阻1/4W (1) 可於 RadioShack 購買
三號電池 (8) 可於 RadioShack 購買
Arduino UNO可於 RadioShack 購買(1)
SD  (1)
10kΩ 電阻 (1) 可於 RadioShack 購買
光敏電阻系列 (1) 可於 RadioShack 購買
電池夾(1) 可於 RadioShack 購買
USB  (1) 可於 RadioShack 購買
8入3號電池座 (1) 可於 RadioShack 購買
3.3V穩壓器 (1)
電位轉移器 74AHC125 (1)
 洞洞 (1) 可於 RadioShack 購買
外殼6’x3’x2′ (1) 可於 RadioShack 購買
跳線組 (1) 可於 RadioShack 購買
100uF 電容 (1) 可於 RadioShack 購買
SD 記憶卡 (1)

資料記錄器是一種長時間獨立運作的裝置,定時記錄外接感測器的讀數。
我們將使用 Arduino 微控器以及自製的「擴充板」(Arduino 的周邊電路板)來製作能夠記錄亮度及其變化的裝置。

步驟1:集材料 

  • Arduino UNO、印刷電路板(RS# 276-158)、10KΩ電阻 1/4WIC: 74AHC125、排針、SD卡插座(參見主要材料表)、9V 電池及   電池夾、電子線(三色)
  • 您還需要一個 3.3V穩壓器。不同廠牌及型號可能有不同的接頭,需要先行確認。
  • 我把排針切成 4 塊:6針腳1塊、8針腳2塊,和10針腳1塊。(若您的Uno較舊,可以把10針腳排針切成8針腳以符合規格。)我把這些針腳用第三張照片中的方式接上 Arduino。依照這個方式來接很重要,因為可以讓您把原型板和 Arduino 不完全依照格線的針腳對齊。
  • 請注意在第一張照片中出現額外的電容器和 LED 並非必需之材料。

步驟2:連結針腳 

  • 接下來,我把洞洞板放在針腳上,並且在需要裁切的地方做記號。
  • 若外殼空間夠大,則不一定要裁切洞洞板。
  • 裁切完成後,就把針腳焊接固定。

步驟3:裝上 9V 電池

  • 使用外接電源來為記錄器提供電力,所以我把一個9V電源連接器和ArduinoVinGND腳位連接。
  • 您可以在 Arduino 的照片中看到連接點。將線路由後方穿到前方,並焊接固定。

步驟4:為SD卡接上3.3V電源

  • 這裡的SD卡要靠3.3V電源才能運作。雖然Arduino備有常規的 3.3V腳位,但最好還是讓資料記錄線路有專用的電源。在這一個階段,把3.3V穩壓器接上5V腳位。
  • 如第二張照片所示,接地線在左,5V輸入線在中,3.3V輸出線在右。
  • 我把這組線路和Arduino5VGND腳位連結,並且用剝皮的電線來延長地線。
  • 最後,在穩壓器的3.3V輸出端加上剝皮的電線。
  • 在無負載狀態測試穩壓器發現電壓讀數稍微低於 3.3V,請不用訝異。加上負載(晶片和插座)後,電壓便會穩定維持在3.3V
  • 最後,將10uF電容接在穩壓器的輸出端—–正極接到輸出端,負極接到接地線。

步驟5:接上SD卡插座

  • 現在要用照片中下方8個針腳(相同間距者)來連接插座。
  • 上方3個針腳是用來偵測記憶卡是否插入,而我們不會用到這些。
  • 將插槽放在萬用電路板上,讓每個銅方格都只接觸一個針腳。
  • 用膠帶固定插槽,並先焊接底部的連接點,再進行針腳焊接(參見第三張照片)。

步驟6:連接74AHC125晶片

  • 與其逐步說明如何接線,不如讓您依照示意圖來進行連接更為簡單。用剝去外層的電線來進行連接,如第二張照片所示。
  • Arduino10111213腳位接出的線穿過74AHC125電位轉移晶片,接上插槽(電壓3.3V)。藉此可保護SD卡不受Arduino5V邏輯電平損害。
  • 您需要在+5V74AHC125晶片第9腳位之間裝上10KΩ電阻(棕、黑、橙、金)。
  • 12腳位會直接連接到插槽。雖然高電壓信號只有3.3V,仍足以在5VArduino上被視為高電壓。

步驟7:連接感測器

  • 我手上有一系列的光敏電阻(LDR)。以萬用表測試後,發現有一顆100KΩ光敏電阻的範圍在黑暗中是100KΩ,光亮下則會降至約50Ω。我把它和 一個100KΩ 的固定電阻串連,構成一個分壓器電路。
  • 分壓器的運作原理是(第二張照片):若光敏電阻在光亮下,電路的下半部電阻值會非常低,將針腳下拉至接地線;黑暗中,針腳的電壓將會是2.5V,因為兩個電阻間降的電壓相同,讀數會落在0512之間。
  • 我在外殼的蓋上鑽了兩個小洞,讓光敏電阻的接線穿過,並接上電阻—–白色線接到GND,紅色線接到+5V,黃色線接到ArduinoA0

步驟8:連接電池組 

  • 起初,我用一顆9V電池來測試記錄器,但續航力僅有24小時左右,於是我決定採用較大的電池組。這個電池組總電壓為12V,但仍使用標準的9V型式針腳。
  • 測試之後,我發現把兩個含4顆三號電池的電池組並聯比使用單一的8顆三號電池組還有效率。或許也能把我的8顆三號電池組改造,讓它提供6V的雙倍電流。
  • 我用熱融膠把Arduino和擴充板固定在外殼蓋子上。您也可以選擇用螺栓,效果會比較持久。

步驟9:編寫程式與進行記錄

  • 首先,以記錄腳本程式碼來編寫Arduino程式。您可以在GitHub下載到腳本程式碼,不過需要Arduino Time資料庫,並依照該處的說明來安裝資料庫。
  • SD卡插入插槽並接上電池組。此時Arduino會開始運作,它會將SD卡初始化,之後等待初始化的程序完成。
  • 我們會以Arduino序列監視器來連繫資料記錄器。現在Arduino會等待字母「T」經由序列連結傳送,接著會出現的是起始的時間戳記(參見第二張圖)。
  • 時間戳記需使用Unix epoch時間規格。可以用這個轉換器來取得epoch時間。在序列監視器鍵入「T」和時間,接下來把字串傳送至Arduino。如此記錄器便開始運作,每15秒進行一次採樣,並將結果傳送至序列監視器(如第三張圖)。收集到的讀數也會記錄在SD卡中。
  • 實際使用時,移除USB線,將外殼闔上,放置在想要記錄亮度的場所,並且確認光敏電阻可以受到光線照射,而不會被遮蓋。

步驟10:資料顯示 

  • 得到資料後,下一個任務便是把它轉換為有用的形式。
  • 輸出的資料是由逗號分隔的日期、時間,以及感測器資料列表。您可以把資料載入Excel,輕易做成圖表,但您會發現它無法順利處理日期,且資料上下顛倒。另外,強烈陽光會讓感測器的電阻值為0,故讀數為0
  • 我在資料中發現夜間的讀數特別有趣,它記錄了鄰居的安全照明燈在漫漫長夜中點亮之下的影響。

步驟11:更進一步
這是一個相當陽春的資料記錄器,加點改良可以讓它更強大。

  • 裝實時時鐘(Real Time Clock)晶片。每次啟動時以電腦設定時間是沒問題的,但能讓裝置自行處理時間資料就更棒了。您可以參考 Arduino Playground所提供的兩個選擇:
  • 實時時鐘DS1307
  • 實時時鐘DS1306
  • 6個類比輸出端連接插槽,建立一系列偵測更多變數的感測器(光線、溫度、氣流、水流等等)。
  • 這個網頁提供製作數種類比感測器的說明(轉貼自Arduino Playground)。
  • 力消耗:降低採樣次數(如每5分鐘一次),並在12V電池組和Arduino間加裝交換式穩壓器將讓它更有效率。(較便宜的作法是把兩個4顆三號電池的電池組並聯。)

結語
在這個教學中,我們為Arduino增添永續儲存的能力,並把它變成資料記錄工具。市面上有各種不同的感測器可供選擇(光線、熱能、聲音、動作等),所以您可以記錄任何想要的資料。
若您製作了陽光記錄器(或任何其他資料記錄器),歡迎您在下方留言告訴我們您的製作歷程,以及它在您生活中的妙用。

(譯:屠建明)
[原文]

Social media & sharing icons powered by UltimatelySocial