如何使用esp8266製作自己的wi-fi連線按鈕

在本教程中,您將學習如何使用NodeMCU和IFTTT建立啟用Wi-Fi的按鈕。...

物聯網有著巨大的DIY潛力。有了足夠的專門知識和一些廉價的組件,您可以構建一個複雜的連接設備系統。

make-wifi-button

然而,有時你想要一些簡單的東西。沒有**或口哨,只有一個按鈕,執行一個單一的任務。如果你曾經使用過Amazon的Dash按鈕來重新訂購日常家居用品,那麼你可能已經很熟悉這樣的東西了。

今天我們將使用NodeMCU**一個Wi-Fi啟用按鈕,並將其編程為使用IFTT來完成…好的,任何事情!如果您願意,請按照視頻編寫說明。

你需要什麼

Wi-Fi Button Parts Needed

您需要:

  • 1個NodeMCU(ESP8266)板,在AliExpress上售價2-3美元
  • 1個按鈕
  • 1 x LED(可選)
  • 1 x 220歐姆電阻器(可選)
  • 試驗板和連接線
  • 用於編程的Micro-USB
  • 安裝了Arduino IDE的計算機

除了NodeMCU,您應該能夠在任何Arduino初學者工具包中找到這些部件的大部分。本教程將假設您正在使用可選的LED和電阻器,但它們不是必需的。

步驟1:設置電路

這個項目的硬件設置非常簡單。根據這個圖表來設置你的電路板。

NodeMCU Wi-Fi button Fritzing diagram

紫色導線將針腳D0連接到按鈕的一側。綠色導線將按鈕的另一側連接到RST引腳。藍色導線從引腳D1延伸到電阻器和LED。LED的負腳連接到NodeMCU的GND引腳。

當設置試驗板時,它應該如下所示:

NodeMCU Wifi button circuit setup

如果你想知道我是如何讓我的LED去接地引腳只使用這些微小的電纜位,我們的快速實驗板速成課程應該有助於清理它!檢查設置並通過USB將NodeMCU連接到計算機。

步驟2:設置ide

在開始編寫代碼之前,您需要做一些準備。如果還沒有,請設置Arduino IDE以識別NodeMCU板。您可以通過“文件”>“首選項”將其添加到電路板列表中。

arduino board manager URLS

您可以在我們的NodeMCU簡介文章中找到關於這一步驟的更詳細的解釋。

此項目需要兩個庫。導航到“草圖”>“包含庫”>“管理庫”。搜索由Ivan Grokhotkov提供的ESP8266WIFI並安裝。此庫用於與NodeMCU板建立Wi-Fi連接。

Arduino IDE Library Manager

接下來搜索johnromkey提供的ifttwebhook並安裝最新版本。此庫旨在簡化向IFTTT發送webhook的過程。

這就是我們所需要的一切準備,讓我們來編碼吧!

代碼將如何工作

我們將使用ESP8266WIFI庫建立Wi-Fi連接。ifttwebhooks庫向IFTTT發出請求——在本例中,請求發佈到Twitter。然後,指示NodeMCU板在不使用時休眠以節省電源。

當按下按鈕時,它將鏈接D0和RST引腳。這將重置電路板,並且該過程將再次發生。

本教程中的大部分代碼對於初學者來說都足夠簡單。也就是說,如果你剛開始學習,在遵循我們的Arduino初學者指南之後,你會發現它更容易理解。

本教程將分塊介紹代碼,以幫助理解。如果你想直接開始工作,你可以在Pastebin找到完整的代碼。請注意,您仍需要在此代碼中填寫Wi-Fi和IFTTT憑據,它才能正常工作!

第三步:測試深度睡眠

首先,我們將創建一個簡單的測試來演示深度睡眠的工作原理。在ArduinoIDE中打開一個新草圖。輸入以下兩個代碼塊。

#include <IFTTTWebhook.h>#include <ESP8266WiFi.h>#define ledPin 5 #define wakePin 16#define ssid "YOUR_WIFI_SSID"#define password "YOUR_WIFI_PASSWORD"#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE"#define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"

在這裡,我們包括我們的庫,以及定義一些我們將在草圖中需要的變量。您會注意到,與上面的Fritzing圖相比,ledPin和wakePin在這裡的編號是不同的。NodeMCU與Arduino板有不同的引腳。不過,這不是問題,因為這張方便的圖表:

NodeMCU__v1.0_pinout

現在創建一個設置函數:

void setup() { Serial.begin(115200); while(!Serial) { } Serial.println(" ");// print an empty line before and after Button Press Serial.println("Button Pressed"); Serial.println(" ");// print an empty line ESP.deepSleep(wakePin); }

在這裡,我們設置串行端口,並使用while循環等待它開始。因為按下重置按鈕後會觸發此代碼,所以我們將“按下按鈕”打印到串行監視器。然後,我們告訴NodeMCU進入深度睡眠,直到將wakePin連接到RST pin的按鈕被按下。

最後,為了進行測試,請將以下內容添加到loop()方法中:

void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed");}

通常,Arduino草圖在設置之後會連續運行循環功能。因為我們在安裝結束前讓電路板進入睡眠狀態,所以循環永遠不會運行。

保存你的草圖並上傳到黑板上。打開串行監視器,你會看到“按下按鈕”。每次按鈕觸發,電路板復位,信息再次打印。真管用!

Button Pressed Serial Monitor Test

關於串行監視器的注意事項

在某些項目中,您可能注意到串行監視器中存在一些無意義的字符。這通常是由於沒有將串行監視器設置為與序列號.開始(XXXX)費率。

許多指南建議在這樣的項目中以115200的波特率開始串行連接。我嘗試了許多組合,它們在串行消息前後都有不同程度的胡言亂語。根據各種論壇帖子,這可能是由於一個錯誤的董事會或軟件兼容性問題。因為它不會對項目造成太大的影響,我選擇假裝它沒有發生。

如果串行監視器有問題,請嘗試不同的波特率,看看哪種最適合您。

步驟4:連接到wi-fi

現在創建一個連接到Wi-Fi網絡的函數。

void connectToWifi() { Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name //Serial.print(ssid); WiFi.begin(ssid, password); Serial.println(" ");// print an empty line Serial.print("Attempting to connect: "); //try to connect for 10 seconds int i = 10; while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } Serial.println(" ");// print an empty line //print connection result if(WiFi.status() == WL_CONNECTED){ Serial.print("Connected."); Serial.println(" ");// print an empty line Serial.print("NodeMCU ip address: "); Serial.println(WiFi.localIP()); } else { Serial.println("Connection failed - check your credentials or connection"); }}

此方法嘗試連接到您的網絡十次,間隔一秒。連接成功或失敗打印到串行監視器。

步驟5:調用連接方法

現在,從未調用connectToWifi()。在“按下按鈕”信息和發送電路板進入睡眠狀態之間,添加對設置函數的調用。

connectToWifi();

如果你想知道它適合什麼,它應該是這樣的:

Where connectToWifi() fits

在草圖頂部,用Wi-Fi憑據替換ssid和密碼變量。保存草圖並上傳到黑板。

現在,當電路板啟動時,它將嘗試連接到您的Wi-Fi網絡,然後返回設置功能。現在,讓我們設置IFTTT集成。

步驟6:設置ifttt集成

IFTTT允許與大量web服務集成。在我們的Wi-Fi PC塔式LED教程中,我們使用它在收到新電子郵件時發送警報。今天我們將用它來發送一條推特在按下一個按鈕。

導航到“我的小程序”頁面,然後選擇“新建小程序”

單擊+此並連接到Webhook。選擇“接收web請求”,並命名您的事件。簡單點!記下事件名稱,您需要稍後將其添加到NodeMgu代碼中。單擊“創建觸發器”。

Web Request with IFTTT Webhooks

現在選擇+那個。搜索Twitter服務並連接到它---您需要授權它發佈到您的Twitter帳戶。選擇“發佈tweet”並選擇您的信息。

IFTTT - Send Tweet

下一個屏幕將要求您查看小程序。單擊“完成”。就這樣!

步驟7:向代碼中添加ifttt憑據

回到ArduinoIDE,您需要將IFTTTAPI密鑰和事件名稱添加到定義的變量中。要查找API密鑰,請導航到“我的小程序”,然後選擇“服務”選項卡下的“Webhooks”。選擇文檔以訪問密鑰。

將密鑰和事件名稱複製到代碼中,替換為它們設置的臨時名稱。

#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE"#define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"

注意,倒逗號必須保留,只替換文本。

在調用connectToWifi()和將線路板發送到休眠狀態之間,創建ifttWebHook庫對象的實例。在深度睡眠再次開始之前,LED指示任務完成。

//just connected to Wi-FiIFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);hook.trigger();pinMode(ledPin, OUTPUT);digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); //now sending board to sleep

在鉤子對象上調用trigger會觸發IFTTT applet,並應發佈到您的Twitter帳戶。保存草圖並上傳。你現在應該有一個功能齊全的tweet按鈕。

Working Wi-Fi Button Gif

如果它似乎不起作用,請仔細檢查代碼和憑據是否有錯誤。如果你真的陷入困境,從上面得到完整的代碼,並將其與你自己的代碼進行比較。

完成!如何進一步改進?

這是一個Wi-Fi按鈕的基本版本,但有很多方法可以改進。為簡單起見,這裡使用USB連接供電。電池將使它完全移動,一個案件舉行電路將是完美的初學者三維打印項目。

儘管使用深度睡眠,你可能會發現電池會很快耗盡。在這類項目中,有許多Arduino節能技巧可以幫助您。雖然比本教程更難,但如果您從頭開始**自己的具有電源意識的Arduino,電池供電的Wi-Fi按鈕可能會持續數月!

這個項目將使智能家居應用的遠程控制成為完美的選擇。IFTTT上已經有相當數量的家庭自動化小程序可用。一旦你掌握了基本知識,你幾乎可以使用任何傳感器或開關來觸發任何你能想到的服務。

圖片來源:Vadmary/寄存照片

  • 發表於 2021-03-23 22:23
  • 閱讀 ( 56 )
  • 分類:DIY

你可能感興趣的文章

6個最佳arduino替代微控制器

...進行程式設計。這種方法非常適合那些希望瞭解Arduino板如何工作的人,或者需要將硬體安裝到特定空間的專案。在這個例子中,獨立的Arduino電路被用來控制一個脈衝立方體的LED,你也可以做! ...

  • 發佈於 2021-03-11 16:53
  • 閲讀 ( 71 )

如何設定和使用你的亞馬遜回聲秀

...決所有你想知道的關於Echo秀的問題,包括裝置是什麼,如何設定連線的裝置,如何控制智慧家居,詳細說明技能是什麼,常見問題的排除,等等。 ...

  • 發佈於 2021-03-12 11:14
  • 閲讀 ( 66 )

arduino nano利弊:最便宜的arduino值得嗎?

... 缺乏本地連線限制了物聯網的可能使用。 有限的板載記憶體會使複雜的程式變得困難。 ...

  • 發佈於 2021-03-13 04:51
  • 閲讀 ( 53 )

在下一個專案中不使用正版arduino的5個理由

...些董事會已經產生了影響,但一個問題仍然存在:你應該使用一個真正的Arduino董事會在您的專案?也許不是。這就是原因。 ...

  • 發佈於 2021-03-13 19:08
  • 閲讀 ( 45 )

如何製作乙太網交叉電纜

... 我們已經向您展示瞭如何**自己的直通以太網布線。這篇文章可能很老,但它在今天仍然和以前一樣重要。但是,我們從未描述過如何**交叉電纜。如果你有興趣學習更多關於網路的知識,我...

  • 發佈於 2021-03-14 01:40
  • 閲讀 ( 52 )

使用nodemcu為計算機新增wi-fi控制的照明

...學習程式設計,我會從頭開始學習,以便了解每個部分是如何工作的。這是掌握編碼的許多方法之一。 ...

  • 發佈於 2021-03-14 05:31
  • 閲讀 ( 52 )

用這些arduino專案像個怪人一樣控制你的燈光

...時自動亮起的燈怎麼辦?由別人的情緒控制的情緒照明?如何用人工日出的聲音慢慢進入白天? ...

  • 發佈於 2021-03-15 06:56
  • 閲讀 ( 54 )

如何用普林格斯罐製作wi-fi天線

...的,因為您可以期望僅此升級就可以顯著提高效能。有關如何增壓路由器的指南,請參閱此詳細指南。 ...

  • 發佈於 2021-03-15 18:45
  • 閲讀 ( 50 )

blynk入門:簡單的diy物聯網裝置

...快和容易。在本文中,我們將詳細介紹Blynk是什麼,它是如何工作的,並提供兩個關於NodeMCU和Raspberry Pi開發板服務不同用途的簡短示例專案。 ...

  • 發佈於 2021-03-16 11:06
  • 閲讀 ( 59 )

為你生活中的arduino tinkerer準備的10個禮物

...它可以測量你所在位置的大氣壓力,但對於先進的Arduino使用者來說,它還有一些令人興奮的用途。例如,您可以使用它將壓力轉換為高度,從而為Arduino動力飛機或火箭提供高度讀數。 ...

  • 發佈於 2021-03-19 01:59
  • 閲讀 ( 58 )