- Vật liệu thiết yếu
- Phần mềm được sử dụng
- Mô-đun GSM
- Giao tiếp với mô-đun GSM bằng lệnh AT
- Sơ đồ mạch giao diện mô-đun GSM ATMega16
- Tạo Dự án cho ATmega16 bằng CodeVision
- Mã và giải thích
- Xây dựng dự án
- Tải mã lên Atmega16
Mô-đun GSM rất thú vị để sử dụng đặc biệt khi dự án của chúng tôi yêu cầu truy cập từ xa. Các mô-đun này có thể thực hiện tất cả các hành động mà điện thoại di động thông thường của chúng ta có thể thực hiện, như thực hiện / nhận cuộc gọi, gửi / nhận SMS, kết nối Internet bằng GPRS, v.v. Bạn cũng có thể kết nối micrô và loa thông thường với mô-đun này và trò chuyện trên cuộc gọi di động. Điều này sẽ mở ra cánh cửa cho nhiều dự án sáng tạo nếu nó có thể được giao tiếp với Bộ vi điều khiển. Do đó, trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chúng ta có thể Giao diện mô-đun GSM (SIM900A) với vi điều khiển AVR ATmega16 và sẽ chứng minh điều đó bằng cách gửi và nhận tin nhắn bằng Mô-đun GSM.
Vật liệu thiết yếu
- Atmega16
- Mô-đun GSM (SIM900 hoặc bất kỳ loại nào khác)
- Màn hình LCD
- Nút ấn
- Điện trở 10k, chiết áp
- Kết nối dây
- Bộ chuyển đổi 12V
- Bộ lập trình USBasp
- Cáp FRC 10 chân
Phần mềm được sử dụng
Chúng tôi sẽ sử dụng phần mềm CodeVisionAVR để viết mã và phần mềm SinaProg để tải mã của chúng tôi lên Atmega16 bằng bộ lập trình USBASP.
Bạn có thể tải xuống các phần mềm này từ các liên kết cho sẵn:
CodeVisionAVR:
SinaProg:
Trước khi đi vào sơ đồ và mã, chúng ta tìm hiểu về mô-đun GSM và hoạt động của nó.
Mô-đun GSM
Mô-đun GSM có thể được sử dụng ngay cả khi không có bất kỳ vi điều khiển nào bằng cách sử dụng chế độ lệnh AT. Như hình trên, mô-đun GSM đi kèm với bộ điều hợp USART có thể được giao tiếp trực tiếp với máy tính bằng cách sử dụng mô-đun MAX232 hoặc các chân Tx và Rx có thể được sử dụng để kết nối nó với Bộ vi điều khiển. Bạn cũng có thể nhận thấy các chân khác như MIC +, MIC-, SP +, SP- vv nơi có thể kết nối micrô hoặc Loa. Mô-đun có thể được cấp nguồn bằng bộ chuyển đổi 12V thông qua giắc cắm thùng DC thông thường.
Lắp thẻ SIM vào khe của mô-đun và bật nguồn, bạn sẽ thấy đèn LED nguồn BẬT. Bây giờ, hãy đợi khoảng một phút và bạn sẽ thấy đèn LED màu đỏ (hoặc bất kỳ màu nào khác) nhấp nháy một lần sau mỗi 3 giây. Điều này có nghĩa là Mô-đun của bạn có thể thiết lập kết nối với thẻ SIM của bạn. Bây giờ bạn có thể tiến hành kết nối mô-đun của mình với Điện thoại hoặc bất kỳ Vi điều khiển nào.
Bạn có thể xây dựng nhiều dự án thú vị bằng cách sử dụng mô-đun GSM như:
- Bảng thông báo không dây sử dụng GSM và Arduino
- Máy trả lời cuộc gọi tự động sử dụng Arduino và Mô-đun GSM
- Tự động hóa gia đình dựa trên GSM sử dụng Arduino
- Cảm biến PIR và Hệ thống bảo mật dựa trên GSM
Cũng kiểm tra tất cả các dự án liên quan đến GSM ở đây.
Giao tiếp với mô-đun GSM bằng lệnh AT
Như bạn có thể đã đoán ra, mô-đun GSM có thể giao tiếp thông qua giao tiếp nối tiếp và chỉ có thể hiểu một ngôn ngữ và đó là “ lệnh AT ”. Bất cứ điều gì bạn có thể muốn nói hoặc yêu cầu với mô-đun GSM, nó chỉ nên thông qua các lệnh AT. Ví dụ, nếu bạn muốn biết mô-đun của bạn có đang hoạt động hay không. Bạn nên yêu cầu (gửi) một lệnh như “AT” và mô-đun của bạn sẽ trả lời “OK”.
Các lệnh AT này được giải thích kỹ trong bảng dữ liệu của nó và có thể tìm thấy ở đây trong bảng dữ liệu chính thức của nó. Được chứ! Được chứ! Đó là một biểu dữ liệu 271 trang và bạn có thể mất nhiều ngày để đọc hết chúng. Vì vậy, tôi đã đưa ra một số lệnh AT quan trọng nhất bên dưới để bạn sớm thiết lập và chạy nó.
AT |
Trả lời bằng OK cho lời xác nhận |
AT + CPIN? |
Kiểm tra chất lượng tín hiệu |
AT + COPS? |
Tìm tên nhà cung cấp dịch vụ |
ATD96XXXXXXXX; |
Cuộc gọi đến một số cụ thể, kết thúc bằng dấu chấm phẩy |
AT + CNUM |
Tìm số thẻ SIM (có thể không hoạt động đối với một số SIM) |
ATA |
Trả lời cuộc gọi đến |
ATH |
Ngắt cuộc gọi đến hiện tại |
AT + COLP |
Hiển thị số cuộc gọi đến |
AT + VTS = (số) |
Gửi số DTMF. Bạn có thể sử dụng bất kỳ số nào trên bàn phím di động của mình cho (số) |
AT + CMGR |
AT + CMGR = 1 đọc thông báo ở vị trí đầu tiên |
AT + CMGD = 1 |
Xóa tin nhắn ở vị trí đầu tiên |
AT + CMGDA = "XÓA TẤT CẢ" |
Xóa tất cả tin nhắn khỏi SIM |
AT + CMGL = "TẤT CẢ" |
Đọc tất cả tin nhắn từ SIM |
AT + CMGF = 1 |
Đặt cấu hình SMS. “1” chỉ dành cho chế độ văn bản |
AT + CMGS = “+91 968837XXXX” > CircuitDigest Text
|
Gửi SMS đến một số cụ thể tại đây 968837XXXX. Khi bạn thấy “>”, hãy bắt đầu nhập văn bản. Nhấn Ctrl + Z để gửi văn bản. |
AT + CGATT? |
Cách kiểm tra kết nối internet trên thẻ SIM |
AT + CIPSHUT |
Để đóng kết nối TCP, nghĩa là ngắt kết nối internet của biểu mẫu |
AT + CSTT = “APN”, “tên người dùng”, “Đạt” |
Kết nối với GPRS bằng APN và khóa Pass của bạn. Có thể lấy từ Nhà cung cấp mạng. |
AT + CIICR |
Kiểm tra xem thẻ SIM có gói dữ liệu không |
AT + CIFSR |
Nhận IP của mạng SIM |
AT + CIPSTART = “TCP”, “IP MÁY CHỦ”, “PORT” |
Được sử dụng để đặt kết nối TCP IP |
XU HƯỚNG TẠI + CIPS |
Lệnh này được sử dụng để gửi dữ liệu đến máy chủ |
Ở đây chúng ta sẽ sử dụng lệnh AT + CMGF và AT + CMGS để gửi tin nhắn.
Nếu bạn đã sử dụng mô-đun GSM với Arduino, trong khi nhận tin nhắn, bạn có thể sử dụng + CMT: lệnh để xem số điện thoại di động và tin nhắn văn bản trên màn hình nối tiếp. Tin nhắn văn bản ở dòng thứ hai như trong hình.
Chúng tôi sẽ quét lệnh này + CMT: để kiểm tra xem có tin nhắn hay không.
Sơ đồ mạch giao diện mô-đun GSM ATMega16
Các kết nối sẽ như sau
- Tx và Rx của mô-đun GSM đến Rx (Pin14) và Tx (Pin15) của Atmega16 tương ứng.
- Đẩy các nút tới PD5 (Pin19) và PD6 (Pin20).
- Kết nối LCD:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Tạo Dự án cho ATmega16 bằng CodeVision
Sau khi cài đặt phần mềm CodeVisionAVR và SinaProg , hãy làm theo các bước dưới đây để tạo dự án và viết mã:
Đã được tải lên
Bước 1. Mở CodeVision Bấm vào Tệp -> Mới -> Dự án . Hộp thoại Xác nhận sẽ xuất hiện. Nhấp vào Có
Bước 2. CodeWizard sẽ mở ra. Bấm vào tùy chọn đầu tiên, tức là AT90 , và bấm OK.
Bước 3: - Chọn chip vi điều khiển của bạn, ở đây chúng ta sẽ lấy Atmega16L như hình.
Bước 4: - Bấm vào USART . Chọn Máy thu và Máy phát bằng cách nhấp vào nó. Như hình bên dưới:
Bước 5: - Nhấp vào LCD chữ và số và chọn Bật hỗ trợ LCD chữ và số .
Bước 6: - Nhấp vào Chương trình -> Tạo, Lưu và Thoát . Bây giờ, hơn một nửa công việc của chúng tôi đã hoàn thành
Bước 7: - Tạo một thư mục mới trên màn hình để các tập tin của chúng ta vẫn nằm trong thư mục, nếu không nó sẽ bị phân tán trên toàn bộ cửa sổ màn hình. Đặt tên thư mục của bạn như bạn muốn và tôi khuyên bạn nên sử dụng cùng tên để lưu các tệp chương trình.
Chúng ta sẽ có ba hộp thoại lần lượt để lưu tệp.
Làm tương tự với hai hộp thoại khác sẽ xuất hiện sau khi bạn lưu hộp thoại đầu tiên.
Bây giờ, không gian làm việc của bạn trông như thế này.
Phần lớn công việc của chúng tôi được hoàn thành với sự giúp đỡ của Wizard. Bây giờ, chúng ta phải viết mã chỉ cho GSM.
Mã và giải thích
Tất cả các tệp tiêu đề được tự động đính kèm sau khi tạo dự án, bạn chỉ cần bao gồm tệp tiêu đề delay.h và khai báo tất cả các biến. Mã hoàn chỉnh được đưa ra ở cuối hướng dẫn này.
#include
Thực hiện chức năng nhận dữ liệu từ thanh ghi UDR. Hàm này sẽ trả về dữ liệu đã nhận.
unsigned char sent_value (void) { while (! (UCSRA & (1 <
Đến với khi vòng lặp, trong đó chúng ta tạo ra hai nếu báo cáo, một cho gửi tin nhắn và khác tiếp nhận. Nút gửi được kết nối với PIND6 của ATmega và nút nhận tin nhắn với PIND5.
Khi PIND6 (Gửi Button) được nhấn đầu tiên nếu tuyên bố sẽ thực hiện và tất cả các lệnh để gửi thông báo sẽ thực hiện từng cái một.
while (1) { // lcd_clear (); lcd_putsf ("Gửi-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Nhận-> mông 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Đang gửi tin nhắn…"); for (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); for (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Nếu nhấn nút Nhận thông báo, vòng lặp while (b! = '+') Sẽ kiểm tra xem lệnh CMT có xuất hiện hay không. Nếu có, thứ hai trong khi vòng lặp sẽ thực hiện và đi đến dòng thứ hai của lệnh và in thông điệp trên một màn hình LCD một.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Đang nhận tin nhắn…"); b = giá_trị_nhận (); while (b! = '+') { b = giá_trị_nhận (); } b = giá_trị_nhận (); if (b == 'C') { b = giá_trị_nhận (); … ..
Vòng lặp này đưa chương trình đến dòng lệnh thứ hai và lưu thông báo trong mảng.
while (b! = 0x0a) { b = giá_trị_đã_nhận (); } for (b = 0; b <3; b ++) { c = giá_trị_cấp (); msg = c; } .. ..
Đây cho vòng lặp là để hiển thị các tin nhắn trên màn hình LCD.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // IN Lcd delay_ms (10); }
Mã hoàn chỉnh với Video Demo được đưa ra bên dưới, bây giờ chúng ta phải Xây dựng dự án của mình.
Xây dựng dự án
Bấm vào biểu tượng Build the project như hình.
Sau khi xây dựng dự án, tệp HEX được tạo trong thư mục Gỡ lỗi-> Exe có thể được tìm thấy trong thư mục mà bạn đã tạo trước đó để lưu dự án của mình. Chúng tôi sẽ sử dụng tệp HEX này để tải lên trong Atmega16 bằng phần mềm Sinaprog.
Tải mã lên Atmega16
Kết nối các mạch của bạn theo sơ đồ đã cho để lập trình Atmega16. Kết nối một bên của cáp FRC với bộ lập trình USBASP và bên kia sẽ kết nối với các chân SPI của bộ vi điều khiển như mô tả bên dưới:
- Chân 1 của đầu nối FRC cái -> Chân 6, MOSI của Atmega16
- Chân 2 kết nối với Vcc của atmega16 tức là Chân 10
- Chân 5 kết nối với Reset của atmega16 tức là Chân 9
- Chân 7 kết nối với SCK của atmega16 tức là Chân 8
- Chân 9 kết nối với MISO của atmega16 tức là Chân 7
- Chân 8 kết nối với GND của atmega16 tức là Chân 11
Chúng tôi sẽ tải lên tệp Hex được tạo ở trên bằng cách sử dụng Sinaprog, vì vậy hãy mở nó và Chọn Atmega16 từ menu thả xuống Thiết bị. Chọn tệp HEX từ thư mục Debug-> Exe như hình.
Bây giờ, Nhấp vào Chương trình và mã của bạn sẽ được ghi trong Vi điều khiển ATmega16.
Bạn đã hoàn tất và Bộ vi điều khiển của bạn đã được lập trình. Chỉ cần nhấn các nút để gửi và nhận các tin nhắn từ GSM và vi điều khiển ATmega16.
Mã hoàn chỉnh và video minh họa được đưa ra bên dưới.