Передача Email с использованием Arduino и WiFi модуля ESP8266


Сегодняшний мир активно движется к широкому внедрению технологии интернета вещей (IoT - Internet of Things). Эта технология уже сейчас играет значительную роль в электронике и встраиваемых системах (Embedded system). Передача Email от микроконтроллера или встраиваемой системы является одной из базовых функций, которая необходима в технологии интернета вещей, поэтому в данной статье мы рассмотрим подключение к плате Arduino WiFi модуля ESP8266 и передачу с его помощью Email. Также можете прочитать статью о передаче Email с использованием WiFi модуля ESP8266 и микроконтроллера AVR.

Внешний вид процесса передачи Email

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Wi-Fi модуль ESP8266 (купить на AliExpress).
  3. ЖК дисплей 16х2 (опционально) (купить на AliExpress).
  4. USB кабель.
  5. Источник питания.
  6. Лэптоп (персональный компьютер).
  7. Потенциометр 10 кОм (опционально).
  8. Соединительные провода.

Внешний вид Wi-Fi модуля ESP8266 показан на следующем рисунке.

Внешний вид Wi-Fi модуля ESP8266

Подготовка к работе

Для того, чтобы иметь возможность передавать Email с помощью платы Arduino и Wi-Fi модуля, нам необходимо получить Email. Это можно сделать на сайте на сайте smtp2go.com – после регистрации не забудьте запомнить (записать) свой email адрес и пароль. Внешний вид окна регистрации на сайте smtp2go.com представлен на следующем рисунке.

Внешний вид окна регистрации на сайте smtp2go.com

Далее нам будут необходимы для нашего аккаунта Email имя пользователя и пароль в закодированном формате base64. Для преобразования данных из формата utf-8 в формат base64 можно использовать сервис https://www.base64encode.org/. Внешний вид окна данного сервиса показан на следующем рисунке.

Внешний вид сервиса www.base64encode.org

Подавать питание на Wi-Fi модуль ESP8266 мы будем с контакта 3.3v платы Arduino.

Подача питания на Wi-Fi модуль ESP8266 с платы Arduino

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема устройства для передачи Email с использованием Arduino и WiFi модуля ESP8266

Как видите, схема достаточно проста – фактически для нее нам нужны только плата Arduino и Wi-Fi модуль ESP8266. Но мы добавили в схему еще ЖК дисплей 16x2 для отображения статусных сообщений (но можно обойтись и без нее). Контакты Vcc и GND модуля ESP8266 подключены к контактам 3.3V и GND платы Arduino, контакт CH_PD также подсоединен к 3.3V.

Контакты Tx и Rx модуля ESP8266 непосредственно подсоединены к контактам 2 и 3 платы Arduino. Контакт 2 платы Arduino также замкнут с контактом 1 платы Arduino. Это сделано с той целью чтобы отображать ответ с модуля ESP8266 на последовательном порту Arduino. Библиотека последовательного порта (Software Serial Library) используется чтобы осуществлять последовательную связь на контактах 2 и 3 Arduino

Примечание: чтобы видеть ответ с ESP8266 на последовательном порту не используйте функцию Serial.begin(9600).

Исходный код программы

В программе мы первым делом должны подключить библиотеку последовательной связи и библиотеку для работы с ЖК дсиплеем. По умолчанию, для последовательной связи используются контакты 0 и 1 платы Arduino, но с использованием библиотеки последовательной связи мы можем задействовать последовательную связь на любых других цифровых контактах платы Arduino.

После этого мы должны запрограммировать функцию void connect_wifi(String cmd, int t) чтобы соединить Wi-Fi модуль с сетью Internet.

void connect_wifi(String cmd, int t)
{
int temp=0,i=0;
while(1)
{
Serial1.println(cmd);
while(Serial1.available())
{
if(Serial1.find("OK"))
... .... ....
... .....

После этого необходимо соединить Wi-Fi модуль с SMTP сервером при помощи соответствующих команд.

lcd.print("Configuring Email..");
Serial1.println("AT+CIPSTART=4,\"TCP\",\"mail.smtp2go.com\",2525");
delay(2000);
Serial1.println("AT+CIPSEND=4,20");
delay(2000);
Serial1.println("EHLO 192.168.1.123");
delay(2000);
Serial1.println("AT+CIPSEND=4,12");

Примечание: некоторые email серверы не принимают email с некоммерческих, выпущенных с помощью dhcp ip адресов.

После этого мы будем пытаться залогиниться на smtp2go.co, используя имя пользователя и пароль в закодированном base64 формате, которые мы получили с помощью сервиса https://www.base64encode.org/.

lcd.print("Try To Login.....");
Serial1.println("AUTH LOGIN");
delay(2000);
Serial1.println("AT+CIPSEND=4,30");
delay(2000);
Serial1.println("c2FkZGFtNDIwMUBnbWFpbC5jb20="); //base64 encoded username
delay(2000);
Serial1.println("AT+CIPSEND=4,18");
delay(2000);
Serial1.println("Y2lyY3VpdDQyMDE="); //base64 encoded password

После этого вводите свое основное сообщение которое хотите передать. Передаем этот email с использованием заключительной строки (символа) ‘.’

Serial1.println("Testing Success");
delay(2000);
Serial1.println("AT+CIPSEND=4,3");
delay(2000);
Serial1.println('.');
delay(10000);
Serial1.println("AT+CIPSEND=4,6");
delay(2000);
Serial1.println("QUIT");
... .....
.......

Далее представлен полный текст программы.

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
3 747 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *