文章目录

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

1. 准备工具

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

2. 环境安装

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

视频地址

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

然后默认配置,一路下一步即可完成安装。安装完成后,我们还需要安装Pyserial函数库。
用管理员方式运行命令提示符,然后输入:

pip install pyserial

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

3.硬件连接

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

USB串口模块 JY61/JY901模块
+5V VCC
TX RX
RX TX
GND GND

4. 运行代码

在python的环境中打开示例程序,然后运行。
代码如下:

#coding:UTF-8
#运行前需先安装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)         

5.运行结果

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

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

  1. 51单片机连接维特智能JY61串口6轴加速度陀螺仪(通过串口中断实现数据的现实)

    51单片机连接维特智能JY61串口6轴加速度陀螺仪(通过串口中断实现数据的现实) 1.JY61的初始化 利用USB转TTL模块连接只需要连接: 打开厂家赠送的上位机软件,模块出厂默认设置使用串口,波特 ...

  2. 西门子PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器HWT905(4)——多传感器多角度报警

    目录 1. 系列文章目录 2. 准备工具 3. 视频教程 4. 实现功能: 5. 前期准备: 6. 硬件连接: 7. 示例程序: 1. 系列文章目录 (1)--环境搭建 (2)--单传感器单角度报警 ...

  3. Python连接Greenplum及常用gp函数和方法(持续更新)

    前言 了解postgresql Python连接gp 记录postgresql一些函数和方法(持续更新) ①:int类型时间转time类型时间 ②:合并两列值 ③:取最近N个月数据 ④:按指定字符串或 ...

  4. 三菱PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器(1)——环境搭建

    目录导航: (1)--环境搭建 (2)--单传感器单角度报警 (3)--传感器校准 (4)--多传感器多角度报警 背景介绍 最近因项目需要,要使用PLC来获取设备倾斜角度并发出报警,经仔细研究调研,P ...

  5. 树莓派pico使用维特智能jy61/jy901/jy61p陀螺仪

    材料: 树莓派pico开发板(焊好排针方便插线) jy61或jy61p或jy901 杜邦线4根,分别插rx.tx.vcc.gnd(具体见后文) 一根microusb数据线连接树莓派pico和电脑    ...

  6. 用STM32读取6轴角度传感器JY61的陀螺仪、加速度、角度数据MPU6050

    文章目录 1 介绍 2 开发准备 2.1硬件.软件准备 2.2 接线方式 3 程序讲解 3.1程序思路讲解 3.2 main函数 3.3 串口1初始化 3.4 串口2初始化 3.5 串口2中断服务函数 ...

  7. 学习 stm32(TTL)串口通信控制16路舵机控制板(维特智能)

    学习STM32Core平台串口2连接维特智能串口Normal协议,然后通过串口1直接连接舵机控制板(TTL),接收进行通信:需要看产品文档的可以直接官网搜索文档. 16路舵机控制板官方产品网址 在查看 ...

  8. 【UAV】陀螺仪数据分析,以维特智能 JY901B 为例

    文章目录 简介 1 加速度 Acceleration 2 陀螺仪 Gyroscope 3 欧拉角 Euler angles 4 磁场 Magnetic 5 四元数 Quaternion 6 时间 7 ...

  9. 维特智能IMU 接入ROS发布IMU数据类型话题

    #维特智能IMU 接入ROS发布IMU数据类型话题 1.准备工作 1.1安装串口功能包 sudo apt-get install ros-melodic-serial 1.2创建功能包 $ cd ~/ ...

最新文章

  1. 浅谈几种区块链网络攻击以及防御方案之其它网络攻击
  2. zabbix服务器性能监控工具的安装二
  3. x3650m5不自动进系统_17日起,泉州这个地方自动抓拍系统启用!这些车闯红灯、严重超载、不按道行驶被查处曝光!【交通大整治】...
  4. android 系统重启关机 方法 非常好的一篇文章
  5. python中pow_python – 为什么pow(x,y)的时间复杂度为O(1),而x ** y为O(n)?
  6. 【C++ grammar】常量、指针、Usage of using, typedef, and #define
  7. 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存/乐观悲观锁等优化算法)...
  8. 深入理解jQuery插件开发
  9. mysql数据库入门传智播客答案_MySQL数据库入门
  10. C# 网络爬虫 抓取“北京标准时间“ 网页请求
  11. 阅读替换净化规则_阅读3.0来了 — 全网免费阅读功能更强大
  12. 函数的基本用法c语言,C语言(函数基本用法).ppt
  13. Observer (观察者) 模式
  14. 计算机ping命令6,Mac电脑ping命令区别和IPv6命令
  15. CSS - 知识清单(自用)
  16. 红光光浴,美容抗衰神器
  17. Cortex-M3处理器的舞台
  18. [区块链安全-Ethernaut]区块链智能合约安全实战-已完结
  19. 迅雷联合创始人程浩首次反思:我们为何错失三大机遇?
  20. python制作俄罗斯方块

热门文章

  1. 泛型(泛型类、泛型方法)
  2. 机器学习隐私保护-MPC通用编译器
  3. squid完全攻略 squid优化后详细安装步骤
  4. swath data 是什么意思
  5. 入IC行业,需不需要找培训机构
  6. 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?用循环嵌套结构完成。(数字组合)
  7. 3.1 jmeter 响应断言
  8. 方程求根的迭代法——牛顿迭代法
  9. Mac 配置Git与常用命令
  10. wifi无线认证,802.1x认证上网方式详解