Isi kandungan:
- Langkah 1: Lakaran Kertas
- Langkah 2: Senarai Perkakasan
- Langkah 3: Reka Bentuk Litar
- Langkah 4: Sambungan Perkakasan
- Langkah 5: Reka Bentuk Perisian
- Langkah 6: Debug di Breadboard
- Langkah 7: Pemasangan Perkakasan
- Langkah 8: Reka Bentuk Perumahan Elektronik dalam Adobe Illustrator
- Langkah 9: Prototaip kadbod
- Langkah 10: Prototaip Papan Lapis Birch
Video: FinduCar: Kunci Kereta Pintar yang Membimbing Orang ke Tempat Letak Kereta: 11 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Untuk menyelesaikan masalah di atas, projek ini mencadangkan untuk mengembangkan kunci kereta pintar yang dapat mengarahkan orang ke tempat mereka meletakkan kereta. Dan rancangan saya adalah memasukkan GPS ke dalam kunci kereta. Tidak perlu menggunakan aplikasi telefon pintar untuk mengesan kereta, semua panduan hanya akan ditunjukkan pada kunci kereta.
Langkah 1: Lakaran Kertas
Apabila orang menekan butang untuk mengunci kereta, maklumat lokasi dapat direkodkan dalam mikrokontroler secara automatik. Kemudian, ketika orang mula menavigasi ke kereta, LED yang berbeza dinyalakan untuk mengarahkan ke kedudukan kereta dan frekuensi berkelip menunjukkan jarak ke kereta. Mereka dapat mengikuti LED yang berkelip dan mencari kereta dengan cepat.
Langkah 2: Senarai Perkakasan
Ini adalah komponen yang digunakan dalam projek ini. Sebilangannya dari kit partikel (papan roti, butang, tajuk), yang lain dibeli dari laman web rasmi Adafruit (Adafruit Feather M0, modul GPS Adafruit Ultimate, Bateri Lpoly dan Bateri Sel Coin) dan Amazon (Cincin NeoPixel - LED 12 RGB).
Langkah 3: Reka Bentuk Litar
Neopixel_LED disambungkan ke PIN 6 Feather M0
Butang_Unlock disambungkan ke PIN 12 Feather M0
Button_Lock disambungkan ke PIN 13 Feather M0
Langkah 4: Sambungan Perkakasan
Selesaikan tajuk dengan Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing. Susun kedua papan itu bersama-sama. GPS FeatherWing menyambung tepat ke papan Feather M0 anda tanpa wayar lagi.
Langkah 5: Reka Bentuk Perisian
Komponen Ujian
Baca FIX
batal persediaan () {
Serial.println ("Ujian echo GPS"); Serial.begin (9600); Bersiri1.begin (9600); // bawaan GPS NMEA lalai}
gelung kosong () {
jika (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } jika (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Cincin LED Berkelip
Lihat Contoh Adafruit NeoPixel.
Fungsi Pengiraan GPS
Hitungkan Azimuth
// Hitung Azimuth
azimut ganda (lat_a ganda, lon_a ganda, lat_b ganda, lon_b ganda) {
berganda d = 0; lat_a = lat_a * PI / 180; lon_a = lon_a * PI / 180; lat_b = lat_b * PI / 180; lon_b = lon_b * PI / 180; d = sin (lat_a) * sin (lat_b) + cos (lat_a) * cos (lat_b) * cos (lon_b-lon_a); d = sqrt (1-d * d); d = cos (lat_b) * sin (lon_b-lon_a) / d; d = asin (d) * 180 / PI; pulangan d; }
Hitung waktu pada jam LED, yang juga merupakan arah kenderaan
// Hitung masa pada jam LED
int led_time (sudut berganda) {
bendera int = 0; jika (sudut = 15) {angle_time = angle_time + 1; } jika (bendera == 1) {angle_time = 12 - angle_time; } pulangan angle_time; }
Hitung jarak antara orang itu dan kenderaannya
// Hitung Jarak
jarak berganda (double lat_a, double lon_a, double lat_b, double lon_b) {
berganda EARTH_RADIUS = 6378137.0; double radLat1 = (lat_a * PI / 180.0); double radLat2 = (lat_b * PI / 180.0); berganda a = radLat1 - radLat2; berganda b = (lon_a - lon_b) * PI / 180.0; double s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; pulangan s; }
Fungsi Paparan LED
Nyalakan LED dalam bulatan yang menunjukkan bahawa ia mula menavigasi
// Pencahayaan cincin LED satu persatu menunjukkan bahawa navigasi bermula
void colorWipe (uint32_t c, uint8_t waiting) {
untuk (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (tunggu);}}
Dapatkan frekuensi LED berdasarkan jarak
// Dapatkan Kekerapan LED
frekuensi int (jarak berganda) {
int f = (int) jarak * 20; pulangan f; }
Kelipkan LED tertentu yang menunjukkan arah kereta
// Paparan pada LED
strip.clear ();
strip.show (); kelewatan (kekerapan (jarak_penduduk kereta)); // kelewatan (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); kelewatan (kekerapan (jarak_penduduk kereta)); // kelewatan (500);
// Lumpuhkan LED
jika (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }
Utama
#include Adafruit_GPS.h # include Adafruit_NeoPixel.h #include HardwareSerial.h #include Button.h #include math.h
#tentukan Neopixel_LED_PIN 6
#define Neopixel_LED_NUM 12 #define Button_Lock_PIN 13 #define Button_Unlock_PIN 12 #define GPSSerial Serial1
#tentukan GPSECHO salah
Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel strip = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Butang_kunci butang (Button_Lock_PIN); Butang_kunci butang (Butang_Unlock_PIN); int button_flag = 0; int led_flag = 1; pemasa uint32_t = millis (); kereta_lat berganda, kereta_lon; kereta_kembara_jarak; dua arah_pindah arah; kereta berganda_azimut; kereta berganda_person_angle; int angle_time;
batal persediaan () {
Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // baud strip lalai NMEA GPS.begin (); // melepaskan garis ini untuk menghidupkan RMC (minimum yang disyorkan) dan GGA (memperbaiki data) termasuk ketinggian GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Tetapkan kadar kemas kini GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // Kadar kemas kini 1 Hz // Minta kemas kini mengenai status antena, beri komen untuk berdiam diri // GPS.sendCommand (PGCMD_ANTENNA); kelewatan (1000);}
gelung kosong () {// if (Serial.available ()) {
// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); jika (GPSECHO) jika (c) Serial.print (c); // jika ayat diterima, kita dapat memeriksa checksum, menguraikannya … jika (GPS.newNMEAreceived ()) {// perkara yang sukar di sini adalah jika kita mencetak ayat NMEA, atau data // kita akhirnya tidak mendengar dan menangkap ayat lain! // jadi berhati-hatilah jika menggunakan OUTPUT_ALLDATA dan cuba untuk mencetak data Serial.println (GPS.lastNMEA ()); // ini juga menetapkan benderaNMEAreceived () baru ke false jika (! GPS.parse (GPS.lastNMEA ())) // ini juga menetapkan benderaNMEAreceived () kepada pengembalian palsu; // kita tidak dapat menghuraikan ayat dalam keadaan yang mana kita hanya perlu menunggu yang lain} // jika milis () atau pemasa melilit, kita akan menetapkannya semula jika (timer> millis ()) timer = millis (); if (millis () - pemasa> 2000) {timer = millis (); // tetapkan semula pemasa Serial.print ("\ nWaktu:"); Serial.print (GPS.jam, DEC); Cetakan bersiri (':'); Serial.print (GPS.minute, DEC); Cetakan bersiri (':'); Serial.print (GPS.seconds, DEC); Cetakan bersiri ('.'); Serial.println (GPS.milliseconds); Cetakan bersiri ("Tarikh:"); Serial.print (GPS.day, DEC); Cetakan bersiri ('/'); Serial.print (GPS.month, DEC); Serial.print ("/ 20"); Serial.println (GPS.tahun, DEC); Serial.print ("Betulkan:"); Serial.print ((int) GPS.fix); Serial.print ("kualiti:"); Serial.println ((int) GPS.fixquality); jika (GPS.fix) {Serial.print ("Lokasi:"); Serial.print (GPS.latitude, 4); Serial.print (GPS.lat); Cetakan bersiri (","); Serial.print (GPS.longitude, 4); Serial.println (GPS.lon); Serial.print ("Lokasi (dalam darjah, berfungsi dengan Peta Google):"); Serial.print (GPS.latitudeDegrees, 4); Cetakan bersiri (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Kelajuan (simpulan):"); Serial.println (GPS.speed); Serial.print ("Sudut:"); Serial.println (GPS.angle); Serial.print ("Ketinggian:"); Serial.println (GPS.altitude); Serial.print ("Satelit:"); Serial.println ((int) GPS. satelit); // Simpan GPS kenderaan jika (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // untuk debug Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Mula mencari kereta jika (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_flag = 0; } jika (button_flag == 1) {car_person_distance = jarak (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Hitung jarak // car_person_distance = jarak (100.0005, 100.0005, 100.0, 100.0); // untuk debug Serial.println (car_person_distance); move_direction = GPS.angle; // Catat arah bergerak (sudut) // move_direction = 100.0; // Rakam Azimuth (sudut) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimuth (100.0005, 100.0005, 100.0, 100.0); // Hitung masa pada jam LED car_person_angle = car_azimuth - move_direction; angle_time = led_time (kereta_person_angle); // Paparan pada jalur LED.clear (); strip.show (); // kelewatan (kekerapan (jarak_penduduk_ kereta)); kelewatan (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); // kelewatan (kekerapan (jarak_penduduk kereta)); kelewatan (500); // Lumpuhkan LED jika (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
Langkah 6: Debug di Breadboard
Langkah 7: Pemasangan Perkakasan
Langkah 8: Reka Bentuk Perumahan Elektronik dalam Adobe Illustrator
Langkah 9: Prototaip kadbod
Langkah ini digunakan untuk mengesahkan ukuran perumahan dan setiap bagian model, memastikan ukuran kotak, dan posisi tombol, dan posisi LED sesuai dengan komponen elektronik yang dipasang.
Langkah 10: Prototaip Papan Lapis Birch
Ini adalah prototaip awal. Lubang persegi untuk memasang pengecas ditambahkan pada salah satu bahagian akhirnya.
Disyorkan:
Pembantu Tempat Letak Kereta Arduino - Letakkan Kereta Anda di Tempat Yang Betul Setiap Masa: 5 Langkah (dengan Gambar)
Pembantu Tempat Letak Kereta Arduino - Letakkan Kereta Anda di Tempat Yang Betul Setiap Masa: Dalam projek ini, saya akan menunjukkan kepada anda cara membina pembantu tempat letak kenderaan anda sendiri menggunakan Arudino. Pembantu tempat letak kereta ini mengukur jarak ke kereta anda dan membimbing anda untuk meletakkannya di tempat yang betul menggunakan bacaan paparan LCD dan LED, yang maju
Tempat Letak Kereta Pintar Berasaskan IOT: 7 Langkah
Tempat Letak Kereta Pintar Berasaskan IOT: Oleh Tanmay Pathak dan Utkarsh Mishra. Pelajar @ Institut Teknologi Maklumat Antarabangsa, Hyderabad (IIITH) ABSTRAKKami berjaya melaksanakan sistem parkir pintar berasaskan IOT. Dengan bantuan nod individu (sensor jarak) pada bila-bila masa
Keselamatan Siber-Fizikal Tempat Letak Kereta Pintar dan Kawalan Lalu Lintas: 6 Langkah
Keselamatan Fizikal Siber Tempat Letak Kereta Pintar dan Kawalan Lalu Lintas: Internet berkembang dengan berbilion peranti termasuk kereta, sensor, komputer, pelayan, peti sejuk, peranti mudah alih dan banyak lagi dengan kadar yang belum pernah terjadi sebelumnya. Ini memperkenalkan pelbagai risiko dan kerentanan dalam infrastruktur, operasi dan
Cara Membangunkan Sensor Tempat Letak Kereta untuk Mengatasi Kesakitan Mencari Tempat Percuma: 12 Langkah
Cara Membangunkan Sensor Tempat Letak Kereta untuk Mengatasi Kesakitan Mencari Tempat Percuma: Dalam projek ini kami akan membina sensor tempat letak kenderaan mudah menggunakan Raspberry Pi. Ternyata setiap pagi saya harus menghadapi soalan ini: adakah tempat letak kereta HANYA di hadapan pejabat saya sudah diambil? Kerana ketika itu sebenarnya, saya harus berkeliling
Tempat Letak Komputer yang Lebih Baik untuk Tempat Tidur: 7 Langkah (dengan Gambar)
Tempat Letak Laptop yang Lebih Baik untuk Tempat Tidur: Buat Tempat Letak Laptop yang ringkas tetapi sangat berguna untuk sekitar $ 15 dan 30-60 minit! Bagus untuk digunakan di tempat tidur semasa menaip, melayari, dan terutama menonton filem. Semasa saya menggunakan komputer riba di atas katil, selalunya tidak selesa. Saya perlu mengimbangi komputer riba dengan