BNO055 USB Stick Linux Python驱动程序

bno055-usb-stick-p的Python项目详细描述


BNO055 USB Stick Python驱动程序

PyPI version

tl;dr:“瑞士军刀”用于 ^{} 在Linux下从python3

BNO055 USB Stick附带 ^{} 软件包, 仅适用于Windows

如果你有一个BNO055 USB Stick并且想 在Linux平台上使用 (例如ubuntu、raspbian、yocto、suse等) 这个repo为您提供了一个python 3驱动程序, 能够读/写寄存器/突发读, 和流数据读取

操作系统先决条件

  1. 当插入Linux系统时, 应该出现BNO055 USB Stick 作为/dev/ttyACM*设备。 这个装置就是所谓的 ^{} (通讯设备类),但让我们离开 现在这些细节。

  2. 您的Linux用户必须是 dialout群 (例如,请参阅此thread) 能够读/写ttyACM*设备 没有根权限

  3. udev已安装在系统上。 我们依靠来自 乌德夫。

安装

pip install bno055_usb_stick_py

支持的Python版本

python v3.6+

python依赖项

tl;dr:安装 (i)pyserial, (ii)pyudev, (iii)dataclasses(如果使用python3.6),以及 (iv)可选:pyquaternion 以及matplotlib, 或使用 ^{} 创建conda环境 已解决依赖关系。

有关创建condasenvironment的更多详细信息,请阅读this指南。

快速启动

读取bno寄存器:

frombno055_usb_stick_pyimportBnoUsbStickbno_usb_stick=BnoUsbStick()reg_addr=0x00reg_val=bno_usb_stick.read_register(reg_addr)print(f"bno chip id addr: 0x{reg_addr:02X}, value: 0x{reg_val:02X}")

写入寄存器:

frombno055_usb_stick_pyimportBnoUsbStickbno_usb_stick=BnoUsbStick()reg_addr=0x3Freg_value=0x01bno_usb_stick.write_register(reg_addr,reg_value)print(f"bno self test started!")

突发寄存器读取:

frombno055_usb_stick_pyimportBnoUsbStickbno_usb_stick=BnoUsbStick()reg_start_addr=0x08num_registers=0x12burst_read_result=bno_usb_stick.burst_read(reg_start_addr,num_registers)print(f"bno burst read result: {burst_read_result}")

在流模式下获取10个数据包(使用生成器):

frombno055_usb_stick_pyimportBnoUsbStickbno_usb_stick=BnoUsbStick()bno_usb_stick.activate_streaming()forpacketinbno_usb_stick.recv_streaming_generator(num_packets=10):print(f"bno data: {packet}")

在流模式下获取100个数据包(通过接收单个数据包):

frombno055_usb_stick_pyimportBnoUsbStickbno_usb_stick=BnoUsbStick()bno_usb_stick.activate_streaming()for_inrange(100):packet=bno_usb_stick.recv_streaming_packet()print(f"{packet}")

接收无限数量的数据包(如果您等待无限时间:wink:):

frombno055_usb_stick_pyimportBnoUsbStickbno_usb_stick=BnoUsbStick()bno_usb_stick.activate_streaming()forpacketinbno_usb_stick.recv_streaming_generator():print(f"{packet}")

bNo USB Stick数据包

当以流模式接收数据时,结果 是BNO055数据类(来自bno055.py)文件的对象。

BNO055数据类有以下字段:

frombno055_usb_stick_pyimportBNO055bno_data=BNO055()bno_data.a_raw# raw accelerometer data (a_raw_x, a_raw_y, a_raw_z)bno_data.g_raw# raw gyro data (g_raw_x, g_raw_y, g_raw_z)bno_data.m_raw# raw magnetometer data (m_raw_x, m_raw_y, m_raw_z)bno_data.euler_raw# raw euler angles (heading, roll, pitch)bno_data.quaternion_raw# raw quaternion data (q_raw_w, q_raw_x, q_raw_y, q_raw_z)bno_data.lin_a_raw# raw linear acceleration data (lin_a_raw_x, lin_a_raw_y, lin_a_raw_z)bno_data.gravity_raw# raw gravity vector (gravity_raw_x, gravity_raw_y, gravity_raw_z)bno_data.a# accelerometer (a_x, a_y, a_z)bno_data.g# gyroscope (g_x, g_y, g_z)bno_data.m# magnetometer (m_x, m_y, m_z)bno_data.euler# euler angler (heading, roll, pitch)bno_data.quaternion# quaternion values (q_w, q_x, q_y, q_z)bno_data.lin_a# linear acceleration (lin_a_x, lin_a_y, lin_a_z)bno_data.gravity# gravity vector (gravity_x, gravity_y, gravity_z)bno_data.temp# temperature registerbno_data.calib_stat# calibration status (addr 0x35) registerbno_data.st_result# status result (addr 0x36) registerbno_data.int_sta# interrupt status (addr 0x37) registerbno_data.sys_clk_status# system clock status (addr 0x38) registerbno_data.sys_status# system status (addr 0x39) register

阻止调制解调器管理器捕获串行设备

在ubuntu上插入bno_usb_stick时, 设备在前10-15秒不可用, 因为ModemManager进程 接管并尝试使用设备

为了避免这种ubuntu特有的行为, 向udev规则添加异常, s.t.ModemManager忽略bno_usb_stick。 运行脚本:

python disable_modem_manager_bno_usb_stick.py

脚本需要根权限。基本上是复制的 将97-ttyacm.rules文件加载到/etc/udev/rules.d,并重新加载 udev规则

维修人员

Dr. Konstantin Selyunin, 建议/问题/评论 请联系: 塞尔尤宁[dot]k[dot]v[at]gmail[dot]com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过两个整数数组对正整数和负整数进行排序   java无参数和默认构造函数混淆   java加载文件MD5的最快方法是什么?   java如何在变量声明中使用带“e”的float   java将项目导入到STS iMac   java在使用图像时旋转图像   java Break语句不起作用   java提供了错误类型Spring的id   java如何为多个变量设置相同的函数属性?   JavaMaven:如何添加编译阶段后生成的资源   java HashMap已损坏/性能问题   java Hibernate SQL中间表b/w父表和子表(不同类型)   java PDFbox找不到字体:/Helv   Java:向自实现的双链接列表添加排序函数   为使用Java BouncyCastle生成的X509Certificate提供密钥使用的安全性   java Hibernate在读写方面的性能   C#相当于Java的DataOutputStream?