21302215878942_589_m

EZ1超音波距離感測器

本章重點

  • 認識EZ1超音波距離感測器
  • 熟悉EZ1超音波距離感測器的軟體開發

主要設備

  • EZ1超音波距離感測器
  • NodeMCU實驗版

Z1超音波距離感測器介紹

EZ1超音波距離感測器是一款低成本,高靈敏度的超音波測距器,可以用來量測距離。測量的距離約0~5公尺,提供PWM頻寬、類比電壓,以及SERIAL訊號輸出。

EZ1超音波感測器正面

圖1 EZ1超音波距離感測器正面

EZ1超音波感測器背面

圖2 EZ1超音波距離感測器正面

DHT11 PIN腳說明

Pin

名稱

說明

GND

GND

接地

+5V

VCC

2.5~5.5V

TX

TX

傳送訊號

RX

RX

接收訊號

AN

Analog

類比訊號輸出

PW

PW

輸出pulse

BW

BW

當open或low時,TX會做serial 輸出。當BW為high時則送出pulse

表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

ultrasound = 0                     --儲存超音波距離用,並初始化為0
cs=coap.Server()                   --啟動CoAP Server
cs:listen(5683)                    --監聽udp port 5683
cs:sensor("ultrasound")            --產生一個叫ultrasound的resource
print("Coap Server Running...")

tmr.alarm(1,1000,1, function()     --設定一個timer。ID為1,每1000毫秒執行一次,不斷重複執行       
ultrasound = adc.read(0) * 1.27    --從adc讀值並計算距離
cs:sensor("ultrasound")            --更新resource ultrasound 的值

end)

 

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

發表迴響

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


*