+1 đánh giá

Tự làm hệ thống Định vị toàn cầu cho Ô tô, xe máy đơn giản kiểm tra qua tin nhắn

Việc mất trộm xảy ra thường xuyên, với hệ thống định vị GPS thì nó khá phổ biến ở Điện thoại tuy nhiên với Ô tô, xe máy thì chỉ những xe sang mới có. Bài hướng dẫn này sẽ hướng dẫn bạn làm thế nào để tự làm cho mình hệ thống định vị từ xa cho Xe của mình qua GPS và gửi về điện thoại của bạn qua tin nhắn.

Bước 1: Linh kiện cần thiết
khoere_linh-kien-gps-9698729133.png khoere_gps-module-6703298818.jpg

Bạn cần chuẩn bị các linh kiện sau:

- GPRS Shield

- Arduino UNO

- GPS module

- Ổn áp 7805

- Board tự ráp

Bước 2: Nối 7805
khoere_noi7805-4351487406.jpg khoere_noi-7805-2232298445.jpg

- Đầu tiên nối 7805 để tạo áp cho Arduino và GPS..

Bước 3: Nối dây GPS và GSM Shield
khoere_gps-4579411488.jpg khoere_gps-1-6769987642.jpg khoere_gps-2-5536396927.jpg khoere_gps-3-3243915638.jpg khoere_gps-4-7624516580.jpg khoere_gps-5-2221955382.jpg khoere_gps-6-2877434948.jpg khoere_gps-7-553822983.jpg

- Để hiểu thêm về GPS bạn có thể đọc thêm bài hướng dẫn sau: https://khoere.com/21/gps-la-gi-lap-trinh-giao-tiep-voi-no-dung-dieu-khien-nhu-the-nao

- Nối nguồn 5V và GND cho GPS từ 5V và GND của Arduino.

- Chân RXD của GPS nối với chân 5 của GSM Shield.

- Chân TXD của GPS nối với chân 4 của GSM Shield.

- Chèn SIM vào GSM Shield, Cắm Shield vào Arduino.

Bước 4: Lập trình

- Trước tiên bạn cần phải tải về thư viện lập trình TinyGPS tại đây

- Tải về vào giải nén vào thư mục thư viện của Arduino IDE C:Program Files (x86)Arduinolibraries ( Hoặc C:Program FilesArduinolibraries).

- Chương trình

#include <SoftwareSerial.h>
#include <string.h> 
#include <TinyGPS.h>
SoftwareSerial Sim900Serial(2, 3);
byte buffer[64];                             // buffer array for data recieve over serial port
int count=0;                                 // counter for buffer array
SoftwareSerial GPS(4, 5);
TinyGPS gps;
unsigned long fix_age;
long lat, lon;
float LAT, LON;
void gpsdump(TinyGPS &gps);
bool feedgps();
void getGPS();
void setup()
{
  Sim900Serial.begin(19200);     // the SIM900 baud rate
  GPS.begin(9600);                   // GPS module baud rate  
  Serial.begin(9600);                  // the Serial port of Arduino baud rate.
  delay(500);
  Sim900_Inti();
}
 
void loop()
{
  Sim900Serial.listen();
  if (Sim900Serial.available())                     // If date is comming from from GSM shield)
  {
    while(Sim900Serial.available())              // reading data into char array 
    {
      buffer[count ]=Sim900Serial.read();  // writing data into array
      if(count == 64)break;
     }
    Serial.write(buffer,count);                     // if no data transmission ends, write buffer to hardware serial port
    Cmd_Read_Act();                               //Read the COMMAND sent to SIM900 through SMS
    clearBufferArray();                               // call clearBufferArray function to clear the storaged data from the array
    count = 0;                                          // set counter of while loop to zero
 
 
  }
  if (Serial.available())                       // if data is available on hardwareserial port ==> data is comming from PC or notebook
    Sim900Serial.println(Serial.read());       // write it to the GPRS shield
}
void clearBufferArray()                             // function to clear buffer array
{
  for (int i=0; i<count;i )
    { buffer[i]=NULL;}                                // clear all index of array with command NULL
}
void Sim900_Inti(void)
{
  Sim900Serial.println(AT CMGF=1);    // Set GSM shield to sms mode
  Serial.println(AT CMGF=1);
  delay(500);
  Sim900Serial.println(AT CNMI=2,2);
  Serial.println(AT CMGF=1);
  delay(500);
}
void Cmd_Read_Act(void)                       //Function reads the SMS sent to SIM900 shield.
{ 
  char buffer2[64];
  for (int i=0; i<count;i )
  { buffer2[i]=char(buffer[i]);}  
    
  if (strstr(buffer2,matkhau))    //Comparing password entered with password stored in program  
  {
      Serial.println(Password Dung.);
      Serial.println(Dang tra loi tin nhan.. );
      SendTextMessage();            
  }
  
}
void SendTextMessage()
{
  
  
Sim900Serial.print(AT CMGF=1r);    //Sending the SMS in text mode
delay(100);
Sim900Serial.println(AT CMGS = 0945999555);//Số điện thoại cần gửi trả lời
delay(100);
Sim900Serial.println(Vui long cho..dang doc vi tri GPS);//the content of the message
delay(100);
Sim900Serial.println((char)26);//the ASCII code of the ctrl z is 26
delay(100);
Sim900Serial.println();
int counter=0;
GPS.listen();


for (;;)
{
   long lat, lon;
   unsigned long fix_age, time, date, speed, course;
   unsigned long chars;
   unsigned short sentences, failed_checksum;
   long Latitude, Longitude;
    
   // retrieves /- lat/long in 100000ths of a degree
   gps.get_position(&lat, &lon, &fix_age);
   getGPS();
   Serial.print(Latitude : );
   Serial.print(LAT/1000000,7);
   Serial.print( :: Longitude : );
   Serial.println(LON/1000000,7);
   if (LAT == 0 && LON == 0)
  {
    continue;    
  } 
  counter ;
  if (counter<30)
  {
    continue;    
  }
  
  Sim900Serial.print(AT CMGF=1r);    //Sending the SMS in text mode
  delay(100);
  Sim900Serial.println(AT CMGS = 0945999555);//Số điện thoại cần gửi trả lời
  delay(100);
  Sim900Serial.print(Latitude : );
  Sim900Serial.print(LAT/1000000,7);
  Sim900Serial.print( :: Longitude : );
  Sim900Serial.println(LON/1000000,7);//the content of the message
  delay(100);
  Sim900Serial.println((char)26);//the ASCII code of the ctrl z is 26
  delay(100);
  Sim900Serial.println();
  counter=0;
  break;
 }      
}

void getGPS()
{
   bool newdata = false;
   unsigned long start = millis();
   while (millis() - start < 1000)
   {
      if (feedgps ())
      {
         newdata = true;
       }
     }
     if (newdata)
   {
      gpsdump(gps);
    }
}
bool feedgps()
{
   while (GPS.available())
 {
      if (gps.encode(GPS.read()))
        return true;
      }return 0;
}
void gpsdump(TinyGPS &gps)
{
   gps.get_position(&lat, &lon);
   LAT = lat;
   LON = lon;
   {
      feedgps(); 
    }
  }

- Sau khi gắn SIM vào Shield bạn cần lưu số điện thoại vào điện thoại của bạn để nhắn tin.

- Sau khi hoàn thành mạch xong, bạn nhắn tin đến số điện thoại trên với nội dung matkhau thì bạn sẽ nhận được vị trí của thiết bị của bạn. ( bạn có thể thay đổi mật khẩu dễ dàng).

 

(!) Nếu có bất kỳ thắc mắc nào cần hỏi vui lòng đặt câu hỏi tại HỏiHay.Net, Cộng đồng Hỏi đáp Hỏi Hay sẽ trả lời bạn.
7,110 lượt xem ^tháng ^ngày, ^năm
admin 2,030 điểm

Please log in or register to Comment this Media.

Hoa Hồng Xanh 1 160 điểm
chào ad,hiện e đang làm đồ án về định vị toàn cầu cho xe máy qua tin nhắn về arduino UNO,ad có thể chia sẽ cho e 1 số mạch hỗ trợ được ko?gmail của e:leduynhat77@gmail.com ơn ad nhiều.!
+1 đánh giá
^tháng ^ngày, ^năm
admin 2,030 điểm
Bài viết có shield mà bạn, bạn có thể đặt mua ma ko cần làm mạch gì cả