SIM900(A)-KIỂM TRA TÀI KHOẢN TRÊN MÔ ĐUN SIM BẰNG PHƯƠNG TIỆN KHÁC

I. Mở đầu

Hôm nay chúng ta sẽ tiến thêm một bước mới về kiểm soát Sim900A từ xa, một ứng dụng rất cần thiết trong các dự án sử dụng mô đun GSM lâu dài và mở rộng ra sẽ là nạp tài khoản, lấy thông số thời gian, điều khiển nhiều thiết bị bằng DTMF..v.v..

Trước khi bước bào bài viết, ai chưa nắm về mô đun Sim này thì nghiên cứu kĩ trên cộng đồng nhá và phải đọc qua bài viết này để có thể nắm bắt tốt hơn các vấn đề trong bài này nhá!smiley

Thực chất trọng tâm của bài viết này chỉ giúp mọi người có cách xử lí với các chuỗi kí tự để tiến hành nhắn tin có điều kiện....còn bản chất của nó thì pro nào đọc bài trước của mình là ý tưởng nó ào ra ngay thôi! Và mở rộng bài viết này lên tí là Sim sẽ tự kiểm tra tài khoản theo định kì và tự nhắn tin cho ta hoặc khi tài khoản sắo hết nó sẽ nhắn như tổng đài vậy.

Một chia sẻ nhỏ

Mình rất đau khi nhận tin nhắn của các bác tổng đài:tai khoan cua quy khach hien con duoi 1000d,quy khach vui long nap them tien vao tai khoan de su dung dich vu,cam on"crying.

II. Hướng giải quyết

Đây cũng là một chương trình khá là đơn giản, điểm mấu chốt chính là xử lí thông tin cần có như thế nào, thông tin cần có ở đây chính là tài khoản của sim trên mô đun GSM chúng ta sử dụng. Ta sẽ đòi hỏi sim trả lời bằng một tin nhắn (hoặc cuộc gọi) với lệnh thực hiện quá trình kiểm tra tài khoản rồi xử lí thông tin có được phản hồi lại cho ta biết bằng một văn bản SMS. Trong phạm vi bài viết mình chỉ đề cập đến dùng SMS để kiểm tra, cuộc gọi thì tương tự! (ai chưa biết thì hãy click vào các đường dẫn mình đã đánh dấu nhá!).Ở đây chúng ta sử dụng điện thoại hay một công cụ gửi tin nhắn gửi đến sim một tin nhắn tương đương với lệnh thực hiện, lệnh này tùy chúng ta!

1. Code tham khảo

#include "SIM900.h"
#include "SoftwareSerial.h"
#include "sms.h"
SMSGSM sms;
char state[50], msg[50], resp[50], phong[100]="TTL Phong";//khoi tao cac xau ki tu
char smstext[160];//noi dung tin nhan den
char number[20];//so dien thoai tin nhan den theo dinh dang quoc te
int numdata;//bien nay dung cho doc du lieu
int flag=0;   
boolean started = false; //trạng thái modul sim
void setup() 
{
  Serial.begin(9600);
 
  Serial.println("GSM Shield testing.");
 
  if (gsm.begin(2400))
 
    Serial.println("\nstatus=READY");
 
  else Serial.println("\nstatus=IDLE");
}

void loop() {
 if(started){
    char pos; //địa chỉ bộ nhớ sim (sim luu tối đa 40 sms nên max pos = 40)
    pos = sms.IsSMSPresent(SMS_UNREAD); // kiểm tra tin nhắn chưa đọc trong bộ nhớ
    //hàm này sẽ trả về giá trị trong khoảng từ 0-40
    if((int)pos){//nêu có tin nhắn chưa đọc
      if(sms.GetSMS(pos, number, smstext, 160)){
        Serial.print("So dien thoai: ");
        Serial.println(number);
        Serial.print("Noi dung tin nhan: ");
        Serial.println(smstext);
        if(strcmp(smstext,"KIEMTRA")==0){//so sánh 2 chuỗi,neu trong SMS gui toi co cuoi ky tu KIEMTRA moi thuc hien kiem tra
          gsm.SimpleWriteln("AT+CUSD=1,\"*101#\"");   
          delay(5000);//phai doi 5 giay moi gui va doc het du lieu
          char resp[100];//khoi tao xau cho noi dung tra ve
          gsm.read(resp, 100); //lay no
          Serial.println(resp);//in ra lan 2
          delay(100);
          strcpy(phong,resp);//chep toan bo xau noi dung ra xau ta muon
          Serial.println(phong);//in ra thanh cong
          delay(100);
          sms.SendSMS(number, phong); //nhan tin tra ve noi dung
          delay(100);
        } else {
          Serial.println("Co tin nhan den nhung sai cu phap");
        }
      }
      sms.DeleteSMS(byte(pos));//xóa sms vừa nhận
    }
 delay(1000);
  }
}

2. Mở rộng

Lưu ý rằng bạn có thể có một nội dung trả lời ngắn gọn như là chỉ các con số của tài khoản...điều đó sẽ giúp ta tiết kiệm tiền cho sim, muốn được điều đó chỉ cần sử dụng các kĩ thuật xử lí chuỗi kí tự trong ngôn ngữ lập trình C++.

Chúng ta có thể phát triển hơn nữa như sim sẽ tự kiểm tra tài khoản theo định kì và nếu tài khoản còn ít (do chúng ta định nghĩa bao nhiêu là ít) nó sẽ tự động nhắn tin báo cho ta biết...

III. Kết thúc

Chỉ đơn giản thế thôi,chúc bà con cô bác thành công! Mọi người hãy chờ đón các bài viết tiếp theo trong chuỗi công phá chức năng GSM mô đun Sim900A của mình nhá, mong mọi người ủng hộ, mình sẽ up video đề mô lên (có thể là ngày mai khi mình mượn được cái điện thoại để quay,kkkdevil), cảm ơn mọi người. 

Youtube: 
lên
20 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

SIM900A-NẠP TIỀN TỪ XA VÀO SIM TRÊN MÔ ĐUN

Đây là vấn đề mình đã nghiên cứu ra từ lâu rồi nhưng bận quá, gần cả tháng chưa viết bài lại. Và bây giờ làm một phát vào năm học mới cho nó xôm. Không dài dòng lôi thôi, vấn đề nạp tài khoản từ xa cũng rất là hữu ích cho nhiều dự án có GSM và khai thác rất nhiều về chúng nên việc hao tổn tài khoản là tất nhiên, có thể các bạn có các mẹo tận dụng tài nguyên như dùng sim khuyến mãi, học sinh sinh viên hay các gói các loại thuê bao gì đấy.. để tiết kiệm nhưng về mặt tiện lợi và lâu dài thì đây là giải pháp tối ưu nhất!hehe,vào bài thôi!winkVà trước khi đọc tiếp đề nghị quá vị, quáy bà con cô bác nội ngoại "n" họ xem lại các bài viết khác về Sim900A của mình với từ khóa Sim900 trên thanh tìm kiếm!devil

lên
21 thành viên đã đánh giá bài viết này hữu ích.

KHÓA THÔNG MINH - Cái nhìn tiếp cận các sản phẩm công nghiệp có tính ứng dụng cao - PHẦN II: Dùng-Đổi tự do mật khẩu (Sử dụng EEPROM)

Xin chào mọi người, hôm nay chúng ta tiếp tục với chuỗi bài về chiếc khóa thông minh nhưng đơn giản, bài viết trước chúng ta đã tiếp cận với kĩ thuật đặt mật khẩu "chết" -mặc định cho khóa thì hôm nay sẽ lên một bước mới là đổi mật khẩu tự do. Để hiệu quả của bài viết này cao hơn mời mọi người vui lòng đọc kĩ bài viết trước tại đây và hiển nhiên tất cả các bài viết đúng không ạ!wink

 

lên
18 thành viên đã đánh giá bài viết này hữu ích.