2017年1月22日 星期日

[DIY] 釘層板

我這個老 Maker 有太多零件沒地方放,許多大大小小的紙箱把書桌底下堆疊地像福德坑垃圾山一樣。為避免讓老婆大人繼續叨唸,剛好也快過年了,也得除舊布新一下,就去特力屋買了 2 片美耐面 E1 層板,尺寸 1.8x90x30cm。廠商有生產白色、淺木紋和深棕色木紋等 3 種顏色,我挑選了「淺木紋」這一款,回家安裝好之後感覺是挑對了,淺灰色的木紋跟乳白的牆壁還蠻搭的。

廢話不多說,我們就開始來說明如何釘層板。




準備工具

1.電鑽
2.L形90度角尺(沒有也沒關係)
3.捲尺
4.長鐵尺
5.筆
6.水準尺(或是手機下載 APP)



準備施工圖

依照層板材料的尺寸與支架的孔位,我畫出如下施工圖


圖中某些數據有誤,2.5cm 應修正為 1.8cm。


Step1 將支架鎖到層板

1.準備筆、尺和捲尺。



2.依照施工圖在層板上畫出 4 個孔位。


3.用直徑 3~4mm 的鑽頭鑽出深約1.0~1.2cm 的孔。
提醒您:電鑽請不要使用震動模式。

4.準備支架*2和短螺絲*4(圖片中下方螺絲)。


5.用短螺絲將支架鎖到層板。



Step2 在牆壁上鑽 4 個孔

1.因支架距離層板為 10cm,為避免牆壁沒有垂直或平整,以及人為誤差,我從右側避面往左量出 10.5cm 的距離做一個記號,讓層板跟牆壁有一個 0.5cm 的縫隙,這個 0.5cm 的縫隙不會太小到影響層板安裝,也不會大到讓東西從縫隙掉下去。

2.用一條綁著重物(可以是一根螺絲)長約 30cm 的線,自記號處自然垂下,在線的底部再做一個記號,用鉛筆在這 2 個記號畫出一條垂線。

這條線是垂直地面的。

3.將長尺右端靠住上記號,盡量不讓它可以移動。再將水準尺放在長尺上面,移動長尺左端,讓水準尺氣泡居中,此時可以畫出一條水平線。


提示:如果您是使用手機 APP 水準尺,記得要脫除手機套與保護殼,以避免影響水平精準度。

4.從右端的垂線順著水平線往左量出 70cm 的距離,做一記號。

5.重覆步驟 2,再畫出一條左垂線。

6.先決定上孔位置後,再往下量 14cm 就是下孔位置。

7.在孔的下方用紙膠帶黏住攤平的塑膠袋,用來承接待會兒鑽孔時落下的塵土。



8.用直徑 6mm 的水泥鑽頭鑽出深約 2.5cm 的孔。
提示:您可以利用電鑽上面的桿尺來量測鑽孔深度。
提醒您:電鑽請切換到震動模式。



9.將 4 只塑膠套塞入孔內,塑膠套須與牆壁面平整,最好不要太深入或外凸。


10.移除紙膠帶與塑膠袋,並稍作擦拭與清潔。

11.將層板抵住牆面,用 4 只長螺絲鎖固。我總共安裝了 2 片層板。


12.將置物箱放入層板。至此大功告成。



後記

如果您也是安裝 2 片層板,在計算上下層板之間的距離時,應該要考量到上層板支架的厚度,如果忽略了這個厚度,在事後放入置物箱時,置物箱有可能會被上層板支架卡住而無法放進去。









2017年1月2日 星期一

[LED] 玩轉光立方 LED Cube 4x4x4 for Arduino UNO -- 程式3

在前兩篇貼文中,我們介紹了如何從頂端到底端以及從前面到背面點亮 LED,

玩轉光立方 LED Cube 4x4x4 for Arduino UNO http://pizgchen.blogspot.tw/2016/12/led-4x4x4-for-arduino-uno.html

玩轉光立方 LED Cube 4x4x4 for Arduino UNO -- 程式2 http://pizgchen.blogspot.tw/2017/01/led-led-cube-4x4x4-2.html

以上兩種方式只能逐一點亮 LED,無法做出多樣式的顯示圖案。本篇旨在為以後使用查表法做出動態顯示圖案做準備,在程式結構方面稍做修改。


程式碼

//2017-01-01 LED_Cube4_03.ino
//為了之後的動態顯示,用另一種方式來點亮全部 LED

#define CUBE_SIZE 4
#define PLANE_SIZE CUBE_SIZE*CUBE_SIZE
#define PLANE_TIME 0
#define LED_TIME 0

int LEDPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1};
int PlanePin[] = {A2 , A3, A4, A5};

void setup()
{
  int pin;
  for (pin = 0; pin < PLANE_SIZE; pin++) {
    pinMode(LEDPin[pin], OUTPUT);
    digitalWrite(LEDPin[pin], LOW);
  }
  for (pin = 0; pin < CUBE_SIZE; pin++) {
    pinMode(PlanePin[pin], OUTPUT);
    digitalWrite(PlanePin[pin], HIGH);
  }
}

void loop()
{
  for (int plane = 0; plane < CUBE_SIZE; plane++) {
    digitalWrite(PlanePin[plane], LOW);
    for (int col = 0; col < CUBE_SIZE; col++) {
      for (int row = 0; row < CUBE_SIZE; row++)
      {
        digitalWrite(LEDPin[col * CUBE_SIZE + row], HIGH);
        delay(LED_TIME);
        digitalWrite(LEDPin[col * CUBE_SIZE + row], LOW);
      }
    }
    delay(PLANE_TIME);
    digitalWrite(PlanePin[plane], HIGH);
  }
}


來看看影片

video




[LED] 玩轉光立方 LED Cube 4x4x4 for Arduino UNO -- 程式2

上一次LED 是從頂層逐一點亮 16 只 LED,然後往下到底層,詳 http://pizgchen.blogspot.tw/2016/12/led-4x4x4-for-arduino-uno.html

這一次我們要換個方向點亮 LED,先逐一點亮前面的 16 只 LED,再往背面方向點亮過去。

靠近 USB 和電源插頭那一端是背面。



程式碼

//2017-01-01 LED_Cube4_02.ino
//從前面到背面垂直逐一點亮 LED
#define CUBE_SIZE 4
#define PLANE_SIZE CUBE_SIZE*CUBE_SIZE
#define PLANE_TIME 20
#define LED_TIME 200

int LEDPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1};
int PlanePin[] = {A2 , A3, A4, A5};

void setup()
{
  int pin;
  for (pin = 0; pin < PLANE_SIZE; pin++) {
    pinMode(LEDPin[pin], OUTPUT);
    digitalWrite(LEDPin[pin], LOW);
  }
  for (pin = 0; pin < CUBE_SIZE; pin++) {
    pinMode(PlanePin[pin], OUTPUT);
    digitalWrite(PlanePin[pin], HIGH);
  }
}

void loop()
{
  for (int led = 0; led < PLANE_SIZE; led++)
  {
    digitalWrite(LEDPin[led], HIGH);
    for (int plane = 0; plane < CUBE_SIZE; plane++)
    {
      digitalWrite(PlanePin[plane], LOW);
      delay(LED_TIME);
      digitalWrite(PlanePin[plane], HIGH);
    }
    digitalWrite(LEDPin[led], LOW);
    delay(PLANE_TIME);
  }
}


來看看影片

video


相關連結

1. [LED] 玩轉光立方 LED Cube 4x4x4 for Arduino UNO http://pizgchen.blogspot.tw/2016/12/led-4x4x4-for-arduino-uno.html

2. [LED] 玩轉光立方 LED Cube 4x4x4 for Arduino UNO -- 程式3 http://pizgchen.blogspot.tw/2017/01/led-led-cube-4x4x4-for-arduino-uno-3.html

2016年12月31日 星期六

[LED] 玩轉光立方 LED Cube 4x4x4 for Arduino UNO

自從當了 Maker 之後,一直都覺得 LED Cube 光立方是一個非常酷炫的裝置,當它發光時視覺上不僅炫耀奪目,而且其中還隱藏了不少的數學原理,非常建議老師、家長和同學一起來玩玩。



我們先來看看影片 https://www.youtube.com/watch?v=XIb07gRdHn8


準備


材料
1. 電路板 *1
2. 公排針 *40P
3. 圓孔母排針 *20
4. 3mm 長腳 藍色霧面 LED *64


工具
1. 烙鐵 + 焊錫
2. 斜口鉗
3. 尖嘴鉗
4. 鑷子
5. 厚紙板
6. 電鑽 + 3mm 鑽頭
7. 原子筆或細簽字筆
8. M3*14mm 螺絲+螺帽 *4
9. 電阻 100~220R *1
10. 麵包板


開始動手做


一、檢查所有的 LED 是否有正常發亮

您購買的 LED 即使廠商如何口沫橫飛地述說它們品質是如何地好,建議您也必須要自己詳細查驗,否則您可能有機會遇到懊惱的時候。

1. 計算限流電阻。

藍色 LED 順向電壓約 3.0~3.4V (注意:顏色不同,可承受的電壓也不同),我們取 3.2V 來計算:

(5 - 3.2) / 15mA = 120R

可採用 100R 或 110R 電阻。

2. 將電阻與 5V 電源插入麵包板,逐一插入 LED,檢查 LED 是否正常發光。
將 LED 插入麵包板時要注意 LED 的正負極。



二、彎折 LED

1. 取出尖嘴鉗輔助彎折 LED,我們需要彎折出 3 種型式的 LED,圖面右側是未彎折前。
在彎折時須注意 LED 的正負腳,正腳在彎 2 折後仍保持與燈珠同方向,並且每一彎折應盡量保持90度角,如下:

Type A * 48只


Type B * 12只


Type C * 4只


小聲地說...這個工作我是一邊看電視一邊彎折的,不然要彎折 64 只 LED 還真是挺無聊的事情。


三、製作固定 LED 的模板

這個模板可以用來插入 LED,如此可以讓 LED 排列整齊,在焊接時不會移位。

1. 準備一張厚約 1~3mm 的硬紙板。我隨手找了個 68x68mm 的蛋糕盒。



2. 在上面畫上間距 14mm 的九宮格。14mm * 3 = 42mm,九宮格邊長是 42mm。
我先畫上交叉線找出盒子中心點,再由中心點往外畫出九宮格。


3. 用電鑽在交點處鑽出 16 個 3mm 圓孔。


四、將圓孔母排針焊到電路板上

1. 將 20 支圓孔母排針插到電路板上。板子有兩面,要注意方向。


2. 為了焊接前翻轉電路板,避免排針掉落,我將 Arduino UNO 板子疊上去,用 M3*14mm 螺絲+螺帽 *4 將他們鎖在一起。
在將螺絲鎖緊前可用手指頭輕敲電路板讓排針垂直站立,邊敲邊觀察哪支排針沒有垂直,此時可用鑷子調整排針。


這是翻轉後的樣子


3. 由於有少數幾支排針與螺帽非常接近,因此我先焊接中央部分的排針,待焊到螺帽旁的排針時再移除螺帽焊接排針。
您的焊接接技術一定比我好,就不必移除螺帽可直接焊接。



五、焊接公排針

1. 用斜口鉗將公排針剪出

6P * 2只
8P * 2只


2. 將上述排針(長)插入 Arduino UNO。注意圖片中排針的位置。


3. 對準公排針孔位,放上 LED Cube 電路板,須注意電路板正反面。
底下圖片是焊接好的樣子。




六、焊接 LED

先來看看我們要做出怎樣的東西


我把紙模寫上座標以利辨識


1. 將 Type A 插到座標(0,0)~(2,2)之間區塊,共 12 只。
注意 LED 的腳位方向。


2. 將 Type B 插到座標(0,3)~(2,3)之間直線,共 3 只。
注意 LED 的腳位方向。



3. 將 Type C 插到座標(3,3),共 1 只。
注意 LED 的腳位方向。


4. 將 LED 所有的負腳全部焊接在一起。
圖片中是焊接好取出的樣子。


5. 您需要做 4 組(L0~L3)上面圖片的 LED 層面。

6. 將 4 組 LED 層面的正腳都焊起來。
注意正腳搭接長度大約是 8mm 左右,盡量讓你的 LED 排列呈現出正方形。



7. 在 L0~L3 每一層的負腳(上圖黑色導線)各焊上一條導線。



8. 先將光立方電路板插入 Arduino UNO,再將整組 LED Cube 小心地插入圓孔排針,並且將 4 條導線另一端也插入圓孔排針,至此大功告成。



程式

//2017-01-01 LED_Cube4_01.ino
//從頂層到底層逐一點亮 LED

#define CUBE_SIZE 4
#define PLANE_SIZE CUBE_SIZE*CUBE_SIZE
#define PLANE_TIME 20
#define LED_TIME 500

int LEDPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1};
int PlanePin[] = {A2 , A3, A4, A5};

void setup()
{
  int pin;
  for (pin = 0; pin < PLANE_SIZE; pin++) {
    pinMode(LEDPin[pin], OUTPUT);
    digitalWrite(LEDPin[pin], LOW);
  }
  for (pin = 0; pin < CUBE_SIZE; pin++) {
    pinMode(PlanePin[pin], OUTPUT);
    digitalWrite(PlanePin[pin], HIGH);
  }
}

void loop()
{
  for (int plane = 0; plane < CUBE_SIZE; plane++)
  {
    digitalWrite(PlanePin[plane], LOW);
    for (int led = 0; led < PLANE_SIZE; led++)
    {
      digitalWrite(LEDPin[led], HIGH);
      delay(LED_TIME);
      digitalWrite(LEDPin[led], LOW);
    }
    digitalWrite(PlanePin[plane], HIGH);
    delay(PLANE_TIME);
  }
}

程式說明

1. UNO 腳位 D0~D13 & A0~A1 分別控制每一顆 LED,D0 控制的 LED 是靠近 D0 腳位那一顆,A1 腳位則是控制距離 D0 最遠的那一顆 LED。A2 控制頂層 LED,A5 則是控制底層 LED。

2. 把所有的腳位都設定成 OUTPUT,才可以指定它要 HIGH 或 LOW。當指定它為 HIGH 時電位是 5V;當指定它為 LOW時電位是 0V,相對於 5V 而言可以把它視為是 GND。

3. 在初始階段為了讓所有的 LED 都不亮,所以在 setup() 階段將 16只 LED 腳位都設為 LOW,並且將控制層面的 4 只腳位都設為 HIGH。
此時 LED 受到逆向 5V 的電壓,但因 LED 可承受 5V 逆向偏壓,再加上 UNO 的輸出電流不大(每一腳位為 20mA),所以 LED 不至於會燒毀。個人覺得這是一種為節省材料成本,但卻是非常冒險的電路做法,LED 稍有不慎短路,將會毀壞 Arduino 主板。

來看看影片

video



相關連結

1. LED 限流電阻計算 http://gc.digitw.com/Program/Resistor4LED/Resistor4LED.htm
2. Arduino UNO 開發板 https://www.arduino.cc/en/Main/ArduinoBoardUno
3. 玩轉光立方 LED Cube 4x4x4 -- 程式2 http://pizgchen.blogspot.tw/2017/01/led-led-cube-4x4x4-2.html


採購資訊

光立方 LED Cube 4x4x4 http://goods.ruten.com.tw/item/show?21652958873589




2016年12月17日 星期六

DIY 音樂門鈴

這是一款非常簡單的音樂門鈴套件,除了適合國中小學生工藝課之外,也適合親子在假日一起動手做。


準備材料與工具


材料

088BD 音樂模塊 * 1
電晶體 S9013 * 1
電容 103 * 1
8R 小喇叭 * 1
按鈕 * 1
電池盒 * 1
電線 長度約 1M
外殼 * 1
電工膠帶 少許


工具

斜口鉗
尖嘴鉗
烙鐵 + 焊錫
M3十字起子


開始動手做

電源部分

1. 將鐵片置入背蓋的電池盒內。背蓋上方是 1 個大鐵片,下方是 2 個小鐵片,注意彈簧那個小鐵片是安裝在右側。


2. 翻轉背蓋,將突出的鐵片往外彎曲90度固定,以防止鐵片脫落。


3.注意正負極位置,將電源線焊上。(圖上的"+ -"符號是我用簽字筆寫上去的)



按鈕部分

1. 將白色電線夾入簧片。簧片裏面有尖齒,只要用尖嘴鉗緊壓簧片,尖齒會穿透電線膠皮進而導電。

為以防萬一,我多做了一小段裸露電線伸到簧片圓圈裏,待會兒再用螺絲鎖上時可接觸形成導通。


2. 用螺絲將一個簧片鎖入按鈕帽後,放到白色按鈕盒的洞口,並插入 2 個彈簧。



3. 用螺絲將簧片和長鐵片鎖上。



喇叭部分

1. 取 2 條電線分別焊到喇叭的正負極。



電路板部分

這是簡易電路圖,您可以注意一下圖中並沒有標示出 103 電容的位置。


由於這個套件是使用一只 -088BD 音樂 IC,我找到另一個比較詳細的電路圖,它有標示 103 電容的位置,您可以將這兩張圖互相對照一下。


如果材料包裏面的電晶體不是 S9013 而是 S8050,如此也沒有影響。其中 S9013 和 S8050 都是 NPN 型電晶體,而且集極電流最高都可以承受到 500mA,在一般情況下這兩款電晶體可以互相替用。

在將電晶體插入電路板時要注意電晶體的腳位。


我按照上面電路圖焊接後出現 2 個問題,一個是裝上電池後即使沒有按下按鈕,音樂也會一直響個不會停;另一個問題是這樣的接線方法電池會一直耗電。

於是...以下是我修改後的方法,在沒有按下按鈕時整體電路是不會耗電的。

1. 將電晶體和電容如下圖插入電路板並焊接。注意 103 電容腳位沒有正負極之分,它其中一隻腳與電晶體的 C 腳是插在同一個孔。


2. 將電源負極線焊到電路板的負極,也就是電晶體 E 腳。
3. 將電源正極線與按鈕任意一條線焊接,然後用絕緣帶纏繞以防短路。
4. 將按鈕另一條線與喇叭正極線焊到電路板的正極。
5. 將喇叭負極線焊到電路板上電晶體 C 腳。



組裝

1. 將喇八輕輕壓入前蓋,如果覺得不夠緊固可以在喇叭與前蓋交界處周圍塗佈一圈快乾膠或熱熔膠。



2. 裁一小片紙膠帶貼住電路板焊接部位,以避免跟其它電線碰觸導致短路。

3. 將電路板放入喇叭旁的空間,按鈕電線從前蓋角落的小缺口穿出,將前蓋與背蓋闔上並用螺絲鎖緊,最後蓋上電池蓋。



這是完成圖




相關連結

S9013 Datasheet http://html.alldatasheet.com/html-pdf/311426/DAYA/S9013/94/1/S9013.html
S8050 Datasheet http://html.alldatasheet.com/html-pdf/154210/WEITRON/S8050/292/1/S8050.html
祝你生日快樂電子蠟燭 http://www.ttfanwen.com/info_10/fw_2350307.html


採購資訊

音樂門鈴套件 http://goods.ruten.com.tw/item/show?21630190930598