ዝርዝር ሁኔታ:

ፊንዱካር: መኪናው ወደቆመበት ቦታ የሚሄድ ዘመናዊ የመኪና ቁልፍ ሰዎችን መምራት 11 ደረጃዎች (ከስዕሎች ጋር)
ፊንዱካር: መኪናው ወደቆመበት ቦታ የሚሄድ ዘመናዊ የመኪና ቁልፍ ሰዎችን መምራት 11 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ፊንዱካር: መኪናው ወደቆመበት ቦታ የሚሄድ ዘመናዊ የመኪና ቁልፍ ሰዎችን መምራት 11 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ፊንዱካር: መኪናው ወደቆመበት ቦታ የሚሄድ ዘመናዊ የመኪና ቁልፍ ሰዎችን መምራት 11 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Весна на Заречной улице (1956) ЦВЕТНАЯ полная версия 2024, ህዳር
Anonim
ፊንዱካር - መኪናው ወደቆመበት ቦታ የሚመራ ዘመናዊ የመኪና ቁልፍ ሰዎችን መምራት
ፊንዱካር - መኪናው ወደቆመበት ቦታ የሚመራ ዘመናዊ የመኪና ቁልፍ ሰዎችን መምራት

ከላይ የተጠቀሱትን ችግሮች ለመፍታት ይህ ፕሮጀክት ሰዎች መኪናውን ወደቆሙበት ሊያመራ የሚችል ዘመናዊ የመኪና ቁልፍ ለማዳበር ሀሳብ ያቀርባል። እና የእኔ ዕቅድ ጂፒኤስን በመኪና ቁልፍ ውስጥ ማዋሃድ ነው። መኪናውን ለመከታተል የስማርትፎን መተግበሪያን መጠቀም አያስፈልግም ፣ ሁሉም መመሪያው በመኪና ቁልፍ ላይ ብቻ ይታያል።

ደረጃ 1 የወረቀት ንድፍ

የወረቀት ንድፍ
የወረቀት ንድፍ

ሰዎች መኪናውን ለመቆለፍ ቁልፉን ሲጫኑ ፣ የአከባቢው መረጃ በራስ -ሰር በማይክሮ መቆጣጠሪያ ውስጥ ሊቀረጽ ይችላል። ከዚያ ሰዎች ወደ መኪናው መጓዝ ሲጀምሩ ፣ ወደ መኪናው አቀማመጥ በቀጥታ ለመምራት የተለያዩ ኤልኢዲ መብራቱ እና ብልጭ ድርግም የሚሉ ድግግሞሽ የመኪናውን ርቀት ያሳያል። ብልጭ ድርግም የሚል LED ን በቀላሉ መከተል እና መኪናውን በፍጥነት ማግኘት ይችላሉ።

ደረጃ 2 የሃርድዌር ዝርዝር

የሃርድዌር ዝርዝር
የሃርድዌር ዝርዝር

በዚህ ፕሮጀክት ውስጥ ጥቅም ላይ የዋሉ እነዚህ ክፍሎች ናቸው። አንዳንዶቹ ከ ቅንጣት ኪት (ዳቦ ሰሌዳ ፣ አዝራር ፣ ራስጌዎች) ፣ ሌሎች ከአዳፍ ፍሬ ኦፊሴላዊ ድር ጣቢያ (Adafruit Feather M0 ፣ Adafruit Ultimate GPS module ፣ Lpoly Battery and Coin Cell Battery) እና Amazon (NeoPixel Ring - 12 RGB LED) ይገዛሉ።

ደረጃ 3 የወረዳ ንድፍ

የወረዳ ንድፍ
የወረዳ ንድፍ

Neopixel_LED ከላባ M0 ፒን 6 ጋር ተገናኝቷል

Button_Unlock ከላባ M0 ፒን 12 ጋር ተገናኝቷል

አዝራር_ሎክ ከላባ M0 ፒን 13 ጋር ተገናኝቷል

ደረጃ 4 የሃርድዌር ግንኙነት

የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት

ራስጌዎቹን በ Adafruit M0 ላባ ፣ Adafruit Ultimate GPS Featherwing ይሽጡ። ሁለቱን ሰሌዳዎች አንድ ላይ ያከማቹ። የጂፒኤስ ላባ ክንፍ ያለ ተጨማሪ ሽቦዎች በቀጥታ ወደ ላባ M0 ሰሌዳዎ ውስጥ ይሰካል።

ደረጃ 5 የሶፍትዌር ንድፍ

የሶፍትዌር ንድፍ
የሶፍትዌር ንድፍ

የሙከራ አካላት

FIX ን ያንብቡ

ባዶነት ማዋቀር () {

Serial.println ("የጂፒኤስ ማሚቶ ፈተና"); Serial.begin (9600); Serial1.begin (9600); // ነባሪ NMEA GPS baud}

ባዶነት loop () {

ከሆነ (Serial.available ()) {char c = Serial.read (); ተከታታይ 1. መጻፍ (ሐ); } ከሆነ (Serial1.available ()) {char c = Serial1.read (); Serial.write (ሐ); }}

ብልጭታ የ LED ቀለበት

Adafruit NeoPixel ምሳሌዎችን ይመልከቱ።

የጂፒኤስ ስሌት ተግባራት

አዚሙትን አስሉ

// አዚሙትን አስሉ

ድርብ አዚም (ድርብ ላቲ_አ ፣ ድርብ ሎሎን ፣ ድርብ ላቲ_ቢ ፣ ድርብ lon_b) {

ድርብ 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; መ = ኃጢአት (lat_a)*ኃጢአት (lat_b)+cos (lat_a)*cos (lat_b)*cos (lon_b-lon_a); d = sqrt (1-d*መ); d = cos (lat_b)*ኃጢአት (lon_b-lon_a)/መ; d = አሲን (መ)*180/PI; መመለስ መ; }

በ LED ሰዓት ላይ ያለውን ጊዜ ያሰሉ ፣ ይህም የተሽከርካሪው አቅጣጫም ነው

// በ LED ሰዓት ላይ ያለውን ጊዜ ያሰሉ

int led_time (ድርብ አንግል) {

int ባንዲራ = 0; ከሆነ (አንግል = 15) {angle_time = angle_time + 1; } ከሆነ (ባንዲራ == 1) {angle_time = 12 - angle_time; } የመመለሻ አንግል_ጊዜ; }

በግለሰቡ እና በተሽከርካሪው መካከል ያለውን ርቀት ያሰሉ

// ርቀቱን ያስሉ

ድርብ ርቀት (ድርብ lat_a ፣ ድርብ lon_a ፣ double lat_b ፣ double lon_b) {

ድርብ EARTH_RADIUS = 6378137.0; ድርብ radLat1 = (lat_a * PI / 180.0); ድርብ radLat2 = (lat_b * PI / 180.0); ድርብ ሀ = radLat1 - radLat2; ድርብ ለ = (lon_a - lon_b) * PI / 180.0; ድርብ s = 2 * አሲን (ስኩዌር (ፓው (ኃጢአት (ሀ / 2) ፣ 2) + ኮስ (radLat1) * cos (radLat2) * ዱቄት (ኃጢአት (ለ / 2) ፣ 2))); s = s * EARTH_RADIUS / 10000000; መመለስ s; }

የ LED ማሳያ ተግባራት

ማሰስ መጀመሩን በማሳየት በክበብ ውስጥ ኤልኢዲዎችን ያብሩ

// የ LED ቀለበት ማብራት አንድ በአንድ አሰሳ መጀመሩን ያሳያል

ባዶነት ቀለም ይጥረጉ (uint32_t c ፣ uint8_t ይጠብቁ) {

ለ (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); መዘግየት (ይጠብቁ);}}

በርቀቱ መሠረት የ LED ድግግሞሹን ያግኙ

// የ LED ድግግሞሽ ያግኙ

int ድግግሞሽ (ድርብ ርቀት) {

int f = (int) ርቀት * 20; መመለስ ረ; }

የመኪናውን አቅጣጫ የሚያመለክት የተወሰኑ ኤልኢዲዎችን ያብሩ

// በ LED ላይ ማሳያ

strip.clear ();

strip.show (); መዘግየት (ድግግሞሽ (የመኪና_ሰው_እርቀት)); // መዘግየት (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); መዘግየት (ድግግሞሽ (የመኪና_ሰው_እርቀት)); // መዘግየት (500);

// LED ን ያሰናክሉ

ከሆነ (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }

ዋና

#አካፍፍፍፍፍፍፍፍፍፍፍፍፍፍፍፍፍፍ_ጂፒኤስ.ህ #አዳፍ ፍሬን_ኖፒክስል.ሕን ጨምሮ #ሃርድዌርSerial.h #አካት አዝራር.ህ #ሒሳብን ጨምሮ

#ኒዮፒክስል_ኤልዲ_ፒን 6 ን ይግለጹ 6

#ገላጭ ኒኦፒክስል_ኤልኢዲ_NUM 12 #ገላጭ አዝራር_ቁልፍ_ፒን 13 #ገላጭ አዝራር_ክፈት_ፒን 12 #ጂፒኤስ / ሲሪያል ተከታታይ 1

#ጂፒኤስሲኦን ውሸትን ይግለጹ

Adafruit_GPS GPS (& GPSSerial) ፤ Adafruit_NeoPixel strip = Adafruit_NeoPixel (Neopixel_LED_NUM ፣ Neopixel_LED_PIN ፣ NEO_GRB + NEO_KHZ800) የአዝራር አዝራር ቁልፍ (አዝራር_ሎክ_ፒን); የአዝራር አዝራር_ክፈት (አዝራር_ክፈት_ፒን); int button_flag = 0; int led_flag = 1; uint32_t ሰዓት ቆጣሪ = ሚሊስ (); ድርብ car_lat ፣ car_lon; ድርብ የመኪና_ሰውነት_ርቀት; ድርብ ማንቀሳቀስ_ አቅጣጫ; ድርብ car_azimuth; ድርብ የመኪና_ሰው_አንግል; int angle_time;

ባዶነት ማዋቀር () {

Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // ነባሪ NMEA GPS baud strip.begin (); // ይህንን መስመር RMC (የሚመከር ዝቅተኛ) እና ጂጂኤ (ውሂብን ማስተካከል) ከፍታ GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA) ን ለማብራት ይህንን መስመር አለመቀበል ፤ // የዝማኔ ተመን GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ) ያዘጋጁ ፤ // 1 Hz የዝማኔ መጠን // በአንቴና ሁኔታ ላይ ዝመናዎችን ይጠይቁ ፣ ዝም ለማለት አስተያየት ይስጡ/ GPS.sendCommand (PGCMD_ANTENNA) ፤ መዘግየት (1000);}

ባዶነት loop () {// ከሆነ (Serial.available ()) {

// char c = Serial.read (); // Serial1. ጻፍ (ሐ); //} // ከሆነ (Serial1.available ()) {char c = GPS.read (); ከሆነ (GPSECHO) ከሆነ (ሐ) Serial.print (c); // ዓረፍተ -ነገር ከተቀበለ ፣ ቼክውን መመርመር ፣ መተንተን እንችላለን… ከሆነ (ጂፒኤስ አዲስ ሌሎች ዓረፍተ ነገሮችን መያዝ! // ስለዚህ Serut.println (GPS.lastNMEA ()) ን ለማተም OUTPUT_ALLDATA ን እና trytng ን የሚጠቀሙ ከሆነ በጣም ይጠንቀቁ ፤ // ይህ ደግሞ አዲሱንNMEAreceived () ባንዲራ ወደ ሐሰት ያዘጋጃል (! // እኛ አንድን ዓረፍተ ነገር መተንተን ስንችል ሌላ መጠበቅ አለብን} // ሚሊስ () ወይም ሰዓት ቆጣሪ ከተጠጋ ፣ (ሰዓት ቆጣሪ> ሚሊስ ()) ሰዓት ቆጣሪ = ሚሊስ (); ከሆነ (ሚሊስ () - ሰዓት ቆጣሪ> 2000) {ሰዓት ቆጣሪ = ሚሊስ (); // የሰዓት ቆጣሪውን ዳግም ያስጀምሩ Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.seconds, DEC); Serial.print ('.'); Serial.println (GPS.milliseconds); Serial.print ("ቀን:"); Serial.print (GPS.day, DEC); Serial.print ('/'); Serial.print (GPS.month, DEC); Serial.print ("/20"); Serial.println (GPS.year, DEC); Serial.print ("Fix:"); Serial.print ((int) GPS.fix); Serial.print ("ጥራት:"); Serial.println ((int) GPS.fixquality); ከሆነ (GPS.fix) {Serial.print ("አካባቢ:"); Serial.print (GPS.latitude, 4); Serial.print (GPS.lat); Serial.print (","); Serial.print (GPS.longitude, 4); Serial.println (GPS.lon); Serial.print ("አካባቢ (በዲግሪዎች ፣ ከ Google ካርታዎች ጋር ይሰራል):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("ፍጥነት (ኖቶች):"); Serial.println (GPS.speed); Serial.print ("አንግል:"); Serial.println (GPS.angle); Serial.print ("ከፍታ:"); Serial.println (GPS.altitude); Serial.print ("ሳተላይቶች:"); Serial.println ((int) GPS.satellites); // (button_lock.read ()) {car_lat = GPS.latitudeDegrees; የተሽከርካሪውን ጂፒኤስ ያስቀምጡ። car_lon = GPS.longitudeDegrees; // ለማረም Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // (button_flag == 0) {button_flag = button_unlock.read () ከሆነ መኪናውን ለማግኘት ይጀምሩ። } ከሆነ (button_flag == 1 && led_flag == 1) {colorWipe (strip. ቀለም (0, 255, 0) ፣ 500); led_flag = 0; } ከሆነ (button_flag == 1) {car_person_distance = ርቀት (GPS.latitudeDegrees ፣ GPS.longitudeDegrees ፣ car_lat ፣ car_lon); // ርቀቱን ያሰሉ // የመኪና_person_distance = ርቀት (100.0005 ፣ 100.0005 ፣ 100.0 ፣ 100.0) ፤ // ለማረም Serial.println (car_person_distance); move_direction = GPS.angle; // የሚንቀሳቀስ አቅጣጫ (አንግል) // move_direction = 100.0; // የ Azimuth (አንግል) car_azimuth = azimuth (GPS.latitudeDegrees ፣ GPS.longitudeDegrees ፣ car_lat ፣ car_lon) ይመዝግቡ ፤ // car_azimuth = azimuth (100.0005 ፣ 100.0005 ፣ 100.0 ፣ 100.0); // ጊዜውን በ LED ሰዓት car_person_angle = car_azimuth - move_direction ላይ ያሰሉ። angle_time = led_time (የመኪና_ሰው_አንግል); // በ LED strip.clear (ማሳያ) ላይ ማሳያ; strip.show (); // መዘግየት (ድግግሞሽ (የመኪና_ሰው_እርቀት)); መዘግየት (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); // መዘግየት (ድግግሞሽ (የመኪና_ሰው_እርቀት)); መዘግየት (500); // (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}}} //}}}

ደረጃ 6 - በዳቦ ሰሌዳ ላይ አርም

በዳቦ ሰሌዳ ላይ አርም
በዳቦ ሰሌዳ ላይ አርም
በዳቦ ሰሌዳ ላይ አርም
በዳቦ ሰሌዳ ላይ አርም
በዳቦ ሰሌዳ ላይ አርም
በዳቦ ሰሌዳ ላይ አርም

ደረጃ 7 የሃርድዌር ስብሰባ

የሃርድዌር ስብሰባ
የሃርድዌር ስብሰባ
የሃርድዌር ስብሰባ
የሃርድዌር ስብሰባ
የሃርድዌር ስብሰባ
የሃርድዌር ስብሰባ

ደረጃ 8 በ Adobe Illustrator ውስጥ የኤሌክትሮኒክስ የቤቶች ዲዛይን

በ Adobe Illustrator ውስጥ የኤሌክትሮኒክስ የቤቶች ዲዛይን
በ Adobe Illustrator ውስጥ የኤሌክትሮኒክስ የቤቶች ዲዛይን

ደረጃ 9 የካርቶን ፕሮቶታይፕ

የካርቶን ፕሮቶታይፕ
የካርቶን ፕሮቶታይፕ
የካርቶን ፕሮቶታይፕ
የካርቶን ፕሮቶታይፕ

ይህ እርምጃ የቤቱን መጠን እና እያንዳንዱን የአምሳያው ቁራጭ ለማረጋገጥ ፣ የሳጥን መጠኑን እና የአዝራሩን አቀማመጥ እና የ LED አቀማመጥ ከተሰበሰቡ የኤሌክትሮኒክስ ክፍሎች ጋር የሚስማማ መሆኑን ለማረጋገጥ ያገለግላል።

ደረጃ 10: የበርች ኮምፖንች ፕሮቶታይፕ

የበርች ኮምፖንች ፕሮቶታይፕ
የበርች ኮምፖንች ፕሮቶታይፕ
የበርች ኮምፖንች ፕሮቶታይፕ
የበርች ኮምፖንች ፕሮቶታይፕ

ይህ የመጀመሪያ ተምሳሌት ነበር። ወደ ባትሪ መሙያ ለመሰካት አንድ ካሬ ቀዳዳ በመጨረሻ ወደ አንድ ቁርጥራጮች ተጨምሯል።

የሚመከር: