In der Welt immer beliebter bei Reinigungsrobotern. Dank dieser kleinen Helfer wird das Haus viel sauberer und es wird viel weniger Aufwand in die Reinigung gesteckt. Es gibt viele verschiedene Modifikationen von Robotern, die sich alle in Funktionalität, Größe und anderen Parametern unterscheiden.
In diesem Artikel wird insbesondere ein Beispiel dafür beschrieben, wie
mit seinen eigenen Händen Sie können einen einfachen Roboter bauen, der den Raum bei Bedarf selbst absaugt. Der Controller wird hier als "Gehirn" verwendet
Arduino.
Materialien und Werkzeuge für die Herstellung des Roboters:- Platine, die den Betrieb von Motoren steuert (Arduino Motor Shield);
- Arduino Board;
- zwei Motoren mit Zahnrädern (Motoren mit 3 Volt und einer Drehzahl von ca. 100 U / min);
- Räder (können aus Aluminiumdosen hergestellt werden;
- ein Kühler von einem Computer-Netzteil (möglich sowohl bei 5 V als auch bei 12 V);
- 5V Stromversorgung (Batterie);
- Drähte und Platten zur Installation von Funkelementen;
- Um den Fall zu machen, benötigen Sie einen Plastikbehälter;
- Ein weiterer kleiner Behälter zum Erstellen eines Abfallbehälters;
- Heißkleber;
- Magnete;
- Pappe.
Der Herstellungsprozess des Roboters:
Erster Schritt. Softwareteil des Roboters und Skizze:
Das Herzstück des Roboters ist der Arduino-Controller. Zum Programmieren benötigen Sie einen Computer und eine spezielle Software.
Um die Skizze auf die Tafel herunterzuladen, benötigen Sie das Arduino IDE-Programm. Unten können Sie den Programmcode des Roboters nehmen und den Hauptstromkreis sehen.
/*
Programm zur Steuerung eines Roboters mit zwei Motoren.
Der Roboter dreht sich, wenn Motoren ihre Geschwindigkeit und Richtung ändern.
Die vorderen Stoßstangen auf der linken und rechten Seite erkennen Hindernisse.
Ultraschallsonare können an analoge Eingänge angeschlossen werden (getestet mit LV-MaxSonar-EZ1):
- Stecken Sie die Pins in der folgenden Reihenfolge in das Array sonarPins: links, rechts, vorne, andere.
Beispiele:
1. Nur linke und rechte Sonare, die mit den Pins 2 und 3 verbunden sind: sonarPins [] = {2,3}
2. linkes, rechtes und vorderes Sonar, verbunden mit den Pins 2, 3 und 5: sonarPins [] = {2,3,5}
3. Nur Front-Sonar an Pin 5 angeschlossen: sonarPins [] = {-1, -1,5}
4. Nur linkes Sonar an Pin 2 angeschlossen: sonarPins [] = {2}
5. Nur rechtes Sonar an Pin 3 angeschlossen: sonarPins [] = {-1,3}
6,5 Sonare verbunden mit den Pins 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Motorschild wird zum Betreiben von Motoren verwendet.
*/
const int Baud = 9600; // UART-Portgeschwindigkeit
// Sonareigenschaften
int sonarPins [] = {1, 2}; // Analoge Pin-Nummern zum Sonarsensor Pin AN
const long MinLeftDistance = 20; // Minimal zulässiger linker Abstand
const long MinRightDistance = 20; // Minimal zulässiger rechter Abstand
const long MinFrontDistance = 15; // Minimal zulässiger Frontabstand
const int SamplesAmount = 15; // mehr Samples - reibungslosere Messung und größere Verzögerung
const int SonarDisplayFrequency = 10; // zeige nur eine dieser Zeilen an - nicht alle
int sonarDisplayFrequencyCount = 0;
const long Factor = 2,54 / 2;
lange Samples [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// rechte Seite
const int pinRightMotorDirection = 4; // Dies kann auf dem Motorschild als "DIR A" markiert werden.
const int pinRightMotorSpeed = 3; // Dies kann auf dem Motorschild als "PWM A" markiert werden.
const int pinRightBumper = 2; // wo der rechte Stoßfänger angeschlossen ist
// linke Seite
const int pinLeftMotorDirection = 7; // Dies kann auf dem Motorschild als "DIR B" markiert werden.
const int pinLeftMotorSpeed = 6; // Dies kann auf dem Motorschild als "PWM B" markiert werden.
const int pinLeftBumper = 8; // wo der rechte Stoßfänger angeschlossen ist
// nächste 2 Zeilen auskommentieren, wenn Motor Shield unterbrochen ist
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // Dies kann auf dem Motorschild als "BREAKE A" markiert werden.
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // Dies kann auf dem Motorschild als "BREAKE B" markiert werden.
// Felder
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// Zähler setzen, wie lange ein Motor zurückläuft: N / 10 (in Millisekunden)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Initialisierung
void setup () {
Serial.begin (Baud);
initPins ();
// nächste 4 Zeilen auskommentieren, wenn Motor Shield kaputt ist
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // Pausen ausschalten
// digitalWrite (pinRightMotorBreak, LOW); // Pausen ausschalten
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Hauptschleife
void loop () {
verifyAndSetRightSide ();
verifyAndSetLeftSide ();
processRightSide ();
processLeftSide ();
delay (10); // alle 10 Millisekunden wiederholen
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
für (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
while (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
delay (20); // alle 20 Millisekunden prüfen
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // prüft, ob der minimal zulässige Frontabstand nicht erreicht wird
zurück
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // wenn der Zähler noch nicht herunterzählt
runLeftMotorBackward (); // den rechten Motor rückwärts laufen lassen
countDownWhileMovingToLeft = turnLeftTimeout; // setze den Zähler auf den Maximalwert, um den Countdown zu starten
}
bool checkCounterIsNotSet (int counter) {
Rückgabezähler = SamplesAmount)
sampleIndex [pinIndex] = 0;
samples [pinIndex] [sampleIndex [pinIndex]] = Wert;
return true;
}
long berechneAvarageDistance (int pinIndex) {
langer Durchschnitt = 0;
für (int i = 0; i Durchschnitt + = Stichproben [pinIndex] [i];
Rückgabedurchschnitt / SamplesAmount;
}
Schritt zwei Vorbereitung der Grundelemente des Roboters
Karton dient als Basis für die Befestigung aller Komponenten des Roboters, einschließlich Batterie, Steuerplatinen und Motoren.
Die Turbine muss ordnungsgemäß geklebt oder auf andere Weise auf einem kleinen Kunststoffbehälter befestigt sein, in den ein Loch für die Absorption von Schmutz eingebracht werden kann. Anschließend wird dieses Design auf den Kartonboden geklebt. Zusätzlich muss der Behälter ein zusätzliches Loch haben, durch das Luft austreten kann. Sollte es einen Filter geben, entschied sich der Autor, für diese Zwecke synthetischen Stoff zu verwenden.
In der nächsten Phase muss der Kühler mit Servos verklebt werden, und dann wird dieses Design auf einem Kartonboden installiert.
Schritt drei Wir machen Räder für den Roboter
Um die Räder herzustellen, müssen Sie Aluminiumdosen nehmen und die oberen und unteren Teile von ihnen abschneiden. Dann werden diese Elemente zusammengeklebt. Jetzt müssen nur noch die Räder mit Schmelzkleber ordnungsgemäß an den Servomotoren befestigt werden. Es ist wichtig zu verstehen, dass die Räder deutlich in der Mitte der Wellen der Servos befestigt sein müssen. Ansonsten der Roboter wird schief fahren und Energie verbrauchen.
Schritt vier Der endgültige Montageprozess des Roboters
Nachdem die Batterie installiert und alle Elemente des Roboters verbunden sind, muss die Struktur in einem dauerhaften Gehäuse aufbewahrt werden. Ein großer Plastikbehälter eignet sich hervorragend für diese Zwecke. Zunächst müssen Löcher in die Nase des Roboterkörpers gemacht werden, durch die Kontakte ausgegeben werden, die ein Signal geben Elektronik wenn der Roboter mit einem Hindernis kollidiert.
Damit das Gehäuse schnell und einfach entfernt werden kann, werden es mit Magneten befestigt. In diesem Fall gibt es acht davon. Die Magnete werden auf die Innenseite des Staubsaugers und auf den Behälter selbst geklebt, jeweils 4 Stück.
Das ist alles. Jetzt ist der Roboter zusammengebaut und kann in der Praxis ausprobiert werden. Trotz der Tatsache, dass der Roboter nicht in der Lage ist, sich selbst aufzuladen und nur eine eingeschränkte Navigationsfähigkeit besitzt, kann er in einer halben Stunde Müll in der Küche oder in einem kleinen Raum beseitigen. Der Vorteil des Roboters besteht darin, dass alle Komponenten leicht zu finden sind und nicht sehr teuer sind. Kein Zweifel hausgemacht Sie können verfeinern, indem Sie neue Sensoren und andere Elemente hinzufügen.