У цьому підручнику ми дізнаємось, як надсилати електронні листи від мікроконтролера PIC за допомогою відомого модуля WiFi ESP8266. Цей підручник використовує для програмування компілятор PIC16F877A IC та MPLABX та XC8.
Наприкінці цього підручника ви зможете надсилати електронну пошту з будь-якого звичайного ідентифікатора електронної пошти, наприклад Gmail, yahoo тощо на будь-який інший ідентифікатор електронної пошти. Отже, цей підручник передбачає наявність у вас базових знань щодо модулів ESP8266-01 та мікроконтролерів PIC. Якщо ні, то наступні підручники допоможуть вам
- Початок роботи з ESP8266
- Зв'язок ESP8266 з PIC
Тож давайте почнемо…
Підготовка до вашого ідентифікатора електронної пошти:
Визначившись, з якого ідентифікатора пошти потрібно надсилати електронні листи, виконайте наведені нижче дії
Крок 1: Відвідайте https://www.smtp2go.com/ та зареєструйтесь як новий користувач. Введіть своє ім'я, адресу електронної пошти та пароль свого ідентифікатора електронної пошти, з якого ви хочете надіслати пошту.
Цей підручник використовує ідентифікатор пошти: aswinthcd @ gmail.com та пароль: circuitdigest.
Крок 2: Клацніть на реєстрацію, і вам буде надіслано лист із підтвердженням на введений ідентифікатор пошти. У цьому випадку це aswinthcd @ gmail.com. Відкрийте пошту та натисніть «АКТИВУВАТИ РАХУНОК»
Крок 3: Він може знову запитати пароль, якщо буде запропоновано ввести попередній пароль. У цьому випадку це "схемний дайджест". Тоді ви ввійдете на веб-сайт SMPT2GO. Тобто зараз ваша електронна адреса готова до надсилання повідомлень за допомогою модуля ESP8266.
Крок 4: Останнім кроком є кодування ідентифікатора електронної пошти та пароля у базовому форматі 64 за допомогою цього веб-сайту https://www.base64encode.org/. Ми будемо використовувати це в нашій програмі PIC
У цьому випадку закодовані значення будуть виглядати так, як показано в таблиці нижче.
Параметр |
Звичайний формат |
Зашифровано в базі 64 |
Ідентифікатор пошти |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Пароль |
схемотехнічний дайджест |
Y2lyY3VpdGRpZ2VzdA == |
Підготовка обладнання:
Повна схема проекту наведена нижче.
РК-дисплей використовується тут для налагодження. Вам не обов’язково підключати це. Програма буде працювати нормально навіть без РК-дисплея. Якщо ви хочете дізнатись більше про схеми, відвідайте цей посібник. (Взаємозв'язок PIC з ESP).
Ви можете просто зібрати цю схему на макетній панелі, а потім продовжити програмування.
Програмування вашого PIC для надсилання електронної пошти:
Для того, щоб надіслати електронне повідомлення з ESP8266, послідовність команд AT повинна бути надіслана модулю ESP. Щоб надіслати електронне повідомлення з ESP8266, потрібно виконати наступні кроки.
- Встановіть модуль у режимі AP + STA (Точка доступу та станція)
- Підключіться до точки доступу, щоб отримати з’єднання з Інтернетом
- Увімкніть кілька підключень
- Запустіть сервер на будь-якому конкретному порту
- Встановіть TCP-зв’язок із веб-сайтом SMPT2GO
- Перейдіть до розділу входу на веб-сайті
- Введіть ідентифікатор електронної пошти та пароль у форматі base64
- Введіть з ідентифікатора пошти
- Введіть на ідентифікатор пошти
- Введіть тему листа
- Введіть тіло пошти
- Вкажіть кінець пошти
- Надішліть пошту
- Вийдіть із з'єднання TCP
Це трохи тривалий і нудний процес, але не хвилюйтеся. Я спростив процес, створивши файл заголовка, і ви можете використовувати його безпосередньо, просто викликавши деякі функції (пояснені нижче), що робить це завдання дуже простим. Повний код разом із заголовком можна завантажити звідси.
Примітка. Якщо ви використовуєте код у новому проекті, не забудьте завантажити файл заголовка та додати його у свій проект.
Я пояснив деякі важливі частини коду нижче, інші частини пояснюються самі собою. Але якщо у вас є якісь сумніви, сміливо використовуйте розділ коментарів.
/ * Перевірте, чи вдалий зв’язок ESP_PIC * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP не знайдено"); } while (! 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", "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 ==");
За допомогою цієї функції введіть свій ідентифікатор електронної пошти та пароль у базовому форматі 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, зчитуючи дані датчика та надсилаючи їх на свій поштовий ідентифікатор. Створіть систему оповіщення про безпеку для вашого будинку або автомобілів, викликаючи сповіщення поштою.
Якщо у вас є якісь сумніви або ви застрягли посередині, будь ласка, використовуйте розділ коментарів, і я з радістю вам допоможу.