【ADXL345】【树莓派】【python】树莓派测加速度I2C

负一.树莓派引脚说明

【树莓派】引脚说明、系统安装、远程访问及网络配置

零.ADXL345基础

ADXL345是一个数字传感器,所以不需要额外的电路,如模拟到数字转换器。数字传感器可以直接连接到树莓派上。

0.1.ADXL345坐标系

方向规定:右手系
在这里插入图片描述ADXL345传感器以各种不同方式静置时传感器的理想输出值(实际中由于器件偏差,尤其是Z轴很难保证输出纯正的±1g):
在这里插入图片描述

一.系统配置

1.1 连线说明

控制时由于树莓派的SDA/SCL均只有一个,所以控制代码里不涉及引脚说明
下列接线方式供参考
加速度计的VCC引脚连接到树莓派的物理引脚1(3v3)。
加速度计的SDA引脚连接到树莓派的物理引脚3(SDA)。
加速度计的SCL引脚连接到树莓派的物理引脚5(SCL)。
加速度计的GND引脚连接到树莓派的物理引脚地线(GND)(GND口可随意连接,6/9/14/…均可)。
在这里插入图片描述

1.2树莓派配置

  1. 在Raspberry Pi从ADXL345加速计中读取数据之前,必须对Pi的配置进行一些更改。
    首先,让运行以下两个命令来确保所有软件包都是最新的。
sudo apt-get update
sudo apt-get upgrade
  1. 当Raspberry Pi完成更新后,需要启动Raspberry配置工具,这样就可以在Raspberry Pi上启用I2C。
    运行以下命令启动 raspi 配置工具。
sudo raspi-config
  1. 在这个屏幕上,导航到 "5 Interfacing Options"菜单。
    可以使用箭头键来浏览 raspi-config 工具菜单。使用 ENTER 键选择特定选项。
  2. 现在在接口选项菜单中选择 “P5 I2C”。
    当被问是否要启用ARM I2C接口时,选择"yes"。
    然后点击finish
  3. 启用I2C接口后,需要通过运行以下命令重新启动Raspberry Pi。
    稍等片刻后等待系统重启,VNC的连接需要一段时间
sudo reboot
  1. 现在已经启用了I2C并重新启动了Raspberry Pi,可以安装依赖包来与加速度传感器交互了。
    运行以下命令进行安装。
sudo apt-get install python3-dev python3-pip python3-smbus i2c-tools -y
  1. 安装了所有所需的软件包后,现在检查一下Raspberry Pi是否能看到ADXL345加速度计。
    可以运行以下命令来实现。
sudo i2cdetect -y 1

从这个命令中,应该看到命令行上显示了相当多的内容。在这个结果中,至少应该看到一个数字,如 “53”。
如果什么都没有出现,请确保已经将ADXL345加速度计正确连接到Raspberry Pi,并且传感器引脚上的所有焊接点都是干净的。如果看到错误,请尝试重新启用I2C

8.此步最重要!!!
为了与ADXL345交互,需要利用Adafruit的ADXL34x Python库,运行以下pip命令。

sudo pip3 install adafruit-circuitpython-ADXL34x

1.3 ADXL I2C说明

在这里插入图片描述

在默认状态下,树莓派的I2C传输速率为100kHz,此时ODR为200kHz(即两次采样之间的最短间隔时长为0.005秒)

修改树莓派I2C传输速率的方式:

【1】sudo nano /boot/config.txt
【2】在打开的文件中添加一行dtparam=i2c1_baudrate=600000(假设我们将其设置为600khz).
【3】sudo reboot重启

二.控制代码,无限循环版

python,如果之前的设置没有出现问题,以下代码即可运行

import time #利用 "time "库,可以让脚本短时间内进入睡眠状态
import board #导入Adafruit的 "board "库,为了了解设备上有哪些引脚可用。
import busio #busio包含各种不同的库来处理各种串行协议,用来处理I2C串行协议。
import adafruit_adxl34x #adafruit_adxl34x库包含了从ADXL345加速度计中读取信息所需的所有代码
i2c = busio.I2C(board.SCL, board.SDA)#利用busio 库为当前板子的SCL和SDA引脚准备一个I2C连接,并将句柄存储到i2c变量中。
#将ADXL345库实例化到accelerometer对象中,来读取和获取传感器的信息。在库的构造函数中,传递I2C句柄。
accelerometer = adafruit_adxl34x.ADXL345(i2c)
#依次打印出XYZ轴加速度的数据
while True:
    print("%f %f %f"%accelerometer.acceleration)
    time.sleep(1)

Thonny里的运行效果,在shell里导出测量数据:
在这里插入图片描述

三.控制代码,有限循环+画图+数据记录至txt文件版

代码,这里以记录z轴数据为例

import time
import board
import busio
import adafruit_adxl34x
import matplotlib.pyplot as plt
import numpy as np

i2c = busio.I2C(board.SCL, board.SDA)
accelerometer = adafruit_adxl34x.ADXL345(i2c)

DeltaTime=0.1#连续两次采样点的时间间隔,单位为秒;有下限,默认下限0.005秒
N=100 #记录的数据的总数
data=list(range(0,N))#data记录传感器某轴数据

for i in range(N):
    print("DataNumber:%f"%i)
    print("%f %f %f"%accelerometer.acceleration)
    data[i]=accelerometer.acceleration[2]#[0]是x轴,[1]是y轴,[2]是z轴
    time.sleep(DeltaTime)#每隔()秒采集一次数据
    
#绘图
time=np.linspace(1,N,N)#生成从1到N的维度为N的一维数组
time=np.multiply(DeltaTime,time)
fig,ax=plt.subplots()
ax.plot(time,data,'b',linewidth=1)
plt.xlabel("time(s)",loc='center')
plt.ylabel("Data-Z axle(m/s^2)",loc='center')
plt.show()
#记录数据至文件(同一文件夹内)
np.savetxt('Data-time.txt',time,delimiter=',')#导出时间数据
np.savetxt('Data-Z.txt',data,delimiter=',')#导出加速度数据

在这里插入图片描述

图片数据:时间间隔为0.1秒,100个数据,z轴加速度

python画图链接

文件及数据

在这里插入图片描述
在这里插入图片描述
txt转excel

注:文件可用U盘传输分析

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值