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

Arduino + Modul GPS - Pemberitahu Tujuan

Komponen dan persediaan

Arduino UNO
× 1
Modul GPS (Generik)
Modul GPS NEO-6M
× 1
LED (generik)
× 1
Driver motor H-Bridge Ganda Instrumen Texas L293D
× 1
Gadget Anjing Coklat Motor Cakram Bergetar Kecoa Surya
× 1
Protoboard SparkFun Snappable
× 1
Baterai 9V (generik)
× 1
Konektor 9V ke Barrel Jack
× 1
Kotak
Sesuatu untuk menyertakan proyek.
× 1
Kabel jumper (generik)
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Wire Stripper

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Pendahuluan:Masalah dan Solusinya

Semua orang tahu bahwa kemacetan lalu lintas dapat membuang-buang waktu. Dan tidak mungkin untuk memprediksi berapa lama waktu yang dibutuhkan dari asal ke tujuan.

Masalah kemacetan lalu lintas mempengaruhi saya ketika saya datang ke sebuah kota dua bulan lalu. Setiap hari saya menghabiskan lebih dari dua jam terjebak dalam kemacetan. Dan saya merasa kenapa saya tidak bisa memanfaatkan waktu ini untuk melakukan sesuatu?

Catatan:Saya menggunakan transportasi umum. :-)

Ada banyak hal lain yang bisa kamu lakukan saat terjebak macet!

Beberapa di bawah ini tidak hanya menyenangkan, tetapi juga produktif:

  • Gunakan waktu untuk berpikir dan merencanakan, baik untuk proyek saat ini maupun yang akan datang.
  • Manfaatkan waktu untuk mendidik diri sendiri, menonton video instruksional, atau mengikuti kursus e-learning di Udemy, Coursera, dll.

Dan tentu saja membuat barang elektronik selalu menginspirasi saya. Jadi saya membuat pemberitahuan tujuan menggunakan modul Arduino dan GPS. Jadi apa yang dilakukannya adalah setiap kali Anda dekat dengan tujuan Anda, ia memberi tahu Anda dengan LED yang bersinar atau melalui getaran (dengan menggunakan motor bergetar mini). Saya telah menyediakan sirkuit untuk LED dan motor getar.

Untuk itu, pertama Anda perlu mencari lintang dan bujur untuk menentukan lokasi. Setelah Anda menemukan lokasi Anda, Anda dapat menggunakan nilai lintang dan bujur untuk menemukan jarak ke lokasi dan dengan menjaga jarak Anda dapat mengaktifkan pemberi tahu. Logikanya sederhana bukan?!

Jadi mari kita mulai.......

Bagian dan Alat:

Untuk memulai dengan pemberi tahu tujuan Anda, berikut adalah bagian yang diperlukan:

  • Arduino UNO
  • Modul GPS NEO-6M

GPS singkatan dari sistem penentuan posisi global dan dapat digunakan untuk menentukan posisi, waktu, dan kecepatan jika Anda bepergian.

  • Modul ini memiliki antena eksternal dan EEPROM internal.
  • Antarmuka:RS232 TTL
  • Supply daya:3V hingga 5V
  • Baudrate default:9600 bps
  • Bekerja dengan kalimat standar NMEA

Modul GPS NEO-6M memiliki empat pin:VCC, RX, TX, dan GND. Modul berkomunikasi dengan Arduino melalui komunikasi serial menggunakan pin TX dan RX, sehingga pengkabelan menjadi lebih sederhana:

Modul GPS NEO-6MPengkabelan ke Arduino UNO

VCC VIN

Pin RX TX ditentukan dalam serial perangkat lunak

Pin TX RX ditentukan dalam serial perangkat lunak

GND GND

IC L293D

L293D adalah IC driver motor 16-pin yang dapat mengontrol hingga dua motor DC secara bersamaan ke segala arah.

Mengapa menggunakan L293D?

Input ke IC driver motor atau driver motor adalah sinyal arus rendah. Fungsi rangkaian adalah mengubah sinyal arus rendah menjadi sinyal arus tinggi. Sinyal arus tinggi ini kemudian diberikan ke motor.

Perpustakaan TinyGPS++ :

Pustaka TinyGPS++ memudahkan untuk mendapatkan informasi lokasi dalam format yang berguna dan mudah dipahami.

Pustaka TinyGPS++ memungkinkan Anda mendapatkan lebih banyak informasi daripada sekadar lokasi, dan dengan cara sederhana, selain lokasi, Anda bisa mendapatkan:

>>tanggal

>>waktu

>>kecepatan

>>kursus

>>ketinggian

>>satelit

>>hdop

Menangkap Lintang dan Bujur:

Saya akan menyarankan mengunduh file fritzing yang diberikan di akhir proyek untuk klarifikasi koneksi yang lebih baik atau jika Anda ragu, jangan ragu untuk bertanya di komentar.

Kode Arduino untuk Pengambilan Lokasi:

#include 
#include
static const RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Objek TinyGPS++
TinyGPSPlus gps;
// Sambungan serial ke perangkat GPS
SoftwareSerial ss(RXPin, TXPin);
void setup(){
Serial.begin(9600);
ss.begin(GPSBaud);
}
void loop(){
// Sketsa ini menampilkan informasi setiap kali baru kalimat dikodekan dengan benar.
while (ss.available()> 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
Serial.print("Lintang =");
Serial.print(gps.location.lat(), 6);
Serial.print(" Bujur=");
Serial.println(gps.location.lng(), 6);
}
}
}

Catatan:Anda harus menginstal Perpustakaan TinyGPS++

sambungkan sesuai diagram rangkaian dan unggah kode di atas, Buka monitor serial pada baud rate 9600 dan Anda akan melihat output berikut

Catatan: Untuk mendapatkan garis lintang dan garis bujur mungkin diperlukan waktu. Karena penerima perlu menangkap sinyal. setiap kali mulai mendapatkan sinyal, LED pada modul GPS akan berkedip.

Pemberitahu Tujuan Melalui LED:

Jadi untuk memastikan ide saya berhasil, saya membuat prototipe menggunakan LED untuk memberi tahu tujuan. Jadi yang saya lakukan adalah, saya menambahkan nilai Latitude dan Longitude tujuan dari kode sebelumnya (Read_Lat_Lng.ino) dan menemukan jarak ke tujuan dari lokasi saat ini. Dan menggunakannya untuk mengatur rentang di mana LED harus menyala.

Kode:

#include 
#include
static const RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Objek TinyGPS++
TinyGPSPlus gps;
// Sambungan serial ke perangkat GPS
SoftwareSerial ss(RXPin, TXPin);
// Untuk statistik yang terjadi setiap 5 detik
unsigned long last =0UL;
int ledPin =13;
void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud);
pinMode(ledPin, OUTPUT);
}
void loop()
{
// Mengirim karakter yang masuk
while (ss.available()> 0)
gps.encode(ss.read());
if (gps.location.isUpdated())
{
Serial. print(F(" Lat="));
Serial.print(gps.location.lat(), 6);
Serial.print(F(" Long="));
Serial.println(gps.location.lng(), 6);
}
else if (millis() - terakhir> 5000)
{
Serial.println();
if (gps.location.isValid())
{
// ganti nilai 'Dest_LAT' dan 'Dest_LON' bas edon lokasi Anda
// Anda dapat menemukan Lintang dan Bujur dari Read_Lat_Lng.ino
static const double Dest_LAT =18.786254, Dest_LON =73.880798;
double distanceToDest =
TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
Dest_LAT,
Dest_LON);
Serial.print(F("Jarak ke Tujuan ="));
Serial.print(distanceToDest/1000, 6); // *Mencetak jarak ke tujuan
if(distanceToDest/1000 <0.050000) //Di sini ketika distanceToDest/1000 kurang dari 0.050000 LED menyala . Jadi ubah *jarak ke tujuan sesuai kebutuhan Anda.
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}
if (gps.charsProcessed() <10)
Serial.println(F("WARNING:No GPS data. Check wiring."));
last =milis();
Serial.println();
}
}

Unggah kode dan Anda akan melihat yang berikut di monitor serial.

Jadi jarak ke tujuan dapat digunakan untuk menentukan rentang di mana operasi keluaran (pemberitahuan) harus dilakukan.

Yang Terakhir!

OK prototipe saya bekerja dengan baik. Sekarang saya ingin memasukkan proyek saya ke dalam kotak yang dapat memuat Arduino, modul GPS, motor dengan IC driver, dan catu daya 9V.

Koneksi ke IC L293D

  • Hubungkan 5V untuk Mengaktifkan 1, Vs dan Vss pada L293D
  • Hubungkan pin output digital (kami menggunakan 6 dan 7 ) ke input 1 dan input 2 pada L293D.
  • Hubungkan GND Arduino Anda ke kedua pin GND di sisi L293D yang sama
  • Akhirnya hubungkan output 1 dan output 2 dari L293D ke pin motor Anda.

Kode:

#include 
#include
static const RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Objek TinyGPS++
TinyGPSPlus gps;
// Sambungan serial ke perangkat GPS
SoftwareSerial ss(RXPin, TXPin);
// Untuk statistik yang terjadi setiap 5 detik
unsigned long last =0UL;
int motorpin1=6;
int motorpin2=7;
void setup()
{
Serial .begin(115200);
ss.begin(GPSBaud);
pinMode(motorpin1,OUTPUT);
pinMode(motorpin2,OUTPUT);
}
void loop ()
{
// Mengirim karakter yang masuk
while (ss.available()> 0)
gps.encode(ss.read());
if (gps.location.isUpdated())
{
Serial.print(F(" Lat="));
Serial.print(gps.location.lat(), 6);
Serial.print(F(" Long="));
Serial.println(gps.location.lng(), 6);
}
else if (milis( ) - terakhir> 5000)
{
Serial.println();
if (gps.location.isValid())
{
// ganti nilai 'Dest_LAT' dan 'Dest_LON' berdasarkan lokasi Anda
// Anda dapat menemukan Lintang dan Bujur dari Read_Lat_Lng.ino
static const double Dest_LAT =18.786254, Dest_LON =73.880798;
double distanceToDest =
TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
Dest_LAT,
Dest_LON);
Serial.print(F("Jarak ke Tujuan ="));
Serial.print(jarakToDest/1000, 6); // *Mencetak jarak ke tujuan
if(distanceToDest/1000 <0.050000) //Di sini ketika distanceToDest/1000 kurang dari 0.050000 LED menyala . Jadi ubah *jarak ke tujuan sesuai kebutuhan Anda.
{
digitalWrite(motorpin1,LOW);
digitalWrite(motorpin2,HIGH);
}
else
{
digitalWrite(motorpin1, TINGGI);
digitalWrite(motorpin2,TINGGI);
}
}
if (gps.charsProcessed() <10)
Serial.println(F("PERINGATAN:Tidak ada data GPS. Periksa wiring."));
terakhir =milis();
Serial.println();
}
}

Selamat membuat!

Kode

  • Baca_Lat_Lng.ino
  • Destination_notifier_LED.ino
  • Destination_notifier_motor.ino
Baca_Lat_Lng.inoArduino
 #include #include static const RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// The TinyGPS++ objectTinyGPSPlus gps;// Koneksi serial ke GPS deviceSoftwareSerial ss(RXPin, TXPin);void setup(){ Serial.begin(9600); ss.begin(GPSBaud);}void loop(){ // Sketsa ini menampilkan informasi setiap kali kalimat baru dikodekan dengan benar. while (ss.available()> 0){ gps.encode(ss.read()); if (gps.location.isUpdated()){ Serial.print("Latitude="); Serial.print(gps.location.lat(), 6); Serial.print("Bujur ="); Serial.println(gps.location.lng(), 6); } }}
Destination_notifier_LED.inoArduino
#include #include static const RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// The TinyGPS++ objectTinyGPSPlus gps;// Koneksi serial ke GPS deviceSoftwareSerial ss(RXPin, TXPin);// Untuk statistik yang terjadi setiap 5 detikunsigned long last =0UL;int ledPin =13;void setup(){ Serial.begin(115200); ss.begin(GPSBaud);pinMode(ledPin, OUTPUT);}void loop(){ // Mengirim karakter yang masuk while (ss.available()> 0) gps.encode(ss.read()); if (gps.location.isUpdated()) { Serial.print(F(" Lat=")); Serial.print(gps.location.lat(), 6); Serial.print(F("Panjang=")); Serial.println(gps.location.lng(), 6); } else if (milis() - terakhir> 5000) { Serial.println(); if (gps.location.isValid()) { // ganti nilai 'Dest_LAT' dan 'Dest_LON' berdasarkan lokasi Anda // Anda dapat menemukan Lintang dan Bujur dari Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; double distanceToDest =TinyGPSPlus::distanceBetween( gps.location.lat(), gps.location.lng(), Dest_LAT, Dest_LON); Serial.print(F("Jarak ke Tujuan =")); Serial.print(distanceToDest/1000, 6); // *Mencetak jarak ke tujuan if(distanceToDest/1000 <0.050000) //Di sini ketika distanceToDest/1000 kurang dari 0.050000 LED menyala . Jadi ubah *jarak ke tujuan sesuai kebutuhan Anda. { digitalWrite(ledPin, TINGGI); } else { digitalWrite(ledPin, RENDAH); } } if (gps.charsProcessed() <10) Serial.println(F("PERINGATAN:Tidak ada data GPS. Periksa wiring.")); terakhir =mili(); Serial.println(); }}
Destination_notifier_motor.inoArduino
#include #include static const RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// The TinyGPS++ objectTinyGPSPlus gps;// Koneksi serial ke GPS deviceSoftwareSerial ss(RXPin, TXPin);// Untuk statistik yang terjadi setiap 5 detikunsigned long last =0UL;int motorpin1=6;int motorpin2=7;void setup(){ Serial.begin(115200); ss.begin(GPSBaud);pinMode(motorpin1,OUTPUT);pinMode(motorpin2,OUTPUT); }void loop(){ // Mengirim karakter yang masuk while (ss.available()> 0) gps.encode(ss.read()); if (gps.location.isUpdated()) { Serial.print(F(" Lat=")); Serial.print(gps.location.lat(), 6); Serial.print(F("Panjang=")); Serial.println(gps.location.lng(), 6); } else if (milis() - terakhir> 5000) { Serial.println(); if (gps.location.isValid()) { // ganti nilai 'Dest_LAT' dan 'Dest_LON' berdasarkan lokasi Anda // Anda dapat menemukan Lintang dan Bujur dari Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; double distanceToDest =TinyGPSPlus::distanceBetween( gps.location.lat(), gps.location.lng(), Dest_LAT, Dest_LON); Serial.print(F("Jarak ke Tujuan =")); Serial.print(distanceToDest/1000, 6); // *Mencetak jarak ke tujuan if(distanceToDest/1000 <0.050000) //Di sini ketika distanceToDest/1000 kurang dari 0.050000 LED menyala . Jadi ubah *jarak ke tujuan sesuai kebutuhan Anda. { digitalWrite(motorpin1,LOW); digitalWrite(motorpin2,TINGGI); } else { digitalWrite(motorpin1,HIGH); digitalWrite(motorpin2,TINGGI); } } if (gps.charsProcessed() <10) Serial.println(F("PERINGATAN:Tidak ada data GPS. Periksa wiring.")); terakhir =mili(); Serial.println(); }}

Skema

read_lat_lng_l3VSL54w0k.fzz destination_notifier_led_c7qaqTImXg.fzz destination_notifier_motor_fGc8OV6Y0w.fzz

Proses manufaktur

  1. Arduino Digital Dice
  2. JX Wave Generator
  3. Iron Man
  4. Temukan Saya
  5. Arduino 3D-Printed Robotic Arm
  6. Cara Menghubungkan Arduino Mega dengan Modul GPS NEO-6M
  7. Kontrol Humidifier Arduino
  8. u-blox LEA-6H 02 Modul GPS dengan Arduino dan Python
  9. NeoMatrix Arduino Pong
  10. Arduino Joystick