在本教程中,让我们学习如何使用著名的WiFi模块ESP8266从PIC微控制器发送电子邮件。本教程使用PIC16F877A IC和MPLABX和XC8编译器进行编程。
在本教程结束时,您将能够从任何普通的电子邮件ID(例如Gmail,yahoo等)发送电子邮件到任何其他电子邮件ID。因此,本教程假定您具有ESP8266-01模块和PIC单片机的一些基本知识。如果没有,以下教程将为您提供帮助
- ESP8266入门
- ESP8266与PIC的接口
所以让我们开始吧…
准备好您的电子邮件ID:
确定要从哪个邮件ID发送电子邮件后,请执行以下步骤
步骤1:访问https://www.smtp2go.com/,并以新用户身份注册。输入您要发送邮件的名称,电子邮件地址和电子邮件ID的密码。
本教程使用邮件ID:aswinthcd @ gmail.com和密码:circuitdigest。
第2步:点击注册,您将收到一封验证邮件,其中包含您输入的邮件ID。在这种情况下,它是aswinthcd @ gmail.com。打开邮件,然后单击“激活帐户”
步骤3:如果要求输入先前的密码,它可能会再次要求输入密码。在这种情况下,它是“电路摘要”。然后,您将登录到SMPT2GO网站。现在,您的电子邮件地址已准备就绪,可以使用ESP8266模块发送电子邮件。
步骤4:最后一步是使用此网站https://www.base64encode.org/将电子邮件ID和密码编码为base 64格式。我们将在PIC程序中使用它
在这种情况下,编码后的值将如下表所示。
参数 |
普通格式 |
以base 64编码 |
邮件ID |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
密码 |
电路摘要 |
Y2lyY3VpdGRpZ2VzdA == |
准备好硬件:
该项目的完整示意图如下所示。
LCD显示器用于调试目的。您不必强制连接。即使没有LCD显示屏,该程序也可以正常运行。如果您想了解有关原理图的更多信息,请访问本教程。(将PIC与ESP连接)。
您可以简单地将此电路组装在试验板上,然后进行编程。
对PIC进行编程以发送电子邮件:
为了从ESP8266发送电子邮件,必须将一系列AT命令发送到ESP模块。从ESP8266发送电子邮件必须遵循以下步骤。
- 将模块设置为AP + STA(接入点和站点)模式
- 连接到接入点以获得互联网连接
- 启用多个连接
- 在任何特定端口上启动服务器
- 与SMPT2GO网站建立TCP连接
- 导航到网站的“登录”部分
- 输入base64格式的电子邮件ID和密码
- 输入来自邮件ID
- 输入到邮件ID
- 输入邮件的主题
- 输入邮件正文
- 表示邮件结束
- 发送邮件
- 退出TCP连接
这是一个漫长而乏味的过程,但是请不要担心。我通过创建头文件简化了过程,只需调用一些函数(在下面说明)即可直接使用它,这使此任务非常容易。完整的代码以及头文件可以从此处下载。
注意: 如果在新项目中使用代码,请确保下载头文件并将其添加到项目中。
我已经在下面的代码中解释了一些重要的部分,其他部分是自解释的。但是,如果您有任何疑问,请随时使用评论部分。
/ *检查ESP_PIC通讯是否成功* /做{Lcd_Set_Cursor(1,1); Lcd_Print_String(“未找到ESP”); }同时(!esp8266_isStarted()); //等到ESP发回“ OK” Lcd_Set_Cursor(1,1); Lcd_Print_String(“ ESP已连接”); __delay_ms(1500); Lcd_Clear(); / *是ESP通讯成功-继续* /
该部分代码用于检查PIC和ESP8266之间是否建立了正确的通信。只有两者都可以通过USART发送和接收数据时,程序才会继续进行下一步。
esp8266_mode(3);
此功能会将ESP8266设置为模式3。这意味着该模块现在既可以用作接入点,也可以用作服务器。
esp8266_connect(“ BPAS home”,“ cracksun”);
此功能用于将ESP8266模块连接到Wifi路由器。在这种情况下,“ BPAS主页”是我的Wifi信号的名称,“ cracksun”是我的密码。您必须使用自己的Wifi信号详细信息。
_esp8266_enale_MUX(); //启用多个连接_esp8266_create_server(); //在端口80上创建服务器
这两个功能用于启用多个连接并在端口80上创建服务器。
_esp8266_connect_SMPT2GO();
现在,使用此功能,我们可以与SMPT2GO建立TCP连接。建立连接后,此功能还将移至网站的“登录”页面。
_esp8266_login_mail(“ YXN3aW50aGNkQGdtYWlsLmNvbQ ==”,“ Y2lyY3VpdGRpZ2VzdA ==”);
使用此功能以base 64格式输入您的电子邮件ID和密码。如您所见,这些编码值与上表所示的相同。您的编码值将根据您的电子邮件ID和密码而有所不同。
_esp8266_mail_sendID(“ aswinthcd @ gmail.com”);
此功能用于定义发送者ID的名称。在本教程中,我将使用我的Gmail ID aswinthcd @ gmail.com发送邮件,因此已将其作为参数传递。
_esp8266_mail_recID(“ mailtoaswinth @ gmail.com”);
此函数用于定义接收方ID的名称。我想将邮件发送到我的另一个Gmail帐户,因此我已将参数传递为mailtoasiwnth @ gmail.com。您可以使用所需的邮件ID
_esp8266_start_mail();
此功能指示SMPT2GO服务器我们要输入邮件的主题和正文,并为其做好准备。
_esp8266_mail_subject(“ ESP8266寄来的邮件”);
您可以使用此功能来定义邮件的主题。例如,我使用“来自ESP8266的邮件”作为邮件的主题。
_esp8266_mail_body(“测试成功-CircuitDigest”);
输入主题后,您可以使用此功能输入邮件的正文。例如,我将“ Testing Success –CircuitDigest”设置为邮件正文。
_esp8266_End_mail();
现在,我们已经输入了邮件的主题和正文,我们必须指示SMPT2GO服务器完成向邮件中添加详细信息。这可以通过使用函数来完成
_esp8266_End_mail();
_esp8266_disconnect_SMPT2GO();
最后,在发送邮件之后,我们必须终止与SMPT2GO服务器的TCP连接。这是通过使用以上功能来完成的。
加工:
完成硬件和程序后。只需将代码转储到您的PIC MCU中即可。然后打开电路电源。如果一切都按预期进行,则您的LCD会显示该过程的状态,并最终显示“已发送邮件”,如下面的视频所示。您的硬件可能看起来像这样。
当液晶显示屏显示邮件已发送后,请检查“收件箱和垃圾邮件”文件夹中是否有已发送的邮件。您应该已经收到如下所示的邮件。
就是这样,现在您可以通过读取传感器数据并将其发送到您的邮件ID来创建自己的IOT项目。通过邮件触发警报,为您的房屋或汽车创建安全警报系统。
如果您有任何疑问或陷入中间,请使用评论部分,我们将很乐意为您提供帮助。