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

Lacak SAYA

Komponen dan persediaan

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
Kabel jumper (generik)
× 1
Baterai 9V (generik)
× 1
Kotak
× 1
Kotak
× 1

Tentang proyek ini

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

Ini adalah prototipe pertama saya ke arah ini.


Sistemnya sendiri sangat sederhana. Hanya Arduino Mega, GPS, GPRS Shield dan SD Card. Yang ini opsional tetapi saya sertakan karena saya pikir dalam meluncurkan tantangan kepada teman-teman saya di Facebook, mereka menelepon sistem dan mendapatkan SMS dengan posisi saya atau posisi terakhir saya yang diketahui.


Sistem selalu mencari posisi sebenarnya. Jika seseorang memanggil nomor kartu SIM, sistem akan mengirim SMS dengan posisi sebenarnya dan dengan tautan ke google maps. Misalnya misalnya:


Lokasi Hugo sekarang:Lat:54.315010, Log:10.130997. http://maps.google.com/maps?q=54.315010,+10.130997


Jika GPS tidak menerima posisi apapun, sistem akan mengirimkan posisi terakhir yang diketahui. Contoh:


Sepertinya saya tidak dapat menemukan Hugo. Terakhir kali saya melihatnya, adalah di: Lat:54.315010, Log: 10.130997. http://maps.google.com/maps?q=54.315010,+10.130997


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


Komponen

Saya menggunakan:


1x Arduino MEGA

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

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

1x Perisai Kartu SD 

Baterai 1x 9V

1x Kotak Plastik

Beberapa kabel


Hubungkan Komponen


Karena Arduino Mega menggunakan pinout yang berbeda, beberapa pengkabelan ulang diperlukan.

Pertama, Perisai Kartu SD, yang dirancang untuk Arduino Uno, menggunakan pin 10 hingga 13 untuk SPI, jadi agar ini berfungsi di Mega, mereka harus "diteruskan" ke pin SPI di MEGA.

Pin Arduino UNO SPI - Pin Arduino MEGA SPI

MOSI - 11 hingga 51

MISO - 12 hingga 50

SCK - 13 hingga 52

SS - 10 hingga 53

Pada GPRS Shield, pertama-tama perlu untuk mengatur pin komunikasi ke Serial Perangkat Lunak di jumper J7 pelindung.

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

Untuk detail selengkapnya tentang cara menghubungkan Kartu SIM di GPRS Shield, lihat proyek saya yang lain di Hackster.


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

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


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

Bersiap untuk menutup kotak dan uji lapangan.

Kode


Saya meninggalkan beberapa catatan singkat tentang kode ini.


Saya menggunakan perpustakaan ini untuk GPRS Shield.

Perlu melakukan beberapa perubahan untuk menggunakan Arduino Mega:


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

//#mendefinisikan UNO

#define MEGA


2) Dalam HWSerial.h decomment baris untuk definisi Mega mis. untuk Arduino Mega:

#define MEGA


Untuk GPS saya menggunakan perpustakaan ini.


Program itu sendiri berjalan dengan cara yang sangat sederhana. Setelah semua rutinitas pengaktifan (GPRS, GPS, dan inisialisasi 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 yang valid dan mendeteksi lebih dari 3 satelit (saya berasumsi di mana GPS memiliki penerimaan yang baik), jika ada panggilan, 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 ada panggilan, nomor panggilan akan menerima SMS dengan posisi terakhir saya yang diketahui. Sekali lagi semua data disimpan dalam kartu SD.


Pro dan Kontra


Karena ini adalah prototipe, ada banyak hal yang tidak berfungsi dengan baik. Tapi tujuannya selalu untuk meningkatkan.

Pertama baterai hanya bertahan selama satu jam!! Saya tidak menerapkan mekanisme penghematan energi di perangkat lunak. Jadi untuk perbaikan di masa mendatang, "Mode Tidur" adalah suatu keharusan.

Ukurannya juga ditinjau dan saya mendesain papan baru yang lengkap. Tampilan pertama adalah ini:

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

Terima kasih telah membaca.

Hugo Gomes

Kode

  • Kode
KodeArduino
#include "SIM900.h"#include #include "sms.h"#include "call.h"#include //Untuk mengganti pin Software/Hardware Serial, gunakan 27, 28 baris di GSM.cpp.//Untuk menggunakan Arduino Mega, tentukan MEGA di baris 5 di GSM.h.#include #include //Mega CS pinconst int chipSelect =53; //Kita harus membuat kelas untuk SMS dan panggilan.CallGSM call;SMSGSM sms;char number[20];byte stat =0;int value =0;char value_str[5];//GPS Variable// The TinyGPS++ objectTinyGPSPlus gps;const char *googlePrefix ="http://maps.google.com/maps?q=";double Lat;double Long;int hari, bulan, tahun;int jam, menit, detik;int num_sat;boolean one_point_true =false;pengaturan batal(){ //Koneksi serial. Serial.begin(9600); //koneksi GPRS Serial.print(F("Memulai GSM...")); //Mulai konfigurasi shield dengan baudrate. if (gsm.begin(9600)) Serial.println(F("SIAP")); else Serial.println(F("IDLE")); //koneksi GPS Serial.println(F("Memulai GPS")); //port com GPS Serial2.begin(9600); // Kartu SD mulai Serial.print(F("Inisialisasi kartu SD...")); // pastikan pin pemilihan chip default diatur ke // output, bahkan jika Anda tidak menggunakannya:pinMode(53, OUTPUT); // lihat apakah kartu ada dan dapat diinisialisasi:if (!SD.begin(chipSelect)) { Serial.println(F("Kartu gagal, atau tidak ada")); // jangan lakukan apa-apa lagi:return; } Serial.println(F("kartu diinisialisasi."));}//****************************** **********************************************//Loopvoid utama loop(){ Get_GPS(); // Dapatkan posisi Check_call(); //Lihat apakah ada yang menelepon};/////////////////////////////////////// ///////////////////////////////////////********* ************************************************** *******************// Dapatkan posisi dari GPSvoid Get_GPS(){ while (Serial2.available()> 0) if (gps.encode(Serial2.read ())) num_sat =gps.satellites.value(); //Serial.println(jumlah_sat); if (gps.location.isValid() ==1) { Lat =gps.location.lat(); Panjang =gps.location.lng(); if (Lat !=0 &&Panjang !=0) one_point_true =true; } if (gps.date.isValid()) { hari =gps.date.day(); bulan =gps.tanggal.bulan(); tahun =gps.tanggal.tahun(); } if (gps.time.isValid()) { jam =gps.time.hour(); menit =gps.time.minute(); detik =gps.time.second(); } smartDelay(500); if (milis()> 5000 &&gps.charsProcessed() <10) { Serial.println(F("Tidak ada GPS yang terdeteksi:periksa kabel.")); sementara (benar); }}//********************************************* ********************************// Versi penundaan khusus ini () memastikan bahwa objek gps// sedang "fed".static void smartDelay(unsigned long ms){ unsigned long start =milis(); lakukan { while (Serial2.available()) gps.encode(Serial2.read()); } while (milis() - mulai =3 &&one_point_true ==true) { char sms_OK[160]; sprintf(sms_OK, "Lokasi Hugo sekarang:Lat:%s, Log:%s. %s%s,+%s\n", lat_print, Long_print, googlePrefix, lat_print, Long_print); Serial.println(sms_OK); kesalahan =sms.KirimSMS(nomor, sms_OK); penundaan (500); if (kesalahan ==0) //Periksa 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, "Saya tidak dapat melihat untuk menemukan Hugo. Terakhir kali saya melihatnya, adalah di: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(nomor, sms_NOK); if (kesalahan ==0) //Periksa status { Serial.println(F("SMS ERROR")); } else { Serial.println(F("SMS OK")); } } else if (one_point_true ==false) { Serial.println(F("Tidak ada titik GPS yang valid")); }//Simpan semuanya di Kartu SD File dataFile =SD.open("datalog.txt", FILE_WRITE); // jika file tersedia, tulis ke file tersebut:if (dataFile) { dataFile.print(Date); dataFile.print(""); dataFile.print(waktu1); dataFile.print(""); dataFile.print(angka); dataFile.print(""); dataFile.print(lat_print); dataFile.print(", "); dataFile.print(Long_print); dataFile.print(""); dataFile.print(kesalahan); dataFile.println(); dataFile.close(); } // jika file tidak terbuka, muncul error:else { Serial.println(F("error membuka datalog.txt")); }}//////////////////////////////////////////////////////////////// ///////////////////////////////

Skema


Proses manufaktur

  1. Robot Menggunakan Raspberry Pi &Bridge Shield
  2. Pengontrol DMX yang Dioperasikan Web
  3. Arduino Spybot
  4. UnifiedWater v1
  5. HSVClock
  6. Robot Bajak Salju
  7. Kotak Suara Seluler
  8. Whac-A-Mole (Edisi Tombol)
  9. Jukebox Modern
  10. Arduino Apple Watch