Hoe verplaats je gerechten door je keukenplank met 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 huishoudelijke robot te maken die in de keuken aanwezig zal zijn en die vuile keukengerei naar de gootsteen zal dragen en daar zal stoppen. Wanneer de persoon het keukengerei uit de robot haalt, komt het terug en neemt er meer mee. Soms is in grote keukens de gootsteen niet zo dicht bij de kasten, zodat de robot de afwas van de ene plaats van de plank naar de andere zal 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 van de sensoren, zal de Arduino de motoren sturen om te bewegen met behulp van een motorstuurprogramma.



Huiselijke robot

Hoe alle benodigde randapparatuur aansluiten om een ​​huishoudelijke robot te maken?

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



Stap 1: gebruikte componenten

  • Arduino uno
  • IR-sensor (x5)
  • DC-motoren
  • Achtervolgingen van autowielen
  • Zwarte tape
  • Doorverbindingsdraden
  • DC-batterij
  • Lijmpistool
  • Schroevendraaier set

Stap 2: de componenten bestuderen

Aangezien we al een lijst met componenten hebben gemaakt, gaan we een stap verder en gaan we de werking van elk onderdeel kort bestuderen.



De Arduino UNO is een microcontrollerbord 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 aangesloten op 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-code opereren.



Arduino UNO

L298N Motor Driver wordt gebruikt om DC-motoren te bedienen. De L298N is een dubbele H-Bridge-motordriver die snelheids- en richtingsregeling van twee DC-motoren tegelijkertijd mogelijk maakt. De module kan DC-motoren aandrijven met spanningen tussen 5 en 35V, met een piekstroom tot 2A. Het hangt af van de spanning die wordt gebruikt op de VCC-klem van de motor. 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 motor driver met de DC motoren aangesloten wordt hieronder weergegeven om het mechanisme van de L298N-motordriver te begrijpen. Voor de demonstratie wordt de input gegeven vanuit het Logische staat in plaats van IR-sensoren.

Schakelschema gemaakt op Proteus 8 Professional



Stap 3: Het blokschema en het werkingsprincipe begrijpen

Ten eerste zullen we het blokschema doornemen, het werkingsprincipe begrijpen en vervolgens de hardware-componenten in elkaar zetten.

Blokdiagram

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 0 op de witte vlakken en 1 op de zwarte vlakken. We gaan vijf sensoren gebruiken in deze robot. Er staan ​​vier voorwaarden in de code voor vijf sensoren.

  1. Doorsturen op 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 toestand uitgevoerd en zal de robot recht vooruit bewegen. Als we beginnen met Sensor 1 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 bevinden zich op het witte oppervlak en de rest van de sensoren bevinden zich op het zwarte oppervlak, de voorwaarde voor scherpe bocht naar rechts wordt uitgevoerd en de robot zal scherp naar rechts draaien. Als we beginnen met Sensor 1 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 bevinden zich op het witte oppervlak en de rest van de sensoren bevinden zich op het zwarte oppervlak, de voorwaarde voor scherpe bocht naar links wordt uitgevoerd en de robot zal scherp naar links draaien. Als we beginnen met Sensor 1 en ga door tot Sensor5, de waarde die elk van de sensoren respectievelijk zal geven is (0 0 0 1 1) .
  4. Hou op: Als alle vijf sensoren zich op het zwarte oppervlak bevinden, stopt de robot en gaan de motoren draaien UIT. Dit punt met vijf zwarte vlakken bevindt zich bij de gootsteen 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 laadt de borden uit en dan beweegt de robot naar het pad en zoekt naar het keukengerei nog een keer.

Spoor van Robot

Stap 4: Aan de slag met Arduino

Maak je geen zorgen als je nog niet bekend bent met Arduino IDE, want hieronder zie je duidelijke stappen voor het branden van code op het microcontrollerbord met Arduino IDE. U kunt de nieuwste versie van Arduino IDE downloaden van hier en volg de onderstaande stappen:

  1. Wanneer het Arduino-bord is aangesloten op uw pc, opent u 'Configuratiescherm' en klikt u op 'Hardware en geluiden'. Klik vervolgens op 'Apparaten en printers'. Zoek de naam van de poort waarop uw Arduino-bord is aangesloten. In mijn geval is dit 'COM14', maar het kan op uw pc anders zijn.

    Port vinden

  2. Open nu de Arduino IDE. Stel vanuit Tools het Arduino-bord in op Arduino / Genuino UNO.

    Board instellen

  3. Stel vanuit hetzelfde Tool-menu het poortnummer in dat u in het bedieningspaneel zag.

    Port instellen

  4. Download de onderstaande code en kopieer deze naar uw IDE. Om de code te uploaden, klikt u op de uploadknop.

U kunt de code downloaden van Hier

Stap 5: de code begrijpen

De code is heel simpel. Het wordt hieronder kort uitgelegd:

  1. Aan het begin van de code worden de sensorpinnen geïnitialiseerd en daarmee ook de pinnen voor de Motor Driver L298N.
    int enable1pin = 10; // Initialiseren van PWM-pin voor analoge ingang voor motor 1 int motor1pin1 = 2; // Initialiseren van positieve pin voor motor 1 int motor1pin2 = 3; // Initialiseren van negatieve pin voor motor 1 int enable2pin = 11; // Initialiseren van PWM-pin voor analoge ingang voor motor 2 int motor2pin1 = 4; // Initialiseren van positieve pin voor motor 2 int motor2pin2 = 5; // Initialiseren van negatieve pin voor motor 2 int S1 = 12; // Initialiseren van pin 12 voor sensor 1 int S2 = 9; // Initialiseren van pin 9 voor sensor 2 int S3 = 8; // Initialiseren van pin 8 voor sensor 3 int S4 = 7; // Initialiseren van pin 7 voor sensor 4 int S5 = 6; // Initialiseren van pin 6 voor sensor 5
  2. leegte 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 de microcontroller-kaart 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); // Sensor1 instellen als input pinMode (S2, INPUT); // Sensor2 instellen als input pinMode (S3, INPUT); // Sensor3 instellen als input pinMode (S4, INPUT); // Sensor4 instellen als input pinMode (S5, INPUT); // Sensor5 instellen als invoer Serial.begin (9600); // Instellen van de baudrate}
  3. leegte 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 onder 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))) // Doorsturen op de regel {analogWrite (enable1pin, 61); // Motor 1 snelheid analogWrite (enable2pin, 63); // Motor 2 snelheden digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 ingesteld op High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 ingesteld op High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 ingesteld op Low} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Scherpe bocht naar rechts {analogWrite (enable1pin, 60); // Motor 1 snelheid analogWrite (enable2pin, 80); // Motor 2 snelheden digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 ingesteld op High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 ingesteld op Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 ingesteld op Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Scherpe bocht naar links {analogWrite (enable1pin, 80); // Motor 1 snelheid analogWrite (enable2pin, 65); // Motor 2 snelheden digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 ingesteld op Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 ingesteld op High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 ingesteld op Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // stop {analogWrite (enable1pin, 0); // Motor 1 snelheid analogWrite (enable2pin, 0); // Motor 2 snelheden digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 ingesteld op Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ingesteld op Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 ingesteld op Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 ingesteld op laag}}

Toepassingen

  1. Industriële toepassingen : Deze robots kunnen worden gebruikt als geautomatiseerde apparatuurdragers in industrieën die traditionele transportbanden vervangen.
  2. Huishoudelijke toepassingen : Deze kunnen ook thuis worden gebruikt voor huishoudelijke doeleinden zoals vloerreiniging, keukenwerk, enz.
  3. Begeleidingstoepassingen : Deze robots kunnen worden gebruikt in openbare plaatsen zoals winkelcentra, foodcourts, musea enz. Om padgeleiding te bieden