1、树莓派主板
2、L298N电机驱动板
3、四轮小车底盘(带电机)
4、12V锂电池电源
5、树莓派移动电源
6、母-公,母-母 公-公 杜邦线各20根
(然后就是自己拼装搭建所需要的电烙铁,螺丝刀工具等等。当然这些不是必需品)
1、特别注意:12V电源负级与树莓派GND并联,树莓派5VGPIO针脚接驱动板5V上。 切记不要接错!否则烧坏。
2、A马达与B马达,单侧正负并联在一起。 因为这里驱动板只有2个马达端口。所以是前后轮一起控制!

树莓派GPIO针脚的接线位置参考下图:
树莓派GPIO2接IN4,
树莓派GPIO3接IN1,
树莓派GPIO1接IN2,
树莓派GPIO4接IN4,
树莓派5V接驱动板5V,
树莓派GND与12V负极并联接驱动板GND,

1.新建一个py文件,然后将下面控制代码粘贴进去 按Ctrl+X回车保存。
sudo nano raspi.py

PYthon控制代码:
#!/usr/bin/env python
# encoding: utf-8
# By:www.raspi.cc
# Name:raspi.py
import RPi.GPIO as GPIO
import curses
import time
from curses import wrapper
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
stdscr = curses.initscr()
stdscr.clear()
while True:
ch = stdscr.getkey()
# Quit
if ch == 's':
curses.endwin()
GPIO.output(27, False)
GPIO.output(18, False)
GPIO.output(22, False)
GPIO.output(23, False)
break
# Forward
if ch == 'w':
GPIO.output(27, False)
GPIO.output(18, True)
GPIO.output(22, False)
GPIO.output(23, True)
# Backward
if ch == 'x':
GPIO.output(27, True)
GPIO.output(18, False)
GPIO.output(22, True)
GPIO.output(23, False)
# Turn Right
if ch == 'd':
GPIO.output(27, False)
GPIO.output(18, True)
GPIO.output(22, False)
GPIO.output(23, False)
# Turn Left
if ch == 'a':
GPIO.output(27, False)
GPIO.output(18, False)
GPIO.output(22, False)
GPIO.output(23, True)1、输入下面的程序启动命令
sudo python raspi.py

2、进入控制界面
按w则是四个马达同时正转(前进),
按a则是左侧两个马达正转(左转),
按d则是右侧两个马达正转(右转),
按x则是四个马达同时反转(后退),
按s则是所有马达全部停止(停止),

1、小车的转向实际是根据左右差速实现,若左转,左侧轮子不会转动。代码的a/d/w/x/s中False、True布局来调整转动/停止
2、如果马达转向不对,请根据情况进行调节。可把驱动板的IN1234调换位置进行反复测试,或者AB马达端口调换,可参考下图!

1、麦克纳姆轮原理其实与上述相差不大,其主要原理是由主轮和围绕轮组成,围绕轮的轴线和主轮轴线夹角成45°,故围绕轮可以横向滑移。当轮子绕着固定的轮心轴转动时,各个围绕轮为圆柱面,所以该围绕轮能够连续地向前滚动。
2、通过控制不同轮子的旋转方向,麦克纳姆轮可以实现全方位的移动,包括前后、左右、斜向移动以及原地旋转等复杂动作,非常适合在狭小空间内灵活移动。(麦轮举例:下图中的“斜行” 则是小车左前轮正转,右后轮正转,右前轮和左后轮停止不动,这样小车就可以斜着漂移)

通过了解上述的原理和结构,我们可以利用两个L298N或者是四路电机驱动板,来分别控制每个轮子的转动。这样就能轻松控制麦克纳姆轮,下面提供一套调试好的麦克纳姆轮代码程序,可结合上面例程进行研究,方法一样!
麦克纳姆轮运动原理