远程视频小车

受疫情影响不得不呆在家里,网上看到山东硬核小姐姐用遥控视频小车买馒头,逛大明湖,这真是躺在家里逛世界的赶脚。刚好手头有个机器人小车,就想着改造一下。

一、项目准备

1、树莓派3B+一块
2、arduino小车一个
3、USB摄像头一个
其中arduino小车网上有很多教程可自行搜索。因为小车只是载体,没有太多复杂的功能,只需要一块arduion控制板,一个电机驱动模块,两个电机即可。至于小车外形可更具自己的喜好进行搭建。
以下是我的小车,用的是类似于arduino的成品。
在这里插入图片描述

二、项目原理

整个项目是通过树莓派来实现网络连接控制,然后树莓派和arduino小车进行串口通信,来控制小车的运行。摄像头视频是搭载在树莓派系统上的。
最主要的是如何实现远程网络控制,这里使用的是一个现成的网络机器人平台:https://remo.tv,各种机器人都可以连接到平台上,进行远程操控,也可分享让所有在线用户操控体验,有些类似于机器人直播。
主要控制是基于树莓派实现的,但是也兼容其他各种品牌的机器人,有现成的可以直接使用事例代码,进行修改数据即可,没有匹配的机器人型号,就要根据官方文档自己开发了。
下面是平台机器人列表界面,所有在平台上的机器人,只要在激活状态,都可以操控体验。
在这里插入图片描述

三、树莓派环境配置

因为使用的是开源平台,可以直接使用平台开源代码,可以通过访问https://github.com/remotv/controller,有详细的操作说明。
至于树莓派环境的配置可以查看我前面几篇零基础使用树莓派的文章:
零基础玩转树莓派(二)-操作系统安装及环境配置
零基础玩转树莓派(三)—通过SSH远程连接树莓派
树莓派基本环境配置完成后,就可以把树莓派固定到小车上,通过SSh来远程连接操控。
在这里插入图片描述

四、网络环境配置

接下来会按照官方文档进行简单配置,没有涉及到的部分,可以自行查看文档。

在Raspberry Pi上安装remotv控制脚本

Raspberry Pi将需要安装以下内容,以便可以与您的小车通信并与Internet连接。执行以下步骤时,请确保控制台中没有任何错误。如果遇到问题,可以再次运行此行,通常可以解决该问题!

1、更新软件库

sudo apt update
sudo apt upgrade -y

更新时间较长,请耐心等待,出现下面界面说明更新成功
在这里插入图片描述
继续安装工具

sudo apt install ffmpeg python-serial python-dev libgnutls28-dev espeak python-smbus python-pip git

在这里插入图片描述
2、从github下载remotv控制脚本

git clone https://github.com/remotv/controller.git ~/remotv

在这里插入图片描述
3、安装python需求文档

sudo python -m pip install -r ~/remotv/requirements.txt

在这里插入图片描述
4、打开新remotv目录

cd remotv

在这里插入图片描述
5、复制controller.sample.conf到controller.conf

cp controller.sample.conf controller.conf

在这里插入图片描述

配置控制器

1、编辑在上一节中创建的controller.conf文件。

nano controller.conf

2、配置[robot]部分
配置服务器之前,首先要拿到你的用户名及机器人密钥。
点击进入你的服务器,没有先点击左侧add server添加服务器,进入服务器后点击左侧Add Robot,添加你自己的机器人,以我为例,目前有两个机器人hugRobot和car,点击car就可以看到中间弹出相应的API key就是需要的robot_key。
用户名owner就是右上角名称:runner(自己的)
在这里插入图片描述

  • owner 应该是您在remo.tv网站上注册机器人所使用的用户名。
  • robot_key 是您在网站上制作的机器人的API密钥。您的API密钥很长。它看起来应该像eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InJib3QtNTVjZjJmMjUtNjBhNS00ZDJkLTk5YzMtOGZmOGRiYWU4ZDQ1IiwiaWF0IjoxNTczNTExMDA2LCJzdWIiOiIifQ.LGXSBSyQ4T4X5xU_w3QJD6R3lLjrrkw_QktOIDzRW5U。如果长度不够,则您尚未复制完整密钥。
  • turn_delay仅由motor_hat和使用mdd10。这会改变您的漫游器使用时间。我建议您在机器人移动之后将此值保留为默认值。
  • straight_delay仅由motor_hat和使用mdd10。这会改变您的漫游器使用时间。我建议您在机器人移动之后将此值保留为默认值。
  • type应该是您的机器人电机控制器的硬件类型。当前可用的类型。
    其中上面主要修改的是owner、robot_key、type
    在这里插入图片描述
    因为树莓派与arduino之间通过usb串口通信,所以type选择serial_board在这里插入图片描述
    serial_device改为/dev/ttyUSB0
    然后保存退出即可。

在Raspberry Pi上设置start_robot文件

1、将start_robot脚本复制到您的主目录。

cp ~/remotv/scripts/start_robot ~

2、将启动脚本添加到 crontab

crontab -e

注意:如果您不小心使用了错误的编辑器,请尝试

EDITOR=nano crontab -e

3、在底部插入以下文本

@reboot / bin / bash / home / pi / start_robot

插入后如下

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

@reboot /bin/bash /home/pi/start_robot

4、现在,只需插入相机和USB扬声器,然后重新启动

sudo reboot

5、打开remo.tv,进入你的机器人频道就可以看到机器人摄像头图像了
在这里插入图片描述
6、如果没有成功运行,进入树莓派remotv目录,运行controller.py文档

sudo python controller.py

在这里插入图片描述

五、通讯控制设置

通过上面的操作现在树莓派已经和平台通信成功,接下来就是树莓派与小车通信,然后通过平台发送指令控制小车。

1、平台控制指令编写

进入remo.tv个人机器人界面,我们可以看到视频界面下端有默认的前后左右按钮,我们可以点击edit buttons进行按钮编辑
在这里插入图片描述
编辑时主要记住热键以及通信字符,编辑完成点击上传即可
在这里插入图片描述

2、小车程序

给小车上传一下代码,其中接收的字符,就是前面平台设置对应的通信字符

#define MOTOR_A_PWM_PIN 6
#define MOTOR_A_DIR_PIN 2
#define MOTOR_B_PWM_PIN 5
#define MOTOR_B_DIR_PIN 4
void forward();
void back();
void turnLeft();
void turnRight();
void turnbackLeft();
void turnbackRight();
void turnLeftOrigin();
void turnRightOrigin();
void _stop();
void setup(){
  pinMode(MOTOR_A_DIR_PIN, OUTPUT);
  pinMode(MOTOR_B_DIR_PIN, OUTPUT);
Serial.begin(9600);
}
int i;
void loop()
{ if(Serial.available())
{ i= Serial.read();
  switch(i)
    { case'l':{turnLeft();delay(300);_stop();break;}
    case'f':{ forward();delay(300);_stop();break;}
    case'r':{turnRight();delay(300);_stop();break;}
    case'b':{back();delay(300);_stop();break;}
    }
  }
}
void forward()
{  
  digitalWrite(MOTOR_A_DIR_PIN, HIGH);
  digitalWrite(MOTOR_B_DIR_PIN, HIGH);
  analogWrite(MOTOR_A_PWM_PIN,100);
  analogWrite(MOTOR_B_PWM_PIN,100);
}
void back()
{ 
  digitalWrite(MOTOR_A_DIR_PIN, LOW);
  digitalWrite(MOTOR_B_DIR_PIN, LOW);
  analogWrite(MOTOR_A_PWM_PIN,100);
  analogWrite(MOTOR_B_PWM_PIN,100);
}
void turnLeft()
{   
  digitalWrite(MOTOR_A_DIR_PIN, LOW);
  digitalWrite(MOTOR_B_DIR_PIN, HIGH);
  analogWrite(MOTOR_A_PWM_PIN,100);
  analogWrite(MOTOR_B_PWM_PIN,100);
}
void turnRight()
{   
  digitalWrite(MOTOR_A_DIR_PIN, HIGH);
  digitalWrite(MOTOR_B_DIR_PIN, LOW);
  analogWrite(MOTOR_A_PWM_PIN,100);
  analogWrite(MOTOR_B_PWM_PIN,100);
}
void _stop()
{ 
  digitalWrite(MOTOR_A_DIR_PIN, HIGH);
  digitalWrite(MOTOR_B_DIR_PIN, HIGH);
  analogWrite(MOTOR_A_PWM_PIN,0);
  analogWrite(MOTOR_B_PWM_PIN,0);
}

上传成功后就可以用USB线将arduino与树莓派进行连接,就可以通过小车进行控制了。

六、项目总结

因为功能比较简单,只是实现最基本的视频控制,其他功能也可继续丰富,比如加上麦和喇叭,就可以实现实时互动交流了。
现在树莓派是连接家里的网络,也可以配个移动wifi或者连接手机热点,小车就可以远程出去观世界了,但是谨防粉丝直接把小车抱走。。。。。
更多功能还可自行研究,也可加入群进行交流
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 0
    评论
  • 23
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

手机应用介绍 1)用手机替代网络摄像头,更智能,更省电; 2)支持红外遥控玩具遥控车; (移动功能,需要配套本设计红外遥控小车) 3)人脸跟随;(娱乐功能,需要配套本设计红外遥控小车) 使用方法: 1、安装应用,分别在两部手机上安装; 2、将两部手机连入互联网(WiFi,或4G); 3、把其中一部手机放到红外遥控玩具车上; 4、需要注册appID,两部手机用同一个appID 使用时,先将小车上电。将两部手机连接到互联网,打开我们事先编写好的安卓软件,小车上的手机选择小车模式,另一部手机选择控制模式便可以进行操作了,画面右侧控制小车的运动,左侧则是速度的控制。 目录 一、 创意来源 二、 项目概述 三、 优势 四、 功能 五、 制作材料 六、 详细介绍 七、 参考文献 一、创意来源 当今在安防监控领域,大多数民用监控设备有几大弊端: 位置固定:大多数设备位置固定,不便移动,即使有一些可以摄像头可以转动,但是仍然无法实现对大部分区域的监控,比如一些存在死角的位置就不会被监控(床底,墙角等等),因此小车的可移动性监控有较为突出的优点。应用在家庭监控领域较为合适,尤其是家中无人的时候。 有线传输,电源线:大多数是有线传输,即使有一些是无线传输,但是仍要被束缚在电源线上。而本小车就不同了,可以直接装个充电宝做备用电源 价格昂贵:当今一套完整的监控设备成本较高。而本小车利用了过时淘汰的手机,大大节约了成本,一定程度上控制了废旧手机的污染。基于当今监控设备这些缺点,构造出了基于安卓的视频控制小车。 二、项目概述 本设计是将安卓技术、单片机技术、无线通信技术等相关技术应用到视频监控系统中,可实现视频监控系统的设备移动化,由可移动监控平台、控制软件两部分组成。使用安卓手机作为控制端,通过无线网络对监控平台进行移动方向、速度的控制,平台上的摄像头实时采集视频图像信号并通过无线WiFi网络将视频信号实时传输到手机端观看,然后可实时拍照录像并可实时存储。由于监控端可移动,可以在无人进入的情况下获取危险环境的视频图像。具有控制方便,监控灵活,模块化,可拓展性强等优点,可应用于儿童陪伴机器人、家庭安防、图像采集等领域。 三、优势: 设计之初不完全是为了DIY,我是希望能够做出一款实用便宜易用的产品,所以没有采用常用的DIY开源硬件方案例如arduino,而是选择了价格便宜,应用广泛的STC89C52RC单片机芯片来做控制方案。当然也相信大家能理解我为什么会选择android手机来做智能小车大脑。 1. 我们制作的智能小车抛开性能低下、操作复杂的单片机,使用移动终端作为控制端,利用移动终端(例如手机,电脑,平板)的高性能处理器和低廉的价格,降低了研发成本和研发难度。 2. 通过移动网络或者本地局域网进行连接,可以在任何地方,使用任何设备即可对小车进行远程遥控,对家庭安全进行防护。 3. 与WIFI IP camera对比:1)可以到处跑,因为不需要插着电源线;2)省电,待机长,所以不用担心充电问题。3)监控声音情况。 四、功能: 1)实时视频(android手机摄像头开发) 2)红外遥控车(STC89C52RC ) 3)人脸检测追踪(android手机编程) 下面是 人脸跟随演 和制作过程 的视频: 五、制作材料: 1)控制板包括: STC89C52RC单片机最小系统 红外遥控接收一体化模块VS1838B L293D电机驱动模块 2)小车底盘(淘宝上面有非常多的小车底盘卖,自己任选), 3)马达:TT马达 2个 4)轮子:2个 5)锂电池:2200mAH 两节7.4V + 充电器(可用充电宝代替) 6)杜邦线若干 7) 车载手机支架(有车一族,不用的车载手机支架可以利用) 总共约200左右,如果去掉5)7)剩下的也就100出头 六、详细介绍 0设计文档 资料里的毕设论文只是预览,具体文档请查看这两个链接 [1]:DIY远程视频遥控小车 [2]:DIY远程视频遥控小车(附件:论文) 1相关技术 Android摄像头自定义相机开发、Android人脸检测(FaceDetector)API开发、Android红外遥控开发、Android网络实时音视频传输开发、单片机红外解码及电机控制 。 基于安卓的视频控制小车利用了能发射红外信号的安卓旧手机作为核心,通过WiFi将手机或电脑监控端与车载手机控制端相连接,继而间接实现手机或电脑监控端对小车的控制。 通过手机或电脑端向手机发送指令,然后手机执行指令向小车发射红外信号进行相应控制,并调用车载手机摄像头将小车前方的图像信息回传给手机或电脑监控端。 另外,小车还可以对人脸进行检测跟随,根据人脸在视频中位置,不断调整小车方向直到人脸位于屏幕中心,增强娱乐性。 3相关代码 小车端单片机代码 安卓手机端代码 特别说明:车载手
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值