嵌入式Email发送模块
一.简介:
本文引用地址:http://www.amcfsurvey.com/article/201609/305286.htm嵌入式Email发送模块是以高性能控制器和Modem芯片为硬件平台,配以专门为8位单片机平台编写的TCP/IP协议栈为固件而构成的功能强大的网络通信模块。该模块提供了从物理层直到应用层所有的软、硬件,有非常简洁的用户接口,具有成本低廉,体积小,二次开发方便、功能强大等优点,可以广泛应用于工业、家电以及各种手持设备上。
特点:
内置适用于8bit处理器上的TCP/IP协议栈固件;
优异的性能/价格比;
提供非常简单的用户接口,方便二次开发;
很大的灵活性,可以根据用户的需求开发;
自动拨号、登录;
自动建立PPP协议网络连接;
自动获取IP地址;
自动发送Email
性能参数:
Modem连接速度:1200bps;
用户接口:9600bps串行接口;
(速率可根据用户需求进行调整)
功耗:110mA(工作),20mA(待机);
能发送的email最大长度:5k字节;
体积:62mm(长)×47mm(宽)×18mm(高);
应用范围:
工业设备;
智能仪器、仪表;
智能网络家电;
家庭健康监护;
手持设备;
远程控制;
二:引脚说明
Email发送模块对用户提供了非常简单的外部接口,一共只有5根外部引脚,分别是:
VCC电源;
RESET复位;
RXD串行数据输入;
TXD串行数据输出;
GND电源地;
与用户MCU的典型连接如下图所示:
电源
Email发送模块所需要的电源为+5V±5%的单电源供电,Modem激活时电流小于110mA。
复位
保持Reset引脚10uS以上高电平会导致模块内部处理器以及Modem复位。复位后模块处于等待命令的状态,而Modem处于挂机状态。通常可以用控制器的GPIO来复位器件,或者采用以下的上电复位电路:
串口
串口是Email发送模块与外部控制器交换数据和命令的唯一界面。用户控制器的数据和命令通过串口RXD引脚输入;而模块的各种状态则通过TXD反馈给用户。
模块串口和8051MCU串口模式1相同,波特率为9600bps,全双工异步模式。数据格式为一位起始位,8位数据位和一位停止位,低位在先,无奇偶校验位。输入电平兼容TTL和CMOS电平。
三:Email模块的控制
外部的控制器通过Email模块上的串行口对模块进行进行控制。在复位之后,器件处于等待状态,直到接收到有效的串口的数据为止。
模块内部定义'/'符号号作为分隔符。各项数据的输入都以'/'号为起始。按照拨入ISP并且发送一封Email所需要的信息,用户输入的数据格式是:
/ISP电话号码/用户名/密码/发送者Email地址/接受者Email地址/SMTP服务器IP地址/Email内容/++++
在最后面的4个'+'号告诉模块,所有信息已经输入完毕,可以拨号并且发送email了。
ISP电话号码
为用户提供拨号接入的ISP运营商的电话号码,如2631,96890等。
用户名
拨号接入的用户名,如拨2631时用户名就是263,拨96890时用户名就是96890。
密码
拨号接入的用户密码,如拨2631时密码就是263,拨96890时密码就是96890。
发送者的Email地址
发送者的Email地址,如 liu_ding@sina.com。
接收者的Email地址
接收者的Email地址,如 hugehard@kimo.com。
SMTP服务器IP地址
一台能够提供SMTP邮件转发服务的服务器的IP地址。该服务器必须有固定的IP,并且在转发邮件时不要求身份验证。有的服务器只对发送方Email或者接受方Email为该服务器的注册用户提供转发服务,比如IP地址为210.59.144.203的 smtp.kimo.com 只为发送者或接受者为 XXX@kimo.com 的用户提供转发服务。在采用这一类服务器时只要使发送者或接受者的Email符合服务器要求就可以了。
如果是为大量用户提供特定服务,建议设立专用的SMTP服务器,这样做将大大提高邮件发送的成功率。
Email内容
发送方想发送的内容。内容可以为字符或数据。由于受片内存储器限制,目前能发送的最大Email为5k字节。
++++
4个加号告诉模块,所有信息已经传输完毕,可以开始发送了。在收到4个连续的加号之后,如果Email Module上接有电话线,那Module将开始拨号并建立连接和发送Email。
实例:
假设用户选择96890为ISP,那么电话号码、用户名和密码都为96890。
发送者Email为 liu_ding@sina.com,
接受者Email为 hugehard@kimo.com
采用的SMTP服务器为 smtp.kimo.com,其IP为210.59.144.203 (D2.3B.90.CB)
Email内容为
Hello! This is a email send by an Embedded email module!
根据以上信息和前面定义的数据格式,控制器只要把下面的字符串通过串口送入Module:
/96890/96890/96890/liu_ding@sina.com/hugehard@kimo.com/xD2x3B 90xCB/Hello! This is a email send by an Embedded email module!/++++
Email Module就能够自动拨号并将Email发送到用户指定的目的hugehard@kimo.com。
注意:控制字符串中对应于SMTP IP地址的/xD2x3B 90xCB,是c语言中的格式,代表ASCII码的0xd2,0x3B,0x90,0xCB等4个字节,而不是字符串/xD2x3B 90xCB。
四.消息和错误代码
Email模块在工作过程中会不断地通过串口的TXD引脚向外发出各种消息和错误信息。这些消息和错误信息都只有一个字节。下面就是这些消息和错误信息(括号内为代表消息的值)
消息代码
MSG_LOGIN(0x10): ISP登录成功;
MSG_PPPCNCTD( 0x11):PPP连接建立;
MSG_TCPCNCTD(0x12): TCP连接建立;
MSG_EMTXOVR(0x13): Email发送完成;
MSG_TCPDISCNT(0x14) TCP连接断开完成;
MSG_GETTCP(0x15) 接收到一个TCP包;
MSG_SENTTCP(0x16) 发送完成一个TCP包;
MSG_READY(0X66): 准备就绪。收到该消息后控制器就可以对模块开始操作了。
错误代码
ERR_PHNL(0x01): 电话线路故障,无法拨通ISP;
ERR_PPPLGN(0x02): 登录ISP错误,可能是密码或帐号名称错误;
ERR_PPPCNT(0x03): PPP连接未建立;
ERR_TCPTMOVR(0x04): TCP连接超时;
ERR_EML (0x05): Email未能正确发送,可能是SMTP服务器拒绝转发邮件;
ERR_TCPRST(0x06): TCP连接被复位,服务器拒绝连接请求
评论