手机蓝牙遥控循迹寻光重力感应全功能 STM32 小车 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hongfeiyu
V2EX    程序员

手机蓝牙遥控循迹寻光重力感应全功能 STM32 小车

  •  
  •   hongfeiyu 2016-05-09 20:56:19 +08:00 3197 次点击
    这是一个创建于 3447 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很多设备调试,程序编写都是自己一个人一行一行一根线一根线调试出来的, 从中体会到了很多酸甜苦辣。其中调试小车让其识别拐弯与平时的轻度弯曲的直线之间的区别是最让人痛苦的,不过小车最后还是跑出了全专业最快的10 秒 /圈的速度。

    PS:此文中的小车的循迹程序寻光程序Android 遥控程序重力感应程序循迹与寻光自由切换程序 已全部上传至网上。

    最终效果

    小车最终外观

    小车正面照

    处理器用的是STM32F4

    小车后面照

    后面两个轮子为驱动轮,前面一个轮子为从动轮


    循迹

    循迹示意图

    GIF 演示

    这只是初期程序的效果,考核的时候已经不会在直线上扭来扭去了。但其实有的人的车不调也能到达差不多的效果,但无奈我的两个马达转速差别太大,调节也无法完全走直线。所以必须用程序做到将其完全可控。

    并且程序在检测到需要转弯时两个轮子是一前一后地转动,能够以最大限度的提供动力使车身转向并且还在直线上,当检测到转过的角度到达时车会立即继续向前开动。

    最终程序源代码:https://github.com/hongfeiyucode/find_way_car

    寻光

    寻光传感器

    这架在上面的是就是寻光传感器,最后考核很是蛋疼,很多人写的程序直接就是转 180 度然后car_forward() 检测到光直接停下,这种当然是最快的,但是因为前面说过的我这小车无法直行最后跑的不是很快。

    但是程序的逻辑还是很具有参考价值的: https://github.com/hongfeiyucode/find_light_car

    循迹与寻光自由切换

    这个主要是利用芯片上的一个按钮将其进行程序之间的切换。程序检测一个值,检测这个键是否按下,还有什么时候弹起,来达到两个程序之间切换的功能。

    这样相当于一个程序完成了两个程序的功能!

    也另外写了一个程序,程序还是很简洁明了的: https://github.com/hongfeiyucode/car_find_way_and_light

    Android 遥控程序

    这个是工程量比较大的一个项目,程序都是自己写的,这里把源代码也开源了:https://github.com/hongfeiyucode/Car_remote_control

    最后的程序大致界面,基本是重新改写了一遍。后期还加了重力感应这一功能。

    侧边栏 简化侧边栏

    操作说明:

    • 打开程序
    • 点击主界面的打开蓝牙
    • 拖出侧面的侧边栏
    • 点击查找蓝牙设备
    • 匹配小车的蓝牙
    • 连接成功后已经开始进入重力感应遥控模式了
    • 右下角的按钮可以切换重力感应与键盘操作模式
    • 两种模式各有各的特点,找到自己的喜欢的就好

    键盘操作时

    重力感应模式

    重力感应模式 重力感应 GIF 演示

    重力感应遥控说明:

    • 将手机树立起来时小车是停止状态
    • 想象手机是一个遥杆
    • 往前倾(手机上端远离自己)是向前,往后是后退
    • 左右倾斜分别是向左转向右转

    PS :别忘了 star 或者 fork 一下我的程序哦

    9 条回复    2016-05-10 13:03:31 +08:00
    sennes
        1
    sennes  
       2016-05-09 21:53:58 +08:00
    Sensor 没选好所以导致可能在算法上需要多下功夫。
    hongfeiyu
        2
    hongfeiyu  
    OP
       2016-05-09 22:07:28 +08:00
    @sennes 传感器是配发的,这可不能选哦
    sennes
        3
    sennes  
       2016-05-09 22:10:04 +08:00
    刚刚不小心点了发送。不好意思。

    对于做硬件项目给几点建议:

    1. 且不说功能如何 外观可以花点心思。 最低标准是,线不要凌乱的裸露在外。
    2. 开发前期应该先调研一下传感器。 您用几路普通传感器,但是采样的点和精度都不够好,会导致你的成果表现不会特别出色。
    3. 有条件的话尝试学习一下绘制 PCB 。像您这样的项目到了最后期就没有必要使用最小系统+模块的方式了。而且画集成的板子难度也不是特别高,能学到东西。
    4. 您软件这边做的还是不错的
    sennes
        4
    sennes  
       2016-05-09 22:11:45 +08:00
    @hongfeiyu 嗯 因为不知道你们题目
    不过感觉您挺有天赋的,如果多花点心思在外观和一些细节方面。会对您就业以后做研发带来不少好处。(如果打算做硬件这块的工作的话)
    hongfeiyu
        5
    hongfeiyu  
    OP
       2016-05-09 22:21:29 +08:00
    @sennes 碰到专业的大神了_(:з」∠)_
    其实我只是玩一玩的,也就接触了几周,自己瞎捣鼓的
    大神轻喷轻喷
    硬件方面确实只是因为平时自己动手多所以做起来不是很麻烦
    但是还是希望自己首先要不断不断地提高自己的编程水平
    sennes
        6
    sennes  
       2016-05-10 00:00:53 +08:00
    加油
    xmoiduts
        7
    xmoiduts  
       2016-05-10 07:10:06 +08:00 via Android
    请问大神,安卓要用多长时间学?最近想做个 arduino 调速风扇,想要接入手机做个第一印象好些的界面,对 java 和安卓 0 基础。 arduino 那边蓝牙倒是没啥问题。
    kobe1941
        8
    kobe1941  
       2016-05-10 09:51:20 +08:00
    STM32 ,好熟悉的名词,当年在大学也是玩单片机焊电路板

    已转行互联网,不解释
    hongfeiyu
        9
    hongfeiyu  
    OP
       2016-05-10 13:03:31 +08:00
    @xmoiduts 学的话一个月差不多就能写出来这种程序吧,我觉得,每个人情况不一样
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2734 人在线   最高记录 6679       Select Languge
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 14:50 PVG 22:50 LAX 07:50 JFK 10:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86