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ả

Arduino - Processing Basic 1

Xin chào mọi người, lâu nay trên cộng đồng của chúng ta đã có nhiều bài viết về arduino-processing, một phương thức điều khiển arduino bằng máy tính sử dụng ngôn ngữ Java tuy đã xuất hiện từ lâu nhưng nó rất hữu ích cho các dự án cần về giao diện điều khiên hay giúp chúng ta luyện tập về ngôn ngữ Java. Những bài đã có trên cộng đồng đa số là về những dự án mẫu ứng dụng processing nên gây khó khăn cho các bạn newbie muốn tìm hiểu và ứng dụng nên mình xin có một vài bài viết hướng dẫn cơ bản về Processing.

lên
14 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

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.