Robotersystem zur Erkennung von Menschen mit Arduino Uno
Komponenten und Verbrauchsmaterialien
 | | × | 1 | |
 | Entwicklungsplatine, Motorsteuerungsschild | | × | 1 | |
 | | × | 1 | |
 | | × | 4 | |
 | Ultraschallsensor - HC-SR04 (Generic) | | × | 1 | |
 | DHT11 Temperatur- und Feuchtigkeitssensor (4 Pins) | | × | 1 | |
 | | × | 1 | |
 | | × | 1 | |
 | | × | 1 | |
Apps und Onlinedienste
 | | |
 | | |
| Kontrollzentrum-Android-App | | |
Über dieses Projekt
Dieses System entwickelt ein mobiles Rettungsroboter-Fahrzeugsystem auf Basis von Arduino, um den Menschen, die in Naturkatastrophen wie Katastrophen, Erdbeben, Überschwemmungen usw. gefangen sind, rechtzeitig zu helfen in den Kontrollraum, damit das Rettungsteam aus Experten und Ärzten zur Erstversorgung an den Ort des Opfers und an einen sicheren Ort oder ins Krankenhaus geschickt werden kann. Der gesamte Vorgang erfolgt innerhalb weniger Sekunden, da das System von einer Arduino-Einheit gesteuert wird. PIR-Sensoren sind Passiv-Infrarot-Sensoren, die die Bewegung von Personen anhand von Veränderungen der Infrarot-(Wärme-)Werte von umgebenden Objekten erkennen. Der menschliche Körper sendet Wärmestrahlung mit einer Wellenlänge von etwa 10 Mikrometern aus. Es wird vom PIR-Sensor empfangen und manipuliert, um Menschen zu erkennen. Es arbeitet mit 5V DC. Die Bewegung des Menschen kann erkannt werden, indem auf eine plötzliche Änderung der umgebenden IR-Muster überprüft wird. Hindernissensor erkennt das Hindernis und sendet die analogen Signale an den Arduino. Arduino ist so programmiert, dass es den Roboter automatisch je nach erkanntem Hindernis führt und die Informationen des Menschen über die Bluetooth-Technologie an die Fernbedienung sendet. Die Daten werden in der Basisstation (Kontrollzentrum) empfangen. Durch die Analyse der Daten kann das Rettungsteam die notwendigen Schritte unternehmen, um die gefangenen Menschen zu retten.
Code
- Menschliche Erkennung.ino
Menschliche Erkennung.inoArduino
#include // #include // Sie können die Codebibliothek unten herunterladen#include // // Ultranic Pin Configuration #define TRIG_PIN A0#define ECHO_PIN A1 #define MAX_DISTANCE 400#define MAX_SPEED 255#define MAX_SPEED_OFFSET -8 #define COLL_DIST 20#define TURN_DIST COLL_DIST+10#define ACT_TIME 250 int CalibrationTime =30; // die Zeit, in der der Sensor einen niedrigen Impuls ausgibt, unsigned int lowIn; // die Anzahl der Millisekunden, die der Sensor niedrig sein muss // bevor wir davon ausgehen, dass alle Bewegungen gestoppt wurdenlong unsigned int pause =5000; boolesches lockLow =true;boolesches takeLowTime; int pirPin =A3; // der digitale Pin, der mit dem Ausgang des PIR-Sensors verbunden istint ledPin =A2; NewPing Sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE); AF_DCMotor motorR(1, MOTOR12_1KHZ); // Motor #1 einstellen, 1kHz PWMAF_DCMotor motorL (4, MOTOR12_1KHZ); // Motor #2 einstellen, 1kHz PWM Servo Myservo; // Servo-Objekt zur Steuerung eines Servos einstellen String motorSet =""; int curDist =0, pos, speedSet =0; //int pos; //int speedSet =0; Void setup () { Serial.begin (9600); pinMode (pirPin, EINGANG); pinMode (ledPin, AUSGANG); digitalWrite (pirPin, NIEDRIG); // Geben Sie dem Sensor etwas Zeit, um Serial.print zu kalibrieren ("kalibrierender Sensor"); for(int i =0; i pause) { // stellt sicher, dass dieser Codeblock erst wieder ausgeführt wird, nachdem // eine neue Bewegungssequenz erkannt wurde lockLow =true; Serial.print ("Bewegung endete um"); // Ausgabe Serial.print ((millis() - Pause)/1000); Serial.println("sec"); Verzögerung (50); } } } Void checkPath () { Int curLeft =0; int curRight =0; int curFront =0; curDist =0; checkForward(); myservo.write(135); Verzögerung (100); für (pos =135; pos>=45; pos -=45) { myservo.write (pos); Verzögerung (170); curDist =readPing(); if (curDist 90) {veerRight(); aufrechtzuerhalten. aufrechtzuerhalten. Void veerRight () { motorR.run (BACKWARD); motorL.run(FORWARD); Verzögerung(ACT_TIME); motorR.run(FORWARD); motorL.run(FORWARD); motorSet ="FORWARD";} void veerLeft() { motorL.run(BACKWARD); motorR.run(FORWARD); Verzögerung(ACT_TIME); motorL.run(FORWARD); motorR.run(FORWARD); motorSet ="FORWARD";} void checkCourse() { moveBackward(); Verzögerung(ACT_TIME); moveStop(); setCourse();} void setCourse() { if (pos <90) { turnRight(); } if (pos> 90) { turnLeft(); }} Void moveBackward () { motorSet ="BACKWARD"; motorR.run(RÜCKWÄRTS); // Rechten Motor rückwärts drehen motorL.run (BACKWARD); // Linken Motor rückwärts drehen für (speedSet =0; speedSet
Schaltpläne
Dieses Blockdiagramm zeigt die Schnittstelle zwischen den Sensoren und dem Arduino Board
Dieser Schaltplan zeigt die Anschlusskonfigurationen zwischen verschiedenen Sensoren mit dem Arduino Uno Board
Dieses Flussdiagramm zeigt, wie das System funktioniert