Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Komponen dan Perlengkapan

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS
Arduino Mega 2560
× 1
NEO 6 GPS
× 1
Adafruit SD Card Shield
× 1
Adafruit SD Card Shield
× 1
Seeedstudio gprs shield V2.0
× 1
Seeed GPRS Shield V2.0
× 1
Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS
Kabel jumper (generik)
× 1
Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS
Baterai 9V (generik)
× 1
Box
× 1
Box
× 1

Tentang Proyek Ini

Beberapa waktu lalu saya memutuskan untuk membuat pelacak Mobil/Pribadi.

Ini adalah prototip pertama saya di arah ini.


Sistem itu sendiri sangat sederhana. Hanya Arduino Mega, GPS, GPRS Shield dan Kartu SD. Ini adalah opsional tetapi saya sertakan karena saya memikirkan tantangan untuk teman-teman saya di Facebook, mereka menelepon sistem dan mendapatkan SMS dengan posisi saya atau posisi terakhir yang diketahui.


Sistem selalu mencari posisi aktual. Jika seseorang menelepon nomor kartu SIM, sistem akan mengirim SMS dengan posisi aktual dan dengan link ke google maps. Contoh:


Hugo location is now: Lat: 54.315010, Log: 10.130997. https://maps.google.com/maps?q=54.315010,+10.130997


Jika GPS tidak menerima posisi apa pun, sistem akan mengirim posisi terakhir yang diketahui. Contoh:


I can not seem to find Hugo. Last time that I've saw him, was in: Lat: 54.315010, Log: 10.130997. https://maps.google.com/maps?q=54.315010,+10.130997


Tanggal, waktu, posisi dan status SMS kemudian disimpan di Kartu SD.


Komponen

Saya menggunakan:


1x Arduino MEGA

1x GPRS Shield (Mungkin juga untuk menggunakan GSM shield lain yang tersedia di pasaran)

1x GPS (Saya menggunakan NEO 6, sangat populer di ebay)

1x SD Card Shield

1x 9V Battery

1x Kotak Plastik

Beberapa kabel


Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Menghubungkan Komponen


Karena Arduino Mega menggunakan pinout yang berbeda, beberapa rerangkaian diperlukan.

Pertama SD Card Shield, yang dirancang untuk Arduino Uno, menggunakan pin 10 hingga 13 untuk SPI, jadi agar ini dapat bekerja pada Mega, mereka perlu "dipindahkan" ke pin SPI pada MEGA.

Pin SPI Arduino UNO - Pin SPI Arduino MEGA

MOSI - 11 ke 51

MISO - 12 ke 50

SCK - 13 ke 52

SS - 10 ke 53

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Pada GPRS Shield pertama perlu menyiapkan pin komunikasi ke Software Serial di J7 jumper pada shield.

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Kemudian menggunakan beberapa kabel saya menghubungkan Pin 7 dan 8 di GPRS shield ke port Serial 1 (pin 18 dan 19 di Arduino Mega).

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Untuk detail lebih lanjut tentang cara menghubungkan Kartu SIM di GPRS Shield, silakan lihat proyek saya lainnya di Hackster.


GPS terhubung ke port Serial 2 (pin 16 dan 17) di Arduino Mega.

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Juga daya yang diperlukan untuk GPS diambil dari pin 5V dan pin GND Kartu SD.


Baterai 9V dapat dihubungkan ke pin Vin atau ke colokan daya.

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS
Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS
Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Persiapan untuk menutup kotak dan pengujian lapangan.

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Kode


Saya meninggalkan beberapa catatan singkat tentang kode di sini.


Saya menggunakan perpustakaan ini untuk GPRS Shield.

Diperlukan beberapa perubahan untuk menggunakan Arduino Mega:


1) Buka GSM.h dan komentar-komentarkan baris yang sesuai seperti di bawah ini misalnya untuk Arduino Mega:

//#define UNO

#define MEGA


2) Di HWSerial.h buka komentar baris untuk definisi Mega misalnya untuk Arduino Mega:

#define MEGA


Untuk GPS saya menggunakan perpustakaan ini.


Program itu sendiri berjalan dengan cara yang sangat sederhana. Setelah semua rutinitas startup (inisialisasi GPRS, GPS dan Kartu SD), GPS akan mencoba menentukan jumlah satelit yang tersedia dan titik koordinat GPS yang valid.

Jika panggilan dilakukan selama periode ini, panggilan akan ditolak secara otomatis dan tidak akan terjadi apa-apa.

Ketika GPS memiliki lokasi valid dan mendeteksi lebih dari 3 satelit (saya mengasumsikan bahwa GPS memiliki penerimaan yang baik), jika panggilan dilakukan, sistem akan mengirim SMS ke nomor panggilan dengan posisi saya. Semua data ini akan disimpan di Kartu SD.

Jika GPS memiliki kurang dari 3 satelit, tidak ada posisi valid yang dapat diambil, jadi jika panggilan dilakukan, nomor panggilan akan menerima SMS dengan posisi terakhir yang diketahui saya. Lagi semua data disimpan di Kartu SD.


Kelebihan dan Kekurangan


Karena ini adalah prototipe, ada banyak hal yang tidak bekerja dengan baik. Namun tujuannya selalu untuk memperbaiki.

Pertama baterai hanya bertahan selama satu jam!! Saya tidak menerapkan mekanisme hemat energi dalam perangkat lunak. Jadi untuk perbaikan di masa depan "Sleep Mode" adalah keharusan.

Ukuran juga ditinjau dan saya merancang papan baru sepenuhnya. Tampilan pertama adalah ini:

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Silakan tulis kepada saya jika Anda menemukan kesalahan atau jika Anda memiliki saran/perbaikan atau pertanyaan.

Terima kasih telah membaca.

Hugo Gomes

Kode

KodeArduino
#include "SIM900.h" #include <SoftwareSerial.h> #include "sms.h" #include "call.h" #include <TinyGPS++.h> //To change pins for Software/Hardware Serial, use 27, 28 lines in GSM.cpp. //To use Arduino Mega please define MEGA in line 5 in GSM.h. #include <SPI.h> #include <SD.h> //Mega CS pin const int chipSelect = 53; //We have to create the classes for SMSs and calls. CallGSM call; SMSGSM sms; char number[20]; byte stat = 0; int value = 0; char value_str[5]; //GPS Variable // The TinyGPS++ object TinyGPSPlus gps; const char *googlePrefix = "https://maps.google.com/maps?q="; double Lat; double Long; int day, month, year; int hour, minute, second; int num_sat; boolean one_point_true = false; void setup() { //Serial connection. Serial.begin(9600); //GPRS connection Serial.print(F("Starting GSM...")); //Start configuration of shield with baudrate. if (gsm.begin(9600)) Serial.println(F("READY")); else Serial.println(F("IDLE")); //GPS connection Serial.println(F("Starting GPS"); //GPS com port Serial2.begin(9600); //SD Card start Serial.print(F("Initializing SD card...")); // make sure that the default chip select pin is set to // output, even if you don't use it: pinMode(53, OUTPUT); // see if the card is present and can be initialized: if (!SD.begin(chipSelect)) { Serial.println(F("Card failed, or not present"); // don't do anything more: return; } Serial.println(F("card initialized.")); } //****************************************************************************** //Main loop void loop() { Get_GPS(); // Get the position Check_call(); //See if anyone is calling }; //////////////////////////////////////////////////////////////////////////////// //****************************************************************************** // Get the position from the GPS void Get_GPS() { while (Serial2.available() > 0) if (gps.encode(Serial2.read())) num_sat = gps.satellites.value(); //Serial.println(num_sat); if (gps.location.isValid() == 1) { Lat = gps.location.lat(); Long = gps.location.lng(); if (Lat != 0 && Long != 0) one_point_true = true; } if (gps.date.isValid()) { day = gps.date.day(); month = gps.date.month(); year = gps.date.year(); } if (gps.time.isValid()) { hour = gps.time.hour(); minute = gps.time.minute(); second = gps.time.second(); } smartDelay(500); if (millis() > 5000 && gps.charsProcessed() < 10) { Serial.println(F("No GPS detected: check wiring.")); while (true); } } //****************************************************************************** // This custom version of delay() ensures that the gps object // is being "fed". static void smartDelay(unsigned long ms) { unsigned long start = millis(); do { while (Serial2.available()) gps.encode(Serial2.read()); } while (millis() - start < ms); } //////////////////////////////////////////////////////////////////////////////// //****************************************************************************** // Check to see if anyone is calling void Check_call() { //Checks status of call stat = call.CallStatusWithAuth(number, 0, 0); //If the any incoming call if (stat == CALL_INCOM_VOICE_AUTH) { delay(100); //Hang up the call. call.HangUp(); //Reject the call Send_SMS(); } } //////////////////////////////////////////////////////////////////////////////// //****************************************************************************** // Send an SMS with the current position or the last known position void Send_SMS() { int error; char Date[13]; sprintf(Date, "%02d/%02d/%04d ", day, month, year); char time1[10]; sprintf(time1, "%02d:%02d:%02d ", hour, minute, second); //Serial print GPS data /* Serial.print(Date); Serial.print(" "); Serial.print(time1); Serial.print(" "); Serial.print("Lat: "); Serial.print(Lat, 6); Serial.print(" "); Serial.print("Long: "); Serial.println(Long, 6); */ delay(100); char lat_print[10]; dtostrf(Lat, 5, 6, lat_print); char Long_print[10]; dtostrf(Long, 5, 6, Long_print); if (num_sat >= 3 && one_point_true == true) { char sms_OK[160]; sprintf(sms_OK, "Hugo location is now: Lat: %s, Log: %s. %s%s,+%s\n", lat_print, Long_print, googlePrefix, lat_print, Long_print); Serial.println(sms_OK); error = sms.SendSMS(number, sms_OK); delay(500); if (error == 0) //Check status { Serial.println(F("SMS ERROR"); } else { Serial.println(F("SMS OK"); } } else if (num_sat < 3 && one_point_true == true) { char sms_NOK[150]; sprintf(sms_NOK, "I can not seen to find Hugo. Last time that i've saw him, was in: Lat: %s, Log: %s. %s%s,+%s\n", lat_print, Long_print, googlePrefix, lat_print, Long_print); Serial.println(sms_NOK); int error = sms.SendSMS(number, sms_NOK); if (error == 0) //Check status { Serial.println(F("SMS ERROR"); } else { Serial.println(F("SMS OK"); } } else if (one_point_true == false) { Serial.println(F("No valid GPS point"); } //Save everything in the SD Card File dataFile = SD.open("datalog.txt", FILE_WRITE); // if the file is available, write to it: if (dataFile) { dataFile.print(Date); dataFile.print(" "); dataFile.print(time1); dataFile.print(" "); dataFile.print(number); dataFile.print(" "); dataFile.print(lat_print); dataFile.print(", "); dataFile.print(Long_print); dataFile.print(" "); dataFile.print(error); dataFile.println(); dataFile.close(); } // if the file isn't open, pop up an error: else { Serial.println(F("error opening datalog.txt"); } } //////////////////////////////////////////////////////////////////////////////// 

Skematik

Track ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRSTrack ME: Prototipe Pelacak Mobil Arduino Mega 2560 dengan GPS & GPRS

Proses manufaktur

  1. Membangun Robot Cerdas dengan Bridge Shield – Integrasi Raspberry Pi & Arduino
  2. Sistem Pencahayaan DMX Dikonrol Web – Kontroler Master Arduino
  3. Membuat Spybot Arduino yang Dikontrol melalui Bluetooth
  4. UnifiedWater v1 – Kit Lengkap Sensor Kualitas Air Arduino
  5. Jam HSV: Jam Digital Warna-Warna yang Dapat Disesuaikan untuk Penggemar Arduino
  6. Robot Pengusir Salju Canggih untuk Pembersihan Musim Dingin yang Efisien
  7. Sistem Pemilihan Portabel dengan Konektivitas GSM
  8. Game Arcade Whac-A-Mole DIY (Edisi Tombol) – Proyek Arduino
  9. Modern Jukebox: Pemutar Musik LED Raspberry Pi & Arduino
  10. Jam Tangan Pintar DIY Arduino: Buat Jam Tangan Gaya Apple Watch Sendiri