Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
U ovom malom projektu želio bih vam pokazati kako možete stvoriti jednostavan radar kod kuće s Arduinom. Na internetu postoji mnogo sličnih projekata, ali svi oni koriste ultrazvučni senzor za mjerenje udaljenosti. U ovom projektu koristim infracrveni senzor za mjerenje udaljenosti.
Cilj mi je stvoriti vrlo jednostavan i jeftin LIDAR sustav s njim i implementirati uređaj za mapiranje.
Pribor
- Arduino (koristio sam Maple Mini)
- Oštri senzor udaljenosti (koristio sam Sharp GP2Y0A02YK0F)
- Mikro servo (9 g)
- Oglasna ploča, žice
- Izborno: 4,7 k otpornik, 100nF kondenzator
Korak 1: Ultrazvučni VS infracrveni senzor
Glavna razlika između ultrazvučnih i infracrvenih senzora udaljenosti je ta što ultrazvučni senzor mjeri udaljenost u širem rasponu. Stoga nije u stanju precizno locirati položaj prepreke. To znači da mjeri udaljenost najbližeg objekta koji se nalazi unutar kutnog raspona ~ +-30 °.
Naravno, to ne znači da je Sharp senzor bolji. Ponekad ovo svojstvo može biti vrlo korisno (npr. Koriste ga dronovi za mjerenje visine od tla). Pravi izbor u potpunosti ovisi o zahtjevima vašeg projekta.
Korak 2: Shematski prikaz
Povezivanje dijelova vrlo je jednostavno. Odaberite PWM izlaz i analogni ulaz na Arduino ploči i spojite Servo i Sharp senzore udaljenosti na te pinove. U tu sam svrhu upotrijebio sljedeće igle:
- PA0: Analogni ulaz za oštri senzor udaljenosti
- PA9: PWM izlaz za servo
Ponekad Sharp IR senzor može imati bučne izlaze pa na njega morate staviti jednostavan niskopropusni filtar. Koristio sam otpornik od 4,7 k i kondenzator od 100 nF za smanjenje buke na analognom pinu. Osim toga, također sam filtrirao izmjerenu vrijednost u kodu čitajući je više puta i izračunavajući prosjek.
Korak 3: Karakteristika senzora
Nažalost, infracrveni senzor udaljenosti ima nelinearne karakteristike. To znači da za dobivanje udaljenosti nije dovoljno izmjeriti izmjerenu vrijednost ADC -a s konstantnom vrijednošću i dodati joj još jednu konstantnu vrijednost.
Iako podatkovni list senzora daje karakteristike, radije ga mjerim sam u određenom projektu (to može ovisiti o upotrijebljenom naponu). Za to sam napravio parove od izmjerene vrijednosti ADC -a i udaljenosti za svakih 10 cm. (Moj senzor je mogao izmjeriti ispravnu udaljenost od 12 cm).
Koristio sam ove parove u kodu da dobijem ispravnu udaljenost s linearnom interpolacijom.
Na kraju dokumenta pronaći ćete jednostavan Arduino kôd za mjerenje ADC vrijednosti tijekom karakterističnog mjerenja.
Korak 4: Serijska komunikacija
Koristio sam serijsku komunikaciju za slanje izmjerenih vrijednosti kutne udaljenosti na računalo. Budući da moram poslati više bajtova i različite vrste poruka, dizajnirao sam jednostavan komunikacijski protokol.
Ovaj prokotol omogućuje definiranje različitih vrsta poruka na opći način. U ovom projektu koristio sam 2 vrste poruka:
- Parametri: Koristi se za slanje parametara u PC aplikaciju, definiranih na Arduinu, poput maksimalne udaljenosti i broja prepreka u krugu.
- Prepreka: Koristi se za slanje otkrivene prepreke. Identificira se prema kutu servo i izmjerenoj udaljenosti. Položaj x-y izračunat će aplikacija za računalo.
Korak 5: Qt aplikacija
Za komunikaciju s Arduinom i crtanje izmjerenih točaka poput radara, napravio sam računalnu aplikaciju u Qt (C ++). Prima neke parametre (definirane na Arduinu) i izmjerene točke udaljenosti.
Također možete preuzeti aplikaciju i njezin izvorni kod.
Korak 6: Arduino izvorni kod
Možete prilagoditi neke parametre na vrhu koda pomoću makronaredbi.
Imajte na umu da ako promijenite karakteristiku Sharpovog senzora udaljenosti, morate promijeniti vrijednosti polja distAdcMap !
- InfraRadar.c: Kod radara. Kopirajte i zalijepite u svoj Arduino projekt.
- InfraRadarMeasurement.c: Kôd za mjerenje karakteristika. Kopirajte i zalijepite u svoj Arduino projekt. Za provjeru ADC vrijednosti koristite serijsku konzolu.