(Python + micro python)树莓派pico示波器

一、示波器软件(电脑端)

from serial import *
import matplotlib.pyplot as plt
import time

#########   端口设置   ###########
PORT = "COM7"
##################################
print("Loading...")
x_points = ["0"]
y_points = ["0"]
t_0 = time.time()   #新建时间戳

plt.plot(x_points,y_points)

ser = Serial(PORT,9600)     #波特率默认9600
while True:
    line = ser.readline().decode('utf-8').rstrip()      #获取串口信息
    t_1 = time.time()
    x_points.append(round(t_1 - t_0,2))
    y_points.append(line)
    print(line)
    nac = round(t_1 - t_0,2)         #时间差
    plt.clf()
    plt.plot(x_points,y_points)
    plt.xlim(nac - 3*len(x_points),nac + 3*len(x_points))   #波形图x轴取值
    plt.pause(0.01)

ser.close()
plt.show()

二、main.py(树莓派pico端)

from machine import *
from utime import *

ADC_0 = ADC(26)
#ADC_1 = ADC(27)
#ADC_2 = ADC(28)
logicIO = Pin(16,Pin.IN,Pin.PULL_DOWN)
ExitPin = Pin(15,Pin.IN,Pin.PULL_DOWN)
led = Pin(25,Pin.OUT)

led.value(1)
def ShowWave():
    while True:
        res_u16 = ADC_0.read_u16()
        res = res_u16 * 3.3 / 65535
        print(res)
        sleep_ms(200)
        if ExitPin.value() == 1:
            break

        
def ShowLogic():
    while True:
        print(logicIO.value())

#######################################
ShowWave()          #示波器
#ShowLogic()        #逻辑分析仪
#######################################

led.value(0)

### 关于树莓派示波器的相关项目或教程 #### 树莓派作为平台支持多种电子测量工具 树莓派因其强大的计算能力和丰富的接口资源,常被用于构建各种电子测量设备,其中包括示波器功能。通过连接外部硬件并运行特定的软件环境,用户可以在树莓派上实现信号采集、处理以及可视化显示等功能。 #### 硬件需求概述 对于基于树莓派搭建示波器项目的硬件部分,通常需要准备以下组件: - **核心处理器单元**:如树莓派4B或者更新型号[^1]。 - **数据采集模块**:可选用专用ADC芯片或是集成了模数转换电路的小型扩展板卡。 - **探头及其他配件**:高质量测试夹具能够提高测量精度和安全性。 #### 软件环境搭建指南 为了使树莓派具备示波器的功能,在完成必要的物理链接之后还需要设置相应的操作系统及其应用层程序: ##### 安装基础系统镜像 如果尚未拥有适合开发的工作环境,则可以从官方渠道获取预配置好的桌面版本Linux发行版——Raspberry Pi OS Desktop,并按照指导将其写入microSD卡内启动使用。 ##### 编程框架选择MicroPython为例说明 当目标定位于快速原型制作时,采用轻量级解释型语言可能是明智之举。以MicroPython为例介绍如何部署至RP2系列MCU(例如Pico),具体操作如下所示: ```bash wget https://micropython.org/download/rp2-pico/rp2-pico-latest.uf2 sudo cp rp2-pico-latest.uf2 /media/$USER/RPI-RP2/ sync; sleep 5s && eject RPI-RP2 ``` 上述命令序列实现了从互联网拉取最新稳定发布的固件包并通过USB大容量存储模式刷录进目标器件内部闪存区的操作流程[^2]。 ##### 数据展示界面设计思路分享 考虑到用户体验友好度方面的要求,最终呈现形式应该直观易懂。可以考虑利用matplotlib库绘制动态曲线图来实时反映输入电压随时间变化的趋势。下面给出一段简单的演示代码片段供参考学习: ```python import matplotlib.pyplot as plt from time import sleep plt.ion() # 开启交互绘图模式 fig, ax = plt.subplots() line, = ax.plot([], []) while True: xdata.append(next_x_value()) ydata.append(next_y_value()) line.set_data(xdata[-window_size:],ydata[-window_size:]) ax.relim(); ax.autoscale_view() fig.canvas.draw_idle() sleep(0.01) ``` #### 特殊情况下的优化建议 随着技术迭代升级,新一代产品可能引入更高效的通信机制替代传统标准总线方式传输大数据流场景下效率较低的问题。比如在某些高端机型里已经装备了专门针对AI推理任务加速而定制化设计的新一代双通道串行链路方案[^3]。这种改进不仅有助于减少延迟还提升了吞吐能力从而更好地满足高性能数字化仪器的需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值