基於Arduino的太陽能電池板數字生態箱(第2部分)

承接第1部分的內容,我們將在第2部分中繼續使用Arduino製作有趣的電子產品。在上文中,我們從組裝電路進行到加速度計測試,這次,我們將完成硬體的製作。這個獨特的電子套件創意來自藝術家平原真,他的作品主要以“關係”為主題。大阪藝術大學副教授平原先生使用電腦和電子設備製作了許多媒體藝術作品。近年來,他主要研究如何使用木材和石頭等天然材料製作3D作品。那麼,現在讓我們一起來探索“基於Arduino的太陽能電池板數字飼養箱”的第2部分(也是最後一部分)。

硬體

步驟分解
我們首先從組裝外部元件和安裝電子元件開始。過程如下:

  1. 用鐳射切割材料
  2. 組裝主體
  3. LED接線及安裝
  4. 安裝太陽能電池板

步驟1:用鐳射切割材料

材料是用鐳射加工機切割出來的。外部是3mm厚的椴木膠合板。從左邊起依次為:LED表面,太陽能電池板表面,兩個側面和LED底座。LED底座上的刻線用於在粘貼LED時使其對齊。

可能很難看清楚,其實在下圖的右上角有一個1mm厚的半透明壓克力板。它用於説明擴散來自全彩串列LED燈帶的光。

cutting materials with a laser

請下載並使用以下連結中提取的資料。按照紅線切割,按照黑線刻畫標記。在實際工作時,請務必根據您使用的鐳射機來調整設置。

>> CutData.ai

步驟2:組裝主體

在兩側邊緣塗上木工粘合劑,然後將這四塊板和LED以及太陽能電池板粘貼在一起。粘合後立即夾緊並固定到位。如果您擔心粘合的強度不夠,可以將一小塊木頭貼在粘合位置的拐角處進行加固。

assembly

步驟3:LED接線及安裝

將燈帶分割成5個單獨的全彩LED燈帶。電極中間可以用鉗子剪開。將跳線保留在臨時接線時的位置。

LED wiring and installation

將單獨的全彩串列LED燈帶沿對準標記粘貼到底座上。這個時候,請注意在臨時接線時所連接的跳線應在左上角位置,且電極方向與劃線箭頭方向一致。

各個全彩串列LED燈帶的電極之間透過硬跳線進行連接。電極之間的內側距離約為11mm,中間距離約為17mm,外側距離約為23mm。左上方連接跳線的LED編號為0,其餘LED編號按照連接順序遞增,因此右下方LED編號為24。

separated electrodes of the full-color serial LED tapes

現在,我們戳一下麵包板上的跳線,然後檢查其是否斷開。將LED範例程式([Adafruit NeoPixel]> [Simple])中NUPIXELS的值從16改為25即可完成。如果LED都呈綠色亮起,就表示沒有問題。

#define NUMPIXELS 16

#define NUMPIXELS 25

步驟4:安裝LED底座和麵包板

依次疊加椴木膠合板(LED表面)、亞克力板、LED底座,然後用四個螺絲將它們固定到位。連接著全彩串列LED燈帶的跳線應從板之間佈線到內部。墊片使用非導電墊圈(M2)。由於間隙越厚越利於光的擴散,因此請根據自己的需要將間隙距離調整到約0.5mm至1mm之間。

 installing the LED base and breadboard

installing the LED base and breadboard

將麵包板連接到LED底座的中心。麵包板的背部也有雙面膠帶,所以將離型紙撕下並將麵包板貼上。請注意,如果您在安裝後嘗試移除麵包板,那麼裡面的引腳將會脫落。將連接了全彩串列LED燈帶的跳線插入麵包板的電源、GND和6個引腳。

Attach the breadboard to the center of the LED base

步驟5:用3D印表機製造太陽能電池板托架

用於固定太陽能電池板的托架透過3D列印技術製造。從下面的連結下載STL檔,並使用3D印表機列印托架。請列印出兩個相同形狀的托架,層壓設置分別為粗糙和精細。

>> SolarPanelFixture.stl

solar panels are output with a 3D printer

首先,用螺絲將一個托架固定在太陽能電池板頂部的內側。3D印表機列印出來的托架上有一個未切割的2mm孔。用M2平頭螺釘鑽孔並將其固定。

solar panels assembly

接下來,在將太陽能電池板插入上側托架的同時,用螺釘固定下側托架。

solar panels assembly

步驟6:硬體製作完成!

將太陽能電池板DC插頭插入麵包板上的DC插座,此時所有的硬體應已經準備齊全。

solar panel hardware

solar panel hardware

然後,為了在Arduino Pro Mini 328上寫入草圖,移除下側的托架,並拆下太陽能電池板。

草圖

完成步驟
接下來,我將詳細介紹寫入草圖的所有步驟:

  1. 管理庫
  2. 以二維陣列方式管理LED
  3. 種草
  4. 養動物並管理多種生物
  5. 動物在加速度計發生感應時增殖

管理庫
我們將使用Adafruit提供的Neo Pixel和加速度計LIS3DH庫。此外,我們將定期使用一個名為[MsTimer2]的指定函數。從Arduino IDE功能表中選擇[Sketch]> [Include Library]> [Manage Library]來打開庫管理器。在搜索欄位中輸入[MsTimer2],然後從顯示出來的選項中進行選擇並安裝。

Arduino IDE menu

管理矩陣中的LED
LED燈帶從0到24連續編號,但為了更容易表達動植物的位置,可以換為用橫縱坐標來表示。LED編號存儲在二維陣列中。

int ledMatrix[WIDTH][HEIGHT];//2D array to record LED layout and number
ledMatrix[0][0] = 0;// 0 is、x=0, y=0
ledMatrix[1][0] = 9;// 9 is、x=1, y=0
ledMatrix[2][0] = 10;// 10 is、 x=2, y=0
ledMatrix[3][0] = 19;// 19 is、 x=3, y=0
ledMatrix[4][0] = 20;// 10 is、 x=4, y=0

查看原始程式碼 GitHub託管項目ledMatrix.ino

 

種草
創建一個5 x 5的二維陣列,該陣列用於保存草的生長情況以及每幀中在隨機位置種草。

 

int grassMatrix[WIDTH][HEIGHT];//2D array that keeps grass growing
int rndX = random(WIDTH);
int rndY = random(HEIGHT);
grassMatrix[rndX][rndY] += random(GRASS_GROWTH_POTENTIAL + 1); //Grows grass at random locations

查看原始程式碼 GitHub託管項目grassMatrix.ino

養動物

定義一個結構來處理和保存動物的參數。動物資訊透過這一系列動物結構進行管理。動物結構有一個生/死標誌,如果它沒有死,那麼會進行移動和覓食。接下來,將一隻動物移向最茂密的草叢。當進入草地部分時,動物開始進食,並將草的生長水準設置為0,然後將這一部分的攝入添加到動物的體能中。同時,每一幀都會消耗一定的體能,如果體能降到0,動物就會死亡。

增殖動物

有兩種方法可以增殖動物。一種是當主體倒下以及檢測到一定程度的振動時。這種情況下,一個隨機顏色的新動物將會出現在螢幕中間。

另一種是當動物吃草並且體能達到極限時。動物的體能將會減半,並增加相同顏色的動物數量。

整體草圖

digital rearing box powered by solar panels using Arduino

總結

做得好!您已經完成了!如果您將太陽能電池板朝向太陽,我相信光點會開始移動。當它開始移動尋找食物時,看起來確實像一個生物。那麼,您對透過重寫種草方式和動物的運動方式來創建自己的原始生態系統有何感想呢?

這就是對這個系列的總結了。透過這兩部分內容,我們學習了如何使用Arduino製作由太陽能電池板供電的數位飼養箱。我希望每個人都可以利用這些知識來製造一些真正獨特的東西。