В този урок нека се научим как да изпращаме имейли от PIC Microcontroller с помощта на известния WiFi модул ESP8266. Този урок използва PIC16F877A IC и MPLABX и XC8 компилатор за програмиране.
В края на този урок ще можете да изпращате имейли от всеки нормален имейл идентификатор като Gmail, yahoo и т.н. до всеки друг имейл имейл. Следователно този урок предполага, че имате някои основни познания за модулите ESP8266-01 и микроконтролерите PIC. Ако не, следващите уроци ще ви помогнат
- Първи стъпки с ESP8266
- Връзка ESP8266 с PIC
Така че нека започнем…
Подготовка с вашия E-mail ID:
След като сте решили от кой пощенски идентификатор искате да изпратите имейлите, следвайте стъпките по-долу
Стъпка 1: Посетете https://www.smtp2go.com/ и се регистрирайте като нов потребител. Въведете вашето име, имейл адрес и парола на вашия имейл ID, от който искате да изпратите пощата.
Този урок използва Mail ID: aswinthcd @ gmail.com и Password: circuitdigest.
Стъпка 2: Щракнете върху регистрация и ще ви бъде изпратено съобщение за потвърждение на въведения идентификатор на пощата. В този случай това е aswinthcd @ gmail.com. Отворете пощата и кликнете върху „АКТИВИРАНЕ НА СМЕТКА“
Стъпка 3: Може да поиска отново парола, ако бъде поискана, въведете предишната парола. В този случай това е „схема на дигитално“. След това ще влезете в уебсайта на SMPT2GO. Това е всичко, че вашият имейл адрес е готов за изпращане на писма чрез модула ESP8266.
Стъпка 4: Последната стъпка е да кодирате имейл адреса и паролата в основен 64 формат, като използвате този уебсайт https://www.base64encode.org/. Ще използваме това в нашата програма PIC
В този случай кодираните стойности ще изглеждат, както е показано в таблицата по-долу.
Параметър |
Нормален формат |
Кодирано в база 64 |
ИД на поща |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Парола |
схемадигест |
Y2lyY3VpdGRpZ2VzdA == |
Подготовка на вашия хардуер:
Пълната схема на проекта е показана по-долу.
LCD дисплеят се използва тук за отстраняване на грешки. Не е задължително да свързвате това. Програмата ще работи добре дори без LCD дисплея. Ако искате да научите повече за схемите, посетете този урок. (Взаимодействие между PIC и ESP).
Можете просто да сглобите тази схема на макет и след това да продължите с програмирането.
Програмиране на вашия PIC за изпращане на имейл:
За да се изпрати имейл от ESP8266, трябва да се изпрати последователност от AT команди до модула ESP. Трябва да се изпълнят следните стъпки за изпращане на имейл от ESP8266.
- Задайте модула в режим AP + STA (точка за достъп и станция)
- Свържете се с точка за достъп, за да получите интернет връзка
- Активирайте множество връзки
- Стартирайте сървър на всеки конкретен порт
- Установете TCP връзка с уебсайта SMPT2GO
- Отворете секцията за вход на уебсайта
- Въведете имейл адреса и паролата във формат base64
- Въведете от ИД на поща
- Въведете To ID на пощата
- Въведете темата на пощата
- Въведете тялото на пощата
- Посочете края на пощата
- Изпратете пощата
- Излезте от TCP връзката
Това е малко дълъг и досаден процес, но не се притеснявайте. Опростих процеса, като създадох заглавен файл и можете да го използвате директно, като просто извикате някои функции (обяснено по-долу), което прави тази задача много лесна. Пълният код заедно със заглавния файл можете да изтеглите от тук.
Забележка: Ако използвате кода в нов проект, не забравяйте да изтеглите заглавния файл и да го добавите във вашия проект.
Обясних някои важни части от кода по-долу, останалите части се обясняват. Но ако имате някакви съмнения, не се колебайте да използвате раздела за коментари.
/ * Проверете дали комуникацията с ESP_PIC е успешна * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP не е намерен"); } докато (! 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 home", "cracksun");
Тази функция се използва за свързване на вашия модул ESP8266 към вашия Wifi рутер. В този случай “BPAS home” е името на моя Wifi сигнал, а “cracksun” е моята парола. Трябва да използвате собствените си данни за Wifi сигнала.
_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. След това включете вашата верига. Ако всичко върви според очакванията, вашият LCD дисплей трябва да покаже състоянието на процеса и накрая да каже „Изпратена е поща“, както е показано във видеото по-долу. Вашият хардуер може да изглежда нещо подобно.
След като LCD дисплеят покаже, че пощата е изпратена, проверете в папката "Входящи" и "Спам" за изпратената поща. Трябваше да получите пощата, както е показано по-долу.
Това е всичко, което сега можете да направите свои собствени IOT проекти, като прочетете данни от сензора и ги изпратите на вашия пощенски идентификатор. Създайте система за предупреждение за сигурност за вашия дом или автомобили, като задействате сигнал по пощата.
Ако имате някакви съмнения или сте останали в средата, моля, използвайте раздела за коментари и ще се радвам да ви помогна.