本章重點
- 認識光敏電阻
- 熟悉光敏電阻的軟體開發
主要設備
- 光敏電阻實驗版
- NodeMCU實驗版
光敏電阻介紹
光敏電阻(如圖1)是利用光電導效應的一種特殊的電阻,簡稱光電阻,又名光導管。它的電阻和光線的強弱有直接關係。光強度增加,則電阻減小;光強度減小,則電阻增大。
圖1 光敏電阻
PIN說明
Pin |
名稱 | 說明 |
S |
Signal | 信號線 |
VCC |
3~5V |
|
– | GND |
接地 |
表1 PIN說明
撰寫程式
本範例要實做一個可以遠端讀取光度的裝置,共有三個lua程式,分別說明如下:
- init.lua:NodeMCU開機啟動檔。當NodeMCU一開機就會自動執行此檔案。我們將於此程式中執行wifi.lua啟動wifi連線。
- wifi.lua:啟動wifi連線。取得IP後會執行coap.lua。
- coap.lua:啟動CoAP Server接受連線,並定期更新光度量測值。
init.lua
dofile(“wifi.lua”) -執行wifi.lua去啟動wifi連線
wifi.lua
wifi.setmode(wifi.STATION) -將WiFi設定為station模式 wifi.sta.config("4Clab-2.4G", "12345678") -設定wifi SSID和密碼 tmr.alarm(0,1000,1, function() -設定一個timer。ID為0,每1000毫秒執行一次,不斷重複執行 print(wifi.sta.getip()) -印出目前的IP if wifi.sta.getip() ~= nil then -檢查是否取得IP dofile("coap.lua") -取得IP後執行 coap.lua tmr.stop(0) -關閉timer end end)
coap.lua
illuminance = 0 -儲存光度用,並初始化為0 cs=coap.Server() -啟動CoAP Server cs:listen(5683) -監聽udp port 5683 cs:sensor("illuminance") -產生一個叫illuminance的resource print("Coap Server Running...") tmr.alarm(1,1000,1, function() -設定一個timer。ID為1,每1000毫秒執行一次,不斷重複執行 illuminance = adc.read(0) -從analog讀取光度值,愈亮值愈低 cs:sensor("illuminance") -更新resource illuminance 的值 end)