Ứ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
[upl-image-preview url=https://making.vn/assets/files/2020-05-06/1588727024-704647-image.png]
- 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.
[upl-image-preview url=https://making.vn/assets/files/2020-05-08/1588903602-977296-image.png]
Có sẵn jack audio và jack microphone
[upl-image-preview url=https://making.vn/assets/files/2020-05-08/1588903626-179078-image.png]
Nguồn cấp cho Module
Nguồn cấp cho Module yêu cầu phải từ 2A trở lên.
[upl-image-preview url=https://making.vn/assets/files/2020-05-10/1589100487-991235-image.png]
Phần cứng của SIM900 GSM GPRS Shield
Tích hợp sẵn Pin cho realtime, và khe SIM
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589158818-539077-image.png]
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589158858-990697-image.png]
Cách nối dây, Cắm SIM
Bước 1
Cắm SIM và Anten
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589158947-589154-image.png]
Bước 2
Chuyển jump cắm để sử dụng SoftWare Serial
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589158999-756797-image.png]
Bước 3*
Cắm nguồn điện 5V, 2A cho Module
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589159036-964697-image.png]
Bước 4
Nhấn giữ nút PowerKey trong 2s
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589159078-787447-image.png]
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
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589159173-684348-image.png]
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589159208-213428-image.png]
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
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589159302-806364-image.png]
Tiến hành gõ tập lệnh AT của Module SIM900.
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589159350-399314-image.png]
Ở đâ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.
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589159418-328343-image.png]
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
sim900-at-command-manual-v103.pdf
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
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589160455-475465-image.png]
Nối chân D9 của module vào chân D9 của Arduino
[upl-image-preview url=https://making.vn/assets/files/2020-05-11/1589160484-944159-image.png]
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