W tym samouczku dowiemy się, jak wysyłać wiadomości e-mail z mikrokontrolera PIC za pomocą słynnego modułu WiFi ESP8266. Ten samouczek wykorzystuje do programowania kompilator PIC16F877A IC oraz MPLABX i XC8.
Pod koniec tego samouczka będziesz mógł wysyłać e-maile z dowolnego normalnego identyfikatora e-mail, takiego jak Gmail, Yahoo itp., Na dowolny inny identyfikator e-mail. Dlatego w tym samouczku założono, że masz podstawową wiedzę na temat modułów ESP8266-01 i mikrokontrolerów PIC. Jeśli nie, pomocne będą poniższe samouczki
- Pierwsze kroki z ESP8266
- Połączenie ESP8266 z PIC
Zacznijmy więc…
Przygotowanie się z Tobą E-mail ID:
Gdy już zdecydujesz, z którego identyfikatora poczty chcesz wysyłać e-maile, wykonaj poniższe czynności
Krok 1: Odwiedź https://www.smtp2go.com/ i zarejestruj się jako nowy użytkownik. Wpisz swoje imię i nazwisko, adres e-mail i hasło swojego identyfikatora e-mail, z którego chcesz wysłać wiadomość.
W tym samouczku używany jest identyfikator poczty: aswinthcd @ gmail.com i hasło: circuitdigest.
Krok 2: Kliknij Zarejestruj się, a otrzymasz wiadomość weryfikacyjną na podany identyfikator poczty. W tym przypadku jest to aswinthcd @ gmail.com. Otwórz wiadomość i kliknij „AKTYWUJ KONTO”
Krok 3: Może ponownie poprosić o hasło, jeśli zostanie poproszony o podanie poprzedniego hasła. W tym przypadku jest to „circuitdigest”. Następnie zostaniesz zalogowany na stronie SMPT2GO. To wszystko, teraz Twój adres e-mail jest gotowy do wysyłania wiadomości za pomocą modułu ESP8266.
Krok 4: Ostatnim krokiem jest zakodowanie identyfikatora e-mail i hasła w formacie base 64 za pomocą tej witryny internetowej https://www.base64encode.org/. Zamierzamy wykorzystać to w naszym programie PIC
W takim przypadku zakodowane wartości będą wyglądać tak, jak pokazano w tabeli poniżej.
Parametr |
Normalny format |
Zakodowane w bazie 64 |
Identyfikator poczty |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Hasło |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Przygotowanie sprzętu:
Pełny schemat projektu przedstawiono poniżej.
Wyświetlacz LCD służy tutaj do debugowania. Podłączanie tego nie jest obowiązkowe. Program będzie działał dobrze nawet bez wyświetlacza LCD. Jeśli chcesz dowiedzieć się więcej o schematach, odwiedź ten samouczek. (Łączenie PIC z ESP).
Możesz po prostu zmontować ten obwód na płytce stykowej, a następnie przystąpić do programowania.
Programowanie PIC do wysyłania e-maili:
Aby wysłać e-mail z ESP8266, do modułu ESP należy wysłać sekwencję poleceń AT. Aby wysłać wiadomość e-mail z ESP8266, należy wykonać następujące kroki.
- Ustaw moduł w tryb AP + STA (punkt dostępowy i stacja)
- Połącz się z punktem dostępu, aby uzyskać połączenie z Internetem
- Włącz wiele połączeń
- Uruchom serwer na dowolnym porcie
- Nawiąż połączenie TCP ze stroną internetową SMPT2GO
- Przejdź do sekcji logowania w witrynie
- Wprowadź identyfikator e-mail i hasło w formacie base64
- Wprowadź identyfikator poczty
- Wprowadź identyfikator poczty
- Wprowadź temat wiadomości
- Wpisz treść wiadomości
- Wskaż koniec wiadomości
- Wyślij pocztę
- Zakończ połączenie TCP
To trochę długi i żmudny proces, ale nie martw się. Uprościłem ten proces, tworząc plik nagłówkowy i możesz go używać bezpośrednio, po prostu wywołując niektóre funkcje (wyjaśnione poniżej), co bardzo ułatwia to zadanie. Cały kod wraz z plikiem nagłówkowym można pobrać stąd.
Uwaga: Jeśli używasz kodu w nowym projekcie, upewnij się, że pobierasz plik nagłówkowy i dodajesz go do swojego projektu.
Poniżej wyjaśniłem kilka ważnych części kodu, pozostałe części są oczywiste. Ale jeśli masz jakiekolwiek wątpliwości, skorzystaj z sekcji komentarzy.
/ * Sprawdź, czy komunikacja ESP_PIC się powiodła * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("Nie znaleziono ESP"); } while (! esp8266_isStarted ()); // czekaj, aż ESP odeśle "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP jest podłączony"); __delay_ms (1500); Lcd_Clear (); / * Tak Komunikacja ESP powiodła się -Proceed * /
Ta część kodu służy do sprawdzenia, czy między PIC a ESP8266 nawiązano właściwą komunikację. Tylko jeśli obaj będą mogli wysyłać i odbierać dane przez USART, program przejdzie do następnego kroku.
esp8266_mode (3);
Ta funkcja ustawi ESP8266 w tryb 3. Oznacza to, że moduł może teraz działać jako punkt dostępowy, a także jako serwer.
esp8266_connect ("Strona główna BPAS", "cracksun");
Ta funkcja służy do podłączenia modułu ESP8266 do routera Wi-Fi. W tym przypadku „BPAS home” to nazwa mojego sygnału Wi-Fi, a „cracksun” to moje hasło. Musisz użyć własnych danych sygnału Wi-Fi.
_esp8266_enale_MUX (); // Włącz wiele połączeń _esp8266_create_server (); // Utwórz serwer na porcie 80
Te dwie funkcje służą do włączania wielu połączeń i tworzenia serwera na porcie 80.
_esp8266_connect_SMPT2GO ();
Teraz za pomocą tej funkcji możemy nawiązać połączenie TCP z SMPT2GO. Po nawiązaniu połączenia ta funkcja przenosi również do strony logowania w witrynie.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Użyj tej funkcji, aby wprowadzić swój identyfikator e-mail i hasło w formacie base 64. Jak widać, te zakodowane wartości są takie same, jak te pokazane w powyższej tabeli. Twoje zakodowane wartości będą się różnić w zależności od Twojego identyfikatora e-mail i hasła.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Ta funkcja służy do zdefiniowania nazwy identyfikatora nadawcy. W tym samouczku wysyłam pocztę przy użyciu mojego identyfikatora Gmaila aswinthcd @ gmail.com, dlatego przekazałem go jako parametr.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Ta funkcja służy do zdefiniowania nazwy identyfikatora odbiorcy. Chciałbym wysłać moje wiadomości na inne moje konto Gmail, dlatego przekazałem parametr jako mailtoasiwnth @ gmail.com. Możesz użyć żądanego identyfikatora poczty
_esp8266_start_mail ();
Ta funkcja instruuje serwer SMPT2GO, że mamy zamiar podać temat i treść wiadomości i przygotowuje ją do tego samego.
_esp8266_mail_subject ("Poczta z ESP8266");
Możesz użyć tej funkcji do zdefiniowania tematu wiadomości. Jako przykład użyłem „Mail from ESP8266” jako tematu wiadomości.
_esp8266_mail_body ("Testing Success -CircuitDigest");
Po wpisaniu tematu możesz wpisać treść wiadomości korzystając z tej funkcji. Jako przykład ustawiłem „Testing Success - CircuitDigest” jako treść mojej poczty.
_esp8266_End_mail ();
Teraz, gdy wprowadziliśmy temat i treść wiadomości, musimy poinstruować serwer SMPT2GO, że zakończyliśmy dodawanie szczegółów do wiadomości. Można to zrobić za pomocą funkcji
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
W końcu po wysłaniu wiadomości musimy zakończyć połączenie TCP z serwerem SMPT2GO. Odbywa się to za pomocą powyższej funkcji.
Pracujący:
Gdy skończysz ze sprzętem i programem. Wystarczy wrzucić kod do MCU PIC. Następnie włącz obwód. Jeśli wszystko pójdzie zgodnie z oczekiwaniami, na wyświetlaczu LCD powinien zostać wyświetlony stan procesu, a na końcu komunikat „Wysłano wiadomość”, jak pokazano na poniższym filmie. Twój sprzęt może wyglądać mniej więcej tak.
Gdy na wyświetlaczu LCD pojawi się informacja, że wiadomość została wysłana, sprawdź skrzynkę odbiorczą i folder Spam pod kątem wysłanej poczty. Powinieneś otrzymać wiadomość, jak pokazano poniżej.
To wszystko, teraz możesz tworzyć własne projekty IOT, odczytując dane z czujnika i wysyłając je na swój identyfikator poczty. Stwórz system alertów bezpieczeństwa dla swojego domu lub samochodów, uruchamiając alert za pośrednictwem poczty.
Jeśli masz jakiekolwiek wątpliwości lub utkniesz w środku, skorzystaj z sekcji komentarzy, a ja z przyjemnością Ci pomogę.