विषयसूची:
- चरण 1: पेपर स्केच
- चरण 2: हार्डवेयर सूची
- चरण 3: सर्किट डिजाइन
- चरण 4: हार्डवेयर कनेक्शन
- चरण 5: सॉफ्टवेयर डिजाइन
- चरण 6: ब्रेडबोर्ड पर डीबग करें
- चरण 7: हार्डवेयर असेंबली
- चरण 8: एडोब इलस्ट्रेटर में इलेक्ट्रॉनिक्स हाउसिंग डिज़ाइन
- चरण 9: कार्डबोर्ड प्रोटोटाइप
- चरण 10: बिर्च प्लाईवुड प्रोटोटाइप
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
उपरोक्त समस्याओं को हल करने के लिए, यह परियोजना एक स्मार्ट कार कुंजी विकसित करने का प्रस्ताव करती है जो लोगों को कार पार्क करने के लिए निर्देशित कर सकती है। और मेरी योजना कार की चाबी में जीपीएस को एकीकृत करने की है। कार को ट्रैक करने के लिए स्मार्टफोन ऐप का उपयोग करने की कोई आवश्यकता नहीं है, सारा मार्गदर्शन कार की चाबी पर ही दिखाई देगा।
चरण 1: पेपर स्केच
जब लोग कार को लॉक करने के लिए बटन दबाते हैं, तो स्थान की जानकारी माइक्रोकंट्रोलर में स्वचालित रूप से दर्ज की जा सकती है। फिर, जब लोग कार में नेविगेट करना शुरू करते हैं, तो कार की स्थिति को निर्देशित करने के लिए अलग-अलग एलईडी को रोशन किया जाता है और ब्लिंकिंग आवृत्ति कार की दूरी को दर्शाती है। वे आसानी से पलक झपकते एलईडी का अनुसरण कर सकते हैं और जल्दी से कार ढूंढ सकते हैं।
चरण 2: हार्डवेयर सूची
ये इस परियोजना में उपयोग किए जाने वाले घटक हैं। कुछ कण किट (ब्रेडबोर्ड, बटन, हेडर) से हैं, अन्य Adafruit की आधिकारिक वेबसाइट (Adafruit Feather M0, Adafruit Ultimate GPS मॉड्यूल, Lpoly बैटरी और कॉइन सेल बैटरी) और Amazon (NeoPixel Ring - 12 RGB LED) से खरीदे जाते हैं।
चरण 3: सर्किट डिजाइन
Neopixel_LED पंख M0. के पिन 6 से जुड़ा है
Button_Unlock पंख M0. के पिन 12 से जुड़ा है
Button_Lock पंख M0. के पिन 13 से जुड़ा है
चरण 4: हार्डवेयर कनेक्शन
हेडर्स को एडफ्रूट एम0 फेदर, एडफ्रूट अल्टीमेट जीपीएस फेदरविंग से मिलाएं। दो बोर्डों को एक साथ ढेर करें। GPS FeatherWing बिना किसी अधिक तार के आपके पंख M0 बोर्ड में सीधे प्लग करता है।
चरण 5: सॉफ्टवेयर डिजाइन
परीक्षण घटक
एक फिक्स पढ़ें
व्यर्थ व्यवस्था() {
Serial.println ("जीपीएस इको टेस्ट"); सीरियल.बेगिन (९६००); सीरियल1.बेगिन (९६००); // डिफ़ॉल्ट एनएमईए जीपीएस बॉड}
शून्य लूप () {
अगर (सीरियल.उपलब्ध ()) {चार सी = सीरियल.रीड (); सीरियल1.लिखें (सी); } अगर (सीरियल1.उपलब्ध ()) {चार सी = सीरियल1.रीड (); सीरियल.राइट (सी); } }
ब्लिंक एलईडी रिंग
Adafruit NeoPixel उदाहरण देखें।
जीपीएस गणना कार्य
अज़ीमुथ की गणना करें
// अज़ीमुथ की गणना करें
डबल अज़ीमुथ (डबल लैट_ए, डबल लोन_ए, डबल लैट_बी, डबल लोन_बी) {
डबल डी = 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); डी = वर्ग (1-डी * डी); d = cos(lat_b)*sin(lon_b-lon_a)/d; डी = असिन (डी) * 180 / पीआई; वापसी घ; }
एलईडी घड़ी पर समय की गणना करें, जो वाहन की दिशा भी है
// एलईडी घड़ी पर समय की गणना करें
इंट एलईडी_टाइम (डबल एंगल) {
इंट फ्लैग = 0; अगर (कोण = 15) {कोण_समय = कोण_समय + 1; } अगर (ध्वज == 1) {angle_time = 12 - angle_time; } वापसी कोण_समय; }
व्यक्ति और उसके वाहन के बीच की दूरी की गणना करें
// दूरी की गणना करें
दुगनी दूरी(डबल lat_a, double lon_a, double lat_b, double lon_b) {
डबल EARTH_RADIUS = 6378137.0; डबल रेडलैट1 = (lat_a * PI / 180.0); डबल रेडलैट २ = (lat_b * PI / १८०.०); डबल ए = रेडलैट1 - रेडलाट 2; डबल बी = (लोन_ए - लोन_बी) * पीआई / १८०.०; डबल एस = 2 * असिन (वर्ग (पाउ (पाप (ए / 2), 2) + कॉस (रेडलैट 1) * कॉस (रेडलाट 2) * पाउ (पाप (बी / 2), 2))); एस = एस * EARTH_RADIUS / 10000000; वापसी एस; }
एलईडी प्रदर्शन कार्य
एक सर्कल में एल ई डी लाइट करें जो यह दर्शाता है कि यह नेविगेट करना शुरू कर देता है
// एलईडी रिंग लाइटिंग एक-एक करके दिखाती है कि नेविगेशन शुरू हो गया है
शून्य रंगवाइप (uint32_t c, uint8_t प्रतीक्षा करें) {
for(uint16_t i=0; i strip.setPixelColor(i, c); strip.show(); देरी (प्रतीक्षा); }}
दूरी के आधार पर एलईडी आवृत्ति प्राप्त करें
// एलईडी आवृत्ति प्राप्त करें
इंट फ्रीक्वेंसी (डबल डिस्टेंस) {
इंट एफ = (इंट)दूरी * 20; वापसी च; }
कार की दिशा का संकेत देते हुए निश्चित एलईडी को झपकाएं
// एलईडी पर प्रदर्शित करें
स्ट्रिप.क्लियर ();
कपड़े उतारने का प्रदर्शन(); देरी (आवृत्ति (car_person_distance)); // देरी (500); स्ट्रिप.सेट पिक्सेलकलर (एंगल_टाइम, स्ट्रिप। कलर (0, 0, 255)); कपड़े उतारने का प्रदर्शन(); देरी (आवृत्ति (car_person_distance)); // देरी (500);
// एलईडी अक्षम करें
अगर (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; एलईडी_फ्लैग = 1; स्ट्रिप.क्लियर (); कपड़े उतारने का प्रदर्शन(); }
मुख्य
#include Adafruit_GPS.h#include Adafruit_NeoPixel.h #include HardwareSerial.h #include Button.h #include math.h
#neopixel_LED_PIN 6 परिभाषित करें
#define Neopixel_LED_NUM 12 #define Button_Lock_PIN 13 #define Button_Unlock_PIN 12 #define GPSSerial Serial1
#GPSECHO को गलत परिभाषित करें
Adafruit_GPS GPS(&GPSSerial);Adafruit_NeoPixel स्ट्रिप = Adafruit_NeoPixel(Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); बटन बटन_लॉक (बटन_लॉक_पिन); बटन बटन_अनलॉक (बटन_अनलॉक_पिन); इंट बटन_फ्लैग = 0; इंट एलईडी_फ्लैग = 1; uint32_t टाइमर = मिली (); डबल कार_लैट, कार_लॉन; डबल कार_पर्सन_डिस्टेंस; डबल चाल_दिशा; डबल कार_अज़ीमुथ; डबल कार_पर्सन_एंगल; इंट एंगल_टाइम;
व्यर्थ व्यवस्था() {
सीरियल.बेगिन (115200); // सीरियल1.बेगिन (९६००); जीपीएस.बेगिन (९६००); // डिफ़ॉल्ट NMEA GPS बॉड स्ट्रिप.बेगिन (); // ऊंचाई वाले GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA) सहित RMC (अनुशंसित न्यूनतम) और GGA (डेटा ठीक करें) चालू करने के लिए इस लाइन को अनकम्मेंट करें; // अद्यतन दर GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ) सेट करें; // 1 हर्ट्ज अपडेट दर // एंटीना स्थिति पर अपडेट का अनुरोध करें, चुप रहने के लिए टिप्पणी करें // GPS.sendCommand(PGCMD_ANTENNA); देरी (1000);}
शून्य लूप () {// अगर (सीरियल उपलब्ध ()) {
// चार सी = सीरियल.रीड (); // सीरियल 1.राइट (सी); // } // अगर (सीरियल 1.उपलब्ध ()) {चार सी = जीपीएस.रीड (); अगर (जीपीएसईसीएचओ) अगर (सी) सीरियल.प्रिंट (सी); // यदि कोई वाक्य प्राप्त होता है, तो हम चेकसम की जांच कर सकते हैं, इसे पार्स कर सकते हैं … अगर (GPS.newNMEAreceived ()) {// यहां एक मुश्किल बात यह है कि अगर हम NMEA वाक्य, या डेटा प्रिंट करते हैं // हम अंत में नहीं सुनते हैं और अन्य वाक्यों को पकड़ना! // इसलिए बहुत सावधान रहें यदि OUTPUT_ALLDATA का उपयोग कर रहे हैं और डेटा Serial.println (GPS.lastNMEA ()) को प्रिंट करने का प्रयास कर रहे हैं; // यह newNMEAreceived() ध्वज को गलत पर भी सेट करता है if (!GPS.parse(GPS.lastNMEA())) // यह newNMEAreceived() ध्वज को झूठी वापसी पर भी सेट करता है; // हम एक वाक्य को पार्स करने में विफल हो सकते हैं जिस स्थिति में हमें बस एक और इंतजार करना चाहिए } // यदि मिलिस () या टाइमर चारों ओर लपेटता है, तो हम इसे बस रीसेट कर देंगे अगर (टाइमर> मिलिस ()) टाइमर = मिलिस (); अगर (मिली () - टाइमर> 2000) {टाइमर = मिली (); // टाइमर को रीसेट करें सीरियल.प्रिंट ("\ n समय:"); सीरियल.प्रिंट (GPS.hour, DEC); सीरियल.प्रिंट (':'); सीरियल.प्रिंट (जीपीएस.मिनट, डीईसी); सीरियल.प्रिंट (':'); सीरियल.प्रिंट (जीपीएस.सेकंड, डीईसी); सीरियल.प्रिंट ('।'); Serial.println(GPS.milliseconds); सीरियल.प्रिंट ("दिनांक:"); सीरियल.प्रिंट (GPS.day, DEC); सीरियल.प्रिंट ('/'); सीरियल.प्रिंट (जीपीएस.माह, डीईसी); सीरियल.प्रिंट ("/20"); Serial.println (GPS.year, DEC); सीरियल.प्रिंट ("फिक्स:"); Serial.print((int)GPS.fix); सीरियल.प्रिंट ("गुणवत्ता:"); Serial.println((int)GPS.fixquality); अगर (जीपीएस.फिक्स) { सीरियल.प्रिंट ("स्थान:"); सीरियल.प्रिंट (जीपीएस.अक्षांश, 4); सीरियल.प्रिंट (जीपीएस.लेट); सीरियल.प्रिंट ("", "); सीरियल.प्रिंट (जीपीएस। देशांतर, 4); Serial.println (GPS.lon); Serial.print ("स्थान (डिग्री में, Google मानचित्र के साथ काम करता है):"); सीरियल.प्रिंट (जीपीएस.अक्षांशडिग्री, 4); सीरियल.प्रिंट ("", "); Serial.println(GPS.longitudeDegrees, 4); Serial.print ("गति (गांठ):"); Serial.println (GPS.speed); सीरियल.प्रिंट ("कोण:"); Serial.println (GPS.angle); सीरियल.प्रिंट ("ऊंचाई:"); Serial.println (GPS.altitude); सीरियल.प्रिंट ("उपग्रह:"); Serial.println((int)GPS.satellites); // वाहन के जीपीएस को सेव करें अगर (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // डिबग के लिए सीरियल.प्रिंट ("कारलैटिट्यूड:"); Serial.println(car_lat); सीरियल.प्रिंट ("कार लॉन्गिट्यूड:"); Serial.println (car_lon); } // कार को ढूंढना शुरू करें अगर (button_flag == 0){ button_flag = button_unlock.read (); } if(button_flag == 1 && led_flag == 1){ colorWipe(strip. Color(0, 255, 0), 500); एलईडी_फ्लैग = 0; } अगर (button_flag == 1) {car_person_distance = दूरी (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // दूरी की गणना करें //car_person_distance = दूरी(१००.०००५, १००.०००५, १००.०, १००.०); // डिबग के लिए Serial.println (car_person_distance); move_direction = GPS.angle;//चलती दिशा (कोण) रिकॉर्ड करें//move_direction = 100.0; // अज़ीमुथ (कोण) को रिकॉर्ड करें car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); //car_azimuth = azimuth(१००.०००५, १००.०००५, १००.०, १००.०); // एलईडी घड़ी पर समय की गणना करें car_person_angle = car_azimuth - move_direction; एंगल_टाइम = एलईडी_टाइम (कार_पर्सन_एंगल); // एलईडी पट्टी पर प्रदर्शित करें। स्पष्ट (); कपड़े उतारने का प्रदर्शन(); // देरी (आवृत्ति (car_person_distance)); देरी (500); स्ट्रिप.सेट पिक्सेलकलर (एंगल_टाइम, स्ट्रिप। कलर (0, 0, 255)); कपड़े उतारने का प्रदर्शन(); // देरी (आवृत्ति (car_person_distance)); देरी (500); // एलईडी अक्षम करें अगर (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; एलईडी_फ्लैग = 1; स्ट्रिप.क्लियर (); कपड़े उतारने का प्रदर्शन(); } } } // } } }
चरण 6: ब्रेडबोर्ड पर डीबग करें
चरण 7: हार्डवेयर असेंबली
चरण 8: एडोब इलस्ट्रेटर में इलेक्ट्रॉनिक्स हाउसिंग डिज़ाइन
चरण 9: कार्डबोर्ड प्रोटोटाइप
इस कदम का उपयोग आवास के आकार और मॉडल के हर टुकड़े की पुष्टि करने के लिए किया जाता है, यह सुनिश्चित करता है कि बॉक्स का आकार, और बटन की स्थिति, और एलईडी स्थिति इकट्ठे इलेक्ट्रॉनिक घटकों में फिट हो।
चरण 10: बिर्च प्लाईवुड प्रोटोटाइप
यह प्रारंभिक प्रोटोटाइप था। चार्जर में प्लग करने के लिए एक चौकोर छेद अंत में एक टुकड़े में जोड़ा गया।
सिफारिश की:
Arduino पार्किंग सहायक - हर बार सही जगह पर अपनी कार पार्क करें: 5 कदम (चित्रों के साथ)
Arduino पार्किंग सहायक - हर बार सही जगह पर अपनी कार पार्क करें: इस परियोजना में, मैं आपको दिखाऊंगा कि कैसे एक अरुडिनो का उपयोग करके अपना खुद का पार्किंग सहायक बनाया जाए। यह पार्किंग सहायक आपकी कार की दूरी को मापता है और एलसीडी डिस्प्ले रीडआउट और एक एलईडी का उपयोग करके इसे सही जगह पर पार्क करने के लिए आपका मार्गदर्शन करता है, जो प्रगतिशील
बायोमेट्रिक कार एंट्री - बिना चाबी वाली कार: 4 कदम
बायोमेट्रिक कार एंट्री - ट्रू कीलेस कार: कुछ महीने पहले मेरी बेटी ने मुझसे पूछा, आधुनिक कारों में बायो-मेट्रिक एंट्री सिस्टम क्यों नहीं है, जबकि एक सेल फोन में भी है। तब से उसी को लागू करने पर काम कर रहा था और अंत में मेरे टी पर कुछ स्थापित और परीक्षण करने में कामयाब रहा
हैट नॉट हैट - उन लोगों के लिए एक हैट जो वास्तव में टोपी नहीं पहनते हैं, लेकिन एक हैट अनुभव चाहते हैं: 8 कदम
हैट नॉट हैट - उन लोगों के लिए एक हैट जो वास्तव में टोपी नहीं पहनते हैं, लेकिन एक टोपी अनुभव चाहते हैं: मैंने हमेशा कामना की है कि मैं एक टोपी वाला व्यक्ति बन सकता हूं, लेकिन मुझे कभी ऐसी टोपी नहीं मिली जो मेरे लिए काम करे। यह "हैट नॉट हैट," या फासिनेटर जैसा कि इसे कहा जाता है, मेरी टोपी की समस्या का एक ऊपरी-क्रस्टी समाधान है जिसमें मैं केंटकी डर्बी में भाग ले सकता हूं, vacu
कम जगह में ज्यादा लेट्यूस उगाना या जगह में लेट्यूस उगाना, (अधिक या कम): 10 कदम
कम जगह में अधिक सलाद उगाना या… अंतरिक्ष में बढ़ते हुए लेट्यूस, (अधिक या कम) मैं अंतरिक्ष फसल उत्पादन के लिए डिजाइनिंग और अपना पहला इंस्ट्रक्शनल पोस्ट करने के लिए अधिक उत्साहित नहीं हो सकता था। शुरू करने के लिए, प्रतियोगिता ने हमें
उंगली के हिलने-डुलने से काम करने वाली स्मार्ट कार: 7 कदम (चित्रों के साथ)
उंगली के हिलने-डुलने से काम करने वाली स्मार्ट कार: यह मेरी प्रोजेक्ट स्मार्ट कार है जो मोबाइल या सामान्य रिमोट कंट्रोल से काम नहीं कर रही है यह दस्ताने से काम करती है इसलिए रिमोट कंट्रोल मेरी उंगली की गति है