Bộ điều khiển SMS dựa trên SIM800L

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


Bộ điều khiển SMS dựa trên SIM800L


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


Bộ điều khiển SMS dựa trên SIM800L


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


Bộ điều khiển SMS dựa trên SIM800L


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ị


Bộ điều khiển SMS dựa trên SIM800L


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
Bình luận
  • cà vạtnụ cườicườiđỏ mặtcườithư giãn thoải máinhếch mép cười
    trái tim_mắthôn_timhôn_đóng_mắtđỏ bừngan tâmthỏa mãncười toe toét
    nháy mắtlè lưỡi nháy mắtbị mắc kẹt_out_tongue_closed_eyescười toe toéthôn nhaubị mắc kẹt_out_tongueđang ngủ
    lo lắngcau màyđau khổopen_mouthnhăn mặtbối rốiim lặng
    vô cảmkhông hài lòngmồ hôi_nụ cườimồ hôithất vọng_nhẹ nhõmmệt mỏithụ động
    thất vọngbối rốiđáng sợlạnh_mồ hôikiên trìkhócnức nở
    vui sướngkinh ngạcla hétkhuôn mặt mệt mỏitức giậncơn thịnh nộchiến thắng
    buồn ngủừmmặt nạkính râmmặt chóng mặtimpmỉm cười_imp
    mặt trung lậpkhông_miệngvô tội
3+ba=
Bình luận (4)
  1. qeeeq
    #1 qeeeq Khách 26 Tháng Tám 2017 23:50
    0
    Ồ! Như họ nói, mọi thứ khéo léo đều đơn giản. Tôi thậm chí không phải mua bất cứ thứ gì, có lẽ ở nhà ai cũng có một đống rác như vậy
  2. Alexei
    #2 Alexei Khách Ngày 16 tháng 12 năm 2017 16:53
    0
    Không hoạt động. Khi biên dịch, nó báo "Arduino: 1.8.5 Bản dựng hàng giờ 28/08/2017 06:33 (Windows 7), Board:"Arduino/Genuino Uno"
    1. Denis
      #3 Denis Khách Ngày 17 tháng 12 năm 2017 08:11
      0
      Bạn cần sử dụng đường dẫn không có chữ cái tiếng Nga cho dự án.
  3. Andrey
    #4 Andrey Khách Ngày 10 tháng 2 năm 2019 11:54
    2
    Có rất nhiều lỗi trong bản phác thảo. Nó sẽ không hoạt động.