Neste tutorial vamos aprender como enviar e-mails do Microcontrolador PIC usando o famoso módulo WiFi ESP8266. Este tutorial usa PIC16F877A IC e compilador MPLABX e XC8 para programação.
No final deste tutorial, você será capaz de enviar e-mail de qualquer ID de e-mail normal como Gmail, yahoo etc para qualquer outro ID de e-mail. Portanto, este tutorial presume que você tenha algum conhecimento básico sobre os módulos ESP8266-01 e microcontroladores PIC. Caso contrário, os seguintes tutoriais irão ajudá-lo
- Primeiros passos com ESP8266
- Interface ESP8266 com PIC
Então, vamos começar…
Preparando-se com seu ID de e-mail:
Depois de decidir de qual ID de e-mail deseja enviar os e-mails, siga as etapas abaixo
Etapa 1: Visite https://www.smtp2go.com/ e inscreva-se como um novo usuário. Digite seu nome, endereço de e-mail e senha de seu ID de e-mail de onde deseja enviar o e-mail.
Este tutorial usa o Mail ID: aswinthcd @ gmail.com e a senha: circuitdigest.
Passo 2: Clique em inscrever-se e você receberá um e-mail de verificação para o seu ID de e-mail inserido. Nesse caso, é aswinthcd @ gmail.com. Abra o e-mail e clique em “ATIVAR CONTA”
Etapa 3: pode pedir uma senha novamente, se solicitado, digite a senha anterior. Neste caso, é 'circuitdigest'. Em seguida, você estará conectado ao site SMPT2GO. Isso é agora o seu endereço de e-mail está pronto para enviar e-mails usando o módulo ESP8266.
Etapa 4: A última etapa é codificar o ID de e-mail e a senha no formato base 64 usando este site https://www.base64encode.org/. Vamos usar isso em nosso programa PIC
Nesse caso, os valores codificados serão exibidos conforme mostrado na tabela abaixo.
Parâmetro |
Formato normal |
Codificado na base 64 |
ID de correio |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Senha |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Preparando seu hardware:
O esquema completo do projeto é mostrado abaixo.
O display LCD é usado aqui para fins de depuração. Não é obrigatório para você conectar isso. O programa funcionará bem mesmo sem o display LCD. Se você quiser saber mais sobre os esquemas, visite este tutorial. (Interface PIC com ESP).
Você pode simplesmente montar este circuito em uma placa de ensaio e então prosseguir com a programação.
Programando seu PIC para enviar e-mail:
Para enviar um e-mail do ESP8266, uma sequência de comandos AT deve ser enviada ao módulo ESP. As etapas a seguir devem ser seguidas para enviar um e-mail de ESP8266.
- Defina o módulo no modo AP + STA (ponto de acesso e estação)
- Conecte-se a um ponto de acesso para obter conexão com a Internet
- Habilitar conexões múltiplas
- Inicie um servidor em qualquer porta específica
- Estabeleça uma conexão TCP com o site SMPT2GO
- Navegue até a seção de Login do site
- Insira o ID de e-mail e a senha no formato base64
- Insira o ID do correio
- Digite para enviar ID
- Digite o assunto do e-mail
- Digite o corpo do e-mail
- Indique o fim do correio
- Manda o mail
- Saia da conexão TCP
É um processo um pouco demorado e tedioso, mas não se preocupe. Simplifiquei o processo criando um arquivo de cabeçalho e você pode usá-lo diretamente apenas chamando algumas funções (explicadas abaixo), o que torna essa tarefa muito fácil. O código completo junto com o arquivo de cabeçalho pode ser baixado aqui.
Nota: Se você estiver usando o código em um novo projeto, certifique-se de baixar o arquivo de cabeçalho e adicioná-lo ao seu projeto.
Eu expliquei algumas partes importantes do código abaixo, as outras partes são autoexplicativas. Mas se você tiver alguma dúvida fique à vontade para usar a seção de comentários.
/ * Verifique se a comunicação ESP_PIC foi bem-sucedida * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP não encontrado"); } while (! esp8266_isStarted ()); // espere até que o ESP envie "OK" de volta Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP está conectado"); __delay_ms (1500); Lcd_Clear (); / * Sim comunicação ESP bem-sucedida -Proceda * /
Esta parte do código é usada para verificar se existe uma comunicação adequada estabelecida entre o PIC e o ESP8266. Somente se ambos puderem enviar e receber dados pelo USART, o programa irá para a próxima etapa.
esp8266_mode (3);
Esta função definirá o ESP8266 no modo 3. O que significa que o módulo agora pode atuar como um ponto de acesso e também como um servidor.
esp8266_connect ("casa BPAS", "cracksun");
Esta função é usada para conectar o módulo ESP8266 ao roteador Wifi. Neste caso, “BPAS home” é o nome do meu sinal Wifi e “cracksun” é a minha senha. Você deve usar seus próprios detalhes de sinal Wifi.
_esp8266_enale_MUX (); // Habilita conexões múltiplas _esp8266_create_server (); // Cria um servidor na porta 80
Essas duas funções são usadas para habilitar várias conexões e criar um servidor na porta 80.
_esp8266_connect_SMPT2GO ();
Agora, usando esta função, podemos estabelecer uma conexão TCP com SMPT2GO. Assim que a conexão for estabelecida, essa função também irá para a página de Login do site.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Use esta função para inserir seu ID de e-mail e senha no formato base 64. Como você pode ver, esses valores codificados são iguais aos mostrados na tabela acima. Seus valores codificados variam com base em seu ID de e-mail e senha.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Esta função é usada para definir o nome do ID do remetente. Neste tutorial estou enviando o e-mail usando meu ID do Gmail aswinthcd @ gmail.com, portanto, eu o passei como parâmetro.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Esta função é usada para definir o nome do ID do receptor. Gostaria de enviar meus e-mails para outra conta minha do Gmail, portanto, passei o parâmetro mailtoasiwnth @ gmail.com. Você pode usar seu ID de e-mail desejado
_esp8266_start_mail ();
Esta função informa ao servidor SMPT2GO que vamos alimentar o assunto e o corpo do e-mail e o prepara para o mesmo.
_esp8266_mail_subject ("Correio de ESP8266");
Você pode usar esta função para definir o assunto do e-mail. Como exemplo, usei “Correio de ESP8266” como assunto do correio.
_esp8266_mail_body ("Teste de sucesso - CircuitoDigest");
Após inserir o assunto, você pode inserir o corpo do e-mail usando esta função. Como exemplo, defini “Testing Success –CircuitDigest” como o corpo da minha correspondência.
_esp8266_End_mail ();
Agora que inserimos o assunto e o corpo da mensagem, temos que instruir o servidor SMPT2GO de que concluímos a adição de detalhes à mensagem. Isso pode ser feito usando a função
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Finalmente, depois de enviar o e-mail, devemos encerrar a conexão TCP com o servidor SMPT2GO. Isso é feito usando a função acima.
Trabalhando:
Assim que terminar com seu hardware e programa. Simplesmente despeje o código em seu PIC MCU. Em seguida, ligue seu circuito. Se tudo correr conforme o esperado, seu LCD deverá mostrar o status do processo e, por fim, acabar informando “E-mail enviado” como mostra o vídeo abaixo. Seu hardware pode ser parecido com isto.
Assim que o LCD mostrar que o e-mail foi enviado, verifique a caixa de entrada e a pasta Spam para ver o e-mail enviado. Você deve ter recebido o e-mail conforme mostrado abaixo.
Agora você pode fazer seus próprios projetos IOT lendo os dados do sensor e enviando-os para o seu mail ID. Crie um sistema de alerta de segurança para sua casa ou automóveis, acionando um alerta por e-mail.
Se você tiver alguma dúvida ou ficar preso no meio, por favor, use a seção de comentários e ficarei feliz em ajudá-lo.