Bộ điều khiển SMS dựa trên SIM800L
SIM800L V2.0 GSM/GPRS là mô-đun GSM/GPRS bốn băng tần tương thích với Arduino. Mô-đun này được sử dụng để thực hiện các chức năng GSM (cuộc gọi và SMS) và GPRS. Ưu điểm của mô-đun này là giao diện TTL, có điện áp 5V, cho phép bạn kết nối trực tiếp với Arduino hoặc bất kỳ hệ thống nào khác có điện áp nguồn 5V. Hầu hết các mô-đun GSM/GPRS trên thị trường đều yêu cầu kết nối bộ điều chỉnh hoặc chuyển đổi mức, trong khi ở SIM800L V.2 GSM/GPRS không yêu cầu các mạch chuyển đổi mức giao diện bổ sung.
Hãy đưa ra một ví dụ về một dự án sử dụng SIM800L V.2 GSM/GPRS. Mục đích của dự án là điều khiển các công tắc bằng bộ điều khiển SMS. Bạn có thể dễ dàng bật tắt hầu hết các thiết bị gia dụng trong nhà như lạc đà không bướu, quạt, v.v.
Đặc điểm của mô-đun GSM/GPRS SIM800L V.2
Dưới đây là tất cả các đặc tính kỹ thuật của mô-đun GSM/GPRS SIM800L V.2:
- Giao diện nối tiếp TTL tương thích với bộ vi điều khiển tương thích Arduino 3,3V và 5V.
- Mô-đun SIM800L có giao diện nối tiếp TTL.
- Giắc kết nối anten.
- Hỗ trợ mạng: bốn băng tần 850/900/1800/1900 MHz, có khả năng thực hiện cuộc gọi, SMS và truyền dữ liệu với mức tiêu thụ pin giảm đáng kể.
- Giao diện VDD TTL UART, do đó bạn có thể kết nối trực tiếp MCU như 51MCU, ARM hoặc MSP430.Phích cắm VDD được sử dụng để phù hợp với điện áp TTL.
- Model: SIMCOM SIM800L
- Điện áp hoạt động: từ 3,7V đến 5V;
- kích thước: 40mm x 28mm x 3mm
- GPRS đa khe loại 12/10
- Dịch vụ gói GPRS loại B
- Tuân thủ GSM giai đoạn 2/2+
- Loại 4 (2 watt @ 850/900 MHz)
- Loại 1 (1Watt @ 1800/1900 MHz)
Vật liệu cần thiết
Có thể bạn sẽ cần:
1. Mô-đun GSM/GPRS SIM800L V.2.
2. Arduino Uno.
3. Mô-đun tiếp sức 4 kênh 5V.
4. Dây điện - dây nhảy.
5. Nguồn điện 5V.
(Liên kết hoạt động đến cửa hàng để mua hàng)
Lắp ráp và cấu hình
Khi bạn đã kết nối tất cả các thành phần, hãy tạo một chương trình và sau đó tải nó lên Arduino của bạn. Nhưng trước tiên, bạn phải cài đặt thư viện GPRS mà bạn có thể tải xuống:
gprs.zip
[28.02 Kb] (tải xuống: 887)
Mã chương trình cho Arduino
Khi bạn đã kết nối SIM800L, mô-đun chuyển tiếp 4 kênh và Arduino với máy tính của mình, hãy nhập mã bên dưới và bạn đã hoàn tất.
#bao gồm
#bao gồm
#xác định THỜI GIAN CHỜ 5000
#define HOẠT ĐỘNG THẤP
#define TẮT CAO
byte Rơle[] = {A0,A1,A2,A3};
byte StatRelay[4];
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
Chuỗi trả lờiNumber = "089510863958";
GPRS gprs;
thiết lập trống () {
for(int i=0; i < 4; i++) {
pinMode(Rơle[i] , OUTPUT);
digitalWrite(Rơle[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
while(! Serial);
Serial.println("Kích hoạt SIM800L V2 >>> Tự động đọc SMS");
gprs.preInit();
độ trễ (1000);
while (0 != gprs.init()) {
độ trễ (1000);
Serial.print("init errorrn");
}
// Quản lý tin nhắn sang chế độ ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
LỖI("LỖI:CNMI");
trở lại;
}
// Đọc SMS đến
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
LỖI("LỖI:CNMI");
trở lại;
}
int pjg = replyNumber.length() + 1;
buffSố[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Gửi trả lời về số => ");
Serial.println(buffNumber);
Serial.println("Khởi tạo xong");
Serial.println("================================================= ================ ==================");
}
vòng lặp trống () {
// Thay đổi trạng thái BẬT/TẮT Rơle
for(int i=0; i < 4; i++) {
digitalWrite(Rơle[i], StatRelay[i]);
}
// Nếu có dữ liệu đầu vào từ SIM800
if (gprs.serialSIM800.available()) {
char LastCharRead = gprs.serialSIM800.read();
// Lưu tất cả dữ liệu vào LastCharRead, sau đó nếu có r hoặc n, làm tín hiệu cuối cùng của tin nhắn đến
if (lastCharRead == 'r' || LastCharRead == 'n') {
Chuỗi LastLine = Chuỗi (currentLine);
// Nếu tin nhắn cuối cùng +CMT cho biết có tin nhắn mới đến
if (lastLine.startsWith("+CMT:")) {
Serial.println(lastLine);
nextLineIsMessage = true;
} khác nếu (lastLine.length() > 0) {
nếu (nextLineIsMessage) {
Serial.println(lastLine);
// ==================================================== ==== ==================>> Chức năng của Bộ điều khiển Rơle
// Bộ điều khiển Rơle 1
if (lastLine.indexOf("Rơle 1 BẬT") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Trả lời====>>>> ");
Serial.println("Trạng thái Rơle 1 đang hoạt động");
gprs.sendSMS(buffNumber, "Trạng thái chuyển tiếp 1 đang hoạt động");
}
khác nếu (lastLine.indexOf("Rơle 1 TẮT") >= 0) {
StatRelay[0] = MATI;
Serial.print("Trả lời====>>>> ");
Serial.println("Tắt trạng thái Rơle 1");
gprs.sendSMS(buffNumber, "Tắt trạng thái chuyển tiếp 1");
}
// Bộ điều khiển Rơle 2
if (lastLine.indexOf("Rơle 2 BẬT") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Trả lời====>>>> ");
Serial.println("Trạng thái chuyển tiếp 2 đang hoạt động");
gprs.sendSMS(buffNumber, "Trạng thái chuyển tiếp 2 đang hoạt động");
}
khác nếu (lastLine.indexOf("Rơle 2 TẮT") >= 0) {
StatRelay[1] = MATI;
Serial.print("Trả lời====>>>> ");
Serial.println("Tắt trạng thái Rơle 2");
gprs.sendSMS(buffNumber, "Tắt trạng thái chuyển tiếp 2");
}
// Bộ điều khiển Rơle 3
if (lastLine.indexOf("Rơle 3 BẬT") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Trả lời====>>>> ");
Serial.println("Trạng thái chuyển tiếp 3 đang hoạt động");
gprs.sendSMS(buffNumber, "Trạng thái chuyển tiếp 3 đang hoạt động");
}
khác nếu (lastLine.indexOf("Rơle 3 TẮT") >= 0) {
StatRelay[2] = MATI;
Serial.print("Trả lời====>>>> ");
Serial.println("Tắt trạng thái Rơle 3");
gprs.sendSMS(buffNumber, "Tắt trạng thái chuyển tiếp 3");
}
// Bộ điều khiển Rơle 4
if (lastLine.indexOf("Rơle 4 BẬT") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Trả lời====>>>> ");
Serial.println("Trạng thái chuyển tiếp 4 đang hoạt động");
gprs.sendSMS(buffNumber, "Trạng thái chuyển tiếp 1 đang hoạt động");
}
khác nếu (lastLine.indexOf("Rơle 4 TẮT") >= 0) {
StatRelay[3] = MATI;
Serial.print("Trả lời====>>>> ");
Serial.println("Tắt trạng thái Rơle 4");
gprs.sendSMS(buffNumber, "Tắt trạng thái chuyển tiếp 4");
}
nextLineIsMessage = false;
}
// ==================================================== ==== =====================>>
}
//Xóa mảng char cho dòng đọc tiếp theo
for ( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
}
khác {
currentLine[currentLineIndex++] = LastCharRead;
}
}
}
Kiểm tra thiết bị
Công cụ này hoạt động bằng cách gửi SMS tới SIM800L với một chuỗi ký tự cụ thể. Ví dụ: để bật rơle 1, hãy sử dụng lệnh “Rơle 1 BẬT” và để tắt nó, hãy sử dụng lệnh “Rơle 1 TẮT”. Đối với các rơle còn lại, các lệnh gần như giống nhau, ngoại trừ số thứ tự của từng rơle mà bạn muốn tác động. Sau khi tự động gửi tin nhắn, SIM800 sẽ gửi phản hồi dưới dạng tin nhắn về trạng thái của từng SIM.
Video lắp ráp, cấu hình và test thiết bị
Bài viết gốc bằng tiếng Anh
Các lớp học tương tự
Đặc biệt thú vị
Bình luận (4)