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转串口模块连接到电脑上,连接顺序如下:
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的方法相关推荐
- 51单片机连接维特智能JY61串口6轴加速度陀螺仪(通过串口中断实现数据的现实)
51单片机连接维特智能JY61串口6轴加速度陀螺仪(通过串口中断实现数据的现实) 1.JY61的初始化 利用USB转TTL模块连接只需要连接: 打开厂家赠送的上位机软件,模块出厂默认设置使用串口,波特 ...
- 西门子PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器HWT905(4)——多传感器多角度报警
目录 1. 系列文章目录 2. 准备工具 3. 视频教程 4. 实现功能: 5. 前期准备: 6. 硬件连接: 7. 示例程序: 1. 系列文章目录 (1)--环境搭建 (2)--单传感器单角度报警 ...
- Python连接Greenplum及常用gp函数和方法(持续更新)
前言 了解postgresql Python连接gp 记录postgresql一些函数和方法(持续更新) ①:int类型时间转time类型时间 ②:合并两列值 ③:取最近N个月数据 ④:按指定字符串或 ...
- 三菱PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器(1)——环境搭建
目录导航: (1)--环境搭建 (2)--单传感器单角度报警 (3)--传感器校准 (4)--多传感器多角度报警 背景介绍 最近因项目需要,要使用PLC来获取设备倾斜角度并发出报警,经仔细研究调研,P ...
- 树莓派pico使用维特智能jy61/jy901/jy61p陀螺仪
材料: 树莓派pico开发板(焊好排针方便插线) jy61或jy61p或jy901 杜邦线4根,分别插rx.tx.vcc.gnd(具体见后文) 一根microusb数据线连接树莓派pico和电脑 ...
- 用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中断服务函数 ...
- 学习 stm32(TTL)串口通信控制16路舵机控制板(维特智能)
学习STM32Core平台串口2连接维特智能串口Normal协议,然后通过串口1直接连接舵机控制板(TTL),接收进行通信:需要看产品文档的可以直接官网搜索文档. 16路舵机控制板官方产品网址 在查看 ...
- 【UAV】陀螺仪数据分析,以维特智能 JY901B 为例
文章目录 简介 1 加速度 Acceleration 2 陀螺仪 Gyroscope 3 欧拉角 Euler angles 4 磁场 Magnetic 5 四元数 Quaternion 6 时间 7 ...
- 维特智能IMU 接入ROS发布IMU数据类型话题
#维特智能IMU 接入ROS发布IMU数据类型话题 1.准备工作 1.1安装串口功能包 sudo apt-get install ros-melodic-serial 1.2创建功能包 $ cd ~/ ...
最新文章
- 浅谈几种区块链网络攻击以及防御方案之其它网络攻击
- zabbix服务器性能监控工具的安装二
- x3650m5不自动进系统_17日起,泉州这个地方自动抓拍系统启用!这些车闯红灯、严重超载、不按道行驶被查处曝光!【交通大整治】...
- android 系统重启关机 方法 非常好的一篇文章
- python中pow_python – 为什么pow(x,y)的时间复杂度为O(1),而x ** y为O(n)?
- 【C++ grammar】常量、指针、Usage of using, typedef, and #define
- 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存/乐观悲观锁等优化算法)...
- 深入理解jQuery插件开发
- mysql数据库入门传智播客答案_MySQL数据库入门
- C# 网络爬虫 抓取“北京标准时间“ 网页请求
- 阅读替换净化规则_阅读3.0来了 — 全网免费阅读功能更强大
- 函数的基本用法c语言,C语言(函数基本用法).ppt
- Observer (观察者) 模式
- 计算机ping命令6,Mac电脑ping命令区别和IPv6命令
- CSS - 知识清单(自用)
- 红光光浴,美容抗衰神器
- Cortex-M3处理器的舞台
- [区块链安全-Ethernaut]区块链智能合约安全实战-已完结
- 迅雷联合创始人程浩首次反思:我们为何错失三大机遇?
- python制作俄罗斯方块