Hướng dẫn sử dụng Module Sim800C

Bài viết này sẽ hướng dẫn các bạn sử dụng Module Sim800C do MLAB sản xuất một cách nhanh nhất.

Trước khi bắt đầu, các bạn cần chuẩn bị các công cụ và tài liệu đi kèm.

Chuẩn bị về phần cứng:

- Module sim800C đã tích hợp với module nguồn DC-DC

http://mlab.vn/1223236-sim800c-gsm-shield-dung-cho-arduino.html

- Module UART: các bạn có thể lựa chọn module PL2303TA

http://mlab.vn/585225-module-usb-to-uart-pl2303-ta.html

- Nguồn AC-DC: các bạn có thể sử dụng nguồn 12VDC/1A 

http://mlab.vn/1272384-adapter-dc-12v-1a.html

Phần mềm và tài liệu:

- Phần mềm SDIAGS

- Phầm mềm Hercules

- Tài liệu của hãng: tập lệnh AT

Các bạn có thể download phầm mềm và tài liệu tại đây.

Mọi thứ đã sẵn sàng, giờ bạn muốn biết Module Sim800C xem nó hoạt động như thế nào? Thực hiện 1 cuộc gọi hoặc nhắn tin bằng cách nào? khi có cuộc gọi đến hoặc tin nhắn đến thì Module Sim800C thể hiện như thế nào? kết nối GPRS?...

Cách nhanh nhất để bạn làm việc đó là các bạn test Module Sim800C với máy tính. Khi các bạn đã hiểu được Module Sim800C hoạt động như thế nào, cách điều khiển nó ra sao? thì việc lập trình một mạch MCU với Module Sim800c chỉ còn ở việc học lập trình truyền nhận giữ liệu UART mà thôi. Các bạn có thể mất vài ngày, hoặc 1 tuần nhưng các bạn sẽ làm được việc đó.

Trong bài viết này mình chỉ có thể hướng dẫn các bạn cách test Module Sim800C với máy tính, phần việc còn lại các bạn sẽ phải tự làm.

1 Các lệnh AT cơ bản hay sử dụng

     Các lệnh chung

           Mô tả : Kiểm tra đáp ứng của Module Sim 900A, nếu trả về OK thì Module hoạt động

           Mô tả : Chế độ echo là chế độ phản hồi dữ liệu truyền đến của module Sim 900A,

            x = 1 bật chế độ echo , x = 0 tắt chế độ echo (bạn nên tắt chế độ này khi giao tiếp với vi điều khiển)

           Mô tả : cài đặt tốc độ giao tiếp dữ liệu với Module Sim800C, chỉ cài được các tốc độ sau

           baud rate :    0  (auto), 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200

          Mô tả : lưu lại các lệnh đã cài đặt

     Các lệnh điều khiển cuộc gọi

          Mô tả : Hiển thị thông tin cuộc gọi đến

           Mô tả : Lệnh thực hiện cuộc gọi

          Mô tả : Lệnh thực hiện kết thúc cuộc gọi , hoặc cúp máy khi có cuộc gọi đến

          Mô tả : Lệnh thực hiện chấp nhận khi có cuộc gọi đến

      Các lệnh điều khiển tin nhắn

          Mô tả : Lệnh đưa SMS về chế độ Text , phải có lệnh này mới gửi nhận tin nhắn dạng Text

            Đợi đến khi có ký tự ‘>’ được gửi về thì đánh nối dung tin nhắn            

           Gửi mã Ctrl+Z  hay  0x1A để kết thúc nội dung và gửi tin nhắn

          Mô tả : Lệnh gửi tin nhắn

          x là địa chỉ tin nhắn cần đọc 

          Mô tả : Đọc một nhắn vừa gửi đến, lệnh được trả về nội dung tin nhắn, thông tin người gửi, thời gian gửi

          Mô tả : Xóa toàn bộ tin nhắn trong các hộp thư

          Mô tả :Hiển thị nội dung tin nhắn ngay khi có tin nhắn đến

Chú ý: sau mỗi lệnh các bạn thường thấy <CR><LF>  thực chất nó là hai mã điều khiển  <CR>  tương ứng 0x0D(hexa) ,<LF>  tương ứng 0x0A(hexa)           Nếu các bạn test trên máy tính sau mỗi lệnh các bạn chỉ cần ấn phím Enter

2 Giao tiếp Module Sim800C với máy tính để thực hiện chức năng Call/SMS

 

Giao tiếp Module Sim800C với máy tính để truyền nhận dữ liệu với server thông qua GPRS.

(Bổ xung thêm cho video: bạn phải tắt tường lửa windows của máy tính làm server thì module sim mới có thể kết nối được với server)

 
4 Giao tiếp Module sim800C với Arduino
Code tham khảo, điểu khiển bật tắt thiết bị băng tin nhắn
 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Bai toan : nhan tin dieu khien bat tat bong den
// Neu noi dung tin nhan la : LAMP_ON       thi bat bong den
// Neu noi dung tin nhan la : LAMP_OFF      thi tat bong den
 
 
const String myphone = "01689951815";     // Thay so cua ban vao day
const int PWR_KEY =  9;                          // Chan so 9 arduino uno dung lam chan dieu khien bat tat module sim800C
const int RELAY =  12;                              // Chan so 12 arduino uno dung lam chan dieu khien dong/cat Relay de On/Off den
 
String RxBuff = "";                                    // Khai bao bo dem nhan du lieu
                                                                // Tat ca du lieu nhan ve tu module sim deu duoc luu trong day 
 
int Index_Lamp_On = -1;                           // vi tri cua chuoi "LAMP_ON"
int Index_Lamp_Off = -1;                           // vi tri cua chuoi "LAMP_OFF"
 
void Gsm_Power_On();                                            // Bat module Sim800C
void Gsm_Init();                                                       // Cau hinh Module Sim800C
void Gsm_MakeCall(String phone);                            // Ham goi dien
void Gsm_MakeSMS(String phone,String content);     // Ham nhan tin
 
 
void setup() {
  Serial.begin(9600);                           // Cau hinh UART de giao tiep module Sim800C
 
  digitalWrite(RELAY, LOW);               // Khai bao chan  de dieu khien dong cat RELAY
  pinMode(RELAY, OUTPUT);
 
  digitalWrite(PWR_KEY, LOW);         // Khai bao chan PWR_KEY de dieu khien bat bat module Sim800C
  pinMode(PWR_KEY, OUTPUT);
  
  delay(1000);                       
  Gsm_Power_On();                                      // Bat Module Sim800C
  delay(50000);                                              // Đợi module sim kiểm tra kết nối mạng GSM     
  Gsm_Init();                                                 // Cau hinh module Sim800C
  Gsm_MakeCall(myphone);                          // Test cuoc goi 
  Gsm_MakeSMS(myphone,"I'm a test");       // Test tin nhan
}
 
void loop() {
  delay(1000);                                                                    // tre 1s 
  Index_Lamp_On = RxBuff.indexOf("LAMP_ON");              // Tim vi tri cua chuoi "LAMP_ON" trong bo dem nhan RxBuff
  if(Index_Lamp_On >= 0)                                                   // Neu tim thay "LAMP_ON" trong RxBuff
  {
    Index_Lamp_On = -1;                                                     // 
    RxBuff = "";                                                                   // Xoa bo dem
    digitalWrite(RELAY, HIGH);                                             // Dong Relay de bat den // Bat bong den
  }
  else
  {                                                                                    // Neu khong tim thay "LAMP_ON" thi tiep tuc tim "LAMP_OFF"
    Index_Lamp_Off = RxBuff.indexOf("LAMP_OFF");          // Tim vi tri cua chuoi "LAMP_OFF" trong bo dem nhan RxBuff  
    if(Index_Lamp_Off >= 0)                                                // Neu tim thay "LAMP_OFF" trong RxBuff
    {
      Index_Lamp_Off = -1;                                                   // 
      RxBuff = "";                                                                // Xoa bo dem
      digitalWrite(RELAY, LOW);                                           // Cat Relay de tat den
    }
  }
}
 
void serialEvent() {                                          // Chuong trinh ngat nhan du lieu
  while (Serial.available()) {                               // Doi den khi co du lieu nhan ve
    // get the new byte:
    char inChar = (char)Serial.read();                  // Doc mot byte du lieu vua nhan ve
    RxBuff += inChar;                                       // Ghi byte do vao bo dem nhan RxBuff (ta se xu ly RxBuff trong vong loop()) 
    if(RxBuff.length()>= 128)                              // Neu bo dem qua dai thi xoa bo dem di
    {
      RxBuff = "";
    }
  }
}
 
void Gsm_Power_On()
{
  digitalWrite(PWR_KEY, HIGH);                // Du chan PWR_KEY len cao it nhat 1s 
  delay(1500);                                            // o day ta de 1,5s
  digitalWrite(PWR_KEY, LOW);                  // Du chan PWR_KEY xuong thap
  delay(100);                                              // cac ban xem trong Hardware designed sim800C de hieu ro hon
}
 
void Gsm_Init()
{
  Serial.println("ATE0");                            // Tat che do phan hoi (Echo mode)
  delay(2000);
  Serial.println("AT+IPR=9600");              // Dat toc do truyen nhan du lieu 9600 bps
  delay(2000);
  Serial.println("AT+CMGF=1");                // Chon che do TEXT Mode
  delay(2000);
  Serial.println("AT+CLIP=1");                  // Hien thi thong tin nguoi goi den
  delay(2000);
  Serial.println("AT+CNMI=2,2");              // Hien thi truc tiep noi dung tin nhan
  delay(2000);
}
 
void Gsm_MakeCall(String phone)           
{
  Serial.println("ATD" + phone + ";");         // Goi dien 
  delay(10000);                                        // Sau 10s
  Serial.println("ATH");                              // Ngat cuoc goi
  delay(2000);
}
 
void Gsm_MakeSMS(String phone,String content)
{
  Serial.println("AT+CMGS=\"" + phone + "\"");     // Lenh gui tin nhan
  delay(3000);                                                     // Cho ky tu '>' phan hoi ve 
  Serial.print(content);                                          // Gui noi dung
  Serial.print((char)26);                                         // Gui Ctrl+Z hay 26 de ket thuc noi dung tin nhan va gui tin di
  delay(5000);                                                      // delay 5s
}
 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: