树莓派(2B、3B、3B+或zero) + ~~两片外壳~~ + 充电宝 + microUSB电源线
L298N电机驱动板 + 18650锂电池 + 锂电池座 + 锂电池充电器
MPU6050模块 + 母对母杜邦线12芯以上
TT马达 + 车轮 + 红黑导线 + 车地盘以及铜柱螺丝等
注意:这一部分看似简单,实际还是有点折腾。因为要兼顾美观、实用、价格、可扩展等特点,我选择了亚克力板和乐高的搭配。据体可以关注我的淘宝店铺:极客室,一次购齐全更方便。
1.部件组装图
2.电路连接图
原电路图,少接了一条地线GND,必须加上,马达才能正常运转,
树莓派 L298N电机驱动模块
5V0 5V输入
GPIO17 IN2
GPIO27 IN1
GPIO22 ENA
GPIO23 IN3
GPIO24 IN4
GPIO25 ENB
树莓派 MPU6050模块
3V3 VCC
SDA1 SDA
SCL1 SCL
GND GND
3.实物连接图:
注意检查清楚引脚标识是否一致,实验过程中,MPU灯亮了,但测试程序没出有效数据,全是0输出,经检查两个引脚接错了,还好没烧掉;线路图接很容易看错接错,应该对照两个元件的标识,确认一致才行。
1.安装和启动I2C模块:
$ sudo apt-get install libi2c-dev
$ sudo nano /etc/modules 在该文件中添加如下代码:
i2c-bcm2708 i2c-dev
$ sudo raspi-config
Advanced Options -> I2C, please enabled it.
$ sudo bash
$ sync
$ reboot
等待重启。。。
2.安装wiringPi库
$ sudo apt-get install git-core
$ cd
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ sudo ./build
3.测试MPU6050模块
$ sudo apt-get install i2c-tools
$ sudo i2cdetect -y 1
正常是可以看到i2c设备的地址为:“0x68”
$ cd /home/pi/Desktop
$ git clone https://github.com/wennycooper/mpu6050_in_c.git
$ gcc -o mpu6050_accl ./mpu6050_accl.c -lwiringPi -lpthread -lm
$ gcc -o mpu6050_gyro ./mpu6050_gyro.c -lwiringPi -lpthread -lm 注:这两个编译都会报错,但是并不影响下面的测试
$ sudo ./mpu6050_accl
正常可以看到XY轴偏移情况:...X rotation: 0;Y rotation: -1
sudo /home/pi/Desktop/balanceCar/mpu6050_in_c/mpu6050_accl
4.测试马达
$ cd /home/pi/Desktop
$ git clone https://github.com/wennycooper/dcMotor.git
$ cd dcMotor
$ gcc -o dcMotor0 dcMotor0.c -lwiringPi -lpthread 注:这个编译都会报错,但是并不影响下面的测试
$ sudo ./dcMotor0
正常情况下,两个轮子会正反转各5秒
sudo /home/pi/Desktop/balanceCar/dcMotor/dcMotor0
测试只接了一个马达,等5秒后,转动,转5秒后停止;
测试代码:
#include
#include
#define RANGE 100
#define PIN0 0
#define INITIAL_VALUE 0
int i;
int main()
{
wiringPiSetup();
// initialize left motor (pin0, 2 & 3)
softPwmCreate(0, INITIAL_VALUE, RANGE);
softPwmCreate(2, INITIAL_VALUE, RANGE);
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
// initialize right motor (pin4, 5 & 6)
softPwmCreate(5, INITIAL_VALUE, RANGE);
softPwmCreate(4, INITIAL_VALUE, RANGE);
pinMode(6, OUTPUT);
digitalWrite(6, HIGH);
// to forward (come to me), drive pin 0&5 to some power
// to backward (leave me), drive pin 2&4 to some power
// forward
softPwmWrite(0, 0);
softPwmWrite(5, 0);
softPwmWrite(2, 100);
softPwmWrite(4, 100);
delay(5000);
// backward
softPwmWrite(0, 100);
softPwmWrite(5, 100);
softPwmWrite(2, 0);
softPwmWrite(4, 0);
delay(5000);
// stop
softPwmWrite(0, 0);
softPwmWrite(5, 0);
softPwmWrite(2, 0);
softPwmWrite(4, 0);
delay(1000);
}
$ cd /home/pi/Desktop
$ git clone https://github.com/wennycooper/mySegway.git
$ cd mySegway
$ gcc -o mySegway ./mySegway.c ./motors.c -lwiringPi -lpthread -lm
$ sudo ./mySegway
sudo /home/pi/Desktop/balanceCar/mySegway/mySegway
MPU6050应该平面朝上固定,竖着就没法平衡了。
二轮自平衡车
https://blog.csdn.net/ppp2006/article/details/49912021
如何做一个两轮平衡小车
https://www.bilibili.com/video/av22228206?spm_id_from=333.338.__bofqi.23
蓝牙遥控使用说明
http://yahboom.com/build.html?id=230&cid=36
[教程]你的,桌面自平衡 机器人—Zz
http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=38010&extra=page%3D1
Arduino高级应用 | 高精度自动导航的越野平衡小车
http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=23843
实践 基于Arduino 的 平衡车
https://blog.csdn.net/pengdali/article/details/79120641