Робототехническая система для обнаружения человека с использованием Arduino Uno
Компоненты и расходные материалы
| | × | 1 | |
| Совет по развитию, щит управления двигателем | | × | 1 | |
| Микро-серводвигатель SG90 | | × | 1 | |
| Двигатель постоянного тока, 12 В | | × | 4 | |
| Ультразвуковой датчик - HC-SR04 (общий) | | × | 1 | |
| Датчик температуры и влажности DHT11 (4 контакта) | | × | 1 | |
| Батарея 9 В (стандартная) | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
Приложения и онлайн-сервисы
| | |
| | |
| Приложение Control Center для Android | | |
Об этом проекте
Эта система разрабатывает мобильную систему спасательных роботов на базе Arduino, чтобы вовремя помогать людям, оказавшимся в ловушке стихийных бедствий, таких как стихийные бедствия, землетрясения, наводнения и т. Д., Это дает своевременное и точное отражение динамической ситуации человека в регионе стихийного бедствия, например, в подземных регионах. в диспетчерскую, чтобы команда спасателей из экспертов и врачей могла быть отправлена на место жертвы для первичного лечения и может быть отправлена в безопасное место или в больницу. Весь процесс занимает несколько секунд, так как система управляется блоком Arduino. Датчики PIR - это пассивные инфракрасные датчики, которые обнаруживают движение людей с помощью изменений уровня инфракрасного излучения (тепла), излучаемого окружающими объектами. Человеческое тело излучает тепловое излучение с длиной волны около 10 микрон. Он принимается и обрабатывается датчиком PIR для обнаружения людей. Он работает при 5 В постоянного тока. Движение человека можно обнаружить, проверив внезапные изменения в окружающих ИК-образцах. Датчик препятствий обнаруживает препятствие и отправляет аналоговые сигналы на Arduino. Arduino запрограммирован на автоматическое управление роботом в зависимости от обнаруженного препятствия и отправку информации о человеке на место дистанционного управления через технологию Bluetooth. Данные принимаются на Базовую станцию (Центр управления). Анализируя данные, команда Спасателей может предпринять необходимые шаги для спасения пойманных в ловушку людей.
Код
Обнаружение человека.ino Arduino
#include // #include // Вы можете загрузить библиотеку кода ниже # include // // Конфигурация выводов Ultranic #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; // время, когда датчик выдает низкий импульс long unsigned int lowIn; // количество миллисекунд, в течение которого датчик должен быть низким // прежде, чем мы предположим, что все движение остановилось long unsigned int pause =5000; логическое lockLow =true; логическое takeLowTime; int pirPin =A3; // цифровой вывод, подключенный к выходу датчика PIR int ledPin =A2; NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE); AF_DCMotor motorR (1, MOTOR12_1KHZ); // Устанавливаем двигатель №1, 1 кГц PWMAF_DCMotor motorL (4, MOTOR12_1KHZ); // Устанавливаем двигатель №2, 1kHz PWM Servo myservo; // Устанавливаем сервообъект для управления сервоприводом String motorSet =""; int curDist =0, pos, speedSet =0; // int pos; // int speedSet =0; void setup () {Serial.begin (9600); pinMode (pirPin, ВХОД); pinMode (ledPin, ВЫХОД); digitalWrite (pirPin, LOW); // даем датчику время для калибровки Serial.print ("калибровка датчика"); for (int я =0; я <Время калибровки; я ++) {Serial.print ("."); задержка (1000); } Serial.println ("готово"); Serial.println («ДАТЧИК АКТИВЕН»); задержка (50); myservo.attach (9); // Устанавливаем прикрепление сервопривода к выводу 9 myservo.write (90); // Записываем 90 в сторону задержки прямого сервопривода (2000); motorSet ="ВПЕРЕД"; двигаться вперед(); } void loop () {checkPath (); если (digitalRead (pirPin) ==HIGH) {digitalWrite (ledPin, HIGH); // светодиод визуализирует состояние выходного контакта датчика if (lockLow) {// гарантирует, что мы дождемся перехода в LOW, прежде чем будут сделаны какие-либо дальнейшие выходные данные:lockLow =false; Serial.println ("---"); Serial.print («движение обнаружено в»); Serial.print (миллис () / 1000); Serial.println ("сек"); задержка (50); } takeLowTime =true; } если (digitalRead (pirPin) ==LOW) {digitalWrite (ledPin, LOW); // светодиод визуализирует состояние выходного контакта датчика if (takeLowTime) {lowIn =millis (); // сохраняем время перехода с высокого на LOW takeLowTime =false; // убедитесь, что это выполняется только в начале фазы LOW} // если датчик находится в низком состоянии дольше заданной паузы, // мы предполагаем, что движения больше не произойдет if (! lockLow &&millis () - lowIn> pause) {// гарантирует, что этот блок кода выполняется снова только после // обнаружения новой последовательности движения lockLow =true; Serial.print («движение закончилось в»); // вывод Serial.print ((millis () - pause) / 1000); Serial.println ("сек"); задержка (50); }}} void checkPath () {int curLeft =0; int curRight =0; int curFront =0; curDist =0; checkForward (); myservo.write (135); задержка (100); для (pos =135; pos> =45; pos - =45) {myservo.write (pos); задержка (170); curDist =readPing (); если (curDist 90) {veerRight (); }} void veerRight () {motorR.run (НАЗАД); motorL.run (ВПЕРЕД); задержка (ACT_TIME); motorR.run (ВПЕРЕД); motorL.run (ВПЕРЕД); motorSet ="FORWARD";} void veerLeft () {motorL.run (BACKWARD); motorR.run (ВПЕРЕД); задержка (ACT_TIME); motorL.run (ВПЕРЕД); motorR.run (ВПЕРЕД); motorSet ="FORWARD";} void checkCourse () {moveBackward (); задержка (ACT_TIME); moveStop (); setCourse ();} void setCourse () {если (pos <90) {turnRight (); } если (pos> 90) {turnLeft (); }} void moveBackward () {motorSet ="НАЗАД"; motorR.run (НАЗАД); // Повернуть правый мотор назад motorL.run (BACKWARD); // Повернуть левый двигатель назад на (speedSet =0; speedSet
Схема
Эта блок-схема показывает интерфейс между датчиками и платой Arduino. На этой принципиальной схеме показаны конфигурации подключения между различными датчиками с платой Arduino Uno. Эта блок-схема показывает, как работает система