本文将主要介绍使用ESP8266模块向已注册的手机号码发送短信。ESP8266是一个功能强大的Wifi模块,在IOT物联网行业中一直占据主要地位。本文独立于微控制器,也就是说您不需要像Arduino或PIC那样的任何UC / UP。我们将使用Arduino IDE直接编程ESP8266模块。编程完成后,我们可以发送短信到任何提前编程的手机号码。我使用IFTTT Applet来完成这个任务。如果您是ESP8266的新手,请访问以下教程,这将帮助您快速入门ESP8266,并教您如何使用Arduino IDE对ESP8266模块进行编程。
1. ESP8266入门指南 2. 使用Arduino IDE编程ESP8266 除此之外,您不需要本教程的其他前提条件,我将结合图片详细说明所有步骤。所以我们开始吧....
涉及的主要概念
我们知道ESP8266模块可以配置为AP或者STA。这里我们将其配置为工作站,并将其连接到我们的Wifi路由器。一旦连接建立,我们必须找到一种可以在线发送短信的方式。在线发送也需要通过ESP8266模块轻松实现访问。这就是为什么我们会用到IFTTT网站。通过使用该网站,我们可以发送短信、电子邮件、Whatsapp消息、Facebook更新、Twitter的tweets以及一些其他消息。他们有很多可以使用到的工具,但在本文中,我们将使用发送短信的功能,其余的功能留给以后其他的文章。
在经过IFTTT网站进行了微小的调整后,我们可以获得一个HTTPS URL链接,当触发时,它将向特定的手机号码发送预定义的短信。现在,ESP8266模块在需要时必须调用此URL,然后您的短信将被发送到手机号码上。听起来很简单吧!让我们看看具体实现的步骤。
创建一个IFTTT Applet
让我们看看我们如何创建一个IFTTT Applet,并获取触发短信到特定手机号码的URL。
步骤1:访问www.IFTTT.com,如果您还没有一个账号,注册一个新的账号。注册后,将会向您发送一封邮件到电子邮件ID,然后进行验证,您就可以登录到IFTTTT。
步骤2:搜索SMS Applet或访问此链接地址。现在使用该Applet注册您的手机号码,这里我使用的是号码“00919612365489”作为示例。号码需要包含头部的“00”,然后是您的国家代码,接着是您的手机号码。在这里我来自印度,因此国家代码是“91”,手机号码是“96123456789”。输入号码后,点击“发送PIN”并验证您的手机号码。
步骤3:现在我们已经配置了一个Applet,我们将另一个Applet称为Maker Webhooks,然后搜索它或使用此链接。现在点击“Connect”,你会得到看到以下界面。
步骤4:现在是时候创建我们自己的Applet,并且可以同步上述的applet。要做到这一点,导航到My Applets -> New Applet,或按照此链接。你将会转到以下页面。
步骤5:IF THIS THEN THAT表示如果在“this”上发生了某些事情,那么我们需要在“that”上做一些事情。这里表示如果Maker Webhooks Applet被触发,那么必须发送短信。所以点击“this”(蓝色加号图标),然后搜索Maker Webhooks,然后点击。现在,将会让您选择一个触发器,然后点击“Receive a web request”
步骤6:现在您需要命名该事件名称来配置触发器。我将其命名为“ESP”,如下所示。您可以使用任何的事件名称,但请记住此名称,以后我们需要用到它。最后点击“Create Trigger”。
步骤7:接下来您将看到以下界面,您需要配置“that”Applet。点击“that”旁边的加号图标
步骤8:搜索SMS Applet并单击。然后选择一个Action单击“Send me SMS”。您将进入以下界面,需要输入发送到您的手机的短信。最后点击“Create action”
步骤9:您可以进行预览,然后完成创建Applet,如下图所示。点击“Finish”
步骤10:现在,搜索Maker Webhooks或使用此链接,然后单击“Documentation”。你会看到类似下面的界面:
这是一个非常重要的页面。本页将向您展示使用的密钥,以及如何触发事件的使用说明。页面中将显示您的ID的唯一密钥,请注意保密,因为任何拥有该密钥的人都可以访问您的所有Applet。出于保密目的,我隐藏了API密钥的最后五位数。
步骤11:现在在“Make a Post or get web request”下面,您可以看到有一个选项来添加事件名称。在第6步中,我们已经创建了一个名为“ESP”的事件,因此我们必须使用相同的名称并配置我们的URL,如下所示。
一旦您更改事件的名称后,请单击“Test it”。您应该会收到一条消息给您注册的手机号码。在本文中,信息内容应该是“The even name ESP occurred on the Maker Service. SMS sent from ESP8266“。您可以根据自己的喜好配置自己的短信内容。您还可以通过使用变量1和变量2选项从ESP模块发送传感器值。
现在我们有了一个HTTPS URL,当被触发时会发送一个特定的消息到一个指定的号码。您可以复制此网址并将其保留在安全位置,因为我们需要在我们的Arduino程序中使用此URL。您也可以简单地将此URL复制并粘贴到任何Web浏览器上,然后您可以注意到该事件被触发。您还将收到如下所示的回复。
编程ESP8266模块
现在我们需要使用Arduino IDE编程ESP8266模块。在本项目中,我们只需要将其连接到路由器,然后调用我们上面刚刚展示的HTTPS URL,然后该消息将会被该URL触发。完整的程序在本教程末尾给出,但是下面说明几个需要修改的重要代码块。 - const char * ssid =“BPAS home”;
- const char * password =“scarun”;
复制代码在上述代码行中,示例中下使用您自己的Wifi凭据,“BPAS home”是我的Wifi信号名称,“crackun”是我的密码。 - String url =“/ trigger / ESP / with / key / b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX”;
复制代码确保您已经根据您的事件名称和密钥修改了上述代码。示例中,事件名称是ESP(如果您在步骤6中命名为ESP,则需要与您相同),并且我的API KEY为b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX。将其更改为您收到的密钥
如果您有任何疑问,您可以使用注释部分,代码中的其余部分带有注释。
当代码准备好修改后,您可以将其下载到ESP8266模块。您可以使用Arduino IDE下载程序。
输出结果
下载完成后,可以在Arduino IDE上打开串口监视器。您会看到以下调试信息:
如果您的串口显示器显示“Congratulation! You’ve fired the ESP event“,这意味着所有的一切工作符合预期。现在可以检查你的手机,应该已经收到了短信。短信的截图如下所示:
代码 以下内容是ESP8266模块使用的主要代码: - /*Program to send SMS from ESP8266 via IFTTT.
- * For complete detials visit: www.circuitdigest.com
- * EXAMPLE URL: (do not use This)
- * https://maker.ifttt.com/trigger/ESP/with/key/b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX
- *
- */
- #include <ESP8266WiFi.h>
- #include <WiFiClientSecure.h>
- const char* ssid = "BPAS home";
- const char* password = "cracksen";
- const char* host = "maker.ifttt.com";
- const int httpsPort = 443;
-
- void setup() {
- Serial.begin(115200);
- Serial.println();
- Serial.print("connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- WiFiClientSecure client;
- Serial.print("connecting to ");
- Serial.println(host);
- if (!client.connect(host, httpsPort)) {
- Serial.println("connection failed");
- return;
- }
-
- String url = "/trigger/ESP/with/key/b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX";
- Serial.print("requesting URL: ");
- Serial.println(url);
- client.print(String("GET ") + url + " HTTP/1.1\r\n" +
- "Host: " + host + "\r\n" +
- "User-Agent: BuildFailureDetectorESP8266\r\n" +
- "Connection: close\r\n\r\n");
- Serial.println("request sent");
- while (client.connected()) {
- String line = client.readStringUntil('\n');
- if (line == "\r") {
- Serial.println("headers received");
- break;
- }
- }
- String line = client.readStringUntil('\n');
- Serial.println("reply was:");
- Serial.println("==========");
- Serial.println(line);
- Serial.println("==========");
- Serial.println("closing connection");
- }
- void loop() {
- }
复制代码
译者注:本文翻译自https://circuitdigest.com/microcontroller-projects/sending-sms-using-esp8266,如有错漏,敬请指正。
|