天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > Python连接维特智能角度传感器JY61/JY901的方法

Python连接维特智能角度传感器JY61/JY901的方法

时间:2021-10-17 19:48:50

相关推荐

Python连接维特智能角度传感器JY61/JY901的方法

文章目录

1. 准备工具2. 环境安装3.硬件连接4. 运行代码5.运行结果

1. 准备工具

python 3.9.1安装包三合一USB转串口模块JY61或JY901姿态角度传感器模块示例程序

2. 环境安装

Python环境安装与串口Pyserial函数库安装

视频地址

先下载Python的安装包,然后双击安装,注意要选择Add Python 3.9 to Path.

然后默认配置,一路下一步即可完成安装。安装完成后,我们还需要安装Pyserial函数库。

用管理员方式运行命令提示符,然后输入:

pip install pyserial

等待一会儿即可完成安装。

3.硬件连接

将模块通过USB转串口模块连接到电脑上,连接顺序如下:

4. 运行代码

在python的环境中打开示例程序,然后运行。

代码如下:

#coding:UTF-8#运行前需先安装pyserial,用WIN+R调出运行框,输入CMD,进入命令行,输入pip install pyserial更新一下函数库import serialACCData=[0.0]*8GYROData=[0.0]*8AngleData=[0.0]*8FrameState = 0 #通过0x后面的值判断属于哪一种情况Bytenum = 0#读取到这一段的第几位CheckSum = 0 #求和校验位 a = [0.0]*3w = [0.0]*3Angle = [0.0]*3def DueData(inputdata): #新增的核心程序,对读取的数据进行划分,各自读到对应的数组里global FrameState #在局部修改全局变量,要进行global的定义global Bytenumglobal CheckSumglobal aglobal wglobal Anglefor data in inputdata: #在输入的数据进行遍历#Python2软件版本这里需要插入 data = ord(data)*****************************************************************************************************if FrameState==0: #当未确定状态的时候,进入以下判断if data==0x55 and Bytenum==0: #0x55位于第一位时候,开始读取数据,增大bytenumCheckSum=dataBytenum=1continueelif data==0x51 and Bytenum==1:#在byte不为0 且 识别到 0x51 的时候,改变frameCheckSum+=dataFrameState=1Bytenum=2elif data==0x52 and Bytenum==1: #同理CheckSum+=dataFrameState=2Bytenum=2elif data==0x53 and Bytenum==1:CheckSum+=dataFrameState=3Bytenum=2elif FrameState==1: # acc #已确定数据代表加速度if Bytenum<10: # 读取8个数据ACCData[Bytenum-2]=data # 从0开始CheckSum+=dataBytenum+=1else:if data == (CheckSum&0xff): #假如校验位正确a = get_acc(ACCData)CheckSum=0 #各数据归零,进行新的循环判断Bytenum=0FrameState=0elif FrameState==2: # gyroif Bytenum<10:GYROData[Bytenum-2]=dataCheckSum+=dataBytenum+=1else:if data == (CheckSum&0xff):w = get_gyro(GYROData)CheckSum=0Bytenum=0FrameState=0elif FrameState==3: # angleif Bytenum<10:AngleData[Bytenum-2]=dataCheckSum+=dataBytenum+=1else:if data == (CheckSum&0xff):Angle = get_angle(AngleData)d = a+w+Angleprint("a(g):%10.3f %10.3f %10.3f w(deg/s):%10.3f %10.3f %10.3f Angle(deg):%10.3f %10.3f %10.3f"%d)CheckSum=0Bytenum=0FrameState=0def get_acc(datahex): axl = datahex[0]axh = datahex[1]ayl = datahex[2]ayh = datahex[3]azl = datahex[4]azh = datahex[5]k_acc = 16.0acc_x = (axh << 8 | axl) / 32768.0 * k_accacc_y = (ayh << 8 | ayl) / 32768.0 * k_accacc_z = (azh << 8 | azl) / 32768.0 * k_accif acc_x >= k_acc:acc_x -= 2 * k_accif acc_y >= k_acc:acc_y -= 2 * k_accif acc_z >= k_acc:acc_z-= 2 * k_accreturn acc_x,acc_y,acc_zdef get_gyro(datahex): wxl = datahex[0]wxh = datahex[1]wyl = datahex[2]wyh = datahex[3]wzl = datahex[4]wzh = datahex[5]k_gyro = 2000.0gyro_x = (wxh << 8 | wxl) / 32768.0 * k_gyrogyro_y = (wyh << 8 | wyl) / 32768.0 * k_gyrogyro_z = (wzh << 8 | wzl) / 32768.0 * k_gyroif gyro_x >= k_gyro:gyro_x -= 2 * k_gyroif gyro_y >= k_gyro:gyro_y -= 2 * k_gyroif gyro_z >=k_gyro:gyro_z-= 2 * k_gyroreturn gyro_x,gyro_y,gyro_zdef get_angle(datahex): rxl = datahex[0]rxh = datahex[1]ryl = datahex[2]ryh = datahex[3]rzl = datahex[4]rzh = datahex[5]k_angle = 180.0angle_x = (rxh << 8 | rxl) / 32768.0 * k_angleangle_y = (ryh << 8 | ryl) / 32768.0 * k_angleangle_z = (rzh << 8 | rzl) / 32768.0 * k_angleif angle_x >= k_angle:angle_x -= 2 * k_angleif angle_y >= k_angle:angle_y -= 2 * k_angleif angle_z >=k_angle:angle_z-= 2 * k_anglereturn angle_x,angle_y,angle_zif __name__=='__main__': # use raw_input function for python 2.x or input function for python3.xport = input('please input port No. such as com7:');#Python2软件版本用 port = raw_input('please input port No. such as com7:');*****************************************************************************************************#port = input('please input port No. such as com7:'));baud = int(input('please input baudrate(115200 for JY61 or 9600 for JY901):'))ser = serial.Serial(port, baud, timeout=0.5) # ser = serial.Serial('com7',115200, timeout=0.5) print(ser.is_open)while(1):datahex = ser.read(33)DueData(datahex)

5.运行结果

运行程序后,程序提示输入串口号,串口号需要查看设备管理器里面查看,比如我的串口号是com6,那么就输入串口号com6,再输入模块的波特率,JY61默认波特率为115200,JY901系列模块的默认波特率为9600,然后就可以看到解算出来的加速度、角速度和角度信息了。

如果觉得《Python连接维特智能角度传感器JY61/JY901的方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。