V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cr4fun
V2EX  ›  分享创造

使用 orange pi 和 usb 摄像头,做了一个遥控小车

  •  
  •   cr4fun · 2019-03-17 21:16:40 +08:00 · 2717 次点击
    这是一个创建于 2079 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个使用 orange pi zero 来驱动的带摄像头的小车

    目前还没有使用 AI,所以现在仅仅是一个遥控小车,而不是智能小车。这个小车的名字叫 monkey。

    它是这样的:

    车子的前后左右,是通过车轮控制的。这个小车一共有 3 个轮子,2 个马达。马达的转动,靠一个硬件驱动模块来实现。输入 5v 电压,4 个高电平触发,可以让 2 个马达呈现各种转动状态。

    orange pi zero 左侧有 26 个 pin,右侧的不知道有什么用,没有找到资料,不知道右侧具体的 pin 都是什么。但是左侧的是这样的:

    在这个例子里,使用第 15、19、21、23 号 pin。pin 的名称分别是 pa3、pa15、pa16 和 pa14。

    但是在控制 gpio 的时候,算法如下:

    (P 后面的字母在字母表(26)中的位置 - 1) * 32 + 后面的数字

    PA3 = (1-1)*32+3 = 3
    
    PA15 =(1-1)*32+15 = 15
    
    PA16 = (1-1)*32+16 = 16
    
    PA14 = (1-1)*32+14 = 14
    

    最终,需要在 shell 里写 3、15、16 和 14。

    操作 gpio 的 shell 代码如下:

    #!/bin/bash
    if [ ! -d /sys/class/gpio/gpio$1 ] ;then
      echo $1 > /sys/class/gpio/export
    fi
    echo out > /sys/class/gpio/gpio$1/direction
    echo $2 > /sys/class/gpio/gpio$1/value
    

    现在,gpio 的问题解决了,即可通过 ssh 登陆,输入命令实现对小车的控制。

    为了方便使用 wifi 控制,可以在 orange pi 上面安装热点。

    我的 orange pi zero 安装的是 dietpi 系统。但写这篇文档时,再去 dietpi 官网,发现已经不支持 orange pi 了。

    但是 armbian 是支持这一款的。传送门直接下载: https://dl.armbian.com/orangepizero/Ubuntu_bionic_next.7z

    开启 wifi 热点后,默认 ip 是 192.168.42.1。因此可以在手机连接热点,通过该 ip 进行访问。

    由于该小车上面插了一个 usb 的摄像头。因此需要安装 motion 来做视频采集。

    为了加快速度,可设置国内源:

    nano /etc/apt/sources.list
    

    设置为:

    deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib
    deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib
    

    安装 motion

    apt install motion
    

    修改 2 处配置:

    sudo nano /etc/default/motion
    

    改成

    start_motion_daemon = yes
    
    sudo nano /etc/motion/motion.conf
    

    改成

    stream_localhost off
    

    现在,通过 192.168.42.1 可以看到视频了。

    这时需要写一个网站,通过调用 api 的方式,实现前后左右等动作。而不是每次 ssh 进去输入命令控制小车。

    安装 npm

    apt install npm
    

    安装 n 模块

    npm install n -g
    

    安装稳定版 node

    n stable
    

    这个时候,使用 express 写一个简单的网站。我已经写好了,可以直接 clone 进来。

    在 root 用户下面 clone 项目:

    git clone https://github.com/how-to-make-a-robot/monkey.git
    
    cd monkey
    npm install
    

    设置启动项

    nano /etc/rc.local
    

    增加如下一行

    su root -c "bash /root/monkey/start.sh"
    

    然后重启好了:

    reboot
    

    重启后,连接 orangepi 的热点,输入 192.168.42.1:3000,即可体验了。

    不足之处:

    1 这次演示,故意让每一个动作都只执行很短的时间。要不然一开动,就奔出去好几米。

    所以改进的方式,是增加一个减速齿轮。但目前没有。

    2 摄像头延时现象严重。小车转弯后,画面停顿一两秒才传过来。而手机和小车距离还不超过 1 尺。

    3 电池不给力。我用的是 18650 电池。充好电后,只能玩 20 分钟。是不是 orange pi 太费电了?

    如果你对小车感兴趣,可以联系我,我们一起做人工智能的遥控车

    我的微信是:cr4fun

    源码在这里: https://github.com/how-to-make-a-robot/monkey

    10 条回复    2019-03-18 11:57:57 +08:00
    sjqlwy
        1
    sjqlwy  
       2019-03-17 21:33:40 +08:00
    支持一下
    fox0001
        2
    fox0001  
       2019-03-17 21:42:34 +08:00
    摄像头装舵机?
    fox0001
        3
    fox0001  
       2019-03-17 21:43:10 +08:00
    不好意思,重发。摄像头不装舵机?
    Trumeet
        4
    Trumeet  
       2019-03-18 06:33:59 +08:00 via Android
    视频采集到 Web 是怎么实现的?
    iridescent0rsy
        5
    iridescent0rsy  
       2019-03-18 08:04:43 +08:00 via Android
    减速的话,可以用 PWM 波输出控制电机
    cr4fun
        6
    cr4fun  
    OP
       2019-03-18 10:08:58 +08:00
    就一个 18650 电池,装太费电了。。。
    cr4fun
        7
    cr4fun  
    OP
       2019-03-18 10:10:07 +08:00
    @Trumeet orange pi 运行 motion,通过 8081 端口产生一个视频流。web 端只要设置 src 为 192.168.42.1:8081 就可以看到视频了。
    cr4fun
        8
    cr4fun  
    OP
       2019-03-18 10:10:34 +08:00
    @iridescent0rsy 好的,我试一试。
    Trumeet
        9
    Trumeet  
       2019-03-18 10:29:57 +08:00 via Android
    @cr4fun 噢噢这样的(
    wget
        10
    wget  
       2019-03-18 11:57:57 +08:00
    monitor 在板子上会比较卡,试试 MJPG-streamer
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   900 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.