感測模組的製作
為了方便感測模組的應用,特別設計了感測模組的實驗平台,讓同學們可以在製作完成之後,有一個實用的感測器的實驗裝置。
首先,是所有會使用到的材料照片:

這些材料包括:
萬孔板*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的銅柱鎖好,就完成了,成品如下所示:

以下是一個結合繼電器、光感測器、溫濕度感測器以及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)
使用此程式碼的時候要特別小心,因為你使用的接腳和老師的不一定一樣,執行前一定要確定接腳是正確的,才能夠正常地運作喔。
Last updated