Hoe u gerechten rond uw keukenplank kunt verplaatsen met behulp van een robot?

Als u op zoek bent naar een manier om de charme en functionaliteit van uw keuken drastisch te vergroten, overweeg dan om de menselijke inspanning daar te minimaliseren. De menselijke inspanning kan worden geminimaliseerd door een huisrobot te maken die in de keuken aanwezig zal zijn en vuile keukengerei naar de gootsteen zal dragen en daar zal stoppen. Wanneer de persoon het keukengerei uit de robot haalt, keert hij terug en brengt er meer mee. Soms is in grote keukens de wasbak niet zo dicht bij de kasten, dus de robot zal de afwas van de ene plaats van de plank naar de andere brengen. Met de zwarte tape wordt op de plank een pad voor de robot gemaakt. De robot zal twee infrarood naderingssensoren gebruiken om het pad te detecteren en op basis van de input die van de sensoren wordt ontvangen, zal de Arduino de motoren aansturen om te bewegen met behulp van een motordriver.

Hoe alle benodigde randapparatuur aan te sluiten bij het maken van een huishoudelijke robot?

Nu moeten we de benodigde componenten verzamelen en beginnen met het maken van de robot.

Stap 1: Gebruikte componenten

Stap 2: De componenten bestuderen

Omdat we al een lijst met componenten hebben gemaakt, gaan we een stap verder en gaan we door een korte studie van de werking van elke component.

De Arduino UNO is een microcontroller-bord dat bestaat uit een microchip ATMega 328P en is ontwikkeld door Arduino.cc. Dit bord heeft een set digitale en analoge datapinnen die kunnen worden gekoppeld aan andere uitbreidingskaarten of circuits. Dit bord heeft 14 digitale pinnen, 6 analoge pinnen en is programmeerbaar met de Arduino IDE (Integrated Development Environment) via een type B USB-kabel. Het vereist 5V om te voeden AAN en een C-codeopereren.

L298N Motor Driver wordt gebruikt om DC-motoren te bedienen. De L298N is een dubbele H-Bridge-motordriver waarmee de snelheid en richting van twee gelijkstroommotoren tegelijkertijd kunnen worden geregeld. De module kan gelijkstroommotoren aansturen met spanningen tussen 5 en 35V, met een piekstroom tot 2A. Het hangt af van de spanning die wordt gebruikt op de VCC-terminal van de motoren. In ons project zal de 5V-pin worden gebruikt als invoer, omdat we deze moeten aansluiten op een 5V-voeding om de IC correct te laten werken. Het schakelschema van de L298N-motordriver met de DC-motoren aangesloten wordt hieronder weergegeven om het mechanisme van de L298N-motordriver te begrijpen. Voor de demonstratie wordt de input gegeven van de Logische staatin plaats van IR-sensoren.

Stap 3: Het blokschema en het werkingsprincipe begrijpen

Eerst zullen we het blokschema doornemen, het werkingsprincipe begrijpen en vervolgens overgaan tot het assembleren van de hardwarecomponenten.

De sensoren die we zullen gebruiken zijn digitaal en ze kunnen de output 0 of 1 geven. Deze sensoren die we hebben gekocht, geven 1 op witte oppervlakken en 0 op de zwarte vlakken. De sensoren die we kopen geven willekeurige waarden, soms geven ze they 0 op de witte vlakken en 1 op de zwarte vlakken. We gaan vijf sensoren gebruiken in deze robot. Er zijn vier voorwaarden in de code voor vijf sensoren.

  1. Vooruit aan de lijn: Wanneer de middelste sensor zich op het zwarte oppervlak bevindt en de rest van de sensoren op het witte oppervlak, wordt de voorwaartse conditie uitgevoerd en zal de robot recht vooruit bewegen. Als we beginnen vanaf Sensor1 en ga door tot Sensor5, de waarde die elk van de sensoren respectievelijk zal geven is (1 1 0 1 1).
  2. Scherpe bocht naar rechts:Wanneer de Sensor 1 en Sensor 2 zich op het witte oppervlak bevinden en de rest van de sensoren op het zwarte oppervlak, wordt de voorwaarde voor scherpe bocht naar rechts uitgevoerd en zal de robot scherp naar rechts draaien. Als we beginnen vanaf Sensor1 en ga door tot Sensor5, de waarde die elk van de sensoren respectievelijk zal geven is (1 1 0 0 0).
  3. Scherpe bocht naar links:Wanneer de Sensor 4 en Sensor 5 zich op het witte oppervlak bevinden en de rest van de sensoren op het zwarte oppervlak, wordt de conditie scherp naar links uitgevoerd en zal de robot scherp naar links draaien. Als we beginnen vanaf Sensor1 en ga door tot Sensor5, de waarde die elk van de sensoren respectievelijk zal geven is (0 0 0 1 1).
  4. Hou op: Wanneer alle vijf sensoren op het zwarte oppervlak zijn, stopt de robot en draaien de motoren UIT. Dit punt met vijf zwarte vlakken zal zich in de buurt van de gootsteen bevinden, zodat de vaatwasser de borden uit de robot kan halen om te wassen.

We maken een pad op de keukenplank met zwarte tape en dat pad eindigt bij de gootsteen, dus de robot stopt bij de gootsteen en de vaatwasser zal de borden uitladen en dan zal de robot naar het pad gaan en naar het keukengerei zoeken opnieuw.

Stap 4: Aan de slag met Arduino

Als u nog niet bekend bent met Arduino IDE, hoeft u zich geen zorgen te maken, want hieronder ziet u duidelijke stappen voor het branden van code op het microcontrollerbord met behulp van Arduino IDE. U kunt de nieuwste versie van Arduino IDE hier downloaden en de onderstaande stappen volgen:

  1. Wanneer het Arduino-bord is aangesloten op uw pc, opent u "Configuratiescherm" en klikt u op "Hardware en geluid". Klik vervolgens op "Apparaten en printers". Zoek de naam van de poort waarop uw Arduino-bord is aangesloten. In mijn geval is het "COM14", maar het kan op uw pc anders zijn.
  2. Open nu de Arduino IDE. Stel vanuit Tools het Arduino-bord in op Arduino / Echte UNO.
  3. Stel vanuit hetzelfde Tool-menu het poortnummer in dat u in het configuratiescherm zag.
  4. Download de onderstaande code en kopieer deze naar uw IDE. Om de code te uploaden, klikt u op de upload-knop.

U kunt de code hier downloaden

Stap 5: De code begrijpen

De code is heel simpel. Hieronder wordt het kort uitgelegd:

  1. Aan het begin van de code worden de sensorpinnen geïnitialiseerd en daarmee worden ook de pinnen voor de Motor Driver L298N geïnitialiseerd.
    int inschakelen1pin=10; // Initialisatie van PWM-pin voor analoge ingang voor motor 1 int motor1pin1=2; // Positieve pin initialiseren voor motor 1 int motor1pin2 = 3; // Negatieve pin initialiseren voor motor 1 int enable2pin = 11; // Initialisatie van PWM-pin voor analoge ingang voor motor 2 int motor2pin1=4; // Positieve pin initialiseren voor motor 2 int motor2pin2 = 5; // Negatieve pin initialiseren voor motor 2 int S1 = 12; // Initialisatiepen 12 voor sensor 1 int S2=9; // Initialisatiepen 9 voor sensor 2 int S3=8; // Initialisatiepen 8 voor sensor 3 int S4=7; // Initialisatiepen 7 voor sensor 4 int S5 = 6; // Initialisatiepen 6 voor sensor 5
  2. ongeldige setup()is een functie die wordt gebruikt om de pinnen in te stellen als INPUT of OUTPUT. Het stelt ook de baudrate van de Arduino in. Baudrate is de snelheid waarmee het microcontrollerbord communiceert met de andere aangesloten componenten.
    { pinMode (enable1pin, OUTPUT); // PWM inschakelen voor Motor 1 pinMode (enable2pin, OUTPUT); // PWM inschakelen voor Motor 2 pinMode (motor1pin1, OUTPUT); // Motor1 pin1 instellen als output pinMode (motor1pin2, OUTPUT); // Motor1 pin2 instellen als output pinMode (motor2pin1, OUTPUT); // Motor2 pin1 instellen als output pinMode (motor2pin2, OUTPUT); // Motor2 pin2 instellen als output pinMode (S1, INPUT); // Instelling sensor1 als input pinMode (S2, INPUT); // Instelling sensor2 als input pinMode (S3, INPUT); // Sensor3 instellen als invoerpinMode (S4, INPUT); // Sensor4 instellen als invoerpinMode (S5, INPUT); // Sensor5 instellen als invoer Serial.begin (9600); // De baudrate instellen}
  3. lege lus() is een functie die keer op keer in een cyclus wordt uitgevoerd. In deze lus geven we instructies aan de Arduino UNO welke bewerkingen moeten worden uitgevoerd. De volledige snelheid van de motoren is 255 en beide motoren hebben verschillende snelheden. Dus als we de robot naar voren willen bewegen, naar rechts willen draaien enz. Moeten we de snelheid van de motoren aanpassen. We hebben analoge pinnen in de code gebruikt omdat we de snelheid van de twee motoren in verschillende omstandigheden willen variëren. U kunt de snelheid van uw motoren zelf aanpassen.
    void loop() { if(!(digitalRead(S1))&&!(digitalRead(S2))&&(digitalRead(S3))&&!(digitalRead(S4))&&!(digitalRead(S5))) //Forward on de lijn {analogeWrite(enable1pin, 61); // Motor 1 snelheid analogWrite (enable2pin, 63); // Motor 2 speed digitalWrite (motor1pin1, HOOG); // Motor 1 pin 1 ingesteld op High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Laag digitalWrite (motor2pin1, HOOG); // Motor 2 pin 1 ingesteld op High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 ingesteld op Laag } if(!(digitalRead(S1))&&!(digitalRead(S2))&&(digitalRead(S3))&&(digitalRead(S4))&&(digitalRead(S5))) / / Scherpe bocht naar rechts {analogeWrite(enable1pin, 60); // Motor 1 snelheid analogWrite (enable2pin, 80); // Motor 2 speed digitalWrite (motor1pin1, HOOG); // Motor 1 pin 1 ingesteld op High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Laag digitalWrite (motor2pin1, LAAG); // Motor 2 pin 1 ingesteld op Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 ingesteld op Laag } if((digitalRead(S1))&&(digitalRead(S2))&&(digitalRead(S3))&&!(digitalRead(S4))&&!(digitalRead(S5))) / / Scherpe bocht naar links {analogeWrite(enable1pin, 80); // Motor 1 snelheid analogWrite (enable2pin, 65); // Motor 2 speed digitalWrite (motor1pin1, LAAG); // Motor 1 pin 1 ingesteld op Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Laag digitalWrite (motor2pin1, HOOG); // Motor 2 pin 1 ingesteld op High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 ingesteld op Laag } if((digitalRead(S1))&&(digitalRead(S2))&&(digitalRead(S3))&&(digitalRead(S4))&&(digitalRead(S5))) // stop {analogeWrite(enable1pin, 0); // Motor 1 snelheid analogWrite (enable2pin, 0); // Motor 2 speed digitalWrite (motor1pin1, LAAG); // Motor 1 pin 1 ingesteld op Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Laag digitalWrite (motor2pin1, LAAG); // Motor 2 pin 1 ingesteld op Laag digitalWrite (motor2pin2, LAAG); // Motor 2 pin 2 ingesteld op Laag}}

Toepassingen

  1. Industriële toepassingen: Deze robots kunnen worden gebruikt als geautomatiseerde apparatuurdragers in industrieën ter vervanging van traditionele transportbanden.
  2. Binnenlandse toepassingen: Deze kunnen ook thuis worden gebruikt voor huishoudelijke doeleinden zoals vloerreiniging, keukenwerk, enz.
  3. Begeleiding toepassingen: Deze robots kunnen worden gebruikt in openbare plaatsen zoals winkelcentra, foodcourts, musea enz. om padbegeleiding te bieden
Facebook Twitter Google Plus Pinterest