szjuliet 发表于 2019-9-29 22:24:10

【嘉年华展示】探险车

本帖最后由 szjuliet 于 2019-9-29 22:24 编辑

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

https://v.qq.com/x/page/z0929zaop6l.html



作品所含功能

[*]人脸识别(app端)
通过人脸进行注册和登录系统


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


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


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


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

拟完善功能:

[*]识别当前环境场景及物体名称
[*]能够语音通信

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


1. 小车蓝牙连接流程

2. 小车登录界面流程


3. 小车操作界面流程


4. 人脸识别流程图


二、车体组装

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



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

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


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


三、Arduino编程(回传环境数据,接收小车、摄像头的控制命令并执行)
#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


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

五、手机端编程
1. 组件设计
[*]登录界面:



[*]控制界面:


手机客户端截图:


2. 逻辑设计:

[*]初始化人脸识别等变量代码块



[*]App初始化



[*]调用照相机拍摄照片代码块




[*]添加人脸代码块



[*]人脸识别代码块


登录成功后,手机屏幕呈现登录者照片


[*]过程【未检测到人脸】



[*]控制蓝牙的代码块



[*]控制摄像头云台转动的代码块



[*]App登录界面的按钮操作的代码块



[*]控制小车行走的代码块



[*]改变小车速度的代码块



[*]每1500毫秒接收一次小车的传感器回传值



[*]获得树莓派IP地址后将图像显示到手机上




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

我的榜样。高技术含量。{:5_190:}

luyi 发表于 2020-2-5 23:32:32

学习学习学习
页: [1]
查看完整版本: 【嘉年华展示】探险车