九,ESP8266 判斷是斷電上電(強制硬件復位)之后運行的內部程序還是內部軟件復位之后運行的程序(基於Lua腳本語言)


現在我有一個需求,WIFI模塊控制一個繼電器,我要做的是如果內部程序跑亂了,造成了內部程序復位重啟,那么控制繼電器的狀態不能改變

如果是設備斷電了,然后又來電了,我需要的是繼電器一定要是斷開才好。不能加額外的電路,只能在程序中做判斷

其實  內部程序跑亂了,造成了內部程序復位重啟     和   設備斷電了,然后又來電了     然后都是重新執行程序,不知道大家是如何做的

我的思路是。。。

先說一下WIFI模塊的一個很大的優點,

大家有沒有注意WIFI模塊的引腳,假設配置了一個引腳為高電平,無論內部如何的利用軟件復位,這個引腳都會保持高電平

還有就是,WIFI模塊如果是斷電上電那么引腳一開始一定是低電平,但是必須是這樣配置

local PowerResetPin = 2
gpio.mode(PowerResetPin, gpio.OUTPUT)
local PowerReset = false
if  gpio.read(PowerResetPin) == 1 then
    PowerReset = false
    print("PowerReset = false")
else
    PowerReset = true
    print("PowerReset = true")
end

 

 最終我的方案是:

先讀取引腳是不是低電平,如果是,就是說是斷電上電然后執行的程序,如果不是,就是說內部復位重啟然后執行的程序

其實是自己人為設置的那個引腳輸出的高電平,看下面的程序

 

local PowerResetPin = 2
gpio.mode(PowerResetPin, gpio.OUTPUT)
local PowerReset = false
if  gpio.read(PowerResetPin) == 1 then
    PowerReset = false
    print("PowerReset = false")
else
    PowerReset = true
    print("PowerReset = true")
end

gpio.write(PowerResetPin, 1) 

 

 整個程序運行之前先運行上面的程序

如果 PowerReset = false  說明是內部程序復位重啟然后執行的程序

如果 PowerReset = true   說明是斷電上電然后執行的程序

 

好了就是這么簡單,主要還是因為WIFI引腳有這個特點,軟件復位可以保持住狀態

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM