TA的每日心情 | 开心 2019-6-25 09:54 |
---|
签到天数: 216 天 连续签到: 1 天 [LV.7]常住居民III
|
话说第一次发的帖子一直在审核……好蛋疼……是发不出还是肿么了……表示如果重贴了版主就删掉好了……
嗯……这个月初才买的树莓派B+,到手后最先弄的就是相机~因为当时我是和摄像头模块一起买的,同时买了亚克力的外壳,但是那外壳太不给力太脆了,后来我就用以前小学时玩的启蒙积木【目测就是国内仿乐高积木了……】搭了个外壳~
然后为了加个屏幕,就参考了国外某高人的教程【百度贴吧也有一个教程可供参考】,用GPIO自己连接了之前买来给单片机用的屏幕。后来那块屏幕不知是怎么的就坏掉了……然后实在没办法只好用手头上那块带屏幕的STM32F429的开发板来用了。反正那开发板我也不会用……目前能力只会8位单片机……
然后各种拼凑连接后就是酱紫……
摄像头放前面,然后开发板架在上面……
嗯……这就是个树莓派相机了……程序用的是那个python的相机程序,因为触屏这个开发板的触屏模块不知要怎么驱动所以就没法用触屏……但没法用触屏拍不了照……最后是用IO模拟鼠标按键做了个拍照键【见后面的图】……
然后在后来的几天心血来潮,既然都已经有摄像头了,就直接弄个wifi小车好了~
材料继续现成的积木
两个车轮是我去全国赛的一个套件里的轮子,驱动性不是很好……将就着用了
万向轮表示图里的这个实际上我实测并不满意……后来我直接不要轮子换成了柱状的支柱
电机,接口我用排针焊好了,方便拆卸,以及和板子的连接我也没有完全粘在上面,而是用一块板子粘好在底板做固定座【图里可以看到这个大的板子背面是没有可以直接用于连接的孔的……所以要粘一块小板子上去方便连接】
然后电机我就直接用自攻螺丝钉拧在另一块板子上,然后两个部分直接插上去就可以了,这样方便维护。
这个是最初的万向轮设计……但毕竟是塑料,几乎转不起来……
然后这是底板和树莓派“相机”连接,搭成了一个小车……最底下一层放移动电源,上面架树莓派相机
侧面……
正面,可以看到摄像头模块,然后注意到没,下面的万向轮我又换成了另一个,这个是有塑胶的轮子,转动部分用了个小的没负载的情况下转动也很灵活的,但是还是很不满意……
左边,下面白色那里就是放电机驱动模块的地方,用GPIO和树莓派连接,但是这里出现了很多问题……嗯,等下再说
俯视图……显得体积略大
开机,上面的屏幕板子是F429开发板,可以看到这个和最初第一张图的树莓派相机有所不同,因为我增加了模拟鼠标……那个黑色的按键就是模拟鼠标左键,用来拍照的,旁边的那个有4个小按钮的就是模拟鼠标上下移动的……用来进行选择。
这里在弄的时候出现了个问题,就是上方向键我连接GPIO5貌似很容易会出现漂移的现象,而且不知道为什么我开机的时候设置为下拉和输入模式了,关掉相机功能进入GUI界面后又变成了OUT模式,……怎么弄都不行,后来我是换了另一个IO就没问题了……
嗯……移动电源,然后树莓派的主机指示灯我是用了个透明的积木做的~
这是摄像头模块……两边是1W的红外灯,摄像头是红外夜视的……
用红外夜视的摄像头拍风景的话……嗯……你会发现树叶都是红色的……好蛋疼……
来两张相机功能下的拍照图……
单车棚那是我们学校,绿树成荫,结果拍出来……一股秋的颜色……其实也挺有意思的……
然后……这多加了块电池……为什么呢……嗯……
因为之前用移动电源给树莓派供电的同时我也直接用杜邦线连接了5V给电机驱动……
后来估计是因为反峰,前进后退走了2步后移动电源直接就断掉了……估计是被软击穿了……
所以我才用一块锂电专门给电机供电……其实也是挺蛋疼的……这里还有问题,慢慢来说~
电池……
这里就是电机驱动模块的部分【话说注意树莓派的电源指示灯红色不亮了……只有绿色的工作状态指示灯……不知道是因为电流不够还是咋的……】……
然后……先走了几步……嗯……
左边是VLC连接树莓派进行实时图像传输,右边是操作控制台……
走到客厅……这是晚上完全无光的情况下拍的,开了2个红外灯,不过是开到最低的,如果开到最高移动电源估计就因为那反峰软击穿导致电流不够了……【其实我怀疑树莓派自身也遭到了很大的冲击……这很危险……注意不要像我最初那样直接从树莓派取电给带磁的器件,不然一旦释放那反峰冲击很危险的……】
更何况……还导致了下面的情况……
我限流电阻都没加,最后走了大概10分钟,这驱动芯片就直接发烫烧掉了……
用来固定的积木也被烫熔了……【这还没有直接接触芯片……有大概2mm的距离……都已经成这样了……】
所以,安全的做法应该是所有的控制输出用1N4148保护防止反峰对树莓派的冲击,然后接1K电阻限流,再到驱动芯片,并且电机用单独电源供电,不应直接从树莓派上取电!
所以最后……我是裁了一块电路板来做驱动模块
用4个1N4148单向输出控制,然后限流电阻,最后是驱动芯片。用了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[31;1m user [wsad] go, [e/t] stop, [o] open vlc,[f] stop vlc,[q]quit"
- esac
- done
- runquit
- exit 0
复制代码 |
|