查看: 5842|回复: 1

[原创] 树莓派+玩具积木制作的wifi小车[HG7881电机驱动]

[复制链接]
  • TA的每日心情
    开心
    2019-6-25 09:54
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-9-20 17:02:27 | 显示全部楼层 |阅读模式
    分享到:
    话说第一次发的帖子一直在审核……好蛋疼……是发不出还是肿么了……表示如果重贴了版主就删掉好了……
    嗯……这个月初才买的树莓派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/
    1. #!/bin/bash
    2. gpio -g mode 2 out
    3. gpio -g mode 3 out
    4. gpio -g mode 2 up
    5. gpio -g mode 3 up
    6. gpio -g mode 23 out
    7. gpio -g mode 24 out
    8. gpio -g mode 23 up
    9. gpio -g mode 24 up

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

    11. runup(){
    12.         gpio -g write 2 1
    13.         gpio -g write 3 0
    14.         gpio -g write 23 1
    15.         gpio -g write 24 0
    16. }
    17. rundown(){
    18.         gpio -g write 2 0
    19.         gpio -g write 3 1
    20.         gpio -g write 23 0
    21.         gpio -g write 24 1
    22. }
    23. runle(){
    24.         gpio -g write 2 1
    25.         gpio -g write 3 1
    26.         gpio -g write 23 1
    27.         gpio -g write 24 0
    28. }
    29. runright(){
    30.         gpio -g write 2 1
    31.         gpio -g write 3 0
    32.         gpio -g write 23 1
    33.         gpio -g write 24 1
    34. }
    35. runstop(){
    36.         gpio -g write 2 1
    37.         gpio -g write 3 1
    38.         gpio -g write 23 1
    39.         gpio -g write 24 1
    40. }
    41. startvlc(){
    42.         su pi
    43.         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
    44. }
    45. stopvlc(){
    46.         sudo killall -9 raspivid cvlc &> /dev/null
    47. }
    48. runquit(){
    49.         sudo runstop
    50.         #gpio -g write 2 0
    51.         #gpio -g write 3 0
    52.         #gpio -g write 23 0
    53.         #gpio -g write 24 0
    54.         sudo stopvlc
    55. }

    56. echo -e "\e[33;1mGO!\e[0m"
    57. while [ "$quit" != "q" ]
    58. do
    59.         read -sn 1 -p "Key:" quit
    60.         case $quit in
    61.         w) runup ;;
    62.         s) rundown ;;
    63.         a) runle ;;
    64.         d) runright ;;
    65.         " " | e | t) runstop ;;
    66.         o) startvlc & ;;
    67.         f) stopvlc ;;
    68.         *) echo -e "\e[31;1m user [wsad] go, [e/t] stop, [o] open vlc,[f] stop vlc,[q]quit"
    69.         esac
    70. done
    71. runquit
    72. exit 0
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-25 09:54
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

     楼主| 发表于 2014-9-22 13:09:59 | 显示全部楼层
    版主大大,这个帖子重复了可以删掉了……
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 15:28 , Processed in 0.137031 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.