Bài viết này nói về cách kết nối mô-đul GSM với vi điều khiển 8051. Mô-đul GSM đã trở thành một phần cứng phổ biến trong các ứng dụng hệ thống nhúng và kiến thức về cách kết nối mô-đul GSM với vi điều khiển là rất quan trọng nếu bạn muốn trở thành một người thiết kế hệ thống nhúng xuất sắc.
Mô-đul GSM Mô-đul GSM (Global System for Mobile communications) cơ bản là một bộ modem chấp nhận thẻ SIM và hoạt động trong mạng GSM do nhà cung cấp dịch vụ cung cấp, giống như một điện thoại di động. Mô-đul GSM có thể được điều khiển bởi máy tính hoặc vi điều khiển để thực hiện các nhiệm vụ khác nhau trong mạng như gọi điện, gửi tin nhắn, nhận tin nhắn, gửi FAX, v.v. Mô-đul GSM thường giao tiếp với phần cứng cha bằng cách sử dụng giao tiếp nối tiếp. Nếu phần cứng cha là máy tính cá nhân, thì giao tiếp thường được thực hiện qua cổng nối tiếp (RS232), và nếu hệ thống cha dựa trên vi điều khiển, thì giao tiếp thông qua các chân TTL Rx và Tx. Các mô-đul GSM tiên tiến có thể có khả năng kết nối Bluetooth hoặc Wi-Fi. Các ứng dụng phổ biến của mô-đul GSM bao gồm hệ thống giao nhận tin nhắn, hệ thống điều khiển thiết bị dựa trên di động hoặc bất kỳ ứng dụng truyền thông dữ liệu nào được hỗ trợ bởi nhà cung cấp dịch vụ mạng GSM và mô-đul GSM.
Mô-đul GSM - Hướng dẫn mua hàng - bạn đang tìm mua một mô-đul GSM? Có một số biến thể sản phẩm cho mô-đul GSM - như SIM900, SIM300, SIM800, v.v. Chúng tôi đã tạo ra hướng dẫn mua hàng này để giúp bạn chọn mô-đul GSM phù hợp cho dự án của bạn.
Phần cứng GSM và 8051 Phần cứng cha (PC hoặc vi điều khiển) thực hiện các nhiệm vụ khác nhau với mô-đul GSM bằng cách gửi các lệnh và dữ liệu khác nhau đến mô-đul theo một thứ tự và định dạng phù hợp. Mô-đul GSM mà chúng tôi sử dụng ở đây là loại SIM900 và thông qua mô-đul này, chúng ta đang thực hiện nhiệm vụ gửi tin nhắn đến điện thoại di động. Các lệnh và định dạng của chúng cần thiết cho ứng dụng này được liệt kê dưới đây.
AT để kiểm tra modem.
AT+CMGF=1 để cấu hình mô-đul GSM vào chế độ SMS.
AT+CMGS="số điện thoại di động" để gửi số điện thoại di động đến mô-đul GSM.
CTRL+Z để gửi tin nhắn.
Sơ đồ mạch. Sơ đồ mạch cho việc kết nối mô-đul GSM với vi điều khiển 8051 được hiển thị ở trên. Ở đây, mô-đul GSM và vi điều khiển giao tiếp thông qua giao tiếp nối tiếp. Chân Rx của vi điều khiển 8051 được kết nối với chân Tx của mô-đul GSM và chân Tx của vi điều khiển 8051 được kết nối với chân Rx của mô-đul GSM. Mô-đul LCD được sử dụng trong dự án này để hiển thị tin nhắn khi tin nhắn SMS được gửi. Công tắc S1, tụ điện C4 và kháng định R2 liên quan đến mạch đặt lại của vi điều khiển. Tụ điện C1, C2 và tinh thể X1 liên quan đến mạch đồng hồ. C3 chỉ là tụ điện chống nhiễu. Kháng định R2 được sử dụng để đặt độ tương phản của màn hình LCD. Kháng định R3 giới hạn dòng đi qua đèn nền LED.
ORG 000H
MOV TMOD,#00100001B
MOV TH1,#253D
MOV SCON,#50H
SETB TR1
RS EQU P2.7
RW EQU P2.6
E EQU P2.5
MAIN: ACALL DINT
MOV A,#"A"
ACALL SEND
MOV A,#"T"
ACALL SEND
MOV A,#0DH
ACALL SEND
ACALL DELAY1
MOV A,#"A"
ACALL SEND
MOV A,#"T"
ACALL SEND
MOV A,#"+"
ACALL SEND
MOV A,#"C"
ACALL SEND
MOV A,#"M"
ACALL SEND
MOV A,#"G"
ACALL SEND
MOV A,#"F"
ACALL SEND
MOV A,#"="
ACALL SEND
MOV A,#"1"
ACALL SEND
MOV A,#0DH
ACALL SEND
ACALL DELAY1
MOV A,#"A"
ACALL SEND
MOV A,#"T"
ACALL SEND
MOV A,#"+"
ACALL SEND
MOV A,#"C"
ACALL SEND
MOV A,#"M"
ACALL SEND
MOV A,#"G"
ACALL SEND
MOV A,#"S"
ACALL SEND
MOV A,#"="
ACALL SEND
MOV A,#34D
ACALL SEND
MOV A,#"+"
ACALL SEND
MOV A,#"9"
ACALL SEND
MOV A,#"1"
ACALL SEND
MOV A,#"9"
ACALL SEND
MOV A,#"5"
ACALL SEND
MOV A,#"4"
ACALL SEND
MOV A,#"4"
ACALL SEND
MOV A,#"3"
ACALL SEND
MOV A,#"4"
ACALL SEND
MOV A,#"0"
ACALL SEND
MOV A,#"0"
ACALL SEND
MOV A,#"7"
ACALL SEND
MOV A,#"7"
ACALL SEND
MOV A,#34D
ACALL SEND
MOV A,#0DH
ACALL SEND
ACALL DELAY1
MOV A,#"H"
ACALL SEND
MOV A,#"E"
ACALL SEND
MOV A,#"L"
ACALL SEND
MOV A,#"L"
ACALL SEND
MOV A,#"O"
ACALL SEND
ACALL DELAY1
MOV A,#1AH
ACALL SEND
ACALL DELAY1
ACALL DINT
ACALL TEXT1
ACALL DELAY1
HERE1:SJMP HERE1
SEND:CLR TI
MOV SBUF,A
WAIT:JNB TI,WAIT
RET
DELAY1:MOV R6,#15D
BACK: MOV TH0,#00000000B
MOV TL0,#00000000B
SETB TR0
HERE: JNB TF0,HERE
CLR TR0
CLR TF0
DJNZ R6,BACK
RET
DELAY: CLR E
CLR RS
SETB RW
MOV P0,#0FFh
SETB E
MOV A,P0
JB ACC.7,DELAY
CLR E
CLR RW
RET
DISPLAY:MOV P0,A
SETB RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET
CMD: MOV P0,A
CLR RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET
DINT:MOV A,#0FH
ACALL CMD
MOV A,#01H
ACALL CMD
MOV A,#0CH
ACALL CMD
MOV A,#06H
ACALL CMD
MOV A,#81H
ACALL CMD
MOV A,#3CH
ACALL CMD
RET
TEXT1: MOV A,#"S"
ACALL DISPLAY
MOV A,#"E"
ACALL DISPLAY
MOV A,#"N"
ACALL DISPLAY
MOV A,#"T"
ACALL DISPLAY
MOV A,#" "
ACALL DISPLAY
MOV A,#" "
ACALL DISPLAY
MOV A,#" "
ACALL DISPLAY
RET
END
Timer 1 của vi điều khiển 8051 được cấu hình ở Chế độ 2 để thực hiện giao tiếp nối tiếp. Timer 0 của vi điều khiển 8051 được cấu hình làm bộ định thời Chế độ 1 để tạo ra một số đợi được sử dụng trong chương trình. Đăng ký TMOD được nạp bằng 00100001B cho mục đích này. TH1 được nạp bằng 253D để đặt tốc độ baud là 9600. Công thức tương ứng là TH1 = 256 - ((Tần số tinh thể / 384) / Baud) trong đó tần số tinh thể được tính bằng Hz. Tinh thể mà chúng tôi sử dụng ở đây có tần số 11.0592 MHz và tốc độ baud cần là 9600. Khi thay các giá trị này vào phương trình trên, chúng ta có TH1=256-((11.0592/384)/9600)=253. Đăng ký SCON được nạp bằng 50H để đặt chế độ cổng nối tiếp là Chế độ 1 và cho phép trình nhận.
Phần tiếp theo là điều khiển mô-đul GSM để thực hiện nhiệm vụ của chúng ta, đó là gửi một tin nhắn đã định sẵn đến một số điện thoại di động cụ thể. Đầu tiên, bạn cần gửi lệnh AT đến mô-đul GSM để kiểm tra trạng thái. Định dạng là AT/r. Điều này được thực hiện bằng cách gửi mã ASCII của A, sau đó mã ASCII của T và mã ASCII của /r (kí tự trở lại dòng) đến mô-đul GSM một cách tuần tự. Mã ASCII của kí tự trở lại dòng là 0DH.
Tiếp theo, bạn cần gửi lệnh AT+CMGF=1 đến mô-đul GSM để cấu hình mô-đul GSM vào chế độ SMS. Định dạng là AT+CMGF=1/r. Điều này được thực hiện bằng cách gửi mã ASCII của A, sau đó mã ASCII của T, sau đó mã ASCII của +, sau đó mã ASCII của c, sau đó mã ASCII của M, sau đó mã ASCII của G, sau đó mã ASCII của F, sau đó mã ASCII của =, sau đó mã ASCII của 1 và cuối cùng là mã ASCII của /r.
Tiếp theo, bạn cần gửi lệnh AT+CMGS="số điện thoại di động" đến mô-đul GSM để gửi số điện thoại di động đích đến mô-đul GSM. Định dạng là AT+CMGS="số điện thoại di động"/r. Để cấu hình mô-đul GSM vào chế độ SMS. Định dạng là AT+CMGF=1/r. Điều này được thực hiện bằng cách gửi mã ASCII của A, sau đó mã ASCII của T, sau đó mã ASCII của +, sau đó mã ASCII của c, sau đó mã ASCII của M, sau đó mã ASCII của G, sau đó mã ASCII của s, sau đó mã ASCII của =, sau đó mã ASCII của ", sau đó mã ASCII của từng chữ số trong số điện thoại di động một lần, sau đó mã ASCII của " và cuối cùng là mã ASCII của /r.
Sau đó, bạn cần gửi văn bản tin nhắn đến mô-đul GSM. Điều này được thực hiện bằng cách gửi mã ASCII của từng ký tự trong văn bản đến mô-đul GSM một sau một. Cuối cùng, bạn cần gửi mã ASCII của CTRL+Z (thay thế) đến mô-đul GSM để gửi tin nhắn. Mã ASCII của CTRL+Z ở định dạng HEX là 01AH. Một đợi 1 giây phải được thêm vào giữa mỗi lệnh để đảm bảo rằng mô-đul GSM có đủ thời gian để chấp nhận và thực hiện từng lệnh. Toàn bộ quy trình có thể được viết đơn giản như dưới đây.
AT/r 1S delay.
AT+CMGF=1/r 1S delay.
AT+CMGS="mobile number"/r 1S delay.
message text.
1S delay.
CTRL+Z 1S delay.
Giao tiếp nối tiếp được sử dụng để gửi mã ASCII của từng ký tự riêng lẻ trong các lệnh khác nhau đến mô-đul GSM. Điều này được thực hiện bằng cách nạp mã ASCII của từng chữ cái vào bộ tổng hợp A và gọi tiểu chương trình SEND. Tiểu chương trình SEND hoạt động bằng cách xóa bit cờ truyền TI của đăng ký SCON và nạp nội dung từ bộ tổng hợp A vào đăng ký SBUF. Cờ truyền TI sẽ được đặt bởi vi điều khiển khi quá trình truyền thông hoàn tất. Tiểu chương trình theo dõi cờ này và thoát khi nó được tìm thấy được thiết lập. Trạng thái của cờ TI được kiểm tra bằng lệnh JB.
Văn bản "ĐÃ GỬI" sẽ được hiển thị trên mô-đul LCD sau lệnh cuối cùng, tức là CTRL+Z được gửi đến mô-đul GSM. Phương pháp sử dụng để nối mô-đul LCD với vi điều khiển là chế độ giao diện 8 dây cổ điển. Đọc bài viết Interfacing LCD module to 8051 để hiểu rõ phần này.
Chương trình bị dừng lại tại đó bằng mã HERE1:SJMP HERE1 sau khi thông báo "ĐÃ GỬI" được hiển thị trên mô-đul LCD. Nếu không làm như vậy, chương trình sẽ lặp vô hạn và gửi tin nhắn lần nữa và lần nữa. Bạn cần nhấn nút reset bằng tay để gửi lại tin nhắn.
Ghi chú:
Các mô-đul GSM có sẵn trên thị trường có điện áp cung cấp khác nhau như 12V, 9V, 5V, v.v. Mô-đul mà tôi đang sử dụng ở đây hoạt động ở điện áp 12V. Vì vậy, cung cấp nguồn điện cho mô-đul theo tài liệu kỹ thuật của mô-đul GSM của bạn. Mô-đul GSM cần một thời gian để kết nối vào mạng sau khi nó được bật. Sẽ có một đèn LED chỉ thị trên mô-đul GSM cho mục đích này. Trong hầu hết các mô-đul GSM, đèn LED chỉ thị mạng bắt đầu nhấp nháy ở một tốc độ cố định khi mô-đul GSM đã sẵn sàng để sử dụng. Đảm bảo rằng thẻ SIM của bạn có đủ số dư tiền mặt và phù hợp với mô-đul GSM bạn đang sử dụng.
Hotline: 0979 466 469