树莓派4B-用串口读取JY901S陀螺仪数据

相关知识介绍

陀螺仪是一种用来感测与维持方向的装置,基于角动量的理论设计出来的。陀螺仪主要是由一个位于轴心可以旋转的轮子构成,陀螺仪一旦开始旋转,由于轮子的「角动量」,陀螺仪有抗拒方向改变的趋向。陀螺仪多用于导航、定位等系统

JY901S是9轴姿态角度传感器,支持串口和 IIC 两种数字接口。串口速率2400bps~921600bps 可调, IIC 接口支持全速 400K 速率,本文均是使用串口。

9轴分别为加速度传感器(即加速计)、角速度传感器(即陀螺仪)、磁感应传感器(即电子罗盘)。

连接说明

我是用的USB转TTL电平串口模块与树莓派连接,用的型号是CH340。

在windows电脑上的端口号都是ComX,在Liunx系统下的端口号如果是直接插在树莓派USB接口上的话就是写

‘/dev/ttyAMA0’否则就是’/dev/ttyAMA0’,具体如下。

port = '/dev/ttyUSB0' # use '/dev/ttyAMA0' for USB or '/dev/ttyAMA0' for GPIO

注意:RX和TX是需要反着接的,无论是直接连在GPIO上还是用USB转TTL,否则会出现问题。

轴向说明

如上图所示,模块的轴向在上图的右上方,向右为 X 轴,向上 Y 轴,垂直模块向外为 Z 轴。旋转的方向按右手法则定义,即右手大拇指指向轴向,四指弯曲的方向即为绕该轴 旋转的方向。X 轴角度即为绕 X 轴旋转方向的角度,Y 轴角度即为绕 Y 轴旋转方向的角度, Z 轴角度即为绕 Z

测试结果

完整代码

#coding:UTF-8
import serial
 
ACCData=[0.0]*8
GYROData=[0.0]*8
AngleData=[0.0]*8          
FrameState = 0            #通过0x后面的值判断属于哪一种情况
Bytenum = 0               #读取到这一段的第几位
CheckSum = 0              #求和校验位         
 
a = [0.0]*3
w = [0.0]*3
Angle = [0.0]*3

def DueData(inputdata):   #新增的核心程序,对读取的数据进行划分,各自读到对应的数组里
    global  FrameState
    global  Bytenum
    global  CheckSum
    global  a
    global  w
    global  Angle
    for data in inputdata:  #在输入的数据进行遍历
        # print(inputdata)
        # print(data, type(data))
        if FrameState==0:   #当未确定状态的时候,进入以下判断
            if data ==0x55 and Bytenum==0: #0x55位于第一位时候,开始读取数据,增大bytenum
                CheckSum=data
                Bytenum=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@KevenDuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值