前言

在家真的好不方便,等了2天的usb转ttl终于到了,也终于可以学习了

一、JY-901S介绍

● 该产品是基于MEMS技术的高性能三维运动姿态测量系统。它包含三轴陀螺仪、三轴加速度计,三轴电子罗盘等运动传感器。通过集成各种高性能传感器和运用自主研发的姿态动力学核心算法引擎,结合高动态卡尔曼滤波融合算法,为客户提供高精度、高动态、实时补偿的三轴姿态角度,通过对各类数据的灵活选择配置,满足不同的应用场景。
● 领先的基于 Kalman 滤波原理并具有自主知识产权的传感器融合算法,可以实时提供高达 200Hz 更新率的数据,从而满足各种高精度的应用需求,实现准确的动作捕捉和姿态估计。







二、使用步骤

1.安装库

在pycharm中安装串口库

pip install pyserial

2.运行代码

#运行前需先安装pyserial,用WIN+R调出运行框,输入CMD,进入命令行,输入pip install pyserial更新一下函数库import serialACCData=[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的定义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)

总结

数据接收确实是16进制的,但是到了V831上就乱码了,明天用K210试一试。

pycharm读取JY-901S数据相关推荐

  1. python读取20万数据Excel文件+拆分数据

    python读取20万数据Excel文件 使用普通的pandas读取Excel,再结合xlrd读取,可能会读取的Excel数据会不全,最多只能读取到65535+行的数,如果读取超大excel数据时就读 ...

  2. 2021年大数据HBase(十三):HBase读取和存储数据的流程

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase读取和存储数据的流程 一.HBase读取数据的流程 ...

  3. 从PCD文件写入和读取点云数据

    (1)学习向PCD文件写入点云数据 建立工程文件ch2,然后新建write_pcd.cpp  CMakeLists.txt两个文件 write_pcd.cpp : #include <iostr ...

  4. R语言导入、读取网络CSV数据(Read a CSV from a URL)实战:R原生read_csv、readr包、data.table

    R语言导入.读取网络CSV数据(Read a CSV from a URL)实战:R原生read_csv.readr包.data.table 目录 R语言导入.读取网络CSV数据(Read a CSV ...

  5. R语言使用haven包的read_spss函数读取spss格式数据、使用haven包的read_sas函数读取SAS格式数据、使用haven包的read_dta函数读取Stata格式数据

    R语言使用haven包的read_spss函数读取spss格式数据.使用haven包的read_sas函数读取SAS格式数据.使用haven包的read_dta函数读取Stata格式数据 目录

  6. 写入位置 0x00000004 时发生访问冲突_HDFS读取和写入数据简介

    HDFS 的文件访问机制为流式访问机制,即通过 API 打开文件的某个数据块之后,可以顺序读取或者写入某个文件.由于 HDFS 中存在多个角色,且对应的应用场景主要为一次写入.多次读取的场景,因此其读 ...

  7. php mysql 读取中文数据的函数_php读取mysql中文数据出现乱码的解决方法

    以下是对php读取mysql中文数据出现乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下 1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了 解决方 ...

  8. python使用openpyxl读取数据_Python-openpyxl读取和写入数据1

    1.读取单元格保存到文件,注意python中文件报错或者不能写入时改文件后缀:.xls from openpyxl import Workbook from openpyxl import load_ ...

  9. 在Python中读取MATLAB的数据文件

    简 介: 本文测试了几种通过python直接读取MATLAB的**.MAT格式的数据文件,有些方法经过测试发现无法完成.而通过mat4py可以比较方便的读取MATLAB中的数据文件.利用手边已有的用于 ...

最新文章

  1. Android专题-常用第三方框架
  2. 饿了么交付中心语言栈转型总结
  3. Mac上小巧实用的GIF格式录屏软件 LICEcap
  4. 003:Virtualenvwrapper使用
  5. [转载] 让SciTE能够和IDE一样进行成员提示
  6. VTK:几何对象之OpenVROrientedArrow
  7. MYSQL之sql优化——慢查询日志
  8. go interface{}类型转换
  9. mongod无法启动
  10. 基于基站定位数据的商圈分析代码详细解释
  11. [开源] 基于ABP,Hangfire的开源Sharepoint文件同步解决方案----SuperRocket.SPSync
  12. 转 jquery使用技巧小结
  13. Softmax与Cross-entropy的求导
  14. R语言从入门到精通Day2之【R语言软件下载与安装】
  15. 点击图片放大功能 jquery
  16. 计算机文化基础实验教程第十一版课后答案,计算机文化基础实验指导及习题解答...
  17. 我的理想高中作文理想是计算机,我的理想高中优秀作文范文
  18. 华为matebook14摄像头无法启动问题
  19. PhotoSwipe 官方API解读(一)
  20. [统计学笔记] 统计学计算题选讲(精华)

热门文章

  1. oracle远程连接不上问题解决记录
  2. NLP会议介绍 2019(资料整合)
  3. 【STM32】STM32C8T6芯片的PWM模块介绍以及使用
  4. 计算机毕业设计之基于ssm的大学生志愿者服务平台
  5. 哔哩哔哩视频免费下载器
  6. JDK的命令行工具、故障处理分析工具
  7. 天涯文章下载工具TianyaCrawl
  8. 小学计算机课教案书,小学信息技术课教案
  9. War3小外挂之一键开图
  10. 傻眼了!一组超震撼的国外摄影图片欣赏