সুচিপত্র:

FinduCar: একটি স্মার্ট কার কী যেখানে গাড়ি পার্ক করা হয়েছে সেখানে মানুষকে নির্দেশনা দিচ্ছে: 11 টি ধাপ (ছবি সহ)
FinduCar: একটি স্মার্ট কার কী যেখানে গাড়ি পার্ক করা হয়েছে সেখানে মানুষকে নির্দেশনা দিচ্ছে: 11 টি ধাপ (ছবি সহ)

ভিডিও: FinduCar: একটি স্মার্ট কার কী যেখানে গাড়ি পার্ক করা হয়েছে সেখানে মানুষকে নির্দেশনা দিচ্ছে: 11 টি ধাপ (ছবি সহ)

ভিডিও: FinduCar: একটি স্মার্ট কার কী যেখানে গাড়ি পার্ক করা হয়েছে সেখানে মানুষকে নির্দেশনা দিচ্ছে: 11 টি ধাপ (ছবি সহ)
ভিডিও: Как спрятать данные в ячейках Excel? 2024, নভেম্বর
Anonim
FinduCar: একটি স্মার্ট গাড়ির চাবি মানুষকে পথ দেখায় যেখানে গাড়ি পার্ক করা আছে
FinduCar: একটি স্মার্ট গাড়ির চাবি মানুষকে পথ দেখায় যেখানে গাড়ি পার্ক করা আছে

উপরের সমস্যাগুলি সমাধান করার জন্য, এই প্রকল্পটি একটি স্মার্ট গাড়ির চাবি তৈরি করার প্রস্তাব দেয় যা মানুষকে গাড়ি যেখানে পার্ক করে সেখানে নিয়ে যেতে পারে। এবং আমার পরিকল্পনা হল গাড়ির চাবিতে একটি জিপিএস সংহত করা। গাড়ি ট্র্যাক করার জন্য স্মার্টফোন অ্যাপ ব্যবহার করার দরকার নেই, সমস্ত নির্দেশিকা শুধু গাড়ির চাবিতেই দেখাবে।

ধাপ 1: কাগজের স্কেচ

কাগজের স্কেচ
কাগজের স্কেচ

যখন লোকেরা গাড়িটি লক করার জন্য বোতাম টিপবে, তখন অবস্থানের তথ্য স্বয়ংক্রিয়ভাবে মাইক্রোকন্ট্রোলারে রেকর্ড করা যাবে। তারপরে, যখন লোকেরা গাড়িতে চলাচল শুরু করে, তখন বিভিন্ন LED গাড়ির অবস্থানের দিকে সরাসরি আলোকিত হয় এবং ঝলকানি ফ্রিকোয়েন্সি গাড়ির দূরত্ব দেখায়। তারা সহজেই জ্বলজ্বলে এলইডি অনুসরণ করতে পারে এবং দ্রুত গাড়িটি খুঁজে পেতে পারে।

পদক্ষেপ 2: হার্ডওয়্যার তালিকা

হার্ডওয়্যার তালিকা
হার্ডওয়্যার তালিকা

এগুলি এই প্রকল্পে ব্যবহৃত উপাদান। কিছু কণা কিট (ব্রেডবোর্ড, বোতাম, হেডার) থেকে, অন্যগুলি অ্যাডাফ্রুট অফিসিয়াল ওয়েবসাইট (অ্যাডাফ্রুট ফেদার এম 0, অ্যাডাফ্রুট আলটিমেট জিপিএস মডিউল, লপলি ব্যাটারি এবং কয়েন সেল ব্যাটারি) এবং আমাজন (নিওপিক্সেল রিং - 12 আরজিবি এলইডি) থেকে কেনা হয়।

ধাপ 3: সার্কিট ডিজাইন

সার্কিট ডিজাইন
সার্কিট ডিজাইন

Neopixel_LED পালক M0 এর PIN 6 এর সাথে সংযুক্ত

বাটন_উনলকটি ফেদার এম 0 এর পিন 12 এর সাথে সংযুক্ত

বাটন_লক ফেদার এম 0 এর পিন 13 এর সাথে সংযুক্ত

ধাপ 4: হার্ডওয়্যার সংযোগ

হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ

Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing- এর সাথে হেডারগুলি বিক্রি করুন। দুটি বোর্ড একসাথে স্ট্যাক করুন। জিপিএস ফেদারউইং আপনার ফেদার এম 0 বোর্ডে কোন তারের ছাড়াই প্লাগ করে।

ধাপ 5: সফটওয়্যার ডিজাইন

সফটওয়্যার ডিজাইন
সফটওয়্যার ডিজাইন

পরীক্ষার উপাদান

একটি ফিক্স পড়ুন

অকার্যকর সেটআপ() {

Serial.println ("জিপিএস ইকো টেস্ট"); Serial.begin (9600); Serial1.begin (9600); // ডিফল্ট NMEA GPS baud}

অকার্যকর লুপ () {

যদি (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } যদি (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}

জ্বলজ্বলে LED রিং

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); d = sqrt (1-d*d); d = cos (lat_b)*sin (lon_b-lon_a)/d; d = asin (d)*180/PI; ফেরত d; }

LED ঘড়িতে সময় গণনা করুন, যা গাড়ির দিকও

// LED ঘড়িতে সময় গণনা করুন

int led_time (ডবল এঙ্গেল) {

int পতাকা = 0; যদি (কোণ = 15) {কোণ_ সময় = কোণ_ সময় + 1; } যদি (পতাকা == 1) {কোণ_ সময় = 12 - কোণ_ সময়; } ফিরে কোণ_ সময়; }

ব্যক্তি এবং তার গাড়ির মধ্যে দূরত্ব গণনা করুন

// দূরত্ব গণনা করুন

দ্বিগুণ দূরত্ব (ডাবল ল্যাট_এ, ডাবল লোন_ এ, ডাবল ল্যাট_বি, ডাবল লোন_বি) {

ডাবল EARTH_RADIUS = 6378137.0; ডবল radLat1 = (lat_a * PI / 180.0); ডবল radLat2 = (lat_b * PI / 180.0); ডবল a = radLat1 - radLat2; ডবল b = (lon_a - lon_b) * PI / 180.0; ডবল s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; ফিরে এস; }

LED ডিসপ্লে ফাংশন

একটি বৃত্তে LEDs জ্বালান যা দেখায় যে এটি নেভিগেট শুরু করে

// LED রিং এক এক করে আলো দেখায় যে নেভিগেশন শুরু হয়

অকার্যকর রঙ মুছুন (uint32_t c, uint8_t অপেক্ষা করুন) {

জন্য (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); বিলম্ব (অপেক্ষা);}}

দূরত্বের ভিত্তিতে LED ফ্রিকোয়েন্সি পান

// এলইডি ফ্রিকোয়েন্সি পান

int ফ্রিকোয়েন্সি (দ্বিগুণ দূরত্ব) {

int f = (int) দূরত্ব * 20; ফেরত f; }

গাড়ির দিক নির্দেশ করে নির্দিষ্ট এলইডি ব্লিংক করুন

// LED তে ডিসপ্লে

strip.clear ();

strip.show (); বিলম্ব (ফ্রিকোয়েন্সি (car_person_distance)); // বিলম্ব (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); বিলম্ব (ফ্রিকোয়েন্সি (car_person_distance)); // বিলম্ব (500);

// LED নিষ্ক্রিয় করুন

যদি (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }

প্রধান

#অন্তর্ভুক্ত Adafruit_GPS.h #অন্তর্ভুক্ত Adafruit_NeoPixel.h #অন্তর্ভুক্ত হার্ডওয়্যার সিরিয়াল।

#Neopixel_LED_PIN 6 নির্ধারণ করুন

#Neopixel_LED_NUM 12 ডিফাইন করুন

#GPSECHO মিথ্যা নির্ধারণ করুন

Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel স্ট্রিপ = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); বাটন button_lock (Button_Lock_PIN); বাটন button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t টাইমার = মিলিস (); ডাবল কার_ল্যাট, কার_লন; দ্বিগুণ গাড়ি_ ব্যক্তি_ দূরত্ব; ডবল move_direction; ডবল গাড়ি_ আজিমুথ; ডবল কার_পার্সন_এঙ্গেল; int angle_time;

অকার্যকর সেটআপ() {

Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // ডিফল্ট NMEA GPS baud strip.begin (); // এই লাইনটিকে RMC (প্রস্তাবিত ন্যূনতম) এবং GGA (ফিক্স ডেটা) চালু করতে উচ্চতা GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA) সহ চালু করুন; // আপডেট হার সেট করুন GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz আপডেট রেট // অ্যান্টেনা স্ট্যাটাসে আপডেটের অনুরোধ করুন, চুপ থাকার জন্য মন্তব্য করুন // GPS.sendCommand (PGCMD_ANTENNA); বিলম্ব (1000);}

অকার্যকর লুপ () {// যদি (Serial.available ()) {

// char c = Serial.read (); // Serial1.write (c); //} // যদি (Serial1.available ()) {char c = GPS.read (); if (GPSECHO) if (c) Serial.print (c); // যদি কোনো বাক্য পাওয়া যায়, আমরা চেকসাম চেক করতে পারি, বিশ্লেষণ করতে পারি… অন্যান্য বাক্য ধরা! // তাই OUTPUT_ALLDATA ব্যবহার করে খুব সতর্ক থাকুন এবং ডাটা Serial.println (GPS.lastNMEA ()) প্রিন্ট করার চেষ্টা করুন; // এটি নতুন NMEAreceived () পতাকাটি মিথ্যাতে সেট করে যদি (! GPS.parse (GPS.lastNMEA ())) // এটি নতুনNMEAreceived () পতাকাটিকে মিথ্যা রিটার্নের জন্যও সেট করে; // আমরা একটি বাক্য বিশ্লেষণ করতে ব্যর্থ হতে পারি যে ক্ষেত্রে আমাদের কেবল অন্যের জন্য অপেক্ষা করতে হবে} // যদি মিলিস () বা টাইমার চারপাশে আবৃত থাকে, আমরা এটি পুনরায় সেট করব যদি (টাইমার> মিলিস ()) টাইমার = মিলিস (); যদি (মিলিস () - টাইমার> 2000) {টাইমার = মিলিস (); // টাইমার Serial.print রিসেট করুন ("\ nTime:"); সিরিয়াল.প্রিন্ট (GPS.hour, DEC); সিরিয়াল.প্রিন্ট (':'); সিরিয়াল.প্রিন্ট (GPS.minute, DEC); সিরিয়াল.প্রিন্ট (':'); Serial.print (GPS.seconds, DEC); সিরিয়াল.প্রিন্ট ('।'); Serial.println (GPS.milliseconds); সিরিয়াল.প্রিন্ট ("তারিখ:"); সিরিয়াল.প্রিন্ট (GPS.day, DEC); সিরিয়াল.প্রিন্ট ('/'); Serial.print (GPS.month, DEC); সিরিয়াল.প্রিন্ট ("/20"); Serial.println (GPS.year, DEC); সিরিয়াল.প্রিন্ট ("ফিক্স:"); Serial.print ((int) GPS.fix); সিরিয়াল.প্রিন্ট ("গুণ:"); Serial.println ((int) GPS.fixquality); যদি (GPS.fix) {Serial.print ("Location:"); সিরিয়াল.প্রিন্ট (GPS. Litude, 4); সিরিয়াল.প্রিন্ট (GPS.lat); সিরিয়াল.প্রিন্ট (","); সিরিয়াল.প্রিন্ট (GPS. Longitude, 4); Serial.println (GPS.lon); Serial.print ("অবস্থান (ডিগ্রীতে, গুগল ম্যাপের সাথে কাজ করে):"); Serial.print (GPS.latitudeDegrees, 4); সিরিয়াল.প্রিন্ট (","); Serial.println (GPS.longitudeDegrees, 4); সিরিয়াল.প্রিন্ট ("গতি (নট):"); 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; // ডিবাগ সিরিয়াল.প্রিন্টের জন্য ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); 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); led_flag = 0; } যদি (button_flag == 1) {car_person_distance = distance (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // দূরত্ব গণনা করুন // car_person_distance = দূরত্ব (100.0005, 100.0005, 100.0, 100.0); // ডিবাগ করার জন্য 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 (100.0005, 100.0005, 100.0, 100.0); // LED ঘড়িতে সময় গণনা করুন car_person_angle = car_azimuth - move_direction; কোণ_ সময় = নেতৃত্বাধীন সময় (গাড়ী_ব্যক্তি_কোণ); // LED strip.clear () এ প্রদর্শন; strip.show (); // বিলম্ব (ফ্রিকোয়েন্সি (car_person_distance)); বিলম্ব (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); // বিলম্ব (ফ্রিকোয়েন্সি (car_person_distance)); বিলম্ব (500); // LED নিষ্ক্রিয় করুন যদি (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}

ধাপ 6: ব্রেডবোর্ডে ডিবাগ করুন

ব্রেডবোর্ডে ডিবাগ করুন
ব্রেডবোর্ডে ডিবাগ করুন
ব্রেডবোর্ডে ডিবাগ করুন
ব্রেডবোর্ডে ডিবাগ করুন
ব্রেডবোর্ডে ডিবাগ করুন
ব্রেডবোর্ডে ডিবাগ করুন

ধাপ 7: হার্ডওয়্যার সমাবেশ

হার্ডওয়্যার সমাবেশ
হার্ডওয়্যার সমাবেশ
হার্ডওয়্যার সমাবেশ
হার্ডওয়্যার সমাবেশ
হার্ডওয়্যার সমাবেশ
হার্ডওয়্যার সমাবেশ

ধাপ 8: অ্যাডোব ইলাস্ট্রেটরে ইলেকট্রনিক্স হাউজিং ডিজাইন

অ্যাডোব ইলাস্ট্রেটরে ইলেকট্রনিক্স হাউজিং ডিজাইন
অ্যাডোব ইলাস্ট্রেটরে ইলেকট্রনিক্স হাউজিং ডিজাইন

ধাপ 9: কার্ডবোর্ড প্রোটোটাইপ

কার্ডবোর্ড প্রোটোটাইপ
কার্ডবোর্ড প্রোটোটাইপ
কার্ডবোর্ড প্রোটোটাইপ
কার্ডবোর্ড প্রোটোটাইপ

এই ধাপটি হাউজিংয়ের আকার এবং মডেলের প্রতিটি অংশ নিশ্চিত করতে ব্যবহৃত হয়, নিশ্চিত করে যে বাক্সের আকার, এবং বোতামের অবস্থান, এবং LED অবস্থান একত্রিত ইলেকট্রনিক উপাদানগুলির সাথে মানানসই।

ধাপ 10: বার্চ পাতলা পাতলা কাঠের প্রোটোটাইপ

বার্চ প্লাইউড প্রোটোটাইপ
বার্চ প্লাইউড প্রোটোটাইপ
বার্চ প্লাইউড প্রোটোটাইপ
বার্চ প্লাইউড প্রোটোটাইপ

এটি ছিল প্রাথমিক প্রোটোটাইপ। একটি চার্জারে প্লাগ করার জন্য একটি বর্গাকার গর্ত শেষ পর্যন্ত একটি টুকরোতে যুক্ত করা হয়েছিল।

প্রস্তাবিত: