感測模組的製作

為了方便感測模組的應用,特別設計了感測模組的實驗平台,讓同學們可以在製作完成之後,有一個實用的感測器的實驗裝置。

首先,是所有會使用到的材料照片:

這些材料包括:

  • 萬孔板*2

  • 5V電源供應器

  • 4.5CM銅柱*4、1CM銅柱*12、螺帽*8

  • NodeMCU V3主板*1

  • NodeMCU 擴充版*1

  • 14P端子台*2

  • 18650電池盒*1

  • DC2.5端子*1

  • 杜邦線母頭*28

第一步,先在萬用板上鑽出固定NodeMCU擴充板所需要的孔:

完成之後,使用銅柱把擴充板鎖在萬用板上:

接下來使用泡棉雙面膠將電源供應器固定在萬用板上:

再來,取出另外一個萬用板以及14P的端子台,使用電鑽在相對應的位置處鑽出可以固定端子台的孔洞:

然後把14P的端子台焊到萬用板上,背面看起來是這個樣子:

緊接著要焊接的是DC 2.5的接頭,請把18650電池盒上的兩條電線捍接到接頭上。由於電源本身是有分正負極的,所以一定要留意不要焊錯了!

下面這張照片是焊接完成之後的樣子:

再來是排線的部份,可以直接把杜邦線從中剪斷如下:

由於需要的線有長有短,所以要斜著剪,一邊是 10CM,一邊約為7.5CM

接著就把剪下來的杜邦線,由長至短一路焊接到端子台的接腳上:

下圖是焊接完成之後的樣子:

接著把麵包板固定到另外一面上(端子台的正面),如下所示:

再來就是把杜邦線依序插到NodeMCU的廣充板上,如下所示:

最後再把兩片萬用板利用4.5CM的銅柱鎖好,就完成了,成品如下所示:

由於和NodeMCU之間的連線線是用杜邦線,因此可以彈性選擇、自由調整所要使用的連線接數量及位置喔。

以下是一個結合繼電器、光感測器、溫濕度感測器以及OLED的範例:

範例程式如下:

from machine import I2C, Pin, ADC
import ssd1306, dht
import time
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=100000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
d = dht.DHT11(Pin(0))
adc = ADC(0)
relay = Pin(2, Pin.OUT)
relay.off()
while True:
d.measure()
if d.humidity()>=70:
relay.on()
else:
relay.off()
oled.fill(0)
oled.text("{},{}%,{}".format(d.temperature(), d.humidity(), adc.read()), 0, 0)
oled.show()
time.sleep(2)

上面這個程式會以2秒為間隔定時顯示目前的溫度、濕度以及亮度,同時監測濕度,當濕度大於70%的時候,就會把繼電器的開關打開,如果你連接的是抽風機的話,就可以即時啟動抽風機以降低空氣中的濕度。

如果是要使用計時器來上傳並顯示資料的話,範例程式碼如下:

from machine import Pin, Timer, I2C, ADC
import dht, ssd1306
import urequests as req
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=100000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
adc = ADC(0)
fan = Pin(2, Pin.OUT)
fan.off()
def m(t):
d.measure()
url = "https://api.thingspeak.com/update?api_key={}&field1={}&field2={}&field3={}".format(
"6JQFREXNJKWUD5TB",
d.temperature(),
d.humidity(),
adc.read())
req.get(url)
oled.fill(0)
oled.text("{},{}%,{}".format(d.temperature(), d.humidity(), adc.read()), 0, 0)
oled.show()
if d.temperature() >= 28:
fan.on()
else:
fan.off()
d = dht.DHT11(Pin(0))
t = Timer(0)
t.init(period=20000, mode=Timer.PERIODIC, callback=m)

使用此程式碼的時候要特別小心,因為你使用的接腳和老師的不一定一樣,執行前一定要確定接腳是正確的,才能夠正常地運作喔。