Tìm hiểu về module sim 800A, cùng làm ứng dụng điều khiển từ xa 4 trong 1

Mục lục

Cơ bản về module sim 800A

Mạch GSM GPRS Sim800A được phát triển từ module sim 900A tích hợp nguồn xung và ic đệm được thiết kế cho các ứng dụng cần độ bền và độ ổn định cao.

4-2
Module GSM GPRS Sim800A

THÔNG SỐ KỸ THUẬT MẠCH GSM GPRS Sim800A

  • Sử dụng module GSM GPRS Sim800A.
  • Nguồn cấp đầu vào: 5 – 18VDC, lớn hơn 1A.
  • Mức tín hiệu giao tiếp: TTL (3.3-5VDC) hoặc RS232.
  • Tích hợp chuyển mức tín hiệu TTL Mosfet tốc độ cao.
  • Tích hợp IC chuyển mức tín hiệu RS232 MAX232.
  • Tích hợp nguồn xung với dòng cao cung cấp cho Sim800A.
  • Sử dụng khe Micro Sim.
  • Thiết kế mạch nhỏ gọn, bền bỉ, chống nhiễu.

Thứ tự các chân:
Header 1:

  • VCC: Nguồn dương từ 5-18VDC, lớn hơn 1A
  • GND: Mass, 0VDC.
  • EN: Mặc định nối lên cao, chức năng dùng để khởi động (Enable) hoặc dừng hoạt động (Disable) Module Sim800, nếu nếu muốn module Sim800 dừng hoạt động bạn có thể nối chân này xuống âm GND (0VDC).
  • 232R: Chân nhận tín hiệu RS232.
  • 232T: Chân truyền tín hiệu RS232
  • GND: Mass, 0VDC.
  • RXD: Chân nhận tín hiệu TTL, chấp nhận mức 3.3 và 5VDC.
  • TXD: Chân truyền tín hiệu TTL, chấp nhận mức 3.3 và 5VDC.

Header 2:

  • BRXD: Thường không sử dụng, chân nhận tín hiệu, dùng để giao tiếp nạp Firmware cho Sim800, mức tín hiệu 3.3VDC.
  • BTXD: Thường không sử dụng, chân truyền tín hiệu, dùng để giao tiếp nạp Firmware cho Sim800, mức tín hiệu 3.3VDC.
  • GND: Mass, 0VDC.
  • EPN: Ngõ ra loa Speaker âm
  • EPP: Ngõ ra loa Speaker dương.
  • MICP: Ngõ vào Micro dương.

Cách test module sim 800A

Kết nối module với máy tính để test

Dụng cụ:

Phần mềm:

Link cài driver cp2102: https://drive.google.com/file/d/1GzW76cb2FZScGXKhsuXWyVeR4uZwlvy_/view

Link tải phần mềm tập lệnh: https://www.hw-group.com/software/hercules-setup-utility

Sơ đồ kết nối:

1-2
kết nối máy tính với module sim

Tập lệnh: Tập lệnh đầy đủ: https://cdn-shop.adafruit.com/datasheets/sim800_series_at_command_manual_v1.01.pdf

Tập lệnh cơ bản:

  1. Lệnh chung:

Lệnh: AT<CR><LF>

Trả lời: OK

Mô tả : Kiểm tra đáp ứng , nếu trả về OK thì Module hoạt động

Lệnh: AT+IPR=[baud rate]<CR><LF>

Trả lời: OK

Mô tả : cài đặt tốc độ giao tiếp dữ liệu với module Sim800A, chỉ cài được các tốc độ sau

baud rate : 0 (auto), 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200

2-1
Test tập lệnh cơ bản với module sim

2. Lệnh thực hiện cuộc gọi:

Lệnh: ATD[Số_điện_thoại];<CR><LF>

Trả lời: OK

Mô tả : Lệnh thực hiện cuộc gọi

Lệnh: ATH<CR><LF>

Trả lời: OK

Mô tả : Lệnh cúp máy

Lệnh: ATA<CR><LF>

Trả lời: OK

Mô tả : Lệnh thực hiện chấp nhận cuộc gọi

3-1
Test tập lệnh thực hiện cuộc gọi

Nếu muốn hiển thị thông tin người gọi đến các bạn thực hiên thêm lệnh sau

Lệnh: AT+CLIP=1<CR><LF>

Trả lời: OK

3. Lệnh điều khiển tin nhắn

Lệnh: AT+CMGF=1<CR><LF>

Trả lời: OK

Mô tả : Lệnh đưa SMS về chế độ Text , phải có lệnh này mới gửi nhận tin nhắn dạng Text

Cấu trúc gửi tin nhắn

Lệnh: AT+CMGS=”Số_điện _thoại”<CR><LF>

Đợi đến khi có ký tự ‘>’ được gửi về

Gửi nội dụng tin nhắn : “NSHOP

Gửi mã Ctrl+Z hay 0x1A để kết thúc nội dung và gửi tin nhắn

Trả lời : OK

4-1
test tập lệnh nhắn tin

Chú ý: sau mỗi lệnh các bạn thường thấy thực chất nó là hai mã điều khiển

tương ứng 0x0D(hexa)

tương ứng 0x0A(hexa)

Các bạn chỉ cần nhấn enter là có thể gửi

Kết nối với arduino

Sơ đồ đấu

5-1
Kết nối module sim với arduino để test

Code test

#include "SIM900.h"
#include <SoftwareSerial.h>
SoftwareSerial SIM900(10, 11);
String number1 = "0332177764";// nhap sdt vào đây

void setup()
{
Serial.begin(9600);
SIM900.begin(9600);//19200
delay(2000); // give time to log on to network.

      SIM900.print("AT+CLIP=1\r"); // test
      delay(1000); 
      SIM900.println("AT");
      
}
void loop() 
{

  // nhấn 1 để gọi, nhấn 2 để gửi tin nhắn
  if(Serial.available() >0)

  switch (Serial.read())
  {
  case '1':
  Serial.println("dang goi");
  call();
    break;
  case '2':
  Serial.println("dang nhan tin");
  message();
    break;
}
      
}

//////////////////////////////////////////////////////

void call()
{
  //cú pháp gọi: ATD 0332177764 ;\r\n
  SIM900.print (F("ATD"));
  SIM900.print (number1);
  SIM900.print (F(";\r\n"));

  }

//////////////////////////////////////////////////////
void message()
{
    // cách gửi tin nhắn B1: AT+CMGF=1   >>> OK
    /////////////////////B2: AT+CMGS="0332177764"  >>> TRA VE >   >>> NHAP TIN NHAN >>> CTRL + Z de gui
  SIM900.println("AT+CMGF=1");    
  delay(1000);
  //Serial.println ("Set SMS Number");
  SIM900.println("AT+CMGS=\"" + number1 + "\"\r"); 
  delay(1000);
  String SMS = "NSHOP";
  SIM900.println(SMS);
  delay(100);
  SIM900.println((char)26);// ASCII code of CTRL+Z
  delay(1000);

  }

Phát triển ứng dụng điều khiển từ xa 4 trong 1

Ứng dụng điều khiển từ xa 4 trong 1 bao gồm

  1. Nhắn tin điều khiển
  2. Gọi điện điều khiển
  3. Điều khiển bằng remote
  4. Điều khiển bằng wifi

Trong đó 2 ứng dụng đầu dành cho những người ko rành về công nghệ, ứng dụng 3 nhanh gọn phạm vi thấp

ứng dụng 4 tiện lợi giành cho những người biết xài smartphone

Phần cứng cần thiết:

1 x Công tắc thông minh wifi Tuya 16A điều khiển từ xa

1 x Mạch GSM GPRS Sim800A (SIM900A Update)

1 x Arduino Nano V3.0 ATmega328P

1 x Module nguồn 5V 2A Loại 2A

1 x Mạch thu sóng RF 433Mhz học lệnh

1 x Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC)

1 x Contactor

1 x Relay nhiệt https://nshopvn.com/product/relay-nhiet-chint-nxr-25-cho-contactor-nxc/?variant=74448

1 x Mạch chống nhiễu điện từ, bảo vệ tiếp điểm LC Technology

Nguyên lý hoạt động

  • Trường hợp 1 Khi có cuộc gọi từ số điện thoại cài đặt gọi tới module sim sẽ giao tiếp với arduino tiến hành kích module relay 5v trong 2s > Module relay được kích sẽ bật nút bấm vật lý trên mạch Wifi Tuya làm thay đổi trạng thái của Tải máy bơm ( nếu đang bật sẽ chuyển sang tắt, nếu đang tắt sẽ chuyển sang bật)
  • Trường hợp 2 tương tự TH1 khi tin nhắn “ON” được gửi từ số điện thoại cài đặt module sim sẽ giao tiếp với arduino tiến hành kích module relay 5v 2s > Module relay được kích sẽ bật nút vật lý trên mạch Wifi Tuya làm theo đổi trạng thái Tải máy bơm ( nếu đang bật sẽ chuyển sang tắt, nếu đang tắt sẽ chuyển sang bật)
  • Trường hợp 3: Module thu rf được cài đặt nhấn nhả, khi có tín hiệu từ remote sẽ tiến hành bật relay > Module relay được kích sẽ bật nút vật lý trên mạch Wifi Tuya làm theo đổi trạng thái Tải máy bơm ( nếu đang bật sẽ chuyển sang tắt, nếu đang tắt sẽ chuyển sang bật)
  • Trường hợp 4: Sử dụng chính app Tuya Smart hoặc Smart life kết nối với mạch Wifi Tuya điều khiển trực tiếp

Sơ đồ mạch điều khiển

1-3
Sơ đồ mạch điều khiển phần 1
2-2
Sơ đồ mạch điều khiển phần 2

Sơ đồ mạch Động lực

3-2
Sơ đồ mạch động lực

Code nạp vào arduino nano

#include "SIM900.h"
#include <SoftwareSerial.h>
char incomingByte; 
String inputString; 
char inchar;
SoftwareSerial SIM900(3, 4);// 3-Tx, 4-Rx         11 12

int relay = 12;
String number1 = "0378078760";// nhap sdt vào đây
String number2 = "0909951121";


void setup()
{
Serial.begin(9600);
SIM900.begin(9600);//19200

pinMode(relay, OUTPUT); // relay
pinMode(8, OUTPUT); // den báo kết nối sim + arduino


digitalWrite(relay, LOW);
digitalWrite(8, LOW);


delay(2000); // give time to log on to network.

      SIM900.print("AT+CLIP=1\r"); 
      delay(1000); 
      SIM900.println("AT");
      delay(1000); 
      Serial.println("Connecting..."); // kết nối
        //}
      Serial.println("Connected!");  
      SIM900.println("AT+CMGF=1"); // khởi động chức năng SMS
      delay(1000);  
      SIM900.println("AT+CNMI=1,2,0,0,0"); 
      delay(1000);
      SIM900.println("AT+CMGL=\"REC UNREAD\"");


     
     if(SIM900.available() >0)// kiểm tra xem đã kết nối với arduino chưa
     {
      if (inputString.indexOf("OK") == -1){
         digitalWrite(8,HIGH);
      }
       else{
          digitalWrite(8,LOW);
       }
        inputString = "";
            }
     
}

void loop() 
{

if(SIM900.available() >0)
{
delay(100);
      // Serial Buffer
      while(SIM900.available()){
        incomingByte = SIM900.read();
        inchar = incomingByte;
        inputString += incomingByte; 
        }
        delay(10);      
        Serial.println(inputString);
        inputString.toUpperCase(); 
        
        if ((inputString.indexOf("OFF") > -1) ){  //thay tin nhắn tắt chỗ indexOf("ON")// nhan tin
         digitalWrite(relay,HIGH);
         delay(5000);
         digitalWrite(relay, LOW);
          }
          
        if ((inputString.indexOf("ON") > -1)){// thay tin nhắn bật chỗ indexOf("OFF") // nhan tin
         digitalWrite(relay,HIGH);
         delay(5000);
         digitalWrite(relay, LOW);
          } 

        if ( (inputString.indexOf(number1) > -1)||(inputString.indexOf(number2) > -1)) // Goi dien
          {
            doSomething();
          }
       

        //Delete Messages 
        if (inputString.indexOf("OK") == -1){
        SIM900.println("AT+CMGDA=\"DEL ALL\"");
        delay(1000);}
        inputString = "";
        delay(1000);   

        
}
//while(SIM900.available()){       
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void doSomething()
{        delay(2000);
         SIM900.println("ATH");  // thực hiện lệnh cúp máy  
         digitalWrite(relay,HIGH);
         delay(5000);
         digitalWrite(relay, LOW); 
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void message()
{
    // cách gửi tin nhắn B1: AT+CMGF=1   >>> OK
    /////////////////////B2: AT+CMGS="0332177764"  >>> TRA VE >   >>> NHAP TIN NHAN >>> CTRL + Z de gui
  SIM900.println("AT+CMGF=1");    
  delay(1000);
  //Serial.println ("Set SMS Number");
  SIM900.println("AT+CMGS=\"" + number1 + "\"\r"); 
  delay(1000);
  String SMS = "da bat may bom";
  SIM900.println(SMS);
  delay(100);
  SIM900.println((char)26);// ASCII code of CTRL+Z
  delay(1000);

  }

Video test thực tế

đang cập nhật