- Vereiste component:
- Montage van Floor Cleaner Robot:
- Bedrading en aansluitingen:
- Programmering Toelichting:
Automatische vloerreinigers zijn niets nieuws, maar ze hebben allemaal een gemeenschappelijk probleem. Ze zijn allemaal te duur voor wat ze doen. Vandaag zullen we een automatische robot voor het schoonmaken van huizen maken die slechts een klein deel kost van de robots die op de markt zijn. Deze robot kan de obstakels en objecten ervoor detecteren en kan blijven bewegen, de obstakels vermijdend, totdat de hele kamer is schoongemaakt. Er zit een kleine borstel aan vast om de vloer schoon te maken.
Bekijk ook onze Smart Vacuum Cleaning Robot met Arduino
Vereiste component:
- Arduino UNO R3.
- Ultrasoon sensor.
- Arduino Motor Driver-schild.
- Wielaangedreven robotchassis.
- Computer om de Arduino te programmeren.
- Batterij voor de motoren.
- Een powerbank om de Arduino van stroom te voorzien
- Een schoenborstel.
- Een Scotch Brite Scrub Pad.
Opmerking: in plaats van batterijen kunt u ook een lange 4-aderige draad gebruiken, zoals wij deden. Hoewel dit geen erg elegante of praktische oplossing is, kunt u het doen als u het niet elke dag in de echte wereld wilt gebruiken. Zorg ervoor dat de lengte van de kabel voldoende is.
Voordat we in detail gaan, bespreken we eerst Ultrasoon.
HC-SR04 Ultrasone sensor:
De ultrasone sensor wordt gebruikt om de afstand met hoge nauwkeurigheid en stabiele metingen te meten. Het kan afstand meten van 2 cm tot 400 cm of van 1 inch tot 13 voet. Het zendt een ultrasone golf uit met een frequentie van 40 KHz in de lucht en als het object in de weg komt, kaatst het terug naar de sensor. Door de tijd te gebruiken die nodig is om het object te raken en terug te komen, kunt u de afstand berekenen.
De ultrasone sensor maakt gebruik van een techniek genaamd "ECHO". "ECHO" is gewoon een gereflecteerde geluidsgolf. U krijgt een ECHO als het geluid terugkaatst nadat het een doodlopende weg heeft bereikt.
HCSR04-module genereert een geluidstrilling in ultrasoon bereik wanneer we de 'Trigger'-pin hoog maken voor ongeveer 10us, die een 8-cycli sonische burst zal verzenden met de snelheid van het geluid en nadat het object is geraakt, wordt deze ontvangen door de Echo-pin. Afhankelijk van de tijd die geluidstrillingen nodig hebben om terug te komen, biedt het een geschikte pulsuitvoer. Als het object ver weg is, duurt het langer voordat ECHO wordt gehoord en zal de uitgangspulsbreedte groot zijn. En als het obstakel dichtbij is, zal de ECHO sneller te horen zijn en zal de outputpulsbreedte kleiner zijn.
We kunnen de afstand van het object berekenen op basis van de tijd die de ultrasone golven nodig hebben om terug te keren naar de sensor. Omdat de tijd en snelheid van het geluid bekend zijn, kunnen we de afstand berekenen met de volgende formules.
Afstand = (tijd x geluidssnelheid in lucht (343 m / s)) / 2.
De waarde wordt door twee gedeeld, aangezien de golf voorwaarts en achterwaarts beweegt over dezelfde afstand. De tijd om een obstakel te bereiken is dus slechts de helft van de totale tijd die nodig is
Dus afstand in centimeter = 17150 * T
We hebben eerder veel nuttige projecten gemaakt met behulp van deze ultrasone sensor en Arduino, bekijk ze hieronder:
- Op Arduino gebaseerde afstandsmeting met behulp van ultrasone sensor
- Deuralarm met Arduino en ultrasone sensor
- IOT-gebaseerde dumpsterbewaking met Arduino
Montage van Floor Cleaner Robot:
Monteer de Arduino op het chassis. Zorg ervoor dat u niets kortsluit als uw chassis van metaal is. Het is een goed idee om een doos voor de Arduino en het schild van de motorcontroller te kopen. Zet de motoren met de wielen en het chassis vast met schroeven. Je chassis moet de opties hebben om dit af fabriek te doen, maar als dat niet het geval is, kun je een andere oplossing improviseren. Epoxy is geen slecht idee. Monteer de schoenborstel aan de voorkant van het chassis. We hebben hiervoor een combinatie van M-Seal epoxy en geboorde schroeven gebruikt, maar u kunt elke andere oplossing gebruiken die misschien gemakkelijker voor u is. Monteer de Scotch Brite-schrobpad achter de borstel. We hebben een as gebruikt die over het chassis loopt en deze in het spel houdt, hoewel dit ook onvoorstelbaar is. Een veerbelaste as kan worden gebruikt om hem te begeleiden. Monteer de accu's (of kabels aan de achterkant van het chassis).Epoxy of een batterijhouder zijn hiervoor goede manieren. Hete lijm is ook niet slecht.
Bedrading en aansluitingen:
Het circuit voor deze automatische schoonmaakrobot is heel eenvoudig. Sluit de ultrasone sensor aan op de Arduino zoals hieronder vermeld en plaats het Motor Driver-schild op de Arduino zoals elk ander schild.
De Trig-pin van Ultrasonic is verbonden met de 12e pin op de Arduino, de Echo-pin is verbonden met de 13e pin, de spanningspin met de 5V-pin en de Ground-pin met de aardingspin. Met de Echo-pin en de Trig-pin kan de Arduino communiceren met de sensor. Stroom wordt aan de sensor geleverd via de spannings- en aardingspennen, en met de Trig- en Echo-pennen kan deze gegevens verzenden en ontvangen met de Arduino. Lees hier meer over het koppelen van ultrasone sensoren met Arduino.
De motorafscherming moet minimaal 2 uitgangen hebben en deze moeten op uw 2 motoren zijn aangesloten. Normaal gesproken worden deze uitgangen aangeduid met "M1" en "M2" of "Motor 1" en "Motor 2". Sluit uw batterijen en powerbank aan op respectievelijk het motorschild en Arduino. Verbind ze niet met elkaar. Je motorafscherming moet een ingangskanaal hebben. Als u draden gebruikt, sluit deze dan aan op netadapters.
Programmering Toelichting:
Open de Arduino IDE. Plak de volledige Arduino-code, die aan het einde van deze tutorial wordt gegeven, in de IDE. Verbind je Arduino met de computer. Selecteer de poort in Tools / Port. Klik op de uploadknop.
Test de robot. Als het te weinig of te veel draait, experimenteer dan met de vertragingen tot het perfect is.
Voordat we ingaan op de code, moeten we de Adafruit Motor Shield Library installeren om de DC-motoren aan te drijven. Omdat we het L293D-motordriver-schild gebruiken, moeten we de AFmotor-bibliotheek vanaf hier downloaden. Voeg het vervolgens toe aan uw Arduino IDE-bibliotheekmap. Zorg ervoor dat u het hernoemt naar AFMotor . Lees meer over het installeren van deze bibliotheek.
Code is eenvoudig en kan gemakkelijk worden begrepen, maar hier hebben we enkele delen ervan uitgelegd:
Onderstaande code stelt de robot in. Ten eerste hebben we de Adafruit Library opgenomen voor het aandrijven van de motoren met Motor driver shield. Daarna hebben we Trig-pin en Echo-pin gedefinieerd. Het stelt ook de motoren in. Het stelt de Trig-pin in op uitvoer en de Echo-pin op invoer.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motor2 (2, MOTOR12_8KHZ); leegte setup () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
Onderstaande code vertelt de Arduino om de volgende opdrachten te herhalen. Daarna gebruikt het de sensor om ultrasone geluiden te verzenden en te ontvangen. Het berekent de afstand die het is vanaf het object zodra ultrasone golven terugstuiteren, nadat het heeft opgemerkt dat het object zich binnen de ingestelde afstand bevindt, vertelt het de Arduino om de motoren dienovereenkomstig te draaien.
void loop () {lange duur, afstand; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duur = pulseIn (echoPin, HIGH); afstand = (duur / 2) / 29,1; if (afstand <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (ACHTERUIT); motor2.run (ACHTERUIT); vertraging (2000); // WIJZIG DIT VOLGENS HOE DE ROBOT DRAAIT.
Hierdoor draait de robot door de ene motor te laten draaien en de andere stil te houden.
Onderstaande code zorgt ervoor dat de robot beide motoren in dezelfde richting draait om hem vooruit te laten bewegen totdat hij een object in de bovengenoemde grens detecteert.
anders {motor1.setSpeed (160); // WIJZIG DIT VOLGENS HOE SNEL JE ROBOT MOET GAAN. motor2.setSpeed (160); // VERANDER DIT IN DEZELFDE WAARDE ALS JE HIERBOVEN IN ZET. motor1.run (VOORUIT); motor2.run (VOORUIT); }