使用 Arduino Uno 的人体检测机器人系统
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
| ||||
| ||||
| ||||
| ||||
|
应用和在线服务
| ||||
| ||||
|
关于这个项目
本系统设计了一个基于Arduino的移动救援机器人车载系统,及时帮助被困在灾害、地震、洪水等自然灾害中的人们,及时准确地反映地下等灾区人员的动态情况到控制室,以便专家和医生救援队可以送到受害者所在地进行初步治疗,并可以送到安全的地方或医院。整个过程在几秒钟内发生,因为系统由 Arduino 单元控制。 PIR 传感器是被动红外传感器,它借助周围物体发出的红外(热量)水平的变化来检测人的运动。人体发出波长约为 10 微米的热辐射。它由 PIR 传感器接收和操纵以检测人类。它在 5V DC 下运行。可以通过检查周围 IR 模式的突然变化来检测人的运动。障碍物传感器检测障碍物并将模拟信号发送到 Arduino。 Arduino被编程为根据检测到的障碍物自动引导机器人,并通过蓝牙技术将人体信息发送到远程控制位置。数据在基站(控制中心)中接收。救援队分析数据后,可以采取必要措施营救被困人员。
代码
- 人体检测.ino
人体检测.inoArduino
#include// #include // 可以下载下面的代码库#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 intcalibrationTime =30; //传感器输出低脉冲的时间long unsigned int lowIn; //在我们假设所有运动已经停止之前,传感器必须处于低位的毫秒数 unsigned int pause =5000; boolean lockLow =true;boolean takeLowTime; int pirPin =A3; //连接到被动红外传感器输出的数字引脚int ledPin =A2;NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); AF_DCMotor motorR(1, MOTOR12_1KHZ); // 设置电机 #1, 1kHz PWMAF_DCMotor motorL(4, MOTOR12_1KHZ); // 设置电机 #2, 1kHz PWM Servo myservo; // 设置伺服对象来控制伺服 String motorSet =""; int curDist =0, pos, speedSet =0;//int pos;//int speedSet =0;无效设置(){ Serial.begin(9600); pinMode(pirPin,输入); pinMode(ledPin,输出);数字写入(pirPin,低); //给传感器一些时间来校准 Serial.print("calibrating sensor "); for(int i =0; i pause){ //确保仅在检测到新的运动序列后才再次执行此代码块 lockLow =true; Serial.print("动作结束于"); //输出Serial.print((millis() - pause)/1000); Serial.println("秒");延迟(50); } } } void checkPath() { int curLeft =0; int curRight =0;内部当前 =0; CurDist =0; checkForward(); myservo.write(135);延迟(100); for (pos =135; pos>=45; pos -=45) { myservo.write(pos);延迟(170); curDist =readPing(); if (curDist 90) { veerRight(); } } void veerRight() { motorR.run(BACKWARD); 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);移动停止(); setCourse();} void setCourse() { if (pos <90) { turnRight(); } if (pos> 90) { turnLeft(); }} void moveBackward() { motorSet ="BACKWARD"; motorR.run(向后); // 向右转电机向后 motorL.run(BACKWARD); // 向后转动左电机 for (speedSet =0; speedSet
示意图
此框图显示了传感器和 Arduino 板之间的接口 此电路图展示了各种Sensor与Arduino Uno Board的连接配置 这个流程图展示了系统是如何工作的制造工艺
- 使用 KINECT 和 RASPBERRY PI 的 SONBI 机器人人体检测
- Squid Games Doll 使用 Arduino UNO
- 使用 Firebase 将传感器数据从一个 Arduino 发送到另一个
- 使用 Arduino 和 RFID 和 Python 的考勤系统
- 使用 Arduino DIY 红外线心跳传感器
- 使用 Raspberry Motor Shield 的 Android 控制玩具
- IOT - 使用 ESP8266、Arduino 和超声波传感器的智能罐
- WebServerBlink 使用 Arduino Uno WiFi
- 森林火灾监测和探测系统(带短信警报)
- 使用 MAX30100 可穿戴脉搏传感器和 Arduino
- 使用 YL-39 + YL-69 土壤湿度传感器和 Arduino
- 如何使用 PHP 创建一个与 Arduino 通信的网站