Inhoudsopgave:
- Benodigdheden
- Stap 1: Ultrasone VS-infraroodsensor
- Stap 2: Schema
- Stap 3: Sensorkenmerk
- Stap 4: Seriële communicatie
- Stap 5: Qt-toepassing
- Stap 6: Arduino-broncode
Video: Infraroodradar met Arduino - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
In dit kleine project wil ik je laten zien hoe je een eenvoudige Radar thuis kunt maken met Arduino. Er zijn veel vergelijkbare projecten op internet, maar ze gebruiken allemaal een ultrasone sensor om de afstand te meten. In dit project gebruik ik een infraroodsensor voor afstandsmeting.
Mijn doel is om er een heel eenvoudig en goedkoop LIDAR-systeem mee te maken en een kaartapparaat te implementeren.
Benodigdheden
- Arduino (ik gebruikte een Maple Mini)
- Sharp afstandssensor (ik gebruikte Sharp GP2Y0A02YK0F)
- Microservo (9g)
- Breadboard, draden
- Optioneel: 4,7k-weerstand, 100nF-condensator
Stap 1: Ultrasone VS-infraroodsensor
Het belangrijkste verschil tussen ultrasone en infrarood afstandssensoren is dat de ultrasone sensor afstand meet in een groter bereik. Daarom is het niet in staat om de positie van een obstakel nauwkeurig te lokaliseren. Het betekent dat het de afstand meet van het dichtstbijzijnde object dat zich binnen een hoekbereik van ~ +-30° bevindt.
Het betekent natuurlijk niet dat de Sharp-sensor beter is. Soms kan deze eigenschap erg handig zijn (bijvoorbeeld gebruikt door drones om de hoogte vanaf de grond te meten). De juiste keuze hangt volledig af van de vereisten van uw project.
Stap 2: Schema
Het is heel eenvoudig om de verbinding tussen onderdelen te maken. Selecteer een PWM-uitgang en een analoge ingang op je Arduino-bord en sluit de servo- en Sharp-afstandssensoren aan op die pinnen. Ik heb hiervoor de volgende pinnen gebruikt:
- PA0: Analoge ingang voor Sharp-afstandssensor
- PA9: PWM-uitgang voor servo
Soms kan de Sharp IR-sensor luidruchtige output hebben, daarom moet u er een eenvoudig laagdoorlaatfilter op plaatsen. Ik heb een weerstand van 4,7 k en een condensator van 100 nF gebruikt om de ruis op de analoge pin te verminderen. Daarnaast heb ik ook de gemeten waarde in de code gefilterd door deze meerdere keren te lezen en het gemiddelde te berekenen.
Stap 3: Sensorkenmerk
Helaas heeft de gebruikte infrarood afstandssensor een niet-lineaire karakteristiek. Het betekent dat om de afstand te krijgen, het niet voldoende is om de gemeten ADC-waarde te vermenigvuldigen met een constante waarde en er nog een constante waarde aan toe te voegen.
Hoewel de datasheet van de sensor het kenmerk geeft, meet ik het liever zelf in het specifieke project (dit kan afhankelijk zijn van de gebruikte spanning). Hiervoor heb ik voor elke 10 cm paren gemaakt van de gemeten ADC-waarde en afstand. (Mijn sensor kon de juiste afstand meten vanaf 12 cm).
Ik heb deze paren in de code gebruikt om de juiste afstand te krijgen met lineaire interpolatie.
Aan het einde van het document vindt u een eenvoudige Arduino-code om de ADC-waarde te meten tijdens karakteristieke meting.
Stap 4: Seriële communicatie
Ik gebruikte seriële communicatie om de gemeten hoek-afstandswaarden naar de pc te sturen. Omdat ik meerdere bytes en verschillende soorten berichten moet verzenden, heb ik een eenvoudig communicatieprotocol ontworpen.
Dit protocol maakt het mogelijk om verschillende berichttypes op een generieke manier te definiëren. In dit project heb ik 2 berichttypes gebruikt:
- Parameters: Wordt gebruikt om parameters naar de pc-toepassing te sturen, gedefinieerd op Arduino, zoals maximale afstand en aantal obstakels in een ronde.
- Obstakel: Wordt gebruikt om een gedetecteerd obstakel te verzenden. Het wordt geïdentificeerd door de hoek van de servo en de gemeten afstand. De x-y-positie wordt berekend door de pc-toepassing.
Stap 5: Qt-toepassing
Om met Arduino te communiceren en de gemeten punten als een radar te tekenen, heb ik een pc-toepassing gemaakt in Qt (C++). Het ontvangt enkele parameters (gedefinieerd op Arduino) en de gemeten afstandspunten.
U kunt de applicatie en de broncode ook downloaden.
Stap 6: Arduino-broncode
U kunt enkele parameters bovenaan de code aanpassen met macro's.
Merk op dat als u de karakteristiek van de Sharp-afstandssensor wijzigt, u de distAdcMap-arraywaarden moet wijzigen!
- InfraRadar.c: Code van radar. Kopieer en plak het in uw Arduino-project.
- InfraRadarMeasurement.c: Code voor karakteristieke meting. Kopieer en plak het in uw Arduino-project. Gebruik de seriële console om de ADC-waarden te controleren.
Aanbevolen:
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Pratende Arduino - Een MP3 afspelen met Arduino zonder enige module - Mp3-bestand afspelen vanaf Arduino met PCM: 6 stappen
Pratende Arduino | Een MP3 afspelen met Arduino zonder enige module | Mp3-bestand van Arduino afspelen met PCM: in deze instructie leren we hoe we een mp3-bestand met arduino kunnen spelen zonder een audiomodule te gebruiken, hier gaan we de PCM-bibliotheek voor Arduino gebruiken die 16 bit PCM van 8 kHz-frequentie speelt, dus laten we dit doen
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Start uw diavoorstelling met vakantiefoto's met een vleugje magie! 9 stappen (met afbeeldingen)
Lanceer uw diavoorstelling met vakantiefoto's met een vleugje magie!: In de loop der jaren heb ik de gewoonte ontwikkeld om een klein beeldje mee te nemen op reis: ik koop vaak een kleine, lege artoy (zoals die op de foto) en verf het past bij de vlag en het thema van het land dat ik bezoek (in dit geval Sicilië). T