pokebox 发表于 2014-9-19 21:49:47

用树莓派+积木制作的wifi小车

嗯……这个月初才买的树莓派B+,到手后最先弄的就是相机~因为当时我是和摄像头模块一起买的,同时买了亚克力的外壳,但是那外壳太不给力太脆了,后来我就用以前小学时玩的启蒙积木【目测就是国内仿乐高积木了……】搭了个外壳~

然后为了加个屏幕,就参考了国外某高人的教程【百度贴吧也有一个教程可供参考】,用GPIO自己连接了之前买来给单片机用的屏幕。后来那块屏幕不知是怎么的就坏掉了……然后实在没办法只好用手头上那块带屏幕的STM32F429的开发板来用了。反正那开发板我也不会用……目前能力只会8位单片机……
然后各种拼凑连接后就是酱紫……

摄像头放前面,然后开发板架在上面……

嗯……这就是个树莓派相机了……程序用的是那个python的相机程序,因为触屏这个开发板的触屏模块不知要怎么驱动所以就没法用触屏……但没法用触屏拍不了照……最后是用IO模拟鼠标按键做了个拍照键【见后面的图】……

然后在后来的几天心血来潮,既然都已经有摄像头了,就直接弄个wifi小车好了~
材料继续现成的积木


两个车轮是我去全国赛的一个套件里的轮子,驱动性不是很好……将就着用了
万向轮表示图里的这个实际上我实测并不满意……后来我直接不要轮子换成了柱状的支柱

电机,接口我用排针焊好了,方便拆卸,以及和板子的连接我也没有完全粘在上面,而是用一块板子粘好在底板做固定座【图里可以看到这个大的板子背面是没有可以直接用于连接的孔的……所以要粘一块小板子上去方便连接】
然后电机我就直接用自攻螺丝钉拧在另一块板子上,然后两个部分直接插上去就可以了,这样方便维护。

这个是最初的万向轮设计……但毕竟是塑料,几乎转不起来……

然后这是底板和树莓派“相机”连接,搭成了一个小车……最底下一层放移动电源,上面架树莓派相机
侧面……
正面,可以看到摄像头模块,然后注意到没,下面的万向轮我又换成了另一个,这个是有塑胶的轮子,转动部分用了个小的没负载的情况下转动也很灵活的,但是还是很不满意……
左边,下面白色那里就是放电机驱动模块的地方,用GPIO和树莓派连接,但是这里出现了很多问题……嗯,等下再说

俯视图……显得体积略大

开机,上面的屏幕板子是F429开发板,可以看到这个和最初第一张图的树莓派相机有所不同,因为我增加了模拟鼠标……那个黑色的按键就是模拟鼠标左键,用来拍照的,旁边的那个有4个小按钮的就是模拟鼠标上下移动的……用来进行选择。
这里在弄的时候出现了个问题,就是上方向键我连接GPIO5貌似很容易会出现漂移的现象,而且不知道为什么我开机的时候设置为下拉和输入模式了,关掉相机功能进入GUI界面后又变成了OUT模式,……怎么弄都不行,后来我是换了另一个IO就没问题了……

嗯……移动电源,然后树莓派的主机指示灯我是用了个透明的积木做的~

这是摄像头模块……两边是1W的红外灯,摄像头是红外夜视的……
用红外夜视的摄像头拍风景的话……嗯……你会发现树叶都是红色的……好蛋疼……
来两张相机功能下的拍照图……

单车棚那是我们学校,绿树成荫,结果拍出来……一股秋的颜色……其实也挺有意思的……


然后……这多加了块电池……为什么呢……嗯……
因为之前用移动电源给树莓派供电的同时我也直接用杜邦线连接了5V给电机驱动……
后来估计是因为反峰,前进后退走了2步后移动电源直接就断掉了……估计是被软击穿了……
所以我才用一块锂电专门给电机供电……其实也是挺蛋疼的……这里还有问题,慢慢来说~
电池……

这里就是电机驱动模块的部分【话说注意树莓派的电源指示灯红色不亮了……只有绿色的工作状态指示灯……不知道是因为电流不够还是咋的……】……
然后……先走了几步……嗯……

左边是VLC连接树莓派进行实时图像传输,右边是操作控制台……
走到客厅……这是晚上完全无光的情况下拍的,开了2个红外灯,不过是开到最低的,如果开到最高移动电源估计就因为那反峰软击穿导致电流不够了……【其实我怀疑树莓派自身也遭到了很大的冲击……这很危险……注意不要像我最初那样直接从树莓派取电给带磁的器件,不然一旦释放那反峰冲击很危险的……】
更何况……还导致了下面的情况……

我限流电阻都没加,最后走了大概10分钟,这驱动点点taptap安卓就直接发烫烧掉了……
用来固定的积木也被烫熔了……【这还没有直接接触点点taptap安卓……有大概2mm的距离……都已经成这样了……】
所以,安全的做法应该是所有的控制输出用1N4148保护防止反峰对树莓派的冲击,然后接1K电阻限流,再到驱动点点taptap安卓,并且电机用单独电源供电,不应直接从树莓派上取电!

所以最后……我是裁了一块电路板来做驱动模块

用4个1N4148单向输出控制,然后限流电阻,最后是驱动点点taptap安卓。用了4个IO进行控制,可以前后左右左转右转的操作。
万向轮最后是用了这样的固定结构……

由于之前写的控制脚本转向是单轮驱动转向的,就是一个轮子动一个不动进行转向,但发现这样阻力很大,所以最后是改成了双轮一正一反驱动进行转向,这样转起来就轻松很多了。
控制脚本我是用bash写的,python表示不会……
下面直接贴出代码好了,需要的话就拿去吧~
注意这个脚本需要安装gpio和VLC,VLC可以自己apt-get安装,
GPIO的话参照这里安装:http://wiringpi.com/download-and-install/#!/bin/bash
gpio -g mode 2 out
gpio -g mode 3 out
gpio -g mode 2 up
gpio -g mode 3 up
gpio -g mode 23 out
gpio -g mode 24 out
gpio -g mode 23 up
gpio -g mode 24 up

sudo killall -9 python raspivid cvlc newgpio.sh &> /dev/null

runup(){
        gpio -g write 2 1
        gpio -g write 3 0
        gpio -g write 23 1
        gpio -g write 24 0
}
rundown(){
      gpio -g write 2 0
      gpio -g write 3 1
      gpio -g write 23 0
      gpio -g write 24 1
}
runle(){
      gpio -g write 2 1
      gpio -g write 3 1
      gpio -g write 23 1
      gpio -g write 24 0
}
runright(){
      gpio -g write 2 1
      gpio -g write 3 0
      gpio -g write 23 1
      gpio -g write 24 1
}
runstop(){
        gpio -g write 2 1
      gpio -g write 3 1
      gpio -g write 23 1
      gpio -g write 24 1
}
startvlc(){
        su pi
        raspivid -o - -t 0 -w 640 -h 360 -fps 30|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
}
stopvlc(){
        sudo killall -9 raspivid cvlc &> /dev/null
}
runquit(){
        sudo runstop
      #gpio -g write 2 0
      #gpio -g write 3 0
      #gpio -g write 23 0
      #gpio -g write 24 0
        sudo stopvlc
}

echo -e "\e[33;1mGO!\e[0m"
while [ "$quit" != "q" ]
do
        read -sn 1 -p "Key:" quit
        case $quit in
        w) runup ;;
        s) rundown ;;
        a) runle ;;
        d) runright ;;
        " " | e | t) runstop ;;
        o) startvlc & ;;
        f) stopvlc ;;
        *) echo -e "\e go, stop, open vlc, stop vlc,quit"
        esac
done
runquit
exit 0

ky123 发表于 2018-3-2 10:13:37

pokebox 发表于 2014-9-19 22:06 static/image/common/back.gif
审核那么久……

你再发,这次肯定不久

enenge 发表于 2016-8-7 21:29:48

顶一个看看               

仰头45℃暴笑 发表于 2016-7-30 09:53:39

挖坟中。:lol

党国特派员 发表于 2015-8-27 15:02:46

好像很强大的样子

wambob 发表于 2015-8-19 16:22:34

很厉害,有没有销车跑的视频

EEboardMM 发表于 2015-8-13 14:29:20

感谢分享,有机会添加个QQ呗2716493599:loveliness:

sky-Hawk where 发表于 2015-8-13 00:06:31

等待工作的银 发表于 2015-1-4 11:31 static/image/common/back.gif
你好我想问下你的小车能倒退么。。。 我用webiopi库做的不能倒退

倒退光靠库文件是不行的,再说这实际上和用什么库没多大关系。主要看电机驱动。我是用4个GPIO来改变高低电平控制驱动点点taptap安卓输出正负极的,要倒退还得看你电路支不支持。

sky-Hawk where 发表于 2015-8-13 00:04:42

等待工作的银 发表于 2015-1-4 11:47 static/image/common/back.gif
还有楼主你用VLC拍视频是否有延迟 我也是用的vlc外网访问延迟10秒 内网也要5秒以上 无法实时控制小车 ...

内网看wifi信号强度,信号好的延迟不超过2秒,信号不好延迟20多秒都是有可能的。外网想实时控制就很难了,有个10多秒的延迟都是正常的

sky-Hawk where 发表于 2015-8-10 10:59:56

楼主真乃神人也!
页: [1] 2 3 4
查看完整版本: 用树莓派+积木制作的wifi小车

Baidu
map