风筝
发表于: 2017-6-15 11:10:43 | 显示全部楼层

Sending-SMS-using-ESP8266.jpg


本文将主要介绍使用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”并验证您的手机号码。

SMS-applet.png


步骤3:现在我们已经配置了一个Applet,我们将另一个Applet称为Maker Webhooks,然后搜索它或使用此链接。现在点击“Connect”,你会得到看到以下界面。

Configure-applet.png


步骤4:现在是时候创建我们自己的Applet,并且可以同步上述的applet。要做到这一点,导航到My Applets -> New Applet,或按照此链接。你将会转到以下页面。

create-new-applet.png


步骤5:IF THIS THEN THAT表示如果在“this”上发生了某些事情,那么我们需要在“that”上做一些事情。这里表示如果Maker Webhooks Applet被触发,那么必须发送短信。所以点击“this”(蓝色加号图标),然后搜索Maker Webhooks,然后点击。现在,将会让您选择一个触发器,然后点击“Receive a web request”


步骤6:现在您需要命名该事件名称来配置触发器。我将其命名为“ESP”,如下所示。您可以使用任何的事件名称,但请记住此名称,以后我们需要用到它。最后点击“Create Trigger”。

create-action-for-sending-s.png


步骤7:接下来您将看到以下界面,您需要配置“that”Applet。点击“that”旁边的加号图标

if-then-that.png


步骤8:搜索SMS Applet并单击。然后选择一个Action单击“Send me SMS”。您将进入以下界面,需要输入发送到您的手机的短信。最后点击“Create action”

IFTTT-trigger.png


步骤9:您可以进行预览,然后完成创建Applet,如下图所示。点击“Finish”

review-and-finish-applet.png


步骤10:现在,搜索Maker Webhooks或使用此链接,然后单击“Documentation”。你会看到类似下面的界面:

maker-webhooks.png

这是一个非常重要的页面。本页将向您展示使用的密钥,以及如何触发事件的使用说明。页面中将显示您的ID的唯一密钥,请注意保密,因为任何拥有该密钥的人都可以访问您的所有Applet。出于保密目的,我隐藏了API密钥的最后五位数。


步骤11:现在在“Make a Post or get web request”下面,您可以看到有一个选项来添加事件名称。在第6步中,我们已经创建了一个名为“ESP”的事件,因此我们必须使用相同的名称并配置我们的URL,如下所示。

configuring-URL.png


一旦您更改事件的名称后,请单击“Test it”。您应该会收到一条消息给您注册的手机号码。在本文中,信息内容应该是“The even name ESP occurred on the Maker Service. SMS sent from ESP8266“。您可以根据自己的喜好配置自己的短信内容。您还可以通过使用变量1和变量2选项从ESP模块发送传感器值。


现在我们有了一个HTTPS URL,当被触发时会发送一个特定的消息到一个指定的号码。您可以复制此网址并将其保留在安全位置,因为我们需要在我们的Arduino程序中使用此URL。您也可以简单地将此URL复制并粘贴到任何Web浏览器上,然后您可以注意到该事件被触发。您还将收到如下所示的回复。

success-message.png


编程ESP8266模块

现在我们需要使用Arduino IDE编程ESP8266模块。在本项目中,我们只需要将其连接到路由器,然后调用我们上面刚刚展示的HTTPS URL,然后该消息将会被该URL触发。完整的程序在本教程末尾给出,但是下面说明几个需要修改的重要代码块。

  1. const char * ssid =“BPAS home”;
  2. const char * password =“scarun”;
复制代码

在上述代码行中,示例中下使用您自己的Wifi凭据,“BPAS home”是我的Wifi信号名称,“crackun”是我的密码。

  1. String url =“/ trigger / ESP / with / key / b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX”;
复制代码

确保您已经根据您的事件名称和密钥修改了上述代码。示例中,事件名称是ESP(如果您在步骤6中命名为ESP,则需要与您相同),并且我的API KEY为b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX。将其更改为您收到的密钥


如果您有任何疑问,您可以使用注释部分,代码中的其余部分带有注释。


当代码准备好修改后,您可以将其下载到ESP8266模块。您可以使用Arduino IDE下载程序。


输出结果

下载完成后,可以在Arduino IDE上打开串口监视器。您会看到以下调试信息:

sending-sms-program-debuggi.png


如果您的串口显示器显示“Congratulation! You’ve fired the ESP event“,这意味着所有的一切工作符合预期。现在可以检查你的手机,应该已经收到了短信。短信的截图如下所示:

Received-SMS-by-ESP8266.png


代码

以下内容是ESP8266模块使用的主要代码:

  1. /*Program to send SMS from ESP8266 via IFTTT.
  2. * For complete detials visit: www.circuitdigest.com
  3. * EXAMPLE URL: (do not use This)
  4. *  https://maker.ifttt.com/trigger/ESP/with/key/b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX
  5. *  
  6. */
  7. #include <ESP8266WiFi.h>
  8. #include <WiFiClientSecure.h>
  9. const char* ssid = "BPAS home";
  10. const char* password = "cracksen";
  11. const char* host = "maker.ifttt.com";
  12. const int httpsPort = 443;

  13. void setup() {
  14.   Serial.begin(115200);
  15.   Serial.println();
  16.   Serial.print("connecting to ");
  17.   Serial.println(ssid);
  18.   WiFi.begin(ssid, password);
  19.   while (WiFi.status() != WL_CONNECTED) {
  20.     delay(500);
  21.     Serial.print(".");
  22.   }
  23.   Serial.println("");
  24.   Serial.println("WiFi connected");
  25.   Serial.println("IP address: ");
  26.   Serial.println(WiFi.localIP());
  27.   WiFiClientSecure client;
  28.   Serial.print("connecting to ");
  29.   Serial.println(host);
  30.   if (!client.connect(host, httpsPort)) {
  31.     Serial.println("connection failed");
  32.     return;
  33.   }

  34.   String url = "/trigger/ESP/with/key/b8h22xlElZvP27lrAXS3ljtBa0092_aAanYN1IXXXXX";
  35.   Serial.print("requesting URL: ");
  36.   Serial.println(url);
  37.   client.print(String("GET ") + url + " HTTP/1.1\r\n" +
  38.                "Host: " + host + "\r\n" +
  39.                "User-Agent: BuildFailureDetectorESP8266\r\n" +
  40.                "Connection: close\r\n\r\n");
  41.   Serial.println("request sent");
  42.   while (client.connected()) {
  43.     String line = client.readStringUntil('\n');
  44.     if (line == "\r") {
  45.       Serial.println("headers received");
  46.       break;
  47.     }
  48.   }
  49.   String line = client.readStringUntil('\n');
  50.   Serial.println("reply was:");
  51.   Serial.println("==========");
  52.   Serial.println(line);
  53.   Serial.println("==========");
  54.   Serial.println("closing connection");
  55. }
  56. void loop() {
  57. }
复制代码

译者注:本文翻译自https://circuitdigest.com/microcontroller-projects/sending-sms-using-esp8266,如有错漏,敬请指正。


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-21 21:08 , Processed in 0.061286 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表