0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用ESP8266制作自己的Wi-Fi连接按钮

454398 来源:网络整理 作者:网络整理 2019-11-28 17:41 次阅读

物联网具有巨大的DIY潜力。有了足够的专业知识和少量廉价的组件,您就可以构建一个复杂的连接设备系统。

有时候,您想要简单的东西。没有钟声或口哨声,只需执行一个任务的按钮即可。如果您曾经使用Amazon Dash按钮对日常家用物品进行重新排序,那么您可能已经熟悉这种情况。

今天,我们将使用NodeMCU制作一个启用Wi-Fi的按钮,并将其编程为使用IFTTT做。..好吧,任何事!如果需要,可以在视频后提供书面说明。

您需要的内容

您将需要:

1 x NodeMCU(ESP8266)板,可在速卖通上以2-3美元的价格购买

1 x按钮

1 x LED(可选)

1 x 220欧姆电阻(可选)

面包板和连接线

用于编程的Micro USB

已安装Arduino IDE的计算机

除了NodeMCU之外,您应该能够在任何Arduino入门套件中找到大多数这些部件。本教程将假定您使用的是可选的LED和电阻,但这不是必需的。

步骤1:设置电路

此项目的硬件设置非常简单。

紫色线将引脚D0 连接到按钮的一侧。绿线将按钮的另一端连接到 RST引脚。蓝色导线从引脚D1 连接到电阻器和LED。 LED的负极连接到NodeMCU的 GND引脚。

设置试验板后,其外观应类似于:

如果您想知道我是如何仅使用这些细小的电缆将我的LED接地,那么我们的快速面包板崩溃过程应该有助于清除它!检查设置并通过USB将NodeMCU连接到计算机。

步骤2:设置IDE

在进行编码之前,您需要做一些准备。如果尚未安装,请设置Arduino IDE以识别您的NodeMCU板。您可以通过文件》首选项将其添加到板列表中。

您可以找到有关此步骤的更详细说明在我们的NodeMCU简介文章中。

该项目需要两个库。导航到草图》包含库》管理库。搜索Ivan Grokhotkov的 ESP8266WIFI 并将其安装。编写该库是为了与NodeMCU板建立Wi-Fi连接。

下一步,搜索John Romkey的 IFTTTWebhook 并安装最新的版。该库旨在简化向IFTTT发送Webhook的过程。

这就是我们需要的所有准备工作,让我们编写代码!

代码的工作方式

我们将使用 ESP8266WIFI 库建立Wi-Fi连接。 IFTTTWebhooks 库向IFTTT发送请求-在这种情况下,将其发布到Twitter。然后,指示NodeMCU板在不使用时进入睡眠状态以节省电量。

按下按钮时,它将链接 D0 和 RST 针脚。这将重置板,然后再次执行该过程。

本教程中的大多数代码对于初学者来说都足够简单。就是说,如果您是入门者,那么在遵循我们的Arduino初学者指南之后,您会发现它容易理解。

本教程分批遍历代码以帮助您理解。如果您想直接做生意,可以在Pastebin上找到完整的代码。请注意,您仍然需要在此代码中填写Wi-Fi和IFTTT凭据才能使其正常工作!

步骤3:测试深度睡眠

我们将开始创建一个简单的测试以显示深度睡眠的工作原理。在Arduino IDE中打开一个新草图。输入以下两个代码块。

#include

#include

#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和akePin编号不同。 NodeMCU与Arduino开发板具有不同的引脚排列。不过,由于这个方便的图表,这不是问题:

现在创建一个设置函数:

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 引脚的按钮。

最后,为了进行测试,将其添加到您的 loop()方法中:

void loop(){

//if deep sleep is working, this code will never run.

Serial.println(“This shouldn‘t get printed”);

}

通常,Arduino草图在设置后会连续运行循环功能。由于我们在设置结束之前就将电路板送入睡眠状态,因此循环永远不会运行。

保存您的草图并将其上传到电路板上。打开串行监视器,您应该看到“已按下按钮”。每次按钮触发时,电路板都会复位,并且消息会再次打印。

有关串行监视器的注意事项

在某些情况下,您可能已经注意到串行监视器中的一些废话字符您的项目。这通常是由于未将串行监视器设置为与 Serial.begin(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();

如果您想知道适合的位置,它应该看起来像

在草图顶部,将 ssid 和 password 变量替换为您的Wi-Fi凭据。保存您的草图并将其上传到板上。

现在,在板启动时,它将返回到设置功能之前尝试连接到Wi-Fi网络。现在,让我们设置IFTTT集成。

步骤6:设置IFTTT集成

IFTTT允许与各种Web服务集成。我们在Wi-Fi PC塔式LED教程中使用了它,以便在收到新电子邮件时发送警报。今天,我们将使用它来按一下按钮发送一条推文。

导航到我的小程序页面,然后选择新小程序

点击 +此并连接到 Webhooks 。选择“接收网络请求” 并命名您的活动。 保持简单!记下事件名称,稍后需要将其添加到NodeMCU代码中。点击“创建触发器” 。

现在选择 +那个。搜索 Twitter 服务并连接到该服务-您需要授权该服务才能发布到您的Twitter帐户。选择“发布推文” 并选择您的消息。

下一个屏幕将要求您查看该小程序。单击完成。就是这样!

步骤7:将IFTTT凭据添加到代码中

返回Arduino IDE,您需要将IFTTT API密钥和事件名称添加到定义的变量中。要查找API密钥,请导航至我的小程序,然后在服务标签下选择 Webhooks 。选择文档来访问密钥。

将密钥和事件名称复制到代码中,替换为其设置的临时名称。

#define IFTTT_API_KEY “IFTTT_KEY_GOES_HERE”

#define IFTTT_EVENT_NAME “IFTTT_EVENT_NAME_HERE”

请注意,逗号必须保留,只能替换文本。

在调用 connectToWifi()并将板子送入睡眠之间,创建一个IFTTTWebhook库对象的实例。 LED会在深度睡眠再次开始之前发出任务完成的信号

//just connected to Wi-Fi

IFTTTWebhook 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

hook 对象上的调用触发器会触发IFTTT小程序,并应发布到您的Twitter帐户。保存您的草图并上传。现在,您应该有一个功能齐全的推文按钮。

如果它似乎不起作用,请仔细检查您的代码和凭据是否有错误。如果您确实遇到困难,请从上方获取完整的代码,然后将其与您自己的代码进行比较。

完成!您如何进一步改进?

这是Wi-Fi按钮的基本版本,但是可以通过多种方法进行改进。为简单起见,此处使用USB连接供电。电池将使它完全可以移动,而装有电路的盒子将是完美的初学者3D打印项目。

尽管使用了深度睡眠,您可能会发现电池很快就会用完。有许多Arduino省电技巧可帮助此类项目。虽然比本教程要难得多,但是如果您从头开始制作自己的节能意识的Arduino,那么电池供电的Wi-Fi按钮可能会持续数月!

该项目将是智能遥控器的完美之选。家庭应用程序。 IFTTT上已经有大量的家庭自动化小程序。一旦掌握了基础知识,就可以使用几乎任何传感器或开关来触发几乎可以想象的任何服务。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • wi-fi
    +关注

    关注

    14

    文章

    2107

    浏览量

    124316
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44825
收藏 人收藏

    评论

    相关推荐

    【AI技术支持】ESP32无线Wi-Fi常用调试API

    Wi-Fi常用调试API在使用esp32调试Wi-Fi功能时,由于场景和各种因素的影响,难免会遇到各种连接不上,Wi-Fi断连等问题。下面介
    的头像 发表于 10-26 08:00 230次阅读
    【AI技术支持】<b class='flag-5'>ESP</b>32无线<b class='flag-5'>Wi-Fi</b>常用调试API

    esp32和esp8266代码共用吗

    作为两款具有Wi-Fi功能的微控制器,因其低成本、易用性和灵活性而受到广泛关注。然而,尽管它们在某些方面具有相似性,但在硬件性能、开发环境和编程语言等方面仍存在一定差异。 二、ESP32与ESP8266简介
    的头像 发表于 08-19 18:23 966次阅读

    esp8266esp32区别是什么

    的内存选项,包括最小512KB的RAM和最大16MB的闪存。 Wi-Fi和蓝牙 : ESP8266 :支持2.4GHz Wi-FiESP32 :支持2.4GHz
    的头像 发表于 08-19 18:16 4331次阅读

    esp8266不烧录可以使用吗

    ,可以方便地与其他硬件设备进行连接。 2. ESP8266的硬件特性 处理器 :Tensilica L106,最高频率160MHz 内存 :64KB SRAM,1MB Flash Wi-Fi :支持802.11 b/g/n协议,
    的头像 发表于 08-19 17:28 621次阅读

    esp8266wifi模块怎么连接手机

    ESP8266 WiFi模块连接手机主要可以通过两种方式实现: 通过路由器连接(STA模式)和直接作为热点连接(AP模式) 。以下是两种连接
    的头像 发表于 08-19 17:27 2197次阅读

    请问ESP8266可以用于Wi-Fi Direct吗?

    ESP8266的规格表说它具有“Wi-Fi Direct”功能。 文档显示,ESP8266可以很容易地用作软接入点(例如 AT CWSAP 等),但是,我的公司需要一个遵循 Wi-Fi
    发表于 07-17 08:09

    Wi-Fi bee esp8266按Dfrobots的实例完成后,串口总是返回“connect AP timeout”,为什么?

    我按照实例教程,尝试测试Wi-Fi bee esp8266,基于DFROBOT的两路步进电机xbee扩展板。按Dfrobots的实例完成后,串口总是返回“connect AP timeout”,所以实例都如此。这里能知道原因吗?
    发表于 07-15 08:21

    如何记住ESP8266中的Wi-Fi凭据?

    您好,我正在与ESP8266合作,在公司进行一个项目。在成功智能配置后,我无法记住 Wi-Fi 凭据。ESP8266软件版本如下: 在GMR AT版本:1.2.0.0(Jul 1, 2016 20
    发表于 07-15 07:07

    Wi-Fi轻度睡眠周期性唤醒时间比预期的要长,为什么?

    我们正在使用需要 Wi-Fi 轻度睡眠才能正常工作的ESP8266构建一个自定义应用程序,但会遇到系统定期唤醒的时间比预期更长的问题,并超出我们的功率预算。
    发表于 07-10 06:35

    ESP8266使用PWM库时,它导致esp-homekit客户端断开连接,怎么解决?

    影响 Wi-Fi 或安全连接吗?它的文档在哪里?FRC2 在 RTOS SDK ESP8266用途是什么?它在 esp-open-rtos 和 es
    发表于 07-09 08:12

    为什么ESP8266没有检测到Wi-Fi的SSID?

    你好,我的ESP8266没有检测到我家Wi-Fi的SSID。我尝试打开我的 iPhone 热点,我可以正常查看和连接(我也成功连接到 MQTT)。相反,没有办法看到我家的
    发表于 07-09 06:44

    开源项目!用ESP8266 DIY会爬墙的无人机

    。如果你告诉它往前走,飞行控制器将调整后部电机的转速,使它往前走。 ESP8266模块 为了与无人机通信,我们需要蓝牙或WIFI连接,所以我们使用ESP8266 Wi-Fi模块,因为它
    发表于 07-04 09:22

    国产低成本Wi-Fi SoC解决方案芯片ESP8266ESP8285对比差异

    ESP8285工作温度:–40 °C ~ 85/105 °C; 模组可使用外部工具 esptool 来读取芯片类型。可以在固件中根据 Python 代码示例,读取芯片对应寄存器位,并进计算判断区分。 ESP8285简介 ESP
    的头像 发表于 05-17 11:44 1177次阅读
    国产低成本<b class='flag-5'>Wi-Fi</b> SoC解决方案芯片<b class='flag-5'>ESP8266</b>与<b class='flag-5'>ESP</b>8285对比差异

    使用Wi-Fi ESP8266方案模组接入云平台

    选择Wi-Fi的应用模式,列出、加入、退出接入点,建立TCP/UDP连接、获得状态、发送数据等操作。ESP8266模块的三种工作模式如下:①Sation模式:Sat
    的头像 发表于 05-10 08:20 1734次阅读
    使用<b class='flag-5'>Wi-Fi</b> <b class='flag-5'>ESP8266</b>方案模组接入云平台

    esp8266可以不用外部flash单独作为Wi-Fi模块使用吗

    如题,使用esp8266裸片可以不使用外部flash和晶振只用串口作为Wi-Fi模块吗
    发表于 05-05 11:20