树莓派轮式智能车(RaspberryPi Arduino)
材料:电阻、面包板、杜邦线、面包板线、LED、电池盒、电池、充电锂电池、USB转TTL模块、电机驱动模块、LCD1602(IIC)模块、超声波模块、红外避障模块、红外循迹模块、有源蜂鸣器模块、Arduino UNO、Arduino面包板扩展板、Raspberry Pi
背景:Raspberry Pi和Arduino作为目前...详情
材料:电阻、面包板、杜邦线、面包板线、LED、电池盒、电池、充电锂电池、USB转TTL模块、电机驱动模块、LCD1602(IIC)模块、超声波模块、红外避障模块、红外循迹模块、有源蜂鸣器模块、Arduino UNO、Arduino面包板扩展板、Raspberry Pi
背景:Raspberry Pi和Arduino作为目前这个时代最为成功的两个开源硬件,拥有各自无法替代的优势。Arduino拥有封装好的库文件,因此其在连接硬件方面有着先天的优势。而Raspberry Pi在计算方面却又是普通单片机所不具有的,所以为何不将二者创造性地互联在一起,从而迸发出最耀眼的开源火花呢?
原理:本轮式机器人主要是由Raspberry Pi和Arduino两大核心组成。它可以实现自动和手动两种驾驶方式,手动驾驶主要依靠蓝牙键盘进行控制,当机器人检测到前、左、右的障碍物时,可以自动规避而拒绝键盘此时发送的命令。自动驾驶方面则首先是通过四路红外循迹模块完成循线功能,避障模块可以使机器人在非黑线的地面移动时也能进行一定程度的自主行走。Raspberry Pi和Arduino二者之间通过半双工的串口通讯进行联系,Arduino作为下位机与硬件传感器连接,Raspberry Pi则主要是作为人机交互的接口来接受用户发出的命令(当然Raspberry Pi上也被我加上了些硬件设备,这样做是为了说明其实Raspberry Pi通过编写库文件也可以控制传感器,但是更具挑战性)。Arduino程序方面是通过Raspberry Pi上的Arduino IDE完成开发的,其中的串口接受部分可以根据不同的字符串来执行相应的动作(精确控制舵机、LED),另外的发送部分可将红外避障、红外循迹等模块的数据传送给Raspberry Pi,使其接受并自动对外围事物做出反应。Raspberry Pi程序方面则首先是调用GPIO库来控制L293D电机驱动,从而控制直流电机。当然程序中最为重要的是调用了Python中的Tk图形化编程库,其中的keypress方法可以直接检测按键的状态,这就为蓝牙键盘遥控做好了铺垫。超声波模块的编程倒不是很难,但是由于模块的逻辑电压是5V,这与GPIO引脚的3.3V不符,为防止引脚被烧坏,我于是在Echo脚串连了1千欧的电阻(其实这是因为自己没有电平转化器的缘故,不过后来的测试也还是成功了)。最后最难的是有关LCD1602的编程,因为它不是传统的四线制连接,所以可以极大地节省引脚使用数量,但IIC的库编程却是相当复杂的。其中涉及了LCD1602的底层硬件、IIC协议、Python、Linux等知识。总之经过不断的努力,最后还是成功了。
总结:本次创新项目中我学到了很多知识,特别是传感器的使用以及两个硬件之间如何建立起通讯。当然不足也是肯定存在的,其主要体现在我前期计划的不够周密,导致机器人其它的功能因时间紧迫而遭到放弃,还有程序的编写欠缺经验。最后,我希望未来自己可以加大对Arduino算法方面以及系统底层的研究力度,做出更有深度的项目系列。隐藏