tag 标签: Amazon Dash

相关博文
  • 热度 11
    2022-5-27 10:20
    1553 次阅读|
    0 个评论
    本制作是一个家庭自动化项目,这个ESP8266 Wi-Fi按钮相当于克隆版Amazon Dash,可用来触发任何家庭自动化事件,可装入口袋在需要时一按发送email,还可进一步扩展为智能门铃、门窗防盗器、快递柜提醒器等智能家居万能控制器。 一、准备工作 由于ESP板子价格友好,我们可用它制作一个类似 Amazon Dash的按钮。有别于Amazon Dash购物钮,我们制作的按钮可用来打开电灯,或发送数字以触发一个email提示等。 本制作使用了一个称作“IFTTT ”(If This Than That)的免费服务。该服务能自动执行很多在线任务,我们让它在按下ESP按钮时发送email。 首先,在浏览器输入 https:// ifttt.com ,点击页面中间的 “Get started” 按钮,填写信息并创建账号。 (1)创建Applet 打开 “My Applets” 标签,点选 “New Applet” 按钮。 点击 “This” 并搜索 “Webhooks” 服务。 (2)接收网页请求 这需要键入项目名称 button_pressed。通过Webhooks 服务,当你向指定的URL发送一个HTTP请求,就能触发一个动作。 点击“Create trigger”按钮,点选 “That” 并搜索 Gmail 服务。 (3)发送email 如果你是首次通过Gmail服务实现IFTTT, 将会弹出一个新窗口并必须接受登陆条件,这样 IFTTT就能通过你的账号发出email了。 选择 “Send email” 选项在 “To address” 区域输入你需要提醒的 email 收件地址。 当然,你可以定制该email的标题和主体,我们选择默认值,按 “Create action” 按钮后,在随后页面双击 “Finish”,Applet就创建成功了。 (4)测试Applet 打开“Search”标签,搜索Webhooks服务并打开。进入 “Documentation” 标签。 这里可找到自己独一无二的 API KEY,这些数据要保持私密。键入项目名称 button_pressed,页面底部会出现一个URL。把这个URL拷贝下来。 在浏览器打开一个新标签,按回车,就会看到“Congratulations!”欢迎信息。 打开email客户端,应该也有这个欢迎信息。 如果几秒钟后没有收到email,建议双击URL,检查Applet和URL中的项目名称是否正确。 接下来,我们需要将代码上传到ESP板子了。这里的三个参数SSID、password、resource是可以更改的。 /* * ESP8266 Wi-Fi Button * Rui Santos * Complete Project Details Random Nerd Tutorials | Learn ESP32, ESP8266, Arduino, and Raspberry Pi */ #include // Replace with your SSID and Passwordconst char* ssid = "REPLACE_WITH_YOUR_SSID";const char* password = "REPLACE_WITH_YOUR_PASSWORD"; // Replace with your unique IFTTT URL resourceconst char* resource = "REPLACE_WITH_YOUR_IFTTT_URL_RESOURCE"; // How your resource variable should look like, but with your own API KEY (that API KEY below is just an example)://const char* resource = "/trigger/button_pressed/with/key/nAZjOphL3d-ZO4N3k64-1A7gTlNSrxMJdmqy"; // Maker Webhooks IFTTTconst char* server = " maker.ifttt.com "; void setup() { Serial.begin(115200); initWifi(); makeIFTTTRequest(); // Deep sleep mode until RESET pin is connected to a LOW signal (pushbutton is pressed) ESP.deepSleep(0);} void loop() { // sleeping so wont get here} // Establish a Wi-Fi connection with your routervoid initWifi() { Serial.print("Connecting to: "); Serial.print(ssid); WiFi.begin(ssid, password); int timeout = 10 * 4; // 10 seconds 0)) { delay(250); Serial.print("."); } Serial.println(""); if(WiFi.status() != WL_CONNECTED) { Serial.println("Failed to connect, going back to sleep"); } Serial.print("WiFi connected in: "); Serial.print(millis()); Serial.print(", IP address: "); Serial.println(WiFi.localIP());} // Make an HTTP request to the IFTTT web servicevoid makeIFTTTRequest() { Serial.print("Connecting to "); Serial.print(server); WiFiClient client; int retries = 5; 0)) { Serial.print("."); } Serial.println(); if(!!!client.connected()) { Serial.println("Failed to connect, going back to sleep"); } Serial.print("Request resource: "); Serial.println(resource); client.print(String("GET ") + resource + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n"); int timeout = 5 * 10; // 5 seconds 0)){ delay(100); } if(!!!client.available()) { Serial.println("No response, going back to sleep"); } while(client.available()){ Serial.write( client.read ()); } Serial.println("\nclosing connection"); client.stop();} 这些代码的含义如下: (1)以115200波特率开启串行通信。 (2)运行 initWifi 功能,在ESP和路由器之间建立Wi-Fi连接。 (3)执行 makeIFTTTRequest 功能,向IFTTT服务器发出一个请求,这样IFTTT就会发出一个email。 二、电路制作 本制作电路很简单,BOM元器件包括: (1)ESP-01:这是一款很好用的ESP8266 Wi-Fi开发板。 (2)轻触开关 (3)10k欧姆电阻器 (4)Li-ion/LiPo锂电池 (5)稳压器(MCP1700-3302E) (6)陶瓷电容器(100nF) (7)电解电容(1000uF) (8)塑胶外壳 本制作使用 Deep Sleep功能,这样ESP就长期处于关闭状态,只消耗很少电量。 ESP8266的深度睡眠模式可参阅相关介绍,简言之,当按下按钮时ESP才被唤醒,执行指令后,重新进入深度睡眠模式以节约电池能量。 添加SSID、password和URL信息后,代码被上传到ESP。为了方便携带和易于制作,我们通过锂电池来驱动ESP板子。 为了用锂电池安全驱动ESP8266,必须采用稳压电路(MCP1700-3302E)。这是一款来自MICROCHIP的SOT-23A-3封装固定电压稳压器(LDO),输入电压范围为2.7-16V,具有525mV压差, 输出电压3.3V, 输出电流250mA。本制作的面包板电路连接如下。 电路连接后,首先应在面包板上测试,确认电路正确、参数无误后从面包板取下来,再用少量线束连接,最后用热熔胶固定于塑胶外壳中。 组装完成后,马上测试一下。按下按钮,手机几秒钟后就收到一条信息! 本制作即使采用普通电池驱动,也能维持几周甚至个把月,因为按钮默认处于深度睡眠模式,无需担心电池的使用寿命。 三、项目扩展 这个按钮并非一个产品,也不是制作的初衷。“button_pressed”变幻万千,这取决于你把它放在什么地方,ESP就具有不同的意义。例如,如果用于门铃应用,客人按下按钮,主任就知道家里来客人了。 还有一点,除了IFTTT之类的第三方服务,本制作还可用来: 控制连接于另一个ESP8266的继电器。 向网络上的另一个设备发送一个请求。 向Node-RED传递一个HTTP请求,以触发一个动作。 发布一条MQTT信息。 连接到任何其他家庭自动化软件。 本制作中的轻触开关可用其他传感器或执行器替代。例如,如果用接近红外运动传感器(PIR motion sensor)代替,你就可以在有人进入家门时收到提示信息,也可以用来检测、监视和警报家中的烟雾火情。 如果用磁簧继电器开关代替轻触开关,可用来检测和监视房门或窗户被打开的情形。 如果把这个制作安装在楼下的信报箱、快递柜,你就能够在收到信函、包裹和牛奶等物品时得到提示,第一时间收取自己的物品。