如何使用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
  • 阅读 ( 401 )
  • 分类:IT

你可能感兴趣的文章

6个最佳arduino替代微控制器

...芯片进行编程。这种方法非常适合那些希望了解Arduino板如何工作的人,或者需要将硬件安装到特定空间的项目。在这个例子中,独立的Arduino电路被用来控制一个脉冲立方体的LED,你也可以做! ...

  • 发布于 2021-03-11 16:53
  • 阅读 ( 491 )

如何设置和使用你的亚马逊回声秀

...决所有你想知道的关于Echo秀的问题,包括设备是什么,如何设置连接的设备,如何控制智能家居,详细说明技能是什么,常见问题的排除,等等。 ...

  • 发布于 2021-03-12 11:14
  • 阅读 ( 295 )

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

... 缺乏本地连接限制了物联网的可能使用。 有限的板载内存会使复杂的程序变得困难。 ...

  • 发布于 2021-03-13 04:51
  • 阅读 ( 309 )

在下一个项目中不使用正版arduino的5个理由

...些董事会已经产生了影响,但一个问题仍然存在:你应该使用一个真正的Arduino董事会在您的项目?也许不是。这就是原因。 ...

  • 发布于 2021-03-13 19:08
  • 阅读 ( 317 )

使用nodemcu为计算机添加wi-fi控制的照明

...开始学习编程,我会从头开始学习,以便了解每个部分是如何工作的。这是掌握编码的许多方法之一。 ...

  • 发布于 2021-03-14 05:31
  • 阅读 ( 247 )

用这些arduino项目像个怪人一样控制你的灯光

...时自动亮起的灯怎么办?由别人的情绪控制的情绪照明?如何用人工日出的声音慢慢进入白天? ...

  • 发布于 2021-03-15 06:56
  • 阅读 ( 363 )

如何用普林格斯罐制作wi-fi天线

...的,因为您可以期望仅此升级就可以显著提高性能。有关如何增压路由器的指南,请参阅此详细指南。 ...

  • 发布于 2021-03-15 18:45
  • 阅读 ( 253 )

blynk入门:简单的diy物联网设备

...快和容易。在本文中,我们将详细介绍Blynk是什么,它是如何工作的,并提供两个关于NodeMCU和Raspberry Pi开发板服务不同用途的简短示例项目。 ...

  • 发布于 2021-03-16 11:06
  • 阅读 ( 465 )

5种使用arduino相机的绝妙方法

...Instructables用户dmainmon在其带有web界面的ESP8266电动相机中使用的方法: ...

  • 发布于 2021-03-24 03:57
  • 阅读 ( 225 )

为2018年世界杯打造10个足球主题diy项目

...项目,不仅有趣,而且实用呢?这些项目向你展示了它是如何完成的。 ...

  • 发布于 2021-03-24 15:20
  • 阅读 ( 257 )
tdh12858
tdh12858

0 篇文章