查看: 291|回复: 1

【嘉年华展示】探险车

[复制链接]
本帖最后由 szjuliet 于 2019-9-29 22:24 编辑

此探险车模拟真实场景,代替人们探索未知环境,进行观测或前往危险环境工作,具有一定的越野能力和自动工作能力。
使用者可以通过控制端(手机或平板)对小车进行操控。
小车本身通过各种传感器采集数据并反馈到控制端,使用者能够通过小车搭载的摄像头远程观察情况。
主控部分由一个树莓派板加Arduino板组合而成,既利用了树莓派处理能力强大的优点,也利用了Arduino功能实现简单的特点。



201909296648.png

作品所含功能
  • 人脸识别(app端)
通过人脸进行注册和登录系统

  • 小车移动(通过app操控)
通过手机app控制车的行走:前进、后退、左转、右转

  • 远程数据传输
app和小车可以通过蓝牙及wifi方式进行通讯并相互传送数据

  • 实时传输图像
能够将当前场景的图像实时传输到手机,也可以通过电脑浏览器观看。摄像头的角度可以通过手机控制

  • 回传当前环境值(温湿度、有害气体、障碍)
能够将当前环境值传送到移动客户端

拟完善功能:
  • 识别当前环境场景及物体名称
  • 能够语音通信

一、项目解构及流程图:
本项目可以解构为三大部分:APP端、车体组装及硬件部分。
工程车解构思维导图.png

1. 小车蓝牙连接流程
201909216027.png
2. 小车登录界面流程
201909215301.png

3. 小车操作界面流程
201909217500.png

4. 人脸识别流程图
201909211063.png

二、车体组装
201909258871.png
小车使用的材料为高强度、低成本、耐高温耐腐蚀的铝镁合金,能有效降低制作成本,以履带方式传动,能够适应多种复杂路况。
小车采用了蓝牙&局域网通信双通信结构。
小车采用arduino主控器获取并传送传感器数据,控制小车及摄像头的方向,使用性能更好的树莓派获取动态图像并将图像传给控制端。
小车采用双电源:9V电池盒和充电宝供电,确保电力充足。
充电宝.png

正面图.png
小车正面安装了Arduino UNO和树莓派。UNO上放置了蓝牙模块HC-06,小车使用蓝牙方式与手机通讯。树莓派连接摄像头,使用wifi方式将实时图像回传手机。

小车前方是超声波传感器,用于侦测前方是否有物体。小车上方是摄像头,连接树莓派;摄像头上的舵机连接UNO,使用蓝牙方式连接手机后,手机控制摄像头的方向。
超声波&摄像头.png

在电池盒的下方有气体传感器和温湿度传感器连接到UNO
气体&温湿度.png

三、Arduino编程(回传环境数据,接收小车、摄像头的控制命令并执行)
[C++] 纯文本查看 复制代码
#include <Servo.h>
#include <dht11.h>
dht11 DHT11;
Servo myservo1;
Servo myservo2;
void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, INPUT);
  pinMode(12, INPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  myservo1.attach(4);
  myservo2.attach(9);
  Serial.begin(9600);
  myservo1.write(85);
  myservo2.write(10);
}
int sd = 200;
int x = 85;
int y = 10;
int wd = 0;
int s = 0;
int qt = 0;
int csb = 0;
void loop() {
  digitalWrite(2, LOW);
  delayMicroseconds(2);
  digitalWrite(2, HIGH);
  delayMicroseconds(10);
  digitalWrite(2, LOW);
  csb = pulseIn(3, HIGH) / 58;
  if (csb > 99)
  csb = 99;
  DHT11.read(12);
  wd = (int)DHT11.temperature;
  s = (int)DHT11.humidity;
  qt = analogRead(0)/10;
  Serial.print("T#");
  Serial.print(wd);
  Serial.print("H#");
  Serial.print(s);
  Serial.print("C#");
  Serial.print(csb);
  Serial.print("G#");
  Serial.println(qt);
  for (int i=0;i<200;i++)
  {
  delay(10);
  char t = Serial.read();
  if (t == '3')
  {
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
    analogWrite(5, sd);
    analogWrite(6, sd);
  }
  if (t == '1')
  {
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    analogWrite(5, sd);
    analogWrite(6, sd);
  }
  if (t == '4')
  {
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);
    analogWrite(5, sd);
    analogWrite(6, sd);
  }
  if (t == '2')
  {
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);
    analogWrite(5, sd);
    analogWrite(6, sd);
  }
  if (t == '6')
  {
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);
    analogWrite(5, 0);
    analogWrite(6, 0);
  }
  if (t == '-')
  {
    sd = sd - 5;
    if (sd < 0)
      sd = 0;
  }
  if (t == '+')
  {
    sd = sd + 5;
    if (sd > 200)
      sd = 200;
  }
  if (t == '9')
  {
    x = x + 5;
    myservo1.write(x);
    delay(200);
    if (x > 180)
      x = 180;
  }
  if (t == '0')
  {
    x = x - 5;
    myservo1.write(x);
    delay(200);
    if (x < 0)
      x = 0;
  }
  if (t == '7')
  {
    y = y + 5;
    myservo2.write(y);
    delay(200);
    if (y > 120)
      y = 120;
  }
  if (t == '8')
  {
    y = y - 5;
    myservo2.write(y);
    delay(200);
    if (y < 0)
      y = 0;
  }
  }
}


四、树莓派图像获取
树莓派使用mjpg-streamer获取USB摄像头图像。
项目工程:https://github.com/jacksonliam/mjpg-streamer

将工程下载后,传送到树莓派系统中解压: unzip mjpg-streamer-master.zip

安装支持库:sudo apt-get install libjpeg8-dev

安装编译工程需要用到cmake:sudo apt-get install cmake

进入工程mjpg-streamer-experimental,进行完全编译:make clean all

进入树莓派设置菜单:sudo raspi-config,启用摄像头“Enable Camera”后重启树莓派。

进入mjpg-streamer-experimental目录,启动普通USB摄像头:./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"

打开浏览器,
查看静态截图:http://<树莓派IP>:8080/?action=snapshot
查看动态图像:http://<树莓派IP>:8080/?action=stream
201909291703.png

参考资料:https://blog.csdn.net/blueslime/article/details/12429411

五、手机端编程
1. 组件设计
  • 登录界面:
201909254176.png

  • 控制界面:
201909257122.png

手机客户端截图:
201909291322.png

2. 逻辑设计:
  • 初始化人脸识别等变量代码块
201909258298.png

  • App初始化
201909252132.png

  • 调用照相机拍摄照片代码块
201909257522.png


  • 添加人脸代码块
201909254177.png

  • 人脸识别代码块
201909253064.png
201909258002.png
登录成功后,手机屏幕呈现登录者照片

  • 过程【未检测到人脸】
201909258336.png

  • 控制蓝牙的代码块
201909256078.png

  • 控制摄像头云台转动的代码块
201909259362.png

  • App登录界面的按钮操作的代码块
201909254808.png

  • 控制小车行走的代码块
201909251263.png

  • 改变小车速度的代码块
201909252514.png

  • 每1500毫秒接收一次小车的传感器回传值
201909253458.png

  • 获得树莓派IP地址后将图像显示到手机上
201909256041.png



201909255432.png

rzyzzxw  版主

发表于 2019-9-30 08:07:31

我的榜样。高技术含量。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail