树莓派3B+ 平衡车 wiringPi 实验详录

一.材料

树莓派(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 <wiringPi.h>
#include <softPwm.h>

#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

猜你喜欢

转载自blog.csdn.net/jacka654321/article/details/80949138