2017-02-06 45 views
0

我是這個領域的初學者。我開發了一個android應用程序,通過它我可以控制連接到ESP Wi-Fi模塊的GPIO引腳的LED。該應用已連接到Firebase以保存按鈕的狀態。一切正常。ESP手冊Android應用程序LED關閉狀態更新

現在我想實現如下:

  1. 我想,如果我手動關掉通過移除各LED的GPIO引腳的LED,即狀態「燈滅」應我的應用程序更新。
  2. 我要添加風扇速度控制器

對於第一點,我應該用火力嗎?

請建議教程和我可以達到的方式。

+0

我的一些設備有一個控制網頁api(我只是使用郵遞員,沒有寫一個應用程序),他們報告在網頁上和/或Thingspeak。我使用SPIFFS將設置保存在設備上的設備中。 – leetibbett

+0

您的Firebase正在從應用更新,現在您必須點擊API(服務器端編碼,它將更新您的Firebase),當任何節點從手動流更新時,您必須在您的應用中實施監聽器來監聽更改。 – Rahul

回答

0

數1:

上ESP8266

您無法讀取,當你在飛行中改變pinMode寫相同的引腳無閃爍的燈光下看書數字輸出狀態。最簡單的方法是連接另一個GPIO作爲LED的陰極,並將該引腳的pinMode設置爲INPUT。那麼您可以通過digitalRead來確定LED是否存在1)或不存在(0)。

雖然這隻適用於紅色低功率LED,因爲GPIO只能正式處理12ma。您可能想要使用NPN晶體管之類的器件來傳輸VCC,在這種情況下,您可以通過5-10k電阻將LED輸入引腳連接至LED陽極,並將LED陰極連接至GND。

就推動更新狀態而言,您可以每隔幾百毫秒輪詢一次,檢查每個讀取值與最後一個值是否相同,並在發現時將更改發送到sparkfun。將狀態存儲在全局中並與讀取進行比較。

您也可以使用中斷而不是輪詢。這些性能更高且更復雜,因此對於LED狀態等非常低頻率的事件,輪詢足夠了,可以說從頭開始編碼更容易。儘管最終研究了中斷,但它們在單線程設備上功能強大。

數2:

控制風扇轉速與ESP8266

你需要一個PWM電路來控制直流電機的風扇轉速。有許多相對簡單的電路使用mosfet非常快速地連接和斷開風扇接地,從而將其使用的功率平均爲最大功率的比率。該比率是使用analogWrite使用pin#和01024的int設置的。

請注意,如果寫入值小於350,則風扇可能不會旋轉;在這些低值時沒有足夠的電壓。另外,我建議使用analogWriteFreq(16000);setup()將PWM頻率提升到超音速水平以避免風扇噪音。如果你能得到一個12v直流4線PC散熱風扇,你實際上可以將pwm輸入線連接到控制GPIO,而不必連接任何電路。

如果你的風扇運行在交流電上,它會變得更加複雜和危險。最簡單的電路使用IGBT晶體管來實現交流信號的「PWM」,但如果您管理自己的交叉時序,則雙向三端雙向可控硅開關和隨機交叉固態繼電器可以很好地工作。確保你也處理電機阻抗。複雜?你打賭。

我發現修改現有的廉價風扇控制器如this one,拆除大電位器並替換爲LDR更加經濟和便宜。電位器用作可變電阻器,而不是分壓器,因此很容易模仿。然後,您可以將LED帶到LDR,將LED掛接到GPIO輸出,然後使用analogWrite()來控制AC輸出。嘗試使用LED電阻值來最大限度地提高精度和線性度,但對於風扇,即使只有三個可用的水平也是一個改進。從ESP到main的光隔離是這種便宜方法的一個很好的特點。

如果您有一個現有的商用多速風扇(如吊扇或箱式風扇),您可以用繼電器替換風扇的開關/旋鈕,以模擬人類選擇開關位置。您必須對不同選擇下的哪條導線進行反向工程「熱門」。這是交流電,所以千萬小心這樣做...

+0

感謝您的回答,但您爲我的第一個問題回答了一個問題,我知道我需要添加電阻器並監視LED的狀態,但我希望將LED的狀態更新到我的Android應用的Firebase帳戶。那可能嗎? – ra22

+0

您應該可以使用它們的http api和ESP的HTTPClient庫來推送來自ESP的數據。如果他們沒有簡單的API,只需用node.js製作一個簡單的API;從ESP到節點以及從節點到Firebase的談話。 – dandavis

+0

你能發表一個片段嗎? – ra22

相關問題