ShieldSim908

Từ ChipFC Wiki
Bước tới: chuyển hướng, tìm kiếm
Shield908
ShieldSIM908

Thông tin chung

Xem SIM908 Shield trên trang chủ

Giới thiệu

  • SIM908 là module GSM/GPRS/GPS của hãng SIMCom được thiết kế dưới dạng module chipset, nhỏ gọn, giá thành thấp, hoạt động ổn định và phù hợp cho nhiều mục đích sử dụng. Module SIM908 có các tính năng cơ bản của một chiếc điện thoại như gọi điện thoại, nhắn tin, truy cập GPRS,... và chức năng của một thiết bị định vị GPS.
  • Shield SIM908 của ChipFC thiết kế dựa trên chipset SIM908, tương thích hoàn toàn với Arduino. Người dùng có thể cắm trực tiếp lên các bo Arduino (như Arduino UNO, ChipiUNO, ChipiPRO, ChipiLEO...) hoặc nối dây ra để sử dụng như là một mô đun riêng biệt với các bo vi điều khiển khác.
  • Shield SIM908 nhỏ gọn, được tích hợp các linh kiện, kết nối cần thiết, sẵn sàng cho người sử dụng để nghiên cứu, học tập hoặc làm demo nhanh chóng, tiện lợi các dự án có ứng dụng GSM/GPRS (như sử dụng mạng viễn thông, truya cập mạng internet) và GPS (như định vị, dò đường , tìm đường).

Thông số

  • Băng thông:
    • SIM908: Quad-band GSM/GPRS 850/900/1800/1900MHz
  • Giao diện giao tiếp UART (hỗ trợ cả 3.3V và 5V)
  • Điều khiển thông qua tập lệnh AT chuẩn (GSM 07.07 ,07.05) và các lệnh nâng cấp của SIMCOM
  • Nguồn cấp: các nguồn có thể dùng
    • Adapter 5-12VDC, 2-3A. Jack cắm tròn 3mm.
    • Pin Lipo 1-cell (3.7V).
  • Nhiệt độ hoạt động: -40°C đến +85°C
  • Jack cắm Phone & Mic chuẩn 3.5mm
  • Có nút reset bo Arduino
  • Kích thước: 63.5mm x 43.2mm x 12.0mm

Kết nối tín hiệu điều khiển

Chuẩn Shield của Arduino

Shield sim908 pinout.png

Shield SIM908 Arduino Mô tả
SIM908_TXD D2 Chân tính hiệu TXD của Shield SIM908 được nối mặc định với chân D2 của Arduino.

Đây là kết nối mặc định của sản phẩm khi xuất xưởng, người dùng có thể tùy chọn lại bằng jumper

SIM908_RXD D3 Chân tính hiệu RXD của Shield SIM908 được nối mặc định với chân D3 của Arduino.

Đây là kết nối mặc định của sản phẩm khi xuất xưởng, người dùng có thể tùy chọn lại bằng jumper

RI_H D7
PwrKey D8 Tín hiệu bật nguồn cho SIM908.

Tích cực mức cao (HIGH). Khi cần khởi động SIM908 người dùng cần kéo chân này lên mức cao trong khoảng >1 giây.

STATUS D9 Tín hiệu status, để Arduino lấy trạng thái của SIM908
GPS_TXD_H D10 Tín hiệu TXD của shiedld SIM908 dành cho GPS
GPS_RXD_H D13 tín hiệu RXD của shield SIM908 dành cho GPS
DTR_H D12

Ngoài ra các chân nguồn (5V, GND) và các chân tín hiệu thông dụng khác (RESET) cũng được kết nối sẵn giữa Shield SIM908 và Arduino.

Hành rào 10

Tập tin:Shield sim908 header10 pinout.png

Thứ tự chân Tên gọi Loại Mô tả
1 Status Output Theo dõi nhanh trạng thái hoạt động của module
2 Power Key Input Chân bật/tắt module (tín hiệu PowerKey), tích cực mức cao.
3 RI
4 RXD Input Chân nhận trong điều khiển UART, tương thích 3.3V/5V tùy thuộc vào VCC
5 DTR
6 TXD Output Chân truyền trong điều khiển UART, tương thích 3.3V/5V tùy thuộc vào VCC
7 GRx
8 GTx
9 GND Power Điện áp đất 0V
10 VCC Power Điện áp so sánh 3.3V/5V. Chỉ dùng để so sánh áp cho mô-đun chuyển áp tín hiệu, không có tác dụng cấp nguồn cho module

Sử dụng cơ bản

Khởi động

Thực hiện tuần tự các bước sau:

  • Cấp nguồn:
    • Có thể sử dụng Adapter chuyển AC-to-DC để cấp nguồn (khuyên dùng loại 5V/2A)
    • Phần nguồn rất quan trọng, nếu nguồn không đúng sẽ làm ảnh hưởng đến hoạt động của SIM900(A).
    • Jack đầu ra của Adapter thì ở giữa phải là cực dương, phía ngoài là cực âm.
    • Khi được cấp nguồn, đèn led màu đỏ Power sẽ sáng.
  • Nhấn nút khởi động: nhấn giữ nút PowerKey khoảng >1 giây. Khi thấy đèn led NetLight màu xanh lam chớp tắt liên tục tức là module đã được khởi động xong và đang hoạt động.


Chú ý:

  • Khi cần tắt mô đun SIM cũng nhấn giữ nút PowerKey đến khi đèn Status và NetLight tắt hẳn (khoảng 2 giây). Sau đó mới ngắt điện.
  • SIM908 được điều khiển thông qua các lệnh AT (tập lệnh AT - AT Command Set). Để SIM908 thực hiện các tác vụ như: gọi điện thoại, gửi tin nhắn, ... ta cần truyền lệnh điều khiển nó. Hãy xem tiếp phần sau.

Điều khiển thông qua máy tính

Trong phần này chúng ta sẽ dùng máy tính kết nối với SIM908 để truyền lệnh điều khiển. Bạn cần thực hiện tuần tự theo các bước sau:

Kết nối

  • Dùng mô-đun USB-to-Serial làm trung gian giữa Shield SIM908 và máy tính:
Kết nối USB-to-Serial với SIM908 theo thứ tự trong bảng sau:
USB to Serial - FTDI Shield SIM908
+ VCC
- GND
Rx TXD
Tx RXD
  • Kết nối USB-to-Serial với máy tính dùng cáp USB. Xem thêm USB to Serial - FTDI
  • Lắp SIM Card và Anten cho Shield SIM908
  • Cấp nguồn và nhấn giữ nút PowerKey để khởi động
Hình thu nhỏ có lỗi: Không có tập tin

Phần mềm truyền lệnh

  • Phần mềm trên máy tính: Trên máy tính cần có một phần mềm để truyền lệnh điều khiển, bạn có thể sử dụng Terminal, có thể tải về tại đây. Terminal là phần mềm cho hệ điều hành Windows, chạy trực tiếp không cần cài đặt. Sau khi tải về bạn chỉ cần giải nén và nhấp đúp vào tập tin .exe để chạy chương trình.
  • Các thao tác sử dụng cơ bản

Hướng dẫn SIM900 Terminal.jpg



Các mũi tên màu đỏ trên hình được giải thích trong bảng sau:

Số thứ tự Tên gọi Giải thích
1 Baudrate Tốc độ truyền dữ liệu. Bạn chọn 115200.
2 ReScan Quét tìm tất cả các cổng COM có trong máy tính và liệt kê vào danh sách COM Port. Trường hợp khi nhấn nút ReScan mà không thấy cổng COM nào xuất hiện trong danh sách COM Port thì hãy xem lại việc kết nối mô-đun USB to Serial - FTDI với máy tính và việc cài đặt driver.
3 COM Port Danh sách COM Port
4 Connect Nhấn nút này để kết nối với cổng COM đã chọn trong danh sách COM Port
5 +CR Tự động thêm ký tự kết thúc (0x0D) vào sau câu lệnh khi được gửi bằng nút Send. Khi sử dụng SIM908 bạn cần chọn ô này.
6 Ô các ký tự cần gửi qua cổng COM đã kết nối.
7 Send Nhấn nút này để gửi các ký tự đã nhập trong ô 6 xuống SIM908 thông qua cổng COM đã kết nối.
8 Receive Khung hiển thị các ký tự mà SIM908 trả về thông qua cổng COM đã kết nối.

Các lệnh cơ bản

  • AT

Lệnh AT là lệnh kiểm tra. Khi gửi lệnh AT mà SIM908 trả lời OK tức SIM908 đang hoạt động bình thường.

Máy tính hỏi:
AT
SIM908 trả lời:
AT
OK
  • ATD

Lệnh ATD dùng để thực hiện cuộc gọi. Cú pháp ATD[số điện thoại];. Chú ý là có ký tự dấu chấm phẩy ở cuối. Khi SIM908 trả lời OK thì cuộc gọi thực hiện thành công, đang chờ đầu dây bên kia trả lời. Nếu không hãy kiểm tra lại việc lắp SIM Card, Anten...

Máy tính hỏi:
ATD0913005013;
SIM908 trả lời:
ATD0913005013;
OK
  • ATH

Lệnh ATH dùng để ngắt/dừng cuộc gọi đang thực hiện.

Máy tính hỏi:
ATH
SIM908 trả lời:
ATH
OK
  • AT+CMGS

Lệnh AT+CMGS dùng để gửi tin nhắn ký tự. Cú pháp AT+CMGS="[số điện thoại]". Sau khi SIM908 nhận được lệnh này sẽ trả về ký tự ">". Tiếp đó bạn gửi tiếp nội dung tin nhắn và kết thúc phần tin nhắn bằng 0x1A và 0x00.

Máy tính hỏi:
AT+CMGS="0913005013"
SIM908 trả lời:
>
Máy tính hỏi:
Hello$1A$00
SIM908 trả lời:
Hello
+CMGS: <mr>
OK
Trong đó <mr> (Message Reference) là một số.

Sử dụng với Arduino

Kết nối

  • Kết nối bo Arduino với Shield SIM908 thật đơn giản bằng cách cắm chồng lên nhau như hình sau:
Hình thu nhỏ có lỗi: Không có tập tin
  • Kết nối bo Arduino với máy tính bằng cáp USB.
  • Cấp nguồn riêng cho Shield SIM908 bằng Adapter như ở các phần trên.
  • Chắc chắn rằng bạn đã lắp SIM Card và Anten cho Shield SIM908 trước khi khởi động bằng cách nhấn nút PowerKey trên Shield SIM908.

Tải thư viện

  • Cộng đồng nguồn mở đã phát triển thư viện GSM/GPRS/GPS cho Arduino giúp bạn tiết kiệm thời gian và dễ dàng tiếp cận với các mô-đun GSM/GPRS/GPS sử dụng tập lệnh AT.
  • Xem link tải về ở phần Tham khảo thêm bên dưới.
  • Xem thêm Thư viện Arduino nếu bạn chưa biết cách sử dụng một thư viện Arduino.

Lập trình điều khiển

Sau khi tải thư viện GSM/GPRS/GMS về và giải nén vào thư mục Libraries của thư mục chứa Arduino IDE, bạn mở chương trình Arduino IDE lên để viết chương trình.

Trong thư mục chứa thư viện là GSMShield, bạn hãy mở tập tin này doc->List.txt, trong đó có liệt kê các hàm ở các class và giải thích cách sử dụng các hàm này như thế nào. Trong đó bạn hãy chú ý tới các class SMS dùng để xử lí với tin nhắn, class CALL dùng để xử lí cuộc gọi và class InetGSM dùng để xử lí với tín hiệu GPRS.

Chương trình gọi điện và nhắn tin đơn giản

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "call.h"
#include "sms.h"

CallGSM call;            //Tạo mới một đối tượng CallGSM để thực hiện cuộc gọi
SMSGSM sms;              //Tạo mới một đối tượng SMSGSM để thực hiện nhắn tin
boolean started = false; //Cờ kiểm tra

void setup() 
{
  Serial.begin(9600);    //Khởi động Serial phục vụ việc debug
  Serial.println("GSM Shield testing.");

  if (gsm.begin(2400)){  //Khởi động việc kết nối SIM900(A)
    Serial.println("status=READY");
    started = true;      //Kết mối với SIM900(A) thành công
  }
  else 
  {
    Serial.println("status=IDLE");
  }
};

void loop() 
{
  if(started){
    call.Call("0913005013");        //Thực hiện cuộc gọi đến số 0913005013
    Serial.println("Calling");
    
    delay(10000);                   //Chờ 10 giây
    
    call.HangUp();                  //Gác máy
    Serial.println("HangUp");
    
    delay(2000);                    //Chờ 2 giây
    
    sms.SendSMS("0913005013", "Hello SIM900");//Gửi tin nhắn đến số 0913005013, bạn nên thay bằng số điện thoại của bạn
    Serial.println("Send sms");
    
    delay(2000);                    //Chờ 2 giây
    
    Serial.println("Done");
    started = false;                //Để không thực hiện tiếp
  }
  delay(1000);
};

Kết quả

Kết quả quan sát qua Serial Monitor của Arduino IDE


Kết quả SIM900A Arduino.jpg

Tham khảo thêm

Chú thích