Spisu treści:
- Krok 1: Szkic papierowy
- Krok 2: Lista sprzętu
- Krok 3: Projekt obwodu
- Krok 4: Połączenie sprzętowe
- Krok 5: Projektowanie oprogramowania
- Krok 6: Debuguj na tablicy prototypowej
- Krok 7: Montaż sprzętu
- Krok 8: Projekt obudowy elektroniki w programie Adobe Illustrator
- Krok 9: Prototyp kartonu
- Krok 10: Prototyp sklejki brzozowej
![FinduCar: inteligentny kluczyk samochodowy prowadzący ludzi do miejsca zaparkowania samochodu: 11 kroków (ze zdjęciami) FinduCar: inteligentny kluczyk samochodowy prowadzący ludzi do miejsca zaparkowania samochodu: 11 kroków (ze zdjęciami)](https://i.howwhatproduce.com/images/001/image-719-62-j.webp)
Wideo: FinduCar: inteligentny kluczyk samochodowy prowadzący ludzi do miejsca zaparkowania samochodu: 11 kroków (ze zdjęciami)
![Wideo: FinduCar: inteligentny kluczyk samochodowy prowadzący ludzi do miejsca zaparkowania samochodu: 11 kroków (ze zdjęciami) Wideo: FinduCar: inteligentny kluczyk samochodowy prowadzący ludzi do miejsca zaparkowania samochodu: 11 kroków (ze zdjęciami)](https://i.ytimg.com/vi/rMAB4z_YWBU/hqdefault.jpg)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
![FinduCar: inteligentny kluczyk samochodowy prowadzący ludzi do miejsca zaparkowania samochodu FinduCar: inteligentny kluczyk samochodowy prowadzący ludzi do miejsca zaparkowania samochodu](https://i.howwhatproduce.com/images/001/image-719-63-j.webp)
Aby rozwiązać powyższe problemy, w ramach tego projektu proponuje się opracowanie inteligentnego kluczyka do samochodu, który mógłby kierować ludzi do miejsca, w którym zaparkowali samochód. A mój plan to zintegrowanie GPS z kluczykiem samochodowym. Nie ma potrzeby korzystania z aplikacji na smartfona do śledzenia samochodu, wszystkie wskazówki pojawią się tylko na kluczyku samochodowym.
Krok 1: Szkic papierowy
![Szkic papieru Szkic papieru](https://i.howwhatproduce.com/images/001/image-719-64-j.webp)
Gdy ludzie naciskają przycisk, aby zablokować samochód, informacje o lokalizacji mogą być automatycznie rejestrowane w mikrokontrolerze. Następnie, gdy ludzie zaczynają nawigować do samochodu, zapalają się różne diody LED, aby skierować się do pozycji samochodu, a częstotliwość migania pokazuje odległość do samochodu. Mogą łatwo śledzić migającą diodę LED i szybko znaleźć samochód.
Krok 2: Lista sprzętu
![Lista sprzętu Lista sprzętu](https://i.howwhatproduce.com/images/001/image-719-65-j.webp)
To są komponenty użyte w tym projekcie. Niektóre pochodzą z zestawów cząstek (płytka do krojenia chleba, przycisk, nagłówki), inne są kupowane na oficjalnej stronie internetowej Adafruit (Adafruit Feather M0, moduł Adafruit Ultimate GPS, bateria Lpoly i bateria monetowa) oraz Amazon (pierścień NeoPixel - 12 RGB LED).
Krok 3: Projekt obwodu
![Projekt obwodu Projekt obwodu](https://i.howwhatproduce.com/images/001/image-719-66-j.webp)
Neopixel_LED jest podłączony do PIN 6 Feather M0
Button_Unlock jest połączony z PIN 12 Feather M0
Button_Lock jest połączony z PIN 13 Feather M0
Krok 4: Połączenie sprzętowe
![Połączenie sprzętowe Połączenie sprzętowe](https://i.howwhatproduce.com/images/001/image-719-67-j.webp)
![Połączenie sprzętowe Połączenie sprzętowe](https://i.howwhatproduce.com/images/001/image-719-68-j.webp)
![Połączenie sprzętowe Połączenie sprzętowe](https://i.howwhatproduce.com/images/001/image-719-69-j.webp)
Przylutuj nagłówki za pomocą Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing. Ułóż dwie deski razem. GPS FeatherWing podłącza się bezpośrednio do płyty Feather M0 bez żadnych dodatkowych przewodów.
Krok 5: Projektowanie oprogramowania
![Projektowanie Oprogramowania Projektowanie Oprogramowania](https://i.howwhatproduce.com/images/001/image-719-70-j.webp)
Komponenty testowe
Przeczytaj FIX
pusta konfiguracja () {
Serial.println("Test echa GPS"); Serial.początek(9600); Serial1.początek(9600); // domyślna prędkość NMEA GPS }
pusta pętla () {
if (Serial.available()) { char c = Serial.read(); Serial1.zapis(c); } if (Serial1.available()) { char c = Serial1.read(); Serial.zapis(c); } }
Migający pierścień LED
Zobacz przykłady Adafruit NeoPixel.
Funkcje obliczania GPS
Oblicz azymut
// Oblicz azymut
podwójny azymut(podwójny łat_a, podwójny lon_a, podwójny łat_b, podwójny lon_b) {
podwójne 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; powrót d; }
Oblicz czas na zegarze LED, który jest również kierunkiem pojazdu
// Oblicz czas na zegarze LED
int led_time (podwójny kąt){
flaga int = 0; if (kąt = 15) { kąt_czas = kąt_czas + 1; } if (flaga == 1){ kąt_czas = 12 - kąt_czas; } zwróć kąt_czasu; }
Oblicz odległość między osobą a jej pojazdem
// Oblicz odległość
podwójna odległość(podwójna długość_a, podwójna długość_a, podwójna długość_b, podwójna długość_b) {
podwójny EARTH_RADIUS = 6378137,0; podwójny radLat1 = (lat_a * PI / 180,0); podwójny radLat2 = (lat_b * PI / 180,0); podwójne a = radLat1 - radLat2; podwójne 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 * PROMIEŃ_ZIEMI / 10000000; zwroty; }
Funkcje wyświetlacza LED
Zapalają się diody LED w kółku pokazujące, że zaczyna nawigować
// Podświetlenie pierścienia LED jeden po drugim pokazuje, że rozpoczyna się nawigacja
void colorWipe(uint32_t c, uint8_t czekaj) {
for(uint16_t i=0; i strip.setPixelColor(i, c); strip.show(); delay(wait); } }
Uzyskaj częstotliwość LED na podstawie odległości
// Uzyskaj częstotliwość LED
częstotliwość int (podwójna odległość){
int f = (int)odległość * 20; powrót f; }
Migaj określoną diodę LED wskazującą kierunek samochodu;
//Wyświetlacz na LED
pasek.wyczyść();
strip.pokaż(); opóźnienie(częstotliwość(car_person_distance)); // opóźnienie(500); strip.setPixelColor(angle_time, strip. Color(0, 0, 255)); strip.pokaż(); opóźnienie(częstotliwość(car_person_distance)); // opóźnienie(500);
//Wyłącz diodę LED
if (flaga_przycisku == 1 && odległość_osoby_samochodu < 5.0){ flaga_przycisku = 0; led_flaga = 1; pasek.wyczyść(); strip.pokaż(); }
Główny
#include Adafruit_GPS.h#include Adafruit_NeoPixel.h #include HardwareSerial.h #include Button.h #include math.h
#define Neopixel_LED_PIN 6
#define Neopixel_LED_NUM 12 #define Button_Lock_PIN 13 #define Button_Unlock_PIN 12 #define GPSSerial Serial1
#define GPSECHO fałszywe
Adafruit_GPS GPS(&GPSSerial);Adafruit_NeoPixel pasek = Adafruit_NeoPixel(Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Przycisk button_lock(Button_Lock_PIN); Przycisk button_unlock(Button_Unlock_PIN); int flaga_przycisku = 0; int flaga_led = 1; uint32_t timer = millis(); podwójny samochód_lat, samochód_lon; podwójny samochód_osoba_odległość; podwójny kierunek_ruchu; podwójny samochód_azymut; podwójny samochód_osoba_kąt; int kąt_czas;
pusta konfiguracja () {
Serial.początek(115200); // Serial1.begin(9600); GPS.początek (9600); // domyślna transmisja NMEA GPS strip.begin(); // odkomentuj tę linię, aby włączyć RMC (zalecane minimum) i GGA (stałe dane), w tym wysokość GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); // Ustaw częstotliwość aktualizacji GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // Częstotliwość aktualizacji 1 Hz // Żądaj aktualizacji statusu anteny, skomentuj, aby zachować spokój // GPS.sendCommand(PGCMD_ANTENNA); opóźnienie(1000);}
void loop() {// if (Serial.available()) {
// char c = Serial.read(); // Serial1.write(c); // } // if (Serial1.available()) { char c = GPS.read(); if (GPSECHO) if (c) Serial.print(c); // jeśli zdanie zostanie odebrane, możemy sprawdzić sumę kontrolną, przeanalizować ją… if (GPS.newNMEAreceived()) { // trudną rzeczą jest to, że jeśli wydrukujemy zdanie lub dane NMEA // nie słuchamy i łapanie innych zdań! // więc bądź bardzo ostrożny używając OUTPUT_ALLDATA i próbując wydrukować dane Serial.println(GPS.lastNMEA()); // ustawia to również flagę newNMEAreceived() na false if (!GPS.parse(GPS.lastNMEA())) // ustawia to również flagę newNMEAreceived() na false return; // możemy nie przetworzyć zdania, w takim przypadku powinniśmy po prostu poczekać na następne } // jeśli millis() lub timer zawija, po prostu je zresetujemy if (timer > millis()) timer = millis(); if (millis() - timer > 2000) { timer = millis(); // zresetuj licznik Serial.print("\nTime: "); Serial.print(GPS.godzina, DEC); Serial.print(':'); Serial.print(GPS.minuta, DEC); Serial.print(':'); Serial.print(GPS.sekundy, DEC); Serial.print('.'); Serial.println(GPS.milisekundy); Serial.print("Data: "); Serial.print(GPS.day, DEC); Serial.print('/'); Serial.print(GPS.miesiąc, grudzień); Serial.print("/20"); Serial.println(GPS.rok, grudzień); Serial.print("Poprawka: "); Serial.print((int)GPS.fix); Serial.print("jakość:"); Serial.println((int)GPS.fixquality); if (GPS.fix) { Serial.print("Lokalizacja: "); Serial.print(GPS.szerokość, 4); druk.seryjny(GPS.lat); Serial.print(", "); Serial.print(GPS.długość, 4); Serial.println(GPS.lon); Serial.print("Lokalizacja (w stopniach, współpracuje z Mapami Google): "); Serial.print(GPS.latitudeDegrees, 4); Serial.print(", "); Serial.println(GPS.longitudeDegrees, 4); Serial.print("Prędkość (węzły): "); Serial.println(prędkość. GPS); Serial.print("Kąt: "); Serial.println(kąt. GPS); Serial.print("Wysokość: "); Serial.println(GPS.wysokość); Serial.print("Satelity: "); Serial.println((int)GPS.satelity); // Zapisz GPS pojazdu if (button_lock.read()) { car_lat = GPS.latitudeDegrees; samochód_lon = GPS.długośćStopnie; //dla debugowania Serial.print("carLatitude: "); Serial.println(samochód_lat); Serial.print("carLongitude: "); Serial.println(samochód_lon); } // Rozpocznij wyszukiwanie samochodu if (button_flag == 0){ button_flag = button_unlock.read(); } if(button_flag == 1 && led_flag == 1){ colorWipe(strip. Color(0, 255, 0), 500); led_flaga = 0; } if (button_flag == 1) { car_person_distance = distance(GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); //Oblicz odległość //car_person_distance = distance(100.0005, 100.0005, 100.0, 100.0); //dla debugowania Serial.println(car_person_distance); move_direction = GPS.angle;//Zapisz kierunek ruchu (kąt) //move_direction = 100.0; // Zapisz Azymut(kąt) car_azimuth = azymut(GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); //azymut_samochodu = azymut(100.0005, 100.0005, 100.0, 100.0); // Oblicz czas na zegarze LED car_person_angle = car_azimuth - move_direction; angle_time = led_time(car_person_angle); //Wyświetlacz na pasku LED.clear(); strip.pokaż(); // opóźnienie(częstotliwość(car_person_distance)); opóźnienie (500); strip.setPixelColor(angle_time, strip. Color(0, 0, 255)); strip.pokaż(); // opóźnienie(częstotliwość(car_person_distance)); opóźnienie (500); //Wyłącz diodę LED, jeśli (button_flag == 1 && car_person_distance < 5.0){ button_flag = 0; led_flaga = 1; pasek.wyczyść(); strip.pokaż(); } } } // } } }
Krok 6: Debuguj na tablicy prototypowej
![Debuguj na tablicy prototypowej Debuguj na tablicy prototypowej](https://i.howwhatproduce.com/images/001/image-719-71-j.webp)
![Debuguj na tablicy prototypowej Debuguj na tablicy prototypowej](https://i.howwhatproduce.com/images/001/image-719-72-j.webp)
![Debuguj na tablicy prototypowej Debuguj na tablicy prototypowej](https://i.howwhatproduce.com/images/001/image-719-73-j.webp)
Krok 7: Montaż sprzętu
![Montaż sprzętu Montaż sprzętu](https://i.howwhatproduce.com/images/001/image-719-74-j.webp)
![Montaż sprzętu Montaż sprzętu](https://i.howwhatproduce.com/images/001/image-719-75-j.webp)
![Montaż sprzętu Montaż sprzętu](https://i.howwhatproduce.com/images/001/image-719-76-j.webp)
Krok 8: Projekt obudowy elektroniki w programie Adobe Illustrator
![Projektowanie obudowy elektroniki w programie Adobe Illustrator Projektowanie obudowy elektroniki w programie Adobe Illustrator](https://i.howwhatproduce.com/images/001/image-719-77-j.webp)
Krok 9: Prototyp kartonu
![Kartonowy prototyp Kartonowy prototyp](https://i.howwhatproduce.com/images/001/image-719-78-j.webp)
![Kartonowy prototyp Kartonowy prototyp](https://i.howwhatproduce.com/images/001/image-719-79-j.webp)
Ten krok służy do potwierdzenia rozmiaru obudowy i każdego elementu modelu, upewniając się, że rozmiar pudełka, położenie przycisku i położenie diody LED pasują do zmontowanych elementów elektronicznych.
Krok 10: Prototyp sklejki brzozowej
![Prototyp sklejki brzozowej Prototyp sklejki brzozowej](https://i.howwhatproduce.com/images/001/image-719-80-j.webp)
![Prototyp sklejki brzozowej Prototyp sklejki brzozowej](https://i.howwhatproduce.com/images/001/image-719-81-j.webp)
To był pierwszy prototyp. Ostatecznie do jednego z kawałków dodano kwadratowy otwór do podłączenia ładowarki.
Zalecana:
Raspberry Pi DIY Inteligentny dzwonek do drzwi, który wykrywa ludzi, samochody itp.: 5 kroków
![Raspberry Pi DIY Inteligentny dzwonek do drzwi, który wykrywa ludzi, samochody itp.: 5 kroków Raspberry Pi DIY Inteligentny dzwonek do drzwi, który wykrywa ludzi, samochody itp.: 5 kroków](https://i.howwhatproduce.com/images/002/image-3657-j.webp)
Inteligentny dzwonek Raspberry Pi DIY, który może wykrywać ludzi, samochody itp.: Ten projekt w stylu steampunk integruje się z asystentem domowym i naszym wielopokojowym systemem audio, aby komunikować się z resztą naszego inteligentnego domu DIY.Zamiast kupować dzwonek do drzwi (lub Nest lub jeden z innych konkurentów) Zbudowałem własne inteligentne drzwi
AI w LEGO EV3 Robot prowadzący labirynt: 13 kroków
![AI w LEGO EV3 Robot prowadzący labirynt: 13 kroków AI w LEGO EV3 Robot prowadzący labirynt: 13 kroków](https://i.howwhatproduce.com/images/001/image-1637-15-j.webp)
AI w LEGO EV3 Maze-Driving Robot: To prosty, autonomiczny robot z pewną sztuczną inteligencją. Jest przeznaczony do eksploracji labiryntu, a po umieszczeniu z powrotem przy wejściu, do przejazdu do wyjścia i uniknięcia ślepych zaułków. Jest o wiele bardziej skomplikowany niż mój poprzedni projekt, ale
Niedrogi inteligentny dom - sterowanie z dowolnego miejsca na świecie: 6 kroków
![Niedrogi inteligentny dom - sterowanie z dowolnego miejsca na świecie: 6 kroków Niedrogi inteligentny dom - sterowanie z dowolnego miejsca na świecie: 6 kroków](https://i.howwhatproduce.com/images/009/image-24995-j.webp)
Niski koszt inteligentnego domu - sterowanie z dowolnego miejsca na świecie: AboutW dzisiejszych czasach oboje rodzice pracują nad zapewnieniem komfortowego życia rodzinie. Tak więc w naszym domu mamy wiele urządzeń RTV, takich jak grzałka, klimatyzacja, pralka itp. Po powrocie do domu powinni czuć się bardzo komfortowo między
Jak złożyć DIY Samochodowy Zestaw Samochodowy Solarny: 4 Kroki
![Jak złożyć DIY Samochodowy Zestaw Samochodowy Solarny: 4 Kroki Jak złożyć DIY Samochodowy Zestaw Samochodowy Solarny: 4 Kroki](https://i.howwhatproduce.com/images/006/image-17817-22-j.webp)
Jak złożyć zestaw samochodzików solarnych DIY: Chcesz nauczyć swoje dziecko energii odnawialnej? Zapomnij o targach naukowych, jest to tani zestaw zabawek na baterie słoneczne, który możesz kupić za mniej niż 5 $ i nigdy nie wymaga baterii do zabawy. Za tę samą kwotę możesz kupić zbudowany model, ale teraz gdzie jest f
Kluczyk! Urządzenie, które sprawi, że nie zgubisz kluczy!: 3 kroki (ze zdjęciami)
![Kluczyk! Urządzenie, które sprawi, że nie zgubisz kluczy!: 3 kroki (ze zdjęciami) Kluczyk! Urządzenie, które sprawi, że nie zgubisz kluczy!: 3 kroki (ze zdjęciami)](https://i.howwhatproduce.com/images/003/image-7262-40-j.webp)
Kluczyk! Urządzenie, które sprawi, że nie zgubisz kluczy!: To urządzenie pomoże Ci nie zgubić kluczy! Jeśli jesteś taki jak ja, to po powrocie z pracy do domu od razu po otwarciu drzwi gubisz klucze i czekasz do następnego dnia, zanim będziesz musiał ich szukać. Tak, możesz mieć