В этом руководстве мы узнаем, как отправлять электронные письма с микроконтроллера PIC, используя известный модуль WiFi ESP8266. В этом руководстве для программирования используются PIC16F877A IC и компиляторы MPLABX и XC8.
В конце этого руководства вы сможете отправлять электронную почту с любого обычного идентификатора электронной почты, например Gmail, yahoo и т. Д., На любой другой идентификатор электронной почты. Следовательно, в этом руководстве предполагается, что у вас есть некоторые базовые знания о модулях ESP8266-01 и микроконтроллерах PIC. Если нет, следующие руководства помогут вам
- Начало работы с ESP8266
- Взаимодействие ESP8266 с PIC
Итак, приступим…
Готовимся с вашим E-mail ID:
После того, как вы решили, с какого почтового идентификатора вы хотите отправлять электронные письма, выполните следующие действия.
Шаг 1. Посетите https://www.smtp2go.com/ и зарегистрируйтесь как новый пользователь. Введите свое имя, адрес электронной почты и пароль вашего идентификатора электронной почты, с которого вы хотите отправлять почту.
В этом руководстве используются почтовый идентификатор: aswinthcd @ gmail.com и пароль: circuitdigest.
Шаг 2: Нажмите «Зарегистрироваться», и вам будет отправлено письмо с подтверждением на введенный вами почтовый идентификатор. В данном случае это aswinthcd @ gmail.com. Откройте письмо и нажмите «АКТИВИРОВАТЬ АККАУНТ».
Шаг 3. Он может снова запросить пароль, если его попросят ввести предыдущий пароль. В данном случае это «схемотехнический анализ». После этого вы войдете на сайт SMPT2GO. Теперь ваш адрес электронной почты готов для отправки писем с помощью модуля ESP8266.
Шаг 4: Последний шаг - закодировать идентификатор электронной почты и пароль в формате base 64 с помощью этого веб-сайта https://www.base64encode.org/. Мы собираемся использовать это в нашей программе PIC
В этом случае закодированные значения будут выглядеть, как показано в таблице ниже.
Параметр |
Нормальный формат |
Закодировано в базе 64 |
Почтовый идентификатор |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
пароль |
схема |
Y2lyY3VpdGRpZ2VzdA == |
Подготовка вашего оборудования:
Полная схема проекта представлена ниже.
ЖК-дисплей здесь используется для отладки. Это не обязательно. Программа будет нормально работать даже без ЖК-дисплея. Если вы хотите узнать больше о схемах, посетите это руководство. (Взаимодействие PIC с ESP).
Вы можете просто собрать эту схему на макетной плате, а затем продолжить программирование.
Программирование PIC для отправки электронной почты:
Чтобы отправить электронное письмо с ESP8266, на модуль ESP должна быть отправлена последовательность AT-команд. Чтобы отправить электронное письмо с ESP8266, необходимо выполнить следующие шаги.
- Установите модуль в режим AP + STA (точка доступа и станция)
- Подключитесь к точке доступа для подключения к Интернету
- Включить несколько подключений
- Запустить сервер на любом конкретном порту
- Установите TCP-соединение с сайтом SMPT2GO
- Перейдите в раздел входа на веб-сайте.
- Введите идентификатор электронной почты и пароль в формате base64.
- Введите идентификатор почты
- Введите в почту ID
- Введите тему письма
- Введите текст письма
- Укажите конец письма
- Послать почту
- Выйти из TCP-соединения
Это немного длительный и утомительный процесс, но не беспокойтесь. Я упростил процесс, создав файл заголовка, и вы можете использовать его напрямую, просто вызвав некоторые функции (объясненные ниже), что очень упрощает эту задачу. Полный код вместе с файлом заголовка можно скачать здесь.
Примечание. Если вы используете код в новом проекте, убедитесь, что вы загрузили файл заголовка и добавили его в свой проект.
Я объяснил некоторые важные части кода ниже, другие части не требуют пояснений. Но если у вас есть сомнения, смело используйте раздел комментариев.
/ * Проверяем, успешна ли связь ESP_PIC * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String («ESP не найден»); } while (! esp8266_isStarted ()); // ждем, пока ESP вернет "ОК" 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», «cracksun»);
Эта функция используется для подключения модуля ESP8266 к маршрутизатору Wi-Fi. В этом случае «BPAS home» - это имя моего сигнала Wi-Fi, а «cracksun» - мой пароль. Вы должны использовать свои собственные данные сигнала Wi-Fi.
_esp8266_enale_MUX (); // Разрешить несколько подключений _esp8266_create_server (); // Создаем сервер на 80 порту
Эти две функции используются для включения нескольких подключений и создания сервера на порту 80.
_esp8266_connect_SMPT2GO ();
Теперь, используя эту функцию, мы можем установить TCP-соединение с SMPT2GO. После установления соединения эта функция также перемещается на страницу входа на веб-сайт.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Используйте эту функцию для ввода идентификатора электронной почты и пароля в формате base 64. Как видите, эти закодированные значения такие же, как в таблице выше. Ваши закодированные значения будут зависеть от вашего идентификатора электронной почты и пароля.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Эта функция используется для определения имени идентификатора отправителя. В этом руководстве я отправляю почту, используя свой идентификатор Gmail aswinthcd @ gmail.com, поэтому я передал его как параметр.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Эта функция используется для определения имени идентификатора получателя. Я хотел бы отправлять свои письма на другую свою учетную запись Gmail, поэтому я передал параметр как mailtoasiwnth @ gmail.com. Вы можете использовать желаемый почтовый идентификатор
_esp8266_start_mail ();
Эта функция сообщает серверу SMPT2GO, что мы собираемся ввести тему и тело письма, и подготавливает его к тому же.
_esp8266_mail_subject («Письмо от ESP8266»);
Вы можете использовать эту функцию, чтобы определить тему письма. В качестве примера я использовал «Почта от ESP8266» в качестве темы письма.
_esp8266_mail_body ("Успешное тестирование -CircuitDigest");
После ввода темы вы можете ввести текст письма с помощью этой функции. В качестве примера я установил «Успешное тестирование –CircuitDigest» в качестве тела моего письма.
_esp8266_End_mail ();
Теперь, когда мы ввели тему и тело письма, нам нужно проинструктировать сервер SMPT2GO, что мы закончили с добавлением деталей в письмо. Это можно сделать с помощью функции
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Наконец, после отправки почты мы должны разорвать TCP-соединение с сервером SMPT2GO. Это делается с помощью указанной выше функции.
За работой:
Как только вы закончите со своим оборудованием и программой. Просто загрузите код в свой PIC MCU. Затем включите свою схему. Если все пойдет так, как ожидалось, ваш ЖК-дисплей должен отобразить статус процесса и, наконец, сказать «Письмо отправлено», как показано на видео ниже. Ваше оборудование может выглядеть примерно так.
Как только на ЖК-дисплее появится сообщение об отправлении почты, проверьте папку «Входящие» и «Спам» на наличие отправленного сообщения. Вы должны были получить письмо, как показано ниже.
То есть теперь вы можете создавать свои собственные проекты IOT, считывая данные датчика и отправляя их на свой почтовый идентификатор. Создайте систему оповещения о безопасности для вашего дома или автомобиля, отправив оповещение по почте.
Если у вас есть какие-либо сомнения или вы застряли в середине, пожалуйста, используйте раздел комментариев, и я буду рад вам помочь.