Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Ultrasone Map-Maker met behulp van een Arduino Yun

Componenten en benodigdheden

Arduino Yun
× 1
Ultrasone sensor
× 1
Servo's (Tower Pro MG996R)
× 1
Jumperdraden (algemeen)
× 10

Apps en online services

Arduino IDE
MATLAB

Over dit project

Stap 1:Theorie

In dit project gebruiken we een ultrasone afstandssensor. Het genereert geluidsgolven die buiten het bereik van het menselijk gehoor vallen en meet de afstand door de tijd te berekenen die deze golven nodig hebben om een ​​obstakel te raken en terug te reizen. Dit is vergelijkbaar met het principe dat wordt gebruikt door vleermuizen en cruiseschepen.

Een ander onderdeel dat we gaan gebruiken is een servomotor. Het verschilt van de gebruikelijke gelijkstroommotor doordat het heel precies in een bepaalde hoekpositie kan draaien en daar zijn toestand kan behouden. Wanneer een servomotor pulsen van een bepaalde duur krijgt, beweegt deze naar de overeenkomstige hoekpositie.

We zullen beide componenten gebruiken om een ​​gezichtsveld van 180 graden voor onze robot te krijgen.

Stap 2:Materiaal verzamelen

Dit project gebruikt de volgende hardware

  • Arduino Uno/Yun (Houd er rekening mee dat elk Arduino-footprintboard kan worden gebruikt in plaats van de Uno of Yun)
  • Arduino Prototyping-schild
  • Een HC-04 ultrasone sensor
  • Een servomotor (ik heb de Tower Pro SG90 gebruikt omdat hij erg compact is)
  • Aan de softwarekant gebruiken we de volgende programma's
  • De Arduino IDE om besturingscode naar de Arduino te uploaden om de servo te draaien en afstandsgegevens van de ultrasone sensor te krijgen en deze ook naar de seriële poort te duwen.
  • Mathworks MatLab om gegevens van de seriële lijn te ontvangen, te verwerken en te visualiseren in een grafiek.

Stap 3:Mechanische montage

Gebruik een klein stukje PCB voor algemene doeleinden, maak een kleine header voor de HC-04 en bevestig deze aan een servohoorn met een stuk dubbelzijdig plakband.

Deze stap is optioneel, maar om het systeem compacter te maken, heb ik de servo ook met dubbelzijdig plakband aan het uitstekende deel van het protoboard-schild bevestigd.

Het eindresultaat zou eruit moeten zien als de buik van Wall-E.

Stap 4:De Arduino-code

De Arduino-code regelt de beweging van de servomotor, en wanneer de meetwaarden van de ultrasone sensor worden vastgelegd en hoe vaak. Het stuurt ook de sensorgegevens naar de seriële poort.

  • Bibliotheken importeren
  • Initialiseer variabelen en pinnen.
  • Initialiseer servo-object
  • Seriële communicatie initialiseren
  • Wacht 3 seconden
  • Initialiseer tellers naar 0
  • Draai servo met 1 graad
  • Ontvang ultrasone sensorgegevens 10 keer (standaard ingesteld)
  • Het gemiddelde van de gegevens
  • Stuur het gemiddelde naar de seriële poort
  • Terug naar stap 7

Stap 5:De MatLab-code

De MatLab-code behandelt meer gegevens dan de feitelijke besturing van het bord, dus alle sensorgegevens worden serieel naar de pc geduwd, waar het door MatLab wordt gelezen.

Nu vertellen de gegevens die we van de Arduino ontvangen ons twee dingen. De mate van rotatie van de servo en de afstand van een obstakel in die richting. Daarom bevinden de gegevens die we op dit moment hebben zich in het poolcoördinatensysteem. Om ervoor te zorgen dat het logisch is voor menselijke ogen wanneer het wordt gevisualiseerd, moet het worden geconverteerd naar het Cartesiaanse of X-Y-coördinatensysteem.

Dus de MatLab-code doet precies dit. Het haalt gegevens serieel uit de COM-poort, slaat het op in een matrix met de rotatiehoek en zet het vervolgens om in cartesiaanse coördinaten met de bovenstaande formule.

Als het klaar is, geeft het een uitvoer door de punten in een grafiek uit te zetten. Ik plaatste het bord in de doos en kreeg het volgende resultaat.

Stap 6 :Conclusie

Hoewel het systeem niet perfect is, klaart het de klus. Het kan een ruwe schatting krijgen van de breedte en lengte van de doos en stuurt de gegevens nauwkeurig.

De enige fouten die ik op dit moment kan zien, zijn het schudden van de sensor terwijl de servo beweegt en foutieve metingen van de sensor zelf.

Afgezien hiervan werkt het systeem prima en kan het worden gebruikt voor experimenten met dieptewaarneming en voor eenvoudige computervisieprojecten.

Code

  • matlab_code_to_run_on_pc.m
  • Arduino-code
matlab_code_to_run_on_pc.mMATLAB
MatLab-code die moet worden gecompileerd en uitgevoerd op pc
theta =0:(pi/180):pi;s =serial('COM10');s.BaudRate=9600fopen(s)i =0;inc =1;while i<180 A =fget(s); aantal(i+1) =str2num(A); i =i+1;endfclose(s)j =1while j<181 tab(j,1) =(j-1)*inc tab(j,2) =num(j) tab(j,3) =num( j)*cosd((j-1)*inc) tab(j,4) =num(j)*sind((j-1)*inc) j =j+1end%figure%polar(theta,num)plot (tab(:,3),tab(:,4))
Arduino-codeArduino
Arduino-code die moet worden geüpload naar Arduino Yun
#include #include #define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200 NewPing-sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); Servo-mijnservo; int pos =0; int it =10; ongeldige setup () { myservo.attach (9); Serieel.begin(9600); delay(3000);}void loop() { int i =0; int t =0; int a =0; for (i =0; i <180; i ++) { unsigned int uS =sonar.ping(); mijnservo.write(i); vertraging(20); for (t =0; t   

Schema's

Fritzing-bestand voor servo- en ultrasone sensoraansluitingen YunConfig.fzz

Productieproces

  1. Maak Monitor Ambilight met Arduino
  2. Human Detection Robotics System met Arduino Uno
  3. ULTRASONE LEVITATION-machine die ARDUINO gebruikt
  4. FlickMote
  5. DIY voltmeter met Arduino en smartphone
  6. Hartslagmeter met IoT
  7. Android bestuurd speelgoed met Raspberry Motor Shield
  8. IOT - Smart Jar met ESP8266, Arduino en ultrasone sensor
  9. WebServerBlink met Arduino Uno WiFi
  10. Lijnvolger Robot
  11. Geautomatiseerd Dino-spel met arduino