Trong hướng dẫn này, chúng ta hãy tìm hiểu cách gửi E-mail từ Bộ vi điều khiển PIC bằng mô-đun WiFi nổi tiếng ESP8266. Hướng dẫn này sử dụng IC PIC16F877A và trình biên dịch MPLABX và XC8 để lập trình.
Ở phần cuối của hướng dẫn này, bạn sẽ có thể gửi E-mail từ bất kỳ ID E-mail thông thường nào như Gmail, yahoo, v.v. đến bất kỳ ID E-mail nào khác. Do đó, hướng dẫn này giả định rằng bạn có một số kiến thức cơ bản về Mô-đun ESP8266-01 và Bộ vi điều khiển PIC. Nếu chưa, hướng dẫn sau sẽ giúp bạn
- Bắt đầu với ESP8266
- Giao diện ESP8266 với PIC
Vì vậy, chúng ta hãy bắt đầu…
Chuẩn bị sẵn sàng với ID E-mail của bạn:
Khi bạn đã quyết định ID thư nào bạn muốn gửi email, hãy làm theo các bước dưới đây
Bước 1: Truy cập https://www.smtp2go.com/ và Đăng ký làm người dùng mới. Nhập tên, địa chỉ E-mail và mật khẩu của ID E-mail mà bạn muốn gửi thư từ đó.
Hướng dẫn này sử dụng ID thư: aswinthcd @ gmail.com và Mật khẩu: circuitdigest.
Bước 2: Nhấp vào đăng ký và bạn sẽ được gửi thư xác minh đến ID thư đã nhập của bạn. Trong trường hợp này, nó là aswinthcd @ gmail.com. Mở thư và nhấp vào “KÍCH HOẠT TÀI KHOẢN”
Bước 3: Nó có thể yêu cầu nhập lại mật khẩu, nếu được yêu cầu nhập mật khẩu trước đó. Trong trường hợp này, nó là 'chỉ số mạch'. Sau đó, bạn sẽ đăng nhập vào trang web SMPT2GO. Đó là bây giờ địa chỉ E-mail của bạn đã sẵn sàng để gửi thư bằng Mô-đun ESP8266.
Bước 4: Bước cuối cùng là mã hóa ID và mật khẩu E-mail thành định dạng cơ sở 64 bằng cách sử dụng trang web này https://www.base64encode.org/. Chúng tôi sẽ sử dụng điều này trong chương trình PIC của chúng tôi
Trong trường hợp này, các giá trị được mã hóa sẽ giống như trong bảng dưới đây.
Tham số |
Định dạng bình thường |
Được mã hóa trong cơ sở 64 |
Tài khoản mail |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Mật khẩu |
dây buộc |
Y2lyY3VpdGRpZ2VzdA == |
Chuẩn bị sẵn sàng phần cứng của bạn:
Sơ đồ hoàn chỉnh của dự án được hiển thị bên dưới.
Màn hình LCD được sử dụng ở đây cho mục đích gỡ lỗi. Bạn không bắt buộc phải kết nối cái này. Chương trình sẽ hoạt động tốt ngay cả khi không có màn hình LCD. Nếu bạn muốn biết thêm về các sơ đồ, bạn truy cập hướng dẫn này. (Giao diện PIC với ESP).
Bạn chỉ cần lắp ráp mạch này trên breadboard và sau đó tiến hành lập trình.
Lập trình PIC của bạn để gửi E-mail:
Để gửi một E-mail từ ESP8266, một chuỗi lệnh AT phải được gửi đến mô-đun ESP. Các bước sau phải được thực hiện để gửi một E-mail từ ESP8266.
- Đặt mô-đun ở chế độ AP + STA (Điểm truy cập và trạm)
- Kết nối với Điểm truy cập để có kết nối internet
- Bật nhiều kết nối
- Khởi động máy chủ trên bất kỳ cổng cụ thể nào
- Thiết lập kết nối TCP với trang web SMPT2GO
- Điều hướng đến phần Đăng nhập của trang web
- Nhập ID và mật khẩu E-mail ở định dạng base64
- Nhập từ ID thư
- Nhập vào ID thư
- Nhập chủ đề của thư
- Nhập nội dung của thư
- Cho biết phần cuối của thư
- Gửi thư
- Thoát kết nối TCP
Đó là một quá trình hơi dài và tẻ nhạt nhưng đừng lo lắng. Tôi đã đơn giản hóa quy trình bằng cách tạo tệp tiêu đề và bạn có thể sử dụng trực tiếp nó bằng cách chỉ cần gọi một số hàm (giải thích bên dưới), điều này làm cho tác vụ này rất dễ dàng. Mã hoàn chỉnh cùng với tệp tiêu đề có thể được tải xuống từ đây.
Lưu ý: Nếu bạn đang sử dụng mã trong một dự án mới, hãy đảm bảo rằng bạn tải xuống tệp tiêu đề và thêm nó vào dự án của mình.
Tôi đã giải thích một số phần quan trọng của mã bên dưới, các phần khác tự giải thích. Nhưng nếu bạn có bất kỳ nghi ngờ nào hãy sử dụng phần bình luận.
/ * Kiểm tra xem giao tiếp ESP_PIC có thành công không * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("Không tìm thấy ESP"); } while (! esp8266_isStarted ()); // đợi cho đến khi ESP gửi lại "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP được kết nối"); __delay_ms (1500); Lcd_Clear (); / * Có giao tiếp ESP thành công -Tiến hành * /
Phần mã này được sử dụng để kiểm tra xem có kết nối thích hợp được thiết lập giữa PIC và ESP8266 hay không. Chỉ khi cả hai đều có thể gửi và nhận dữ liệu thông qua USART, chương trình sẽ tiến hành bước tiếp theo.
esp8266_mode (3);
Chức năng này sẽ đặt ESP8266 ở chế độ 3. Có nghĩa là giờ đây mô-đun có thể hoạt động như một Điểm truy cập và cũng như một máy chủ.
esp8266_connect ("BPAS nhà", "crackun");
Chức năng này được sử dụng để kết nối mô-đun ESP8266 với Bộ định tuyến Wifi của bạn. Trong trường hợp này “BPAS home” là tên tín hiệu Wifi của tôi và “crackun” là mật khẩu của tôi. Bạn phải sử dụng chi tiết tín hiệu Wifi của riêng mình.
_esp8266_enale_MUX (); // Kích hoạt nhiều kết nối _esp8266_create_server (); // Tạo máy chủ trên cổng 80
Hai chức năng này được sử dụng để kích hoạt nhiều kết nối và tạo máy chủ trên cổng 80.
_esp8266_connect_SMPT2GO ();
Bây giờ, bằng cách sử dụng chức năng này, chúng ta có thể thiết lập kết nối TCP với SMPT2GO. Sau khi kết nối được thiết lập, chức năng này cũng sẽ chuyển đến trang Đăng nhập của trang web.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Sử dụng chức năng này để nhập ID Email và mật khẩu của bạn ở định dạng cơ sở 64. Như bạn có thể thấy các giá trị được mã hóa này giống như được hiển thị trong bảng trên. Các giá trị được mã hóa của bạn sẽ khác nhau dựa trên ID E-mail và mật khẩu của bạn.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Hàm này được sử dụng để xác định tên của ID người gửi. Trong hướng dẫn này, tôi gửi thư bằng ID Gmail của mình là aswinthcd @ gmail.com, do đó tôi đã chuyển nó làm tham số.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Hàm này được sử dụng để xác định tên của ID người nhận. Tôi muốn gửi thư tới một tài khoản Gmail khác của tôi, do đó tôi đã chuyển tham số là mailtoasiwnth @ gmail.com. Bạn có thể sử dụng ID thư mong muốn của mình
_esp8266_start_mail ();
Hàm này hướng dẫn máy chủ SMPT2GO mà chúng tôi sẽ cung cấp trong chủ đề và nội dung của thư và chuẩn bị cho nó giống như vậy.
_esp8266_mail_subject ("Thư từ ESP8266");
Bạn có thể sử dụng chức năng này để xác định chủ đề của thư. Ví dụ, tôi đã sử dụng “Thư từ ESP8266” làm chủ đề của thư.
_esp8266_mail_body ("Thử nghiệm thành công -CircuitDigest");
Sau khi nhập chủ đề, bạn có thể nhập nội dung của thư bằng chức năng này. Như một ví dụ, tôi đã đặt “Thử nghiệm thành công –CircuitDigest” làm nội dung thư của mình.
_esp8266_End_mail ();
Bây giờ chúng ta đã nhập chủ đề và nội dung của thư, chúng ta phải hướng dẫn máy chủ SMPT2GO rằng chúng ta đã hoàn tất việc thêm chi tiết vào thư. Điều này có thể được thực hiện bằng cách sử dụng hàm
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Cuối cùng sau khi gửi thư, chúng tôi phải chấm dứt kết nối TCP với máy chủ SMPT2GO. Điều này được thực hiện bằng cách sử dụng chức năng trên.
Đang làm việc:
Khi bạn đã hoàn tất với phần cứng và chương trình của mình. Đơn giản chỉ cần đổ mã vào MCU PIC của bạn. Sau đó BẬT nguồn mạch của bạn. Nếu mọi thứ diễn ra như mong đợi, màn hình LCD của bạn sẽ hiển thị trạng thái của quá trình và cuối cùng kết thúc bằng thông báo “Thư đã gửi” như trong video bên dưới. Phần cứng của bạn có thể trông giống như thế này.
Sau khi màn hình LCD hiển thị rằng thư đã được gửi đi, hãy kiểm tra Hộp thư đến và thư mục Spam để tìm thư đã gửi. Bạn sẽ nhận được thư như hình dưới đây..
Đó là bây giờ bạn có thể tạo các dự án IOT của riêng mình bằng cách đọc dữ liệu cảm biến và gửi chúng đến ID thư của bạn. Tạo hệ thống cảnh báo An ninh cho nhà riêng hoặc ô tô của bạn bằng cách kích hoạt cảnh báo qua thư.
Nếu bạn có bất kỳ nghi ngờ nào hoặc gặp khó khăn ở giữa, vui lòng sử dụng phần bình luận và tôi sẽ sẵn lòng giúp bạn.