Khác

SIM808 - GSM/GPRS/GPS/BLUETOOTH - HỖ TRỢ 2G/3G/4G - KÈM ĂNG TEN GPS

Mã sản phẩm: K3_55
 SIM808 được tích hợp GPS/GSM/GPRS/BLUETOOTH trên cùng 1 module, vì lẽ đó khi chỉ cần sử dụng 1 module này ta có thể : nhắn tin, nghe, gọi, biết được vị trí (GPS), truyền nhận dữ liệu qua bluetooth...vậy thì quá tuyệt vời, thay vì phải sử dụng 3 module (...
460,000₫
Hàng còn: 2
Số lượng
 
1
 
Thêm vào giỏ Mua ngay

Dịch vụ & Khuyến mãi

Giao miễn phí trong nội thành TPHCM đối với đơn hàng trên 1 triệu đồng

Tặng ngay 50.000đ cho đơn hàng trên 2 triệu đồng

Chi tiết sản phẩm

 

SIM808 được tích hợp GPS/GSM/GPRS/BLUETOOTH trên cùng 1 module, vì lẽ đó khi chỉ cần sử dụng 1 module này ta có thể : nhắn tin, nghe, gọi, biết được vị trí (GPS), truyền nhận dữ liệu qua bluetooth...vậy thì quá tuyệt vời, thay vì phải sử dụng 3 module ( 1 GSM, 1 GPS, 1 BLUETOOTH) để có cùng chức năng như trên.

TÀI LIỆU KỸ THUẬT MODULE SIM808:

+ Nguồn cấp: 5 -26VDC. Được tích hợp IC ổn áp nên dải điện áp đầu vào rộng.

+ Có hỗ trợ chân cấp nguồn pin Lithium - Ion: 3.5 - 4.2V.

+ Chức năng truyền nhận dữ liệu qua bluetooth.

+ Tích hợp 2 jack phone + micro trên cùng board mạch để tiện cho việc nghe thoại.

+ Tích hợp 3 ăng ten cho các chức năng: GSM/GPRS; GPS;  BLUETOOTH

+ Hỗ trợ đầy đủ các sim 2G, 3G, 4G

Gửi và nhận dữ liệu GPRS (TCP / IP, HTTP, v.v.).

+ Nhận dữ liệu GPS và dữ liệu A-GPS.

+ Gửi và nhận tin nhắn SMS.

+ Thực hiện cuộc gọi, trả lời tin nhắn tự động.

 

SƠ ĐỒ GIAO TIẾP ARDUINO VỚI SIM808:

SƠ ĐỒ GIAO TIẾP USB-TTL VỚI SIM808:

TẬP LỆNH AT GIAO TIẾP CƠ BẢN VỚI MODULE SIM:

LỆNH KIỂM TRA MODULE SIM HOẠT ĐỘNG:

Lệnh: AT<CR><LF>

MODULE SIM Trả lời: OK

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

LỆNH KIỂM TRA TỐC ĐỘ BAUD GIAO TIẾP VỚI MODULE SIM:

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 SIM, chỉ cài được các tốc độ sau

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

CÁC LỆNH ĐIỀU KHIỂN CUỘC GỌI:

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

          Mô tả : Hiển thị thông tin cuộc gọi đến

  • Lệnh:      ATD XXXXXXXXX;<CR><LF>

           Mô tả : Lệnh thực hiện cuộc gọi, với XXXXX: là số điện thoại cần gọi

  • Lệnh:      ATH<CR><LF>

          Mô tả : Lệnh thực hiện kết thúc cuộc gọi, hoặc cúp máy khi có cuộc gọi đến

  • Lệnh:      ATA<CR><LF>

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

CÁC LỆNH ĐIỀU KHIỂN TIN NHẮN:

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

          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

  • Lệnh:      AT+CMGS=”XXXXXXXX”<CR><LF>

   XXXXXXX: là số điện thoại cần gửi tin nhắn.

            Đợi đến khi có ký tự ‘>’ được gửi về thì đánh nối dung tin nhắn.            

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

          Mô tả : Lệnh gửi tin nhắn

  • Lệnh:      AT+CMGR=x<CR><LF>

          x là địa chỉ tin nhắn cần đọc 

          Mô tả : Đọc một nhắn vừa gửi đến, lệnh được trả về nội dung tin nhắn, thông tin người gửi, thời gian gửi

  • Lệnh:      AT+CMGDA="DEL ALL"<CR><LF>

          Mô tả : Xóa toàn bộ tin nhắn trong các hộp thư

  • Lệnh:      AT+CNMI=2,2<CR><LF>

          Mô tả : Hiển thị nội dung tin nhắn ngay khi có tin nhắn đến

TẬP LỆNH AT GPS GIAO TIẾP MODULE SIM808:

AT + CGPSPWR=1<CR><LF>  lệnh bật/tắt nguồn cho GPS. Trả về OK nếu mạch chấp nhận.

AT + CGPSPWR=?<CR><LF>  lệnh kiểm tra các chế độ hiện có của GPS. Trả về giá trị (0-1)

AT + CGPSPWR?<CR><LF>  lệnh kiểm tra GPS đang bật/ tắt trả về tín hiệu  

0: đang tắt GPS, 1: đang bật GPS.

AT+ CGPSSTATUS?<CR><LF>  lệnh trả về trạng thái hiện tại của chân GPS CONTROL PIN. tín hiệu trả về:

( Location Not Fix ) Hệ thống GPS chưa có dữ liệu vị trí chính xác

( Location 3D Fix ) Hệ thống GPS đã xác định được vị trí với độ chính xác 3 chiều (vĩ độ, kinh độ, và độ cao)

( Location 2D Fix ) GPS đã xác định được vị trí với độ chính xác 2 chiều (vĩ độ và kinh độ) 

AT + CGPSINF=0<CR><LF> để nhận thông tin vị trí GPS dưới dạng chuỗi dữ liệu

CODE GIAO TIẾP ARDUINO VỚI SIM808:

#include <SoftwareSerial.h>
#include <TinyGPS++.h>

boolean GetGPS_flag = false;
boolean Location_isValid_flag = false;
boolean Password_flag = false;


String value;
String phone_number;
String message_text;
String password = "Hello";
String Message;


#define PIN_TX    10
#define PIN_RX    11
SoftwareSerial mySerial(PIN_TX, PIN_RX);

// The TinyGPS++ object
TinyGPSPlus gps;

String SIM808(String value) 

{
  String Out;

  mySerial.println(value);
  delay(10);
  while (mySerial.available()) {
    Out = (mySerial.readString());
  }

  Out.trim();
  Out.remove(0, value.length() + 3);
  return Out;
}
String SIM808(String value, int count) {
  String Out;

  mySerial.println(value);
  delay(10);
  while (mySerial.available()) {
    Out = (mySerial.readString());
  }

  Out.trim();
  Out.remove(0, value.length() + 3 + count);
  return Out;
}

void setup() {
  mySerial.begin(9600);
  Serial.begin(9600);
}

void loop() {
  //ĐOẠN CHƯƠNG TRÌNH NHẬN TIN NHẮN SMS
  Serial.println("Start\n");

  Serial.println("Power Down The GPS");
  SIM808("AT+CGPSPWR=0");

  Serial.println("Check AT Connection");
  value = SIM808("AT");
  Serial.println(value);
  Serial.println("");

  Serial.println("Put The Module in SMS Text Mode");
  SIM808("AT+CMGF=1");
  delay(1000);


  Serial.println("Delete All Previous Messages");
  SIM808("AT+CMGD=1,4");
  delay(2000);

  value = SIM808("AT+CMGL=\"REC UNREAD\"");
  value = SIM808("AT+CMGL=\"REC UNREAD\"");
  value = SIM808("AT+CMGL=\"REC UNREAD\"");

  do {
    delay(2000);
    Serial.println("No new Messages Received");
    Serial.println("Check for New Messages!");
    value = SIM808("AT+CMGL=\"REC UNREAD\"");
    //Serial.println("end");
  } while (value == "OK");

  SIM808("AT+CMGL=\"REC UNREAD\"");
  Serial.println("Message Recieved");

  value = SIM808("AT+CMGL=\"ALL\"");
  Serial.println(value);
  phone_number = value;
  phone_number.remove(0, 20);
  phone_number.remove(15, phone_number.length());
  message_text = value;
  message_text.remove(0, 63);
  message_text.remove(message_text.length() - 6, message_text.length());

  Serial.println("Phone Number:");
  Serial.println(phone_number);

  Serial.println("Message Text:");
  Serial.println(message_text);


  if (message_text == password) {
    GetGPS_flag = true;
    Password_flag = true;
    Serial.println("password is correct!");
  }
  //KẾT THÚC 

  //***********ĐOẠN CHƯƠNG TRÌNH NHẬN DỮ LIỆU GPS*********
  if (GetGPS_flag) {
    do {
      Serial.println("Power Down The GPS");
      SIM808("AT+CGPSPWR=0");
      //Serial.println("end");

      Serial.println("Check The GPS Power");
      value = SIM808("AT+CGPSPWR?");
      value.remove(11, 17);
      Serial.println(value);
      //Serial.println("end");

      Serial.println("Power Up The GPS");
      SIM808("AT+CGPSPWR=1");
      //Serial.println("end");

      Serial.println("Disable The GPS Output");
      SIM808("AT+CGPSOUT=0");
      //Serial.println("end\n");

      Serial.println("Wait For The GPS To Find Location");
      while (!SIM808("AT+CGPSSTATUS?" , 13).startsWith("Location 3D Fix")) {
        Serial.println("Location Not Fixed Yet, Please Wait!");
        delay(2000);
      }
      Serial.println("Location Found!");
      Serial.println("end\n");

      //Get and Analyse The GPS Output
      Serial.println("Get and Analyse The GPS Output");
      String Out = "";
      mySerial.println("AT+CGPSOUT=2");

      delay(10);
      while (mySerial.available()) {
        mySerial.readStringUntil('\n');
        mySerial.readStringUntil('\n');
        Out = (mySerial.readStringUntil('\n'));  Out += "\r\n";
      }
      mySerial.println("AT+CGPSOUT=0");
      delay(100);
      mySerial.println("AT+CGPSOUT=32");
      delay(10);
      while (mySerial.available()) {
        mySerial.readStringUntil('\n');
        mySerial.readStringUntil('\n');
        Out += (mySerial.readStringUntil('\n'));  Out += "\r\n";
      }
      mySerial.println("AT+CGPSOUT=0");
      Out.trim();
      Serial.println(Out);
      Serial.println("");
      //GPS Output Analized


      int buffint = Out.length();
      char buff[buffint];
      Out.toCharArray(buff, buffint);
      const char *gpsStream = buff;

      while (*gpsStream)
        if (gps.encode(*gpsStream++))
          displayInfo();

      Serial.println("");
      Serial.println("");

      delay(100);
      if (gps.location.isValid())
      {
        Location_isValid_flag = true;
        Message = String(gps.location.lat(), 6);
        Message += ",";
        Message += String(gps.location.lng(), 6);
        Message += " ";
        Serial.println(Message);
      }
    } while (!Location_isValid_flag);

  }
  //******************* KẾT THÚC NHẬN GPS *******************


  //******************* SENDING SMS *******************
  Serial.println("Start Sending The SMS\n");


  Serial.println("Sending The SMS to");
  Serial.println(phone_number);

  SIM808("AT+CMGS=" + phone_number );
  delay(200);

  if (Password_flag == true) {
    mySerial.println("Open This Link:");
    mySerial.print("https://www.google.com/maps/place/");
    SIM808(Message);
  }
  else {
    mySerial.println("Password Incorrect! ");
  }
  Serial.println("Message Sent!");

  Serial.println("Delete All Previous Messages");
  SIM808("AT+CMGD=1,4");
  delay(2000);
  //******************* SENDING SMS END*******************

  //reinitializing flags
  GetGPS_flag = false;
  Location_isValid_flag = false;
  Password_flag = false;
}


void displayInfo()
{
  Serial.print(F("Location: "));
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

char * floatToString(char * outstr, double val, byte precision, byte widthp) {
  char temp[16];
  byte i;

  // compute the rounding factor and fractional multiplier
  double roundingFactor = 0.5;
  unsigned long mult = 1;
  for (i = 0; i < precision; i++)
  {
    roundingFactor /= 10.0;
    mult *= 10;
  }

  temp[0] = '\0';
  outstr[0] = '\0';

  if (val < 0.0) {
    strcpy(outstr, "-\0");
    val = -val;
  }

  val += roundingFactor;

  strcat(outstr, itoa(int(val), temp, 10)); //prints the int part
  if ( precision > 0) {
    strcat(outstr, ".\0"); // print the decimal point
    unsigned long frac;
    unsigned long mult = 1;
    byte padding = precision - 1;
    while (precision--)
      mult *= 10;

    if (val >= 0)
      frac = (val - int(val)) * mult;
    else
      frac = (int(val) - val ) * mult;
    unsigned long frac1 = frac;

    while (frac1 /= 10)
      padding--;

    while (padding--)
      strcat(outstr, "0\0");

    strcat(outstr, itoa(frac, temp, 10));
  }

  // generate space padding
  if ((widthp != 0) && (widthp >= strlen(outstr))) {
    byte J = 0;
    J = widthp - strlen(outstr);

    for (i = 0; i < J; i++) {
      temp[i] = ' ';
    }

    temp[i++] = '\0';
    strcat(temp, outstr);
    strcpy(outstr, temp);
  }
  return outstr;
}

 

Bình luận

Không có sản phẩm nào trong giỏ hàng của bạn

Không có sản phẩm nào trong giỏ hàng của bạn

LINH KIỆN ĐIỆN TỬ ĐỨC HUY (29A BÙI XUÂN PHÁI)
LINH KIỆN ĐIỆN TỬ ĐỨC HUY (29A BÙI XUÂN PHÁI)