image_thumb[1]

光敏電阻介紹

本章重點

  • 認識光敏電阻
  • 熟悉光敏電阻的軟體開發

主要設備

  • 光敏電阻實驗版
  • 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)

 

Posted in CoAP, DIY實作, IoT相關訊息, Lua, NodeMCU.

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *


*