• 沒有找到結果。

腳位擴充 (Pin Extension)

ESP12F 模組從 ESP8266 晶片拉出最多腳位只有 11 隻數位腳位(digital pins)、1 隻類比腳位(analog pins),如圖 4-1 所示。而數位腳位有 3 隻預設使用於燒錄及開 機模式的選取,並不適合使用於連接其他模組1。所以可以自由使用的數位腳位並 不多,如果要用來控制多組開關或者接多個模組的話,數位腳位就會不敷使用,

所以我們想到使用移位暫存器及多工器,分別用來擴充 ESP8266 的數位及類比腳 位。

圖 4-1 ESP12F 模組的數位及類比腳位圖

1 如果還是有需要用到這 3 隻預設的開機腳位的話,可以使用兩顆 BS170 場效電晶體 (Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET)讓開機時電位可以開機,開機後就 可以像一般數位腳位使用。

數位腳位擴充 (Digital pin extension)

為了擴充數位腳位,我們使用移位暫存器(Shift Register),型號是

SN74HC164(如圖 4-2)[4],接上 SN74HC164 的 ESP8266 模組如圖 4-3 所示。移位 暫存器的原理是序列輸入並列輸出,如圖 4-4 所示,所以可以用比較少的腳位輸 入訊號,然後並列的同時輸出多個腳位,進而做到擴充腳位的目的。適合的使用 方式為,當需要維持數位腳位電位的行為,例如控制 LED 亮暗(如圖 4-3)、控 制繼電器的開關等等。

圖 4-2 SN74HC164 實體照片

圖 4-3ESP8266 與 SN74HC164 腳位連接圖

首先我們要說明圖 4-3 中,麵包板的用途是讓我們方便連結線路及裝置,橘 色雙箭頭表示是該方向上的點是互通的,只要有線路或者裝置接在同樣的橘色雙 箭頭上就會連接在一起。而中間的四組橘色雙箭頭左右兩直排是不相通的,而上 下半部也不相通。而圖最右邊的紅、藍線將上下兩橫列分別連接在一起。

圖 4-3 中所有的紅線表示連接到電源的正極。ESP12F 的 CH_EN 是晶片啟動腳位 (Chip Enable),需要維持在高電位晶片才會啟動。Vcc 是 ESP12F 的電源輸入腳 位,連接至供電電源的正極。74HC164 晶片左邊有一個半圓形凹槽,用以辨識方 向,74HC164 的腳位說明請見圖 4-5,後面段落將會詳細說明。74HC164 左上角 是電源輸入腳位紅線同樣是電源輸入腳位,連接至供電電源正極。 以當 ESP8266 輸出高或低電位時,輸入到 SN74HC164 的電位也會是我們想要的電 位。(2)我們可以省下 1 個數位腳位,挪作其他功能使用。而 SN74HC164 這顆 IC 的時脈(Clock,簡稱 CLK)屬於上緣觸發2(positive or rising-edge, from LOW to HIGH),觸發的時間點為時脈的電位從低電位變成高電位的瞬間,會讀取 A, B 輸 入的結果當作輸出,並且將前一級的電位狀態傳給下一級。

2 另有負緣觸發(falling edge-triggered),原理與上緣觸發相反,觸發的時機點 是當電位從高電位變成低電位的時間點。

圖 4-4 SN74HC164 時序圖範例

表 4-1 SN74HC164 輸入訊號功能表

SN74HC164 IC 的腳位說明如圖 4-5。在 Name 欄位中的 A, B 是輸入訊號的來 源。QA~QH的系列為輸出訊號的腳位,最先輸入的訊號會先送到 QH,接著依序輸 入,最後才是 QA。GND 是接地。VCC是該 IC 的所需的工作電源輸入腳位,該 IC 可以接受-0.5V~7V 的電壓,為了方便與 ESP8266 共用,我們使用 5V 當做工作電 壓。CLK 是時脈(Clock),可以使用石英振盪器,或者我們使用數位腳位自己控制 電位的高低電壓與達成同樣的時脈,因為該 IC 接受訊號的方式是 CLK 的電位由 低電壓到高電壓的上緣觸發,所以並不要求時脈要非常精準,但是會要求每個時 脈的高低電位各要維持多久。

圖 4-5 SN74HC164 腳位說明

類比腳位擴充 (Analog pin extension)

ESP8266 除了數位腳位數量不足,同時也有類比腳位數量不足的問題,所以 在 4.1.2 小節要說明我們如何解決腳位不足的問題。我們選擇 16 通道類比多工/解 多工器,型號是 CD74HC4067[4],實體照片如圖 4-6。

圖 4-6 CD74HC4067 實體照

圖 4-7 中,CD74HC4067 模組左側是 C0 ~ C15 通道,用來連接感測器的類比輸出 腳位。右側的選擇腳位(S0 ~ S3)會決定要將哪一個通道(C0~C15)連接至右側的訊 號輸出腳位(SIG),而 ESP8266 再去讀取訊號輸出腳位(SIG)。黃線表示類比訊號資 料線,類比資料的數值由黃線傳遞。圖中用光敏電阻當作示範,光敏電阻會因為 周圍光線強弱而改變電阻值,進而影響到電阻兩端的電壓。

圖 4-7 中,紅線代表電源正極。ESP8266 端同樣是將 Vcc 腳位與晶片啟動腳位 (EN)連接到電源正極。CD74HC4067 的工作電壓是 5 伏特,輸入到 VCC 腳位。當 CD74HC4067 晶片的啟動腳位(EN)是高電位時,這時候的通行方向是由通道 (C0~C15)到訊號端(SIG)。此時的應用場景是可以切換讀取周邊多個類比裝置,但 同時只能讀取到其中一個類比裝置。當啟動腳位是低電位時,訊號由訊號端(SIG) 到通道(C0 ~C15)。應用場景是 ESP8266 要輸出類比訊號給多個類比裝置時,但是 同時只能有一個輸出。

圖 4-7 中,藍線代表電源負極。CD74HC4067 與 ESP8266 都需要接地。

圖 4-7 中,綠線代表通道選擇線,由 ESP8266 控制輸入到 CD74HC4067 的 S0~S3 四隻腳位。CD74HC4067 通道選擇真值表,如表 4-2 所示。若周邊的類比裝置不 多的話,可以直接將 S3 甚至 S2 直接接地,這樣就可以減少 ESP8266 控制腳位的 數量。

圖 4-7 ESP8266 與 CD74HC4067 模組連接圖

表 4-2 CD74HC4067 通道選擇真值表

總結 4.1 ,CD74HC4067 類比多工器與 SN74HC164 移位暫存器,皆用來擴展 ESP8266 腳位不足的問題。兩者各有其優點與缺點,也可以進行組合搭配,發揮 更大的功用。

CD74HC4067 類比多工器,可以依據啟動腳位(EN)進行雙向的通訊,而

SN74HC164 僅能單向的輸出訊號,如果有多個數位腳位需要讀取的話,也可以使 用 CD74HC4067 輔助。

CD74HC4067 需要四隻通道選擇腳位,而 SN74HC164 只需要一隻序列輸入腳位就 可。所以可以使用 SN74HC164 輸出訊號當作 CD74HC4067 的通道選擇訊號,這樣 就可以只使用一隻數位腳位選擇 16 個類比通道。

如果應用情境超過 16 的類比裝置的時候,可以使用階層的概念,串連

CD74HC4067,一層的 CD74HC4067 就可以控制 16 的類比裝置,兩層的話就可以 控制 162 (256)個類比裝置,以此方式可以輕易的擴充我們的應用,同時搭配 SN74HC164 控制通道的選擇就可以滿足很多 ESP8266 上腳位的需求。

相關文件