Infračervený radar s Arduinem: 6 kroků
Infračervený radar s Arduinem: 6 kroků
Anonim
Image
Image

V tomto malém projektu bych vám chtěl ukázat, jak můžete s Arduinem vytvořit jednoduchý radar doma. Na internetu je mnoho podobných projektů, ale všechny používají k měření vzdálenosti ultrazvukový senzor. V tomto projektu používám pro měření vzdálenosti infračervený senzor.

Mým cílem je vytvořit s ním velmi jednoduchý a levný systém LIDAR a implementovat mapovací zařízení.

Zásoby

  • Arduino (použil jsem Maple Mini)
  • Ostrý snímač vzdálenosti (použil jsem Sharp GP2Y0A02YK0F)
  • Micro Servo (9g)
  • Breadboard, dráty
  • Volitelně: odpor 4,7 k, kondenzátor 100 nF

Krok 1: Ultrazvukový VS infračervený senzor

Schéma
Schéma

Hlavní rozdíl mezi ultrazvukovými a infračervenými senzory vzdálenosti spočívá v tom, že ultrazvukový senzor měří vzdálenost v širším rozsahu. Proto není schopen přesně lokalizovat polohu překážky. To znamená, že měří vzdálenost nejbližšího objektu, který se nachází v rozsahu úhlu ~ +-30 °.

Samozřejmě to neznamená, že je snímač Sharp lepší. Někdy může být tato vlastnost velmi užitečná (například ji používají drony k měření výšky od země). Správná volba zcela závisí na požadavcích vašeho projektu.

Krok 2: Schéma

Schéma
Schéma
Schéma
Schéma

Spojení mezi díly je velmi jednoduché. Vyberte výstup PWM a analogový vstup na desce Arduino a k těmto kolíkům připojte snímače vzdálenosti Servo a Sharp. Za tímto účelem jsem použil následující kolíky:

  • PA0: Analogový vstup pro snímač vzdálenosti Sharp
  • PA9: PWM výstup pro servo

Někdy může mít Sharp IR senzor hlučný výstup, proto na něj musíte vložit jednoduchý nízkoprůchodový filtr. Ke snížení šumu na analogovém pinu jsem použil odpor 4,7k a kondenzátor 100nF. Kromě toho jsem také filtroval naměřenou hodnotu v kódu tím, že jsem ji několikrát přečetl a vypočítal průměr.

Krok 3: Charakteristika senzoru

Charakteristika senzoru
Charakteristika senzoru
Charakteristika senzoru
Charakteristika senzoru

Použitý infračervený snímač vzdálenosti má bohužel nelineární charakteristiku. To znamená, že k získání vzdálenosti nestačí vynásobit naměřenou hodnotu ADC konstantní hodnotou a přidat k ní další konstantní hodnotu.

Ačkoli datový list senzoru poskytuje charakteristiku, dávám přednost tomu, abych to měřil sám v konkrétním projektu (mohlo by to záviset na použitém napětí). Za tímto účelem jsem vytvořil páry z naměřené hodnoty ADC a vzdálenosti na každých 10 cm. (Můj senzor dokázal změřit správnou vzdálenost od 12 cm).

Tyto dvojice jsem v kódu použil k získání správné vzdálenosti pomocí lineární interpolace.

Na konci dokumentu najdete jednoduchý kód Arduino pro měření hodnoty ADC během charakteristického měření.

Krok 4: Sériová komunikace

Sériová komunikace
Sériová komunikace

K odeslání naměřených hodnot úhlové vzdálenosti do PC jsem použil sériovou komunikaci. Protože musím odeslat více bajtů a různé typy zpráv, navrhl jsem jednoduchý komunikační protokol.

Tento procotol umožňuje definovat různé typy zpráv obecným způsobem. V tomto projektu jsem použil 2 typy zpráv:

  • Parametry: Používá se k odesílání parametrů do PC aplikace, definované na Arduinu jako maximální vzdálenost a počet překážek v kole.
  • Překážka: Používá se k odeslání detekované překážky. Je identifikován úhlem serva a měřenou vzdáleností. Pozice x-y bude vypočítána počítačovou aplikací.

Krok 5: Aplikace Qt

Aplikace Qt
Aplikace Qt

Pro komunikaci s Arduinem a kreslení naměřených bodů jako radar jsem vytvořil PC aplikaci v Qt (C ++). Přijímá některé parametry (definované na Arduinu) a body změřené vzdálenosti.

Můžete si také stáhnout aplikaci a její zdrojový kód.

Krok 6: Zdrojový kód Arduino

Některé paremetry v horní části kódu můžete přizpůsobit pomocí maker.

Pamatujte, že pokud změníte charakteristiku snímače vzdálenosti Sharp, budete muset upravit hodnoty pole distAdcMap !

  • InfraRadar.c: radarový kód. Zkopírujte a vložte do projektu Arduino.
  • InfraRadarMeasurement.c: Kód pro charakteristické měření. Zkopírujte a vložte do projektu Arduino. Pomocí sériové konzoly zkontrolujte hodnoty ADC.