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

物联网具有巨大的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上已经有大量的家庭自动化小程序。一旦掌握了基础知识,就可以使用几乎任何传感器或开关来触发几乎可以想象的任何服务。


苹果股价今年以来已经反弹26%,在美国顶尖科技公司中仅次于Facebook
EMC整改理论+实际案例分析
从广交会看海尔智家转型:从出口品牌到出口场景
联华电子新一代80纳米小尺寸屏幕驱动芯片
工控触摸屏如何保养维护
怎样使用ESP8266制作自己的Wi-Fi连接按钮
矿井综合自动化控制系统的工业交换机应用解决方案
二层交换机原理和工作流程
RFID协议一致性测试系统设计(一)
索尼Xperia P/U接受预定 售价2400元起
镜头核辐射科普:是什么?有害吗?如何对待呢?
联发科10核Helio X30传着手研发 预期明年初问世
英特尔、高通、赛灵思高层积极游说美国政府,希望解除华为禁令
2019年GPU总出货量增长3.4%,英伟达占GPU市场73%的份额
杭州移动携手华为打造杭州双5G第一城,全面助力战略目标落地
美的称机器人业务全年的营收预期保持不变
NVIDIA CLI对象实现了高级可编程性和可用性
点云标注在自动驾驶中有着广泛的应用案例
WSON package是什么类型封装
基于DSK-TMS320VC5402TMS320VC5402芯片实现电焊控制系统的设计