Mã lỗi +CMS Ý nghĩa
300 Lỗi thiết bị di động. Thường là máy điện thoại hoặc GSM/GPRS modem. 301 Dịch vụ SMS của thiết bị di động đã bị chiếm dụng.
302 Thao tác thực hiện bởi lệnh AT không được cho phép. 303 Thao tác thực hiện bởi lệnh AT không được hỗ trợ.
304 Một hoặc nhiều giá trị tham số gắn với lệnh AT không hợp lệ. (Với chế độ PDU)
305 Một hoặc nhiều giá trị tham số gắn với lệnh AT không hợp lệ. (Với chế độ văn bản)
310 Không có thẻ SIM.
311 Thẻ SIM đòi hỏi phải nhập mã PIN.
312 Thẻ SIM đòi hỏi phải nhập mã PH-SIM PIN. 313 Lỗi thẻ SIM.
314 Thẻ SIM bận. 315 Thẻ SIM hỏng. 2.3.5 Mã lỗi +CMS
Mã kết quả không được yêu cầu
Là những mã kết quả được gửi từ GSM/GPRS modem để cung cấp về sự xảy ra của một sự kiện nào đó. Ví dụ, chúng ta có thể dùng lệnh +CNMI (New Message Indication to TE) để yêu cầu GSM/GPRS modem gửi các mã kết quả “+CMTI” tới máy tính mỗi khi có tin nhắn SMS được nhận từ SMSC.
Dưới đây là một vài mã kết quả liên quan tới SMS:
CDS: được dùng để chuyển một tin nhắn SMS mới nhận thông báo tình trạng tới thiết bị đầu cuối.
CDSI: được dùng để nhắc nhở thiết bị đầu cuối về một tin nhắn SMS mới thông báo tình trạng đã được nhận và vị trí trong bộ nhớ lưu nó.
CMT: được dùng để chuyển một tin nhắn mới nhận vào thiết bị đầu cuối.
CMTI: được dùng để nhắc nhở thiết bị đầu cuối có tin nhắn mới nhận và vị trí nó được lưu trong bộ nhớ.
Một số lệnh AT được dùng
Một số thuật ngữ sử dụng: Carriage return (Mã ASCII 0x0D). : Line Feed ( Mã ASCII 0 x0 A).
MT: Mobile Terminal - Thiết bị đầu cuối mạng (trong trường hợp này là module Sim900).
TE : Terminal Equipment - Thiết bị đầu c uối (vi điều khiển, máy tính). Dưới đây là một số lệnh AT thường gặp
- Lệnh ATZ
Lệnh ATZ dùng thiết lập lại (reset) tất cả các tham số hiện tại theo mẫu được người dùng định nghĩa. Lệnh trả về của modem là lệnh OK. Mẫu người dùng định nghĩa trước đó được lưu trên bộ nhớ cố định. Nếu không thiết lập lại được theo mẫu của người dùng định nghĩa thì nó sẽ reset lại theo đúng các tham số mặc định của nhà sản xuất. Bất cứ lệnh AT cộng thêm nào trên cùng một dòng với lệnh ATZ đều không được thực hiện
- Lệnh AT+CMGR
Lệnh AT+CMGR được dùng để đọc tin nhắn trên một ngăn nào đó trên sim điện thoại. Cấu trúc lệnh như sau: AT+CMGR=i, với i là ngăn bộ nhớ chứa tin nhắn trong sim.
Đáp ứng trở về là lệnh OK nếu ngăn i có chứa tin nhắn. Nếu ngăn i không chứa tin nhắn thì sẽ xuất hiện thông báo lỗi trả về ERROR. Ví dụ khi gõ lệnh AT+CMGR=1 thì sim900 sẽ đọc tin nhắn tại ngăn số 1 của bộ nhớ sim điện thoại gắn ngoài.
- Lệnh AT+CMGS
Lệnh AT+CMGS dùng để gửi tin nhắn SMS tới một số điện thoại cho trước . Cú pháp gửi tin như sau:
- AT+CMGS= “số điện thoại cần gửi” - Nội dung tin nhắn
- ESC/Ctrl Z
Số điện thoại cần gửi phải được đặt trong dấu ngoặc kép. Sau khi gõ xong số điện thoại thì cần thực hiện lệnh enter để xuống dòng và bắt đầu nội dung tin nhắn. Kết thúc lệnh này bằng việc thực hiện lệnh Cltr Z.
Ví dụ lệnh gửi tin nhắn tới số 0989196980 với nội dung “abcd” được thực hiện tại chế độ text trong phần mềm lập trình CCS như sau:
printf("AT+CMGS=\"0978306385\"\r\n"); delay_ms(500);
printf("abcd");// nội dung tin nhắn delay_ms(500);
putc(26); // ctrl +Z delay_ms(500); - AT+CMGD
Lệnh AT+CMGD dùng dể xóa tin nhắn SMS trên sim. Cấu trúc lệnh như sau: AT+CMGD=i
Với i là ngăn bộ nhớ chứa tin nhắn cần xóa. Nếu ngăn i chứa tin nhắn thì đáp ứng trả về là OK, còn nếu việc thực hiện tin nhắn không thực hiện được như ngăn i không có tin nhắn, hoặc lỗi kết nối tới sim, lỗi sóng thì trả về sẽ là ERROR.
Ví dụ xóa tin nhắn từ ngăn số 1 của sim: AT+CMGD=1. - Lệnh ATE
Lệnh này dùng để thiết lập chế độ lệnh phản hồi trở lại . Đáp ứng trở lại là OK. Lệnh ATE có hai tham số hoàn toàn khác nhau:
- ATE0: tắt chế độ phản hồi - ATE1: bật chế độ phản hồi.
Khi giao tiếp module sim900 với phần mềm terminal trên máy tính, nếu ta dùng lệnh ATE0 thì khi gõ các lệnh AT khác thì không nhìn thấy lệnh ta gõ mà chỉ nhìn thấy kết quả trả về của sim900. Ngược lại, khi dùng lệnh ATE1 thì sẽ nhìn được cả lệnh ta gõ lên và lệnh sim900 trả về.
- Lệnh AT&W
Lệnh AT&W được dùng để lưu cấu hình cài đặt được thiết lập bởi các lệnh ATE và AT+CLIP vào bộ nhớ (Lệnh AT+CLIP để cài đặt cuộc gọi). Đáp ứng trả về khi thực hiện lệnh này là OK.
Lệnh AT+CMGF dùng để lựa chọn định dạng tin nhắn SMS, với hai chế độ là text và PDU, cụ thể như sau:
AT+CMGF=1: lựa chọn sử dụng tin nhắn ở chế độ văn bản AT+CMGF=0: lựa chọn sử dụng tin nhắn ở chế độ PDU
Đáp ứng trả về là “OK” nếu như modem hỗ trợ, ngược lại, nếu modem không hỗ trợ chế độ định dạng tin nhắn là text hoặc PDU thì đáp ứng trả về sẽ là “ERROR”.
- Lệnh AT+CNMI
Lệnh này dùng để thông báo có tin nhắn mới đến. Với các tham số khác nhau thì mỗi khi có tin nhắn, đáp ứng trả về cũng sẽ khác nhau.
Ví dụ về các lệnh AT+CNMI khác nhau khi cùng nhận một tin nhắn SMS có nội dung giống nhau: AT+CNMI=1,1,0,0,0 sẽ trả về: +CMTI: "SM",10 AT+CNMI=2,2,0,0,0 sẽ trả về: +CMT: "+0978306385","","12/09/19,14:21:42+28" Abcdef
Như vậy, chúng ta thấy rằng, với trường hợp 1 thì nội dung tin nhắn được lưu trực tiếp vào ngăn số 10 của sim. Nội dung của tin nhắn này chỉ được đọc bằng lệnh AT+CMGR=10. Còn trong trường hợp số 2, nội dung tin nhắn được hiển thị ra cùng với thời gian và số điện thoại.
- Lệnh AT+CSAS
Lệnh AT+CSAS dùng để lưu các thiết lập SMS do người dùng đã cài đặt trước đó. Lệnh này sẽ lưu trực tiếp các thông số đã cài đặt cho tin nhắn SMS như các lệnh AT+CMGF=1; AT+CNMI=2,2,0,0,0...và còn nhiều lệnh khác liên quan tới tin nhắn SMS đều được lưu lại bởi lệnh AT+CSAS này.
Trên đây là một số lệnh AT thường dùng để GSM/GPRS modem xử lý với tin nhắn SMS. Và cũng chính các lệnh cơ bản này được sử dụng trong việc viết chương trình điều khiển thiết bị có sử dụng trong đồ án này. Sim900 đóng vai trò là Mobile Terminal . Ngoài ra, còn rất nhiều tập lệnh AT dùng cho sim900 để phục vụ cho các quá trình khác nhau như thực hiện cuộc gọi, kết nối GPRS, cài đặt thời gian, đặt mật khẩu và còn nhiều chức năng khác phục vụ trong quá trình hoạt động của modem .
Ứng dụng:
GSM Module Sim900 cho phép ta triển khai các ứng dụng giám sát/điều khiển dựa trên tin nhắn SMS, hoặc công nghệ GPRS cho phép giám sát ngay trên nền web.
Hình 2.3 Ứng dụng mô hình triển khai thực tế
Hình 4: Ứng dụng của GSM MODULE SIM900
GSM Module Sim900 cho phép điều khiển các thiết bị điện trong nhà như đèn quạt, máy tính, các thiết bị sử dụng điện 220V, thiết bị công suất thấp…Đồng thời GSM Module Sim900 cũng cập nhật và giám sát các thiết bị bằng các cảm biến mà người dùng tùy chọn thông qua các mạch vi điều khiển.
2. Hướng dẫn sử dụng:
GSM Module Sim900 hoạt động với mức điện áp từ 3.2V – 4.8V, yêu cầu dòng cung cấp 2A. Simcom khuyên nên sử dụng mạch nguồn xung 3A dùng IC ổn áp LM2576 hoặc LM2596. Để bật/tắt GSM Module Sim900 ta kích một xung mức cao vào chân số 1 trong thời gian khoảng 1s, lúc này đèn Led status sẽ sáng, sau đó nhấp nháy với tần suất nhanh báo hiệu Sim900 đang khởi động và tìm mạng. 10s sau Led status nhấp nháy chậm lại báo hiệu Sim900 đã hoạt động bình thường.Với các ngõ giao tiếp được thiết kế sao cho thuận tiện nhất cho người sử dụng, bạn có thể tự phát triển ý tưởng và làm ra một sản phẩm “hand made” hiện đại nhưng cũng rất thiết thực với cuộc sống Để test SIM900 với máy vi tính ta cần một board giao tiếp máy tính
truyền nhận dữ liệu từ cổng UART của SIM900 với bất kì một phần mềm Terminal nào trên máy vi tính.
Để hướng dẫn test GSM Module Sim900 sử dụng mạch nguồn
LM2596 STEP DOWN và mạch giao tiếp USB to UART do AT-COM. Sau khi kết nối ta sử dụng phần mềm Terminal.exe để giao tiếp máy tính với GSM Module Sim900
Test GSM Module Sim900: Bước 1: Khởi động SIM900
- Sau khi khởi động SIM900 ta sẽ nhìn thấy trên màn hình như sau… RDY
+CFUN: 1 +CPIN: READY Call ready
- Màn hình hiện 4 dòng như trên tức là SIM900 đã khởi động hoàn tất Bước 2: Test kiểm tra đường truyền
- Để kiểm tra đường truyền ta gởi lệnh AT cho sim ta gõ từ bàn phím lệnh AT và nhấn enter. Lúc đó trên màn hình sẽ hiển thị:
At OK
- Nếu nhận được thông báo OK tức là đường truyền đang truyền tốt. Bước 3: Test nhận cuộc gọi:
- Sau khi test gởi AT thành công ta dùng một điện thoại khác để gọi vào sim trên GSM Module Sim900 để test nhận cuộc gọi.
SIM900 hoạt động tốt sẽ trả về màn hình như sau: Ring
NO CARIER
Bước 4: Test nhận tin nhắn
Đầu tiên ta phải cấu hình tin nhắn của SIM900 với định dạng là kiểu text Cấu trúc lệnh như sau: AT+CMGF=1 Gõ Enter
Bây giờ ta sẽ dùng một điện thoại khác để gởi một tin nhắn vào SIM900. Nếu SIM900 hoạt động tốt sẽ nhận chuỗi như sau:
+CMT: “+84978306385”,””,”12/12/26,09:57:27+28” Test module sim900
Bước 5: Test gọi
- Bước tiếp theo là test cho sim thực hiện cuộc gọi ta dùng lệnh:
Cú pháp lệnh: ATDxxxxxxxxxx; Gõ Enter (xxxxxxxxxxx: là số điện thoại cần gọi). Nếu muốn kết thúc cuộc gọi dùng lệnh ATH để kết thúc cuộc gọi.
Cú pháp lệnh: ATH Gõ Enter
Nên nhớ sau khi đánh xong dòng lệnh ATD; gõ Enter tiếp theo phải nhấn tổ hợp phím Ctrl+z thì sim mới hiểu và thực hiện cuộc gọi.
Atd0978306385; OK BUSY
Bước 6: Test nhắn tin
- Để test nhắn tin ta dùng lệnh
AT+CMGS=”xxxxxxxxxxx” (xxxxxxxxxxx: là số điện thoại cần nhắn tin) >nội dung tin nhắn
- Sau khi nhập nội dung tin nhắn và cuối cùng là tổ hợp phím Ctrl+z để sim hiểu và gởi tin nhắn đi. Sau đây là các thao tác trên màn hình:
+CMT : “+84978306385”,””,”12/12/26,09:57:27+28” Test module sim900
- Sim trả về OK tức là đã gởi thành công tin nhắn. Bước 7: Test kiểm tra tài khoản:
- Để kiểm tra tài khoản ta dùng lệnh ATD*101# đối với sim trả trước và Cú pháp lệnh: ATD*112# đối với sim trả sau.
Atd *112# ok
+CUSD: 0,”No truoc 229.493d. Cuoc p/sinh tam tinh den het 25/13: 103.681d(da tru KM, goi cuoc...).”,64
CHƯƠNG III: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
Hình 3.1 Sơ đồ khối kết nối vi điều khiển với modul sim 900 3.1 Kiến trúc phần cứng
Mô tả phần cứng:
Vi điều khiển ATMEGA 8 kết nối với module Sim 900, mạch biến điện trở (giả lập cho nguồn tín hiệu điện áp accu DC lối vào). AVR được lập trình lấy mẫu tín hiệu điện áp thông qua biến trở để so sánh với giá trị điện áp tham chiếu Vref, sau khi được xử lý bằng các thuật toán, giá trị điện áp được gửi đến module Sim thông qua chuẩn nối tiếp UART. Giá trị điện áp đo được gửi đến số điện thoại đã gửi lệnh yêu cầu. Sau đấy từ điện thoại ra lệnh (nhắn một tin với cú pháp đã được xác định) tới số điện thoại được đặt trong module sim900, tín hiệu dữ liệu tin nhắn nhận được lại được truyền về vi điều khiển Atmega 8, VĐK nhận tín hiệu điều khiển đưa ra tín hiệu điều khiển Rơ le tắt/mở đèn điện AC theo yêu cầu.
Cấu Trúc:
Hình 3. 2 Sơ đồ khối của hệ thống
Mạch sơ đồ khối nguồn cấp
Hình 3.3 mạch nguồn cung cấp
- Mạch nguồn lấy điện áp chuẩn 5 lối vào được bảo vệ diot, cầu chì chịu
dòng 1A, qua AMS1117 cấp điện áp lối ra 3.3 vdc .
- Nguồn cấp 5V thứ hai có thể lấy từ cổng USB.
Kết nối mạch ATmega8 với các Header
Nhiệm vụ của ATmega8:
-ATmega8 có nhiệm vụ kết nối với modul Sim 900 qua giao diện cổng RS232, nhận lệnh, thực thi lệnh bằng cách điều khiển hay thu thập dữ liệu rồi truyền trả lại ModelSim
Giao diện kết nối RS232
Hình 3.5 Mạch RS232
Mạch phân áp tham chiếu điện áp DC
Hình 3.6 Cầu phân áp biến trờ
ADC/ VCC = R1 / (R1 + R2) =>ADC = VCC.R1 (R1 + R2) Lấy điện áp on chip để so sánh Vref=2.56v
Biến trở VR3 thay đổi khiến cho giá trị lối ra ADC thay đổi theo công thức trên Mạch nguyên lý công suất điều khiển lối ra
Hình 3.7 mạch Rơle đóng ngắt tải công suất
Mạch công suất lối ra làm nhiệm vụ khuếch đại tín hiệu điều khiển từ Atmega 8 thông qua Trasistor, Rơle đảo chiều đóng cắt điều khiển thiết bị điện AC, Rơle sử dụng nguồn 12-15vdc.
3.2 Tích hợp mạch phần cứng
Hình 3.9 Mạch ModulSim900
Giao diện kết nối giữa Mạch ATmega8 và ModulSim900
3.3 Công cụ lập trình
3.3.1 Chương trình phần cứng
CodeVisionAVR là một trình biên dịch C tích hợp môi trường phát triển và tự động sinh mã chương trình. CodeVisionAVR được thiết kế cho các họ vi điều khiển AVR. Trình biên dịch này dựa trên các thành phần của ngôn ngữ ANSI C cũng như cấu trúc AVR và một số thành phần mở rộng để phù hợp với kiến trúc của AVR
Bước 1: Tạo một Project mới vào File ->New -> Project
Hình 3.10 Tạo project
Hình 3.11 Chọn lọa chip
Bước 3 : Cấu hình chọn Chip, cấu hình Ports, cổng USART, ADC theo yêu cầu bài toán sau đó tự chương trình phần mềm sẽ sinh ra các đoạn mã đã được cấu hình theo ý muốn.
Hình 3.11 Chọn cấu hình ATmega8
Hình 3.12 Giao diện chương trình
Các hàm biến được định nghĩa xử lý dữ liệu:
Hình 3.13 Các hàm biến được định nghĩa
Lập trình cấu trúc cây:
Mô tả quá trình gọi hàm xử lý số liệu đầu vào từ modulsim hay thu thập tín hiệu đo từ phần cứng đầu vào
Hình 3.15 mô tả chu trình gọi hàm xử lý dữ liệu
3.3.1 Chương trình phần mềm trên điện thoại di động Android
Android là hệ điều hành ứng dụng phổ biến trên các dòng điện thoại di động smart được phát triển bới Google dựa trên nền tảng Linux, các nhà phát triển Android dựa trên ngôn ngữ Java, đây là ngôn ngữ lập trình hướng đối tượng Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy, Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn. Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn.
Hình 3.16 Tạo project chương trình java
Các hàm, biến xử lý tạo giao diện Android trên máy điện thoại
Hình 3.19 Sơ đồ cấu thành người dùng
Hình 3.20 Tương tác gọi hàm xử lý giữa các khối chức năng
Trong Form của Project trên được tạo bởi Java ta tạo giao diện của chương trình như sau:
Hình 3.18 Giao diện chương trình trên điện thoại khi hoạt động
Nhập số điện thoại (dưới phần cứng) cần điều vào ô Phone number
1. Lệnh được gõ vào box SMS content sau đó nhấn nút Send, thông tin kết
quả trả về sẽ hiện thị trên Box information
2. Điều khiển đèn ON/OFF: nhấn công tắc ON/OFF sẽ gửi lệnh truyền tin
đến phần cứng, trong quá trình xử lý, tín hiệu trả lại kết quả OK thì đèn sẽ sang.