python之pyQt5实例:树莓派+MPU6050采集数据

1、安装必要的软件包:

sudo apt-get update
sudo apt-get install python3-smbus python3-dev i2c-tools
sudo apt-get install python3-smbus

2、确认I2C接口已经启用:

运行 sudo raspi-config 命令打开Raspberry Pi配置工具。

在菜单中选择 "5 Interfacing Options",然后 "P5 I2C"。

确保已经启用了I2C接口。

3、确认传感器连接正确:

请确认MPU6050的VCC引脚已正确连接到树莓派的3.3V电源引脚。

请确认MPU6050的GND引脚已正确连接到树莓派的地引脚(GND)。

请确认MPU6050的SCL引脚(时钟)已正确连接到树莓派的GPIO3引脚(BCM标号为2)。

请确认MPU6050的SDA引脚(数据)已正确连接到树莓派的GPIO2引脚(BCM标号为3)。

4、进入存放代码的目录

cd /home/pi/my_code_directory

5、新建py文件

nano mpu6050_qt.py

6、输入代码

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton, QLabel, QMessageBox
from PyQt5.QtCore import QTimer
import RPi.GPIO as GPIO
import smbus

class DataCollectionApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Data Collection App")

        # 创建按钮和标签
        self.start_button = QPushButton("开始采集")
        self.stop_button = QPushButton("停止采集")
        self.accel_label = QLabel("等待数据采集...")
        self.gyro_label = QLabel("等待数据采集...")

        # 设置布局
        layout = QVBoxLayout()
        layout.addWidget(self.start_button)
        layout.addWidget(self.stop_button)
        layout.addWidget(self.accel_label)
        layout.addWidget(self.gyro_label)

        central_widget = QWidget()
        central_widget.setLayout(layout)

        self.setCentralWidget(central_widget)

        # 连接信号和槽函数
        self.start_button.clicked.connect(self.start_collection)
        self.stop_button.clicked.connect(self.stop_collection)

        # 初始化状态
        self.is_collecting = False
        self.timer = QTimer()
        self.timer.timeout.connect(self.update_data)

    def start_collection(self):
        if not self.is_collecting:
            self.is_collecting = True
            self.timer.start(2000)  # 每2秒更新一次数据
        else:
            QMessageBox.warning(self, "警告", "采集已经开始!")

    def stop_collection(self):
        if self.is_collecting:
            self.is_collecting = False
            self.timer.stop()
        else:
            QMessageBox.warning(self, "警告", "采集尚未开始!")

    def read_data(self):
        bus = smbus.SMBus(1)
        device_address = 0x68  # MPU6050设备地址

        # 启动加速度计和陀螺仪
        bus.write_byte_data(device_address, 0x6B, 0x00)
        bus.write_byte_data(device_address, 0x1B, 0x08)

        # 读取加速度值
        accel_x = self.read_word_2c(bus, device_address, 0x3B)
        accel_y = self.read_word_2c(bus, device_address, 0x3D)
        accel_z = self.read_word_2c(bus, device_address, 0x3F)

        # 读取角速度值
        gyro_x = self.read_word_2c(bus, device_address, 0x43)
        gyro_y = self.read_word_2c(bus, device_address, 0x45)
        gyro_z = self.read_word_2c(bus, device_address, 0x47)

        return (accel_x, accel_y, accel_z), (gyro_x, gyro_y, gyro_z)

    def read_word_2c(self, bus, address, register):
        high = bus.read_byte_data(address, register)
        low = bus.read_byte_data(address, register + 1)
        value = (high << 8) + low

        if value >= 0x8000:
            return -((65535 - value) + 1)
        else:
            return value

    def update_data(self):
        acceleration, gyro = self.read_data()

        accel_data = "加速度:{},{},{}".format(acceleration[0], acceleration[1], acceleration[2])
        gyro_data = "角速度:{},{},{}".format(gyro[0], gyro[1], gyro[2])

        self.accel_label.setText(accel_data)
        self.gyro_label.setText(gyro_data)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = DataCollectionApp()
    window.show()
    sys.exit(app.exec_())

7、执行代码

python3 mpu6050_qt.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/630871.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EFCore_创建项目

添加依赖 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools(Migration工具) 根据使用的DB添加对应依赖&#xff1a; SQL Server&#xff1a;Microsoft.EntityFrameworkCore.SqlServer 添加该依赖时可不添加Microsoft.EntityFrameworkCore&#xff0c;该依…

一文详细解析Google编码规范工具cpplint的下载安装与使用

目录 一、什么是cpplint 二、cpplint能实现的功能 三、cpplint的下载与使用 1、配置python环境 2、安装cpplint 四、cpplint常用命令讲解 1、常用命令查看 2、常用命令详解 3、命令使用方式 五、 cpplint的实用技巧 1、集成cpplint 1.1、修改调用接口. 1.2、直接把…

基于Spring封装一个websocket工具类使用事件发布进行解耦和管理

最近工作中&#xff0c;需要将原先的Http请求换成WebSocket&#xff0c;故此需要使用到WebSocket与前端交互。故此这边需要研究一下WebSocket到底有何优点和不可替代性&#xff1a; WebSocket优点&#xff1a; WebSocket 协议提供了一种在客户端和服务器之间进行全双工通信的…

高质量英文文献应该如何查找并且阅读?

1. 查找 使用谷歌学术进行论文关键字检索&#xff0c;查找高度匹配的论文。这里我们可以选择年限等信息进行筛选。作为研究者我们一般选择近三年的文章进行阅读。这里谷歌学术需要科学上网&#xff0c;请大家自行解决。 https://scholar.google.com/ 2. 查看期刊等级 我们查…

Go Gin使用JWT实现认证机制

什么是JWT JWT是JSON Web Token的缩写,是一种跨域认证的解决方案。 使用JWT解决什么问题 传统的登录认证的实现,依赖客户端浏览器的cookie和服务器的session,这种实现登录的方式有很大的局限性。 对于部署在单台服务器的应用来说,使用cookie+session登录认证的方案尚…

Apache2.4和PHP8的量子纠缠

Apache不建议你用&#xff0c;PHP建议使用

二进制部署k8s---下篇

一 master02 节点部署 1 先在master01 添加映射master02 对master02进行环境初始化 3 从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点 scp -r /opt/etcd/ root192.168.11.12:/opt/ scp -r /opt/kubernetes/ root192.168.11.12:/opt…

scanf读取标准输入

内容 scanf函数的原理 多种数据类型混合输入 常用的数据输入/输出函数 程序员可以给程序输入数据&#xff0c;程序处理后会返回一个输出。C语言通过函数库读取标准输入&#xff0c;然后通过对应函数处理将结果打印到屏幕上&#xff0c;printf函数可以将结果打印到屏幕上。下…

中国品牌日 | 紫光展锐以科技创新驱动品牌价值 提升全球竞争力

5月10日至5月14日&#xff0c;以“中国品牌&#xff0c;世界共享&#xff1b;国货潮牌&#xff0c;品筑未来”为主题的第八届中国品牌日活动在上海世博展览馆举行。该活动由国家发展改革委联合国务院国资委、市场监管总局、国家知识产权局共同主办&#xff0c;聚焦新经济新消费…

高通QCS6490开发(一): 广翼智联FV01 AI板卡简介

《高通QCS6490开发》是一系列AIoT应用开发文章&#xff0c;我们将会在系列文章中陆续介绍基于QCS6490平台上的AIoT应用开发&#xff0c;在文章中&#xff0c;我们选择了广翼智联&#xff08;FAIOT&#xff09;公司的FV01产品作为开发板&#xff0c;介绍如何从底层的硬件板卡接线…

JETBRAINS IDES 分享一个2099通用试用码!PhpStorm 2024 版 ,支持一键升级

文章目录 废话不多说上教程&#xff1a;&#xff08;动画教程 图文教程&#xff09;一、动画教程激活 与 升级&#xff08;至最新版本&#xff09; 二、图文教程 &#xff08;推荐&#xff09;Stage 1.下载安装 toolbox-app&#xff08;全家桶管理工具&#xff09;Stage 2 : 下…

软考一年只能考一次吗?24软考各科目考试时间一览表

软考考试次数&#xff1a; 软考高级【系统分析师】及【系统架构设计师】是一年考两次的。 此外&#xff0c;软考中级【软件设计师】和【网络工程师】也是一年考两次的。 其他科目一年都只开考一次&#xff0c;或者上半年开考&#xff0c;或者下半年开考&#xff0c;具体考试…

PCIE V3.0物理层协议学习笔记

一、说明 PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准&#xff0c;它原来的名称为“3GIO”&#xff0c;是由英特尔在2001年提出的&#xff0c;旨在替代旧的PCI&#xff0c;PCI-X和AGP总线标准。 PCIe属于高速串行点对点双通道高…

私活更好用:SpringBoot开源项目!!【送源码】

今天分享一款非常香的SpringBoot大屏开源项目&#xff0c;非常适合接私活用。 这是一款基于SpringBoot代码生成器的快速开发平台&#xff01;采用前后端分离架构&#xff1a;SpringBoot&#xff0c;Mybatis&#xff0c;Shiro&#xff0c;JWT&#xff0c;Vue&Ant Design。强…

【永洪BI】资源导出

路径&#xff1a;管理系统>资源部署>资源导出 1.页面介绍 选择左侧面板中的管理系统&#xff0c;点击资源部署&#xff0c;选择资源导出&#xff0c;进入资源导出页面。 【名称】导出的 jar 文件的名称&#xff0c;必填项。 【描述】导出的 jar 文件中包含的描述信息…

Maven依赖管理项目构建

Maven依赖管理项目构建工具 目录 文章目录 Maven依赖管理项目构建工具目录一、Maven简介1、为什么学习Maven1.1、Maven是一个依赖管理工具1.2、Maven是一个构建工具1.3、结论 2. Maven介绍3. Maven软件工作原理模型图&#xff08;了解&#xff09; 二、Maven安装和配置1. Mave…

TCP(1)

传输层的两大协议是TCP 和 UDP &#xff0c;他们在传输数据的时候起到了不可替代的作用。那么什么是TCP呢&#xff1f; 首先TCP是一个网络传输协议&#xff0c;这个协议保证了可靠的数据传输。TCP是面向字节流的&#xff0c;全双工的&#xff08;也就是通信双方互相发消息&…

【Qt】Qt组件设置背景图片

1. 方法1&#xff08;paintEvent方式&#xff09; 使用paintEvent()实现 1. .h文件中添加虚函数 protected:void paintEvent(QPaintEvent *event) override;添加虚函数方法&#xff1a; 选中父类&#xff0c;点击鼠标右键点击重构点击 Insert Virtual Funtion of Base Class…

【C语言】6.C语言VS实用调试技巧(1)

文章目录 1.什么是 bug2.什么是调试&#xff08;debug&#xff09;&#xff1f;3.Debug 和 Release4.VS调试快捷键4.1 环境准备4.2 调试快捷键 5.监视和内存观察5.1 监视5.2 内存 1.什么是 bug bug现在一般是指在电脑系统或程序中&#xff0c;隐藏着的一些未被发现的缺陷或问题…

MaxKB创建本地知识库

上节已经可以通过MaxKB创建简单的问答系统了&#xff0c;这节开始做自己的知识库&#xff0c;实际上就是把一些本地文件上传到大模型中&#xff0c;让大模型学会这些文件内容&#xff0c;你在问他问题的时候可以通过此文件的内容来回答你&#xff0c;尤其是在针对特定场景或者特…