Ứng dụng: Bật tắt đèn ở bất kỳ đâu, Gửi tin SMS, truy cập GPRS
#gprs #gsm #gps #sim #sim900
- GSM là viết tắt của Hệ thống Toàn cầu về Truyền thông Di động và là tiêu chuẩn toàn cầu cho thông tin di động.
- GPRS là viết tắt của General Packet Radio Service. GPRS là dịch vụ di động trên 2G và truyền thông di động 3G.
Các ứng dụng:
- Kết nối Internet qua mạng GPRS
- Gửi và nhận SMS
- Thực hiện và nhận cuộc gọi điện thoại
Ứng dụng cho các dự án với Arduino như:
- Điều khiển từ xa các thiết bị điện tử - gửi SMS để bật tắt;
- Nhận thông báo - gửi SMS đến điện thoại di động của bạn nếu phát hiện chuyển động trong nhà của bạn;
- Nhận dữ liệu cảm biến - gửi SMS định kỳ đến điện thoại di động của bạn với dữ liệu hàng ngày.
Thông số kỹ thuật
- Dựa trên mô-đun SIM900 từ SIMCOM
- Cho phép bạn gửi SMS, MMS, GPRS và Audio qua UART bằng các lệnh AT.
- Có 12 chân GPIO, 2 PWM và ADC tích hợp.
- Bốn băng tần: 850; 900; 1800 và 1900 MHZ, vì vậy nó sẽ hoạt động ở tất cả các quốc gia với mạng GSM (2G)
- Điều khiển thông qua các lệnh AT
- Hỗ trợ RTC (đồng hồ thời gian thực) - và có Pin CR1220 tích hợp.
Có sẵn jack audio và jack microphone
Nguồn cấp cho Module
Nguồn cấp cho Module yêu cầu phải từ 2A trở lên.
Phần cứng của SIM900 GSM GPRS Shield
Tích hợp sẵn Pin cho realtime, và khe SIM
Cách nối dây, Cắm SIM
Bước 1
Cắm SIM và Anten
Bước 2
Chuyển jump cắm để sử dụng SoftWare Serial
Bước 3*
Cắm nguồn điện 5V, 2A cho Module
Bước 4
Nhấn giữ nút PowerKey trong 2s
Bước 5
Khi các LED status và network nháy với chu ký 800ms là Module đã sẵn sàng.
Bước 6
Sử dụng FTDI programmer để giao tiếp và cài đặt
Sau khi nối đây như hình trên xong, Cắm FTDI programmer vào máy tính.
Mở #ArduinoIDE, Mở #SerialMonitor lên. Chọn Baud rate là 19200
Tiến hành gõ tập lệnh AT của Module SIM900.
Ở đây ta gõ “AT” và module phản hồi là OK như vậy là thành công.
Bây giờ ta sẽ tiến hành lập trình với Arduino.
Cách kết nối với Arduino.
Các lệnh AT cơ bản
- Đặt SIM900 thành chế độ văn bản: AT + CMGF = 1 \ r
- Gửi SMS đến một số: AT + CMGS = PHONE_NUMBER (trong định dạng quốc tế +84….)
- Đọc SMS đầu tiên từ hộp thư đến: AT + CMGR = 1 \ r
- Đọc SMS thứ hai từ hộp thư đến: AT + CMGR = 2 \ r
- Đọc tất cả SMS từ hộp thư đến: AT + CMGR = ALL \ r
- Gọi tới một số: ATDP + PHONE_NUMBER (ở định dạng quốc tế)
- Cúp máy: ATH
- Nhận cuộc gọi đến: ATA
Để tìm hiểu kỹ về các lệnh AT, Bạn hãy tải về file hướng đẫn sau
Lập trình gửi SMS
Chú ý, Hãy chắc rằng sim của bạn hoạt động 2 chiều và có tiền trong tài khoản để thực hiện bước này
/*********
Complete project details at http://randomnerdtutorials.com
*********/
#include <SoftwareSerial.h>
// Cấu hình cho SoftwareSerial, Ở đây ta không dùng Serial có sẵn trong arduino mà dùng Serial giả lập bằng phần mềm trên các chân D7 và D8
SoftwareSerial SIM900(7, 8);
void setup() {
// Cấu hình baud rate là 19200, đây là baud mặc định trên SIM900
//
SIM900.begin(19200);
// Chờ 1 thời gian để Module sim đăng ký vào mạng di động.
delay(20000);
// Gửi Sms
sendSMS();
}
void loop() {
}
void sendSMS() {
// Câu lênh để gửi SMS
SIM900.print("AT+CMGF=1\r");
delay(100);
// Thay các chữ xxx bên dưới thành số điện thoại bạn muốn gửi sms trước khi nạp chương trình
// Nhớ đối với VN, số đt có format là +84......;
SIM900.println("AT + CMGS = \"+XXXXXXXXXXXX\"");
delay(100);
// Nội dung gửi
SIM900.println("Message example from Arduino Uno.");
delay(100);
// Kết thúc lệnh gửi với ^Z, mã ASCII là 26
SIM900.println((char)26);
delay(100);
SIM900.println();
// Chờ để module gửi sms
delay(5000);
}
Gọi điện thoại đến 1 số.
/*********
Complete project details at http://randomnerdtutorials.com
*********/
#include <SoftwareSerial.h>
// Cấu hình cho SoftwareSerial, Ở đây ta không dùng Serial có sẵn trong arduino mà dùng Serial giả lập bằng phần mềm trên các chân D7 và D8
SoftwareSerial SIM900(7, 8);
void setup() {
// Cấu hình baud rate là 19200, đây là baud mặc định trên SIM900
//
SIM900.begin(19200);
// Chờ 1 thời gian để Module sim đăng ký vào mạng di động.
delay(20000);
// Thực hiện gọi điện thoại
callSomeone();
}
void loop() {
}
void callSomeone() {
// Đổi XXX thành số đt nhận cuộc gọi
SIM900.println("ATD + +XXXXXXXXX;");
delay(100);
SIM900.println();
// Gọi trong 30s
delay(30000);
// Tắt máy
SIM900.println("ATH"); // ngắt cuộc gọi
}
Trả lời cuộc gọi đến
/*********
Complete project details at http://randomnerdtutorials.com
*********/
#include <SoftwareSerial.h>
// Cấu hình cho SoftwareSerial, Ở đây ta không dùng Serial có sẵn trong arduino mà dùng Serial giả lập bằng phần mềm trên các chân D7 và D8
SoftwareSerial SIM900(7, 8);
char incoming_char=0;
void setup() {
// Cấu hình baud rate là 19200, đây là baud mặc định trên SIM900
//
SIM900.begin(19200);
// Chờ 1 thời gian để Module sim đăng ký vào mạng di động.
delay(20000);
SIM900.print("AT+CLIP=1\r"); // bật thông báo khi có cuộc gọi đến
delay(100);
}
void loop() {
// Hiện thi bất kỳ nội dung nào mà module gửi đển arduino
if(SIM900.available() >0) {
//
// Nếu nhận được văn bản RING là chứng tỏ có cuộc dọi đến
incoming_char=SIM900.read();
if (incoming_char=='R') {
delay(10);
Serial.print(incoming_char);
incoming_char=SIM900.read();
if (incoming_char =='I') {
delay(10);
Serial.print(incoming_char);
incoming_char=SIM900.read();
if (incoming_char=='N') {
delay(10);
Serial.print(incoming_char);
incoming_char=SIM900.read();
if (incoming_char=='G') {
delay(10);
Serial.print(incoming_char);
// Đã nhận được RING
// Gửi lệnh ATA để nhất máy.
SIM900.print("ATA\r");
}
}
}
}
}
}
Tự động bật Module SIM900 khi có nguồn cấp
Thực hiện hàn điện trở R13 trên module
Nối chân D9 của module vào chân D9 của Arduino
Thêm đoạn chương trình sau vào hàm setup()
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);
Chú ý: Nếu module của baud rate khác mà không phải là 19200 thì hay gửi lệnh AT+IPR=19200 để cấu hình module về baud mặc định trước