Proses manufaktur
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
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
#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")); }}//////////////////////////////////////////////////////////////// ///////////////////////////////
Proses manufaktur
Komponen dan persediaan Arduino 101 × 1 Arduino 4 Relay Shield × 1 Arduino GSM shield V2 × 1 Alat dan mesin yang diperlukan Besi solder (generik) Pistol lem panas (generik) Aplikasi dan layanan online Unity Android Stu
Komponen dan persediaan Arduino UNO × 1 PHPoC WiFi Shield untuk Arduino × 1 Seeed Servo Motor × 1 Kabel jumper × 1 Tentang proyek ini Pendahuluan Jika Anda pemula, saya sarankan membaca tentang Arduino - Servo Motor dan Arduino -.
Komponen dan persediaan Amazon Alexa Echo Dot × 1 Arduino UNO × 1 Espressif ESP8266 ESP-01 × 1 Arduino Proto Shield × 1 Arduino 4 Relay Shield × 1 Aqua Pump × 2 Lampu Tumbuh Tanaman × 1 Adaptor Daya DC 220V × 1 Ad
Komponen dan persediaan Arduino Mega 2560 × 1 Layar LCD 2-pin Adafruit × 1 Catu Daya 24V × 1 Sensor Kekuatan Adafruit × 1 Perakitan Bumper Pop × 1 Sakelar Bumper Pop × 1 Beralih Target × 1 Sakelar Rollover × 1 Peraki