Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 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 koriste ultrazvučni senzor za mjerenje udaljenosti. U ovom projektu koristim infracrveni senzor za mjerenje udaljenosti.
Moj cilj je stvoriti vrlo jednostavan i jeftin LIDAR sistem s njim i implementirati uređaj za mapiranje.
Supplies
- Arduino (koristio sam Maple Mini)
- Oštri senzor udaljenosti (koristio sam Sharp GP2Y0A02YK0F)
- Mikro servo (9 g)
- Oglasna ploča, žice
- Opciono: otpornik od 4,7 k, kondenzator od 100 nF
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. Zbog toga nije u stanju precizno locirati položaj prepreke. To znači da mjeri udaljenost najbližeg objekta koji se nalazi unutar raspona kutova ~ +-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: Shema
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čan izlaz, pa na njega morate staviti jednostavan niskopropusni filter. Koristio sam otpornik od 4,7 k i kondenzator od 100 nF za smanjenje šuma na analognom pinu. Osim toga, filtrirao sam izmjerenu vrijednost u kodu tako što sam je pročitao više puta i izračunao prosjek.
Korak 3: Karakteristike 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 bih da 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 na 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 tokom karakterističnog mjerenja.
Korak 4: Serijska komunikacija
Koristio sam serijsku komunikaciju za slanje izmerenih vrednosti ugaone udaljenosti na računar. Budući da moram poslati više bajtova i različite vrste poruka, dizajnirao sam jednostavan komunikacijski protokol.
Ovaj protokol omogućava 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, definirane 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 PC aplikaciju u Qt (C ++). Prima neke parametre (definirane na Arduinu) i izmjerene točke udaljenosti.
Također možete preuzeti aplikaciju i njen 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 Sharp senzora udaljenosti, morate izmijeniti vrijednosti niza distAdcMap !
- InfraRadar.c: Radarski kod. Kopirajte i zalijepite u svoj Arduino projekt.
- InfraRadarMeasurement.c: Kod za karakteristično mjerenje. Kopirajte i zalijepite u svoj Arduino projekt. Koristite serijsku konzolu za provjeru ADC vrijednosti.