DIY及创意
直播中

atemphot

9年用户 8经验值
擅长:嵌入式技术
私信 关注
[创意DIY]

开源DIY,Arduino+旧手机变成视频监控机器人,可异地远程遥控

` 本帖最后由 atemphot 于 2015-11-23 11:49 编辑

本人花费大量时间,用Arduino+旧手机 做了一个视频监控机器人,DIY成果分享一下。
说明,项目程序和源代码都开放,3D打印部件的 3DSTL文件和设计源文件也开放,欢迎大家使用!


机器人演示视频:
[media]http://player.youku.com/player.php/sid/XMTM3NjQ3MTc5Mg==/v.swf[/media]


wl_rob_show.jpg

wl_rob_show2.jpg


这个机器人的原材料很简单:卡通外形的纸巾盒,车用手机夹,轮子电机,1寸万向轮,然后3D打印件
卡通纸巾盒.jpg 万能手机夹.jpg 65mm轮子加电机.jpg





网灵机器人是特殊的,Ta跟常见的wifi-robot不同。常见的wifi-robot大多采用OpenWRT路由器板子和USB摄像头,而网灵机器人采用闲置的安卓旧手机作为机器人的大脑。
这不仅是废物利用的环保理念,而且通过充分利用安卓手机的强大计算能力和硬件资源,让网灵机器人的功能更加有亮点:
1)无需外接USB摄像头,直接利用安卓手机的高清摄像头,并通过手机强劲的GPU进行视频H.264压缩编码,以便网络传输。
2)利用安卓手机的联网能力,wifi、3G、4G都可以联网。并且集成了网灵的P2P云连接功能,从世界任何地方都可以连接机器人。
3)利用手机计算能力,实现语音识别,用自然语音控制机器人动作。
4)利用手机计算能力,基于OpenCV软件库,实现手势分析和人脸追踪。

除了作为大脑的安卓手机外,网灵机器人还采用了Arduino单片机,用于控制电机舵机和连接传感器模块。

Arduino.jpg


作为大脑的安卓手机 与 Arduino单片机是通过蓝牙串口(例如市面上常见的HC-06)进行通信的,其通信协议很简单,是基于字符串格式的,Arduino向安卓手机周期性发送传感器读数,安卓手机向Arduino发送控制命令。
蓝牙串口HC-06.jpg


网灵机器人的显著特点是:可以用手机控制端和电脑控制端从异地远程遥控机器人,并实时观看摄像头图像。这个功能的实现是基于网灵的P2P云连接平台,这是网灵多年来积累的底层核心技术。只要机器人接入网络,就可以从世界上的任何角落连接到机器人,无需设置路由器端口,无需做动态域名映射,完全自动穿透NAT内网。
网灵机器人的控制端软件就是 网灵云控制, 它相当于一个“带视频回传的远程遥控手柄”,有一些手柄按键和2个虚拟摇杆,其UI界面是这样的:
UI-1.png


UI-2.png



终上所述,网灵机器人的总体框架原理图是这样的:


总体原理图.jpg



Arduino源代码:
wl_rob_arduino_src.zip (6.4 KB)
(下载次数: 319, 2015-11-9 17:17 上传)



3D打印的STL文件集合:
all_stl.rar (1.04 MB)
(下载次数: 247, 2015-11-9 17:17 上传)



安卓大脑源代码比较大,超过附件大小限制,可以从网灵极客william hill官网 下载。
支持我的网友,可以回复留邮箱,我直接发给你!!!



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


机器人Arduino周边威廉希尔官方网站 连接就很容易。准备一些3Pin杜邦线和导电线,按照下面的威廉希尔官方网站 图连接相应的威廉希尔官方网站 模块:



威廉希尔官方网站
连接.jpg


可以看出,Arduino控制板的供电是由L298N电机控制板的5V输出的。
电压检测模块连接到Arduino的模拟口A5;头部舵机连接到Arduino的数字口D9;
你后续也可以扩展连接更多的传感器,比如:
气体传感器MQ2连接到模拟口A4,温湿度传感器连接到数字口D8,
这些都是在Arduino的程序代码中预定义好的,需要跟代码对应:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include
#include

//模拟IO口和数字IO口的定义

#define PIN_UNDEFINED  255

#define PIN_A_VOLTAGE  5  //电池电压传感器
#define PIN_A_MQX      4  //气体传感器,MQ2,MQ135

#define PIN_D_SERVO_V  9
#define PIN_D_SERVO_H  PIN_UNDEFINED
#define PIN_D_SERVO_L  5  //PIN_UNDEFINED
#define PIN_D_SERVO_R  6  //PIN_UNDEFINED
#define PIN_D_DHT      8  //PIN_UNDEFINED  //DHT11温湿度传感器
#define PIN_D_RELAY    PIN_UNDEFINED  //一路继电器
#define PIN_D_RED      PIN_UNDEFINED  //红外人体感应传感器
#define PIN_D_LEDA     PIN_UNDEFINED  //LED指示灯A
#define PIN_D_LEDB     PIN_UNDEFINED  //LED指示灯B

//PT2272 Recv,D0->D3用模拟IO口实现,因为Arduino UNO的数字IO口不够用
#define PIN_D_2272VT   4
#define PIN_A_2272D0   0
#define PIN_A_2272D1   1
#define PIN_A_2272D2   2
#define PIN_A_2272D3   3

//315M、433M RF Send,控制智能开关、智能插座、电动窗帘。。。
#define PIN_D_315SEND   7  //PIN_UNDEFINED
#define PIN_D_433SEND   PIN_UNDEFINED

//左中右三个方向的壁障传感器pin定义
#define PIN_D_BIZ_C     PIN_UNDEFINED
#define PIN_D_BIZ_L     PIN_UNDEFINED
#define PIN_D_BIZ_R     PIN_UNDEFINED

//L298N电机驱动板的控制pin
//舵机用了9号PWM,L298N用10,11号PWM的话,会导致10号PWM失效!!!
// motor A
#define dir1PinA    2
#define dir2PinA    10
#define speedPinA   3
// motor B
#define dir1PinB    12
#define dir2PinB    13
#define speedPinB   11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

这个仅仅是个抛砖引玉的作业,开放源代码,各位网友可以自己改进拓展!!!




` 一寸万向轮.jpg
已退回1积分

回帖(25)

海海白

2015-11-14 22:17:37
好厉害~
举报

2015-11-21 20:24:39
其实有点像qq视频,但是被远程控制了,可以随意移动,可以人脸,声音识别
举报

atemphot

2015-11-23 11:47:16

h1654155216.0542

2016-1-11 14:28:32
楼主给我分享一份安卓大脑源代码,就是怎么用一个手机控制另一个手机做出动作,xujin8125@126.com,谢谢啦
举报

更多回帖

发帖
×
20
完善资料,
赚取积分