学习如何在本地计算机上写入文件,以便您可以在Micropopython中使用Raspberry Pi Pico或Pico W节省较大的文件。到本视频结束时,您将能够写入以在计算机上保存数据,例如传感器数据,而无需在PICO上使用任何存储!您也可以在此视频中使用相同的方法将文件从PICO写到本地PC!
!这有很好的应用程序用于存储传感器收集的大量数据。
最好的?它非常简单,只需要一些Python代码。
步骤1:PIP在桌面上安装四利方包
您需要此包来运行您需要与PICO通信的本地Python脚本。
您需要在本地计算机上作为先决条件。
步骤2:在本地计算机上准备Python代码
在您的本地PC上创建一个Python脚本,并在您喜欢的任何地方保存。该脚本将具有以下内容
import serial
# Configure the serial connection
port = "/dev/cu.usbmodem1101"
baudrate = 115200
serial_connection = serial.Serial(port, baudrate)
# Open a file on your computer to write the received data
destination_file = open("/Users/mahmoodshilleh/Desktop/store_info.txt", "wb")
# Read and write data until the transfer is complete
while True:
data = serial_connection.read(128)
if data == b"EOF":
break
print(data)
destination_file.write(data)
# Close the files and serial connection
destination_file.close()
serial_connection.close()
有关此代码的一些注释:
- 您需要用PICO端口替换端口。您可以使用Thonny IDE并查看右下角查看连接端口。
- Baudrate不需要更改
- 目标文件是您本地计算机上文件的完整路径,您可以根据自己的喜好进行更改。您可以简单地创建一个空文件。
- 您不需要使用128进行serial_connection读取。这只是为了指定本地计算机将数据写入文件并将其打印到屏幕之前累积的字节数。值越小,它会写的越频率/越快。
- 我在IF语句中指定了出口条件,但我从未使用过。您可以使用控制权,否则串行通信将无限期进行。
保存文件,直到我们在PICO上设置Micropython文件!
才能运行步骤3:在pico上准备微食码
您需要在pico上创建一个main.py文件才能添加代码。您可能已经有一个。使用MicropyThon时,如果Main.py文件存在于PICO文件系统的根目录中,则将自动执行。我们要这样做的原因是,当我们使用Thonny或其他IDE在PICO上编写代码时,我们实际上建立了与端口的串行连接,以便将代码发送。因此,我们不能与在本地计算机上运行Python脚本一起在Thonny中运行Micropython脚本,因为两者都试图同时访问相同的串行端口,您将遇到错误。
为了打击此效果,我们将在thonny中的main.py文件上写代码,然后保存它,然后拔下插头和重新启动PICO。这样,将不再与Thonny的PICO进行串行通信,它将在由您的计算机供电后自动运行脚本。希望这是有道理的。这是做事的一种自举方法,但它起作用非常简单。
pico上的main.py文件上的代码如下:
import machine
from machine import I2C, Pin
import time
import uos
import bme280
# need this UART to read from BME and be able to send data to local computer
uart = machine.UART(0, baudrate=115200)
uart.init(115200, bits=8, parity=None, stop=1, tx=Pin(0), rx=Pin(1))
uos.dupterm(uart)
i2c=I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
bme = bme280.BME280(i2c=i2c)
while True:
temperature, pressure, humidity = bme.read_compensated_data()
print('{:.1f} C,{:.1f} %,{:.1f} hPa'.format(temperature/100, humidity/1024, pressure/25600))
time.sleep(1)
有关此代码的一些注释
- 您只需要BME280库,如果您使用的是BME280传感器,则可以从Thonny的Package Manager下载此。
- 我们使用机器库在硬件级别与PICO进行交互,而UOS与PICO操作系统进行交互。
- 时间用于管理段循环的间隔。
- UART代表通用的异步接收器 - 发射器。这是一个硬件通信接口,允许两个设备之间进行串行通信。 UART通常用于在微控制器,嵌入式系统和各种外围设备之间传输和接收数据。我们需要配置一些UART设置,以便我们可以读取传感器值并通过串行端口传输数据。没有这个初始化,我们将遇到传感器连接问题。
- while循环中的打印语句试图打印到通信端口,也就是说,它是试图将数据发送到本地计算机的打印语句,这是如果要包含在内,这是您需要更改的行其他数据。我想你们中的大多数人都使用传感器/数据与温度,压力和湿度不同。您可以在此行上编辑信息。
将其保存在PICO上并拔下电源,然后将其插入计算机上的电源。它应该执行main.py文件,但尚未写入文件,因为您尚未在本地计算机上运行脚本。
您现在可以在本地计算机上运行脚本如下 - > python或python3
您应该根据OS开始查看终端或CMD中的打印语句。除非有退出条件,否则该文件将永远填充数据。您可以在终端/cmd中使用“控制 + C”退出,以在循环时停止本地。
您可以大大改进代码。但是我希望这对您有用,并且您可以看到如何从串行通信中发送数据。另外,请注意,您可以发送已经存在的文件,不必是实时数据。您只需通过通信频道发送任何形式的字节!
这是做一些很酷的工作和项目的绝佳骨干。希望它能帮助某人。有关我的频道上的更多细节和更好的解释。一定要喜欢,评论和订阅�请继续关注;)