【雕爷学编程】MicroPython手册之 SAMD21 传输文件

在这里插入图片描述
MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。
在这里插入图片描述
SAMD21是一系列使用32位ARM® Cortex®-M0+处理器的低功耗微控制器,由Microchip Technology公司开发。SAMD21的技术参数如下:

1、处理器:32位ARM® Cortex®-M0+,最高工作频率为48MHz,每兆赫兹可达2.46 Coremark。
2、存储器:闪存容量从32KB到256KB不等,SRAM容量从4KB到32KB不等。
3、电源管理:支持多种低功耗模式,如空闲和待机模式,最低功耗为3.5μA/MHz。
4、外设:拥有丰富的智能和灵活的外设,如直接内存访问控制器(DMAC)、事件系统、定时器/计数器(TC/TCC)、实时时钟(RTC)、看门狗定时器(WDT)、CRC-32生成器、通用串行总线(USB)2.0接口、串行通信接口(SERCOM)、Inter-IC Sound(I2S)接口、模数转换器(ADC/DAC)、模拟比较器(AC)和外设触摸控制器(PTC)。
5、封装:支持多种封装形式,从32引脚到64引脚不等,包括TQFP、QFN、UFBGA和WLCSP。
6、标准:符合AEC-Q100 Grade 1的汽车级标准,工作温度范围为-40°C到+125°C。

在这里插入图片描述
MicroPython的SAMD21传输文件是指在MicroPython环境中使用SAMD21微控制器进行文件传输的功能。

主要特点:

快速传输:SAMD21微控制器具有较高的处理能力和数据传输速度,能够实现快速的文件传输。这使得在嵌入式系统中进行文件传输变得更加高效。
灵活性:MicroPython为开发者提供了丰富的文件操作函数和库,使得文件传输可以以灵活的方式进行。开发者可以根据具体需求选择合适的传输方式和文件处理方法。
低功耗:SAMD21微控制器在进行文件传输时能够有效管理功耗,从而节省能源。这对于依赖于电池供电的嵌入式系统尤为重要。
可扩展性:SAMD21微控制器支持外部存储设备的连接,如SD卡或外部闪存。这使得文件传输能力可以根据需求进行扩展,满足各种规模和类型的应用。

应用场景:

数据日志记录:SAMD21传输文件功能可以用于嵌入式系统中的数据日志记录。通过将传感器数据等重要信息写入文件,可以方便地对数据进行存储和后续分析。
固件升级:SAMD21传输文件功能可以用于固件升级。通过将新固件文件传输到设备上,可以实现对嵌入式系统的软件更新,提升系统性能和功能。
数据采集与传输:SAMD21传输文件功能可以用于数据采集与传输。例如,嵌入式设备采集传感器数据后,可以将数据存储为文件,并通过文件传输功能将数据传输到云端或其他目标设备。

注意事项:

存储容量:在进行文件传输前,需要确保目标存储设备(如SD卡)具有足够的可用空间来存储要传输的文件。否则,传输过程中可能会出现存储空间不足的问题。
文件完整性校验:在文件传输过程中,建议对传输的文件进行完整性校验,以确保文件在传输过程中没有损坏或丢失。可以使用校验和、哈希值等方法进行校验,确保文件的准确性。
错误处理:在文件传输过程中,可能会出现各种错误,如传输中断、传输错误等。开发者需要在代码中实现适当的错误处理机制,以及传输的恢复和重试机制,以确保文件传输的可靠性和完整性。

总结而言,MicroPython的SAMD21传输文件功能通过SAMD21微控制器的高处理能力和灵活性,实现了快速、低功耗的文件传输。它适用于数据日志记录、固件升级和数据采集与传输等应用场景。在使用SAMD21传输文件时,需要注意目标存储设备的容量、文件完整性校验以及错误处理机制,以确保文件传输的可靠性和数据的完整性。

在这里插入图片描述

案例1:通过串口发送文件

from machine import UART
import time

# 初始化串口
uart = UART(2, baudrate=9600)

# 打开文件并读取内容
with open('file.txt', 'rb') as f:
    data = f.read()

# 循环发送文件内容
while True:
    uart.write(data)
    time.sleep(0.1)  # 延时0.1秒

要点解读:这个程序使用UART模块实现了通过串口发送文件的功能。首先,它初始化了一个UART对象,指定了串口号和波特率。然后,它打开了一个文件,并将文件内容读取到变量data中。最后,在一个无限循环中,它将data的内容通过串口发送出去,并延时0.1秒。这样就实现了通过串口发送文件的效果。

案例2:通过SPI传输文件

from machine import Pin, SPI
import time

# 初始化SPI总线
spi = SPI(1, baudrate=40000000, polarity=0, phase=0)

# 打开文件并读取内容
with open('file.txt', 'rb') as f:
    data = f.read()

# 循环发送文件内容
while True:
    # 将数据写入SPI总线
    for i in range(len(data)):
        spi.xfer2([i])
        time.sleep(0.1)  # 延时0.1秒

要点解读:这个程序使用SPI模块实现了通过SPI总线传输文件的功能。首先,它初始化了一个SPI对象,指定了总线编号、波特率、极性和相位。然后,它打开了一个文件,并将文件内容读取到变量data中。最后,在一个无限循环中,它将data的内容逐字节地写入SPI总线,并延时0.1秒。这样就实现了通过SPI总线传输文件的效果。

案例3:通过SD卡传输文件

from machine import SD, SPI
import time

# 初始化SD卡和SPI总线
sd = SD('/dev/mmcblk0')
spi = SPI(1, baudrate=40000000, polarity=0, phase=0)

# 打开文件并读取内容
with open('file.txt', 'rb') as f:
    data = f.read()

# 循环发送文件内容
while True:
    # 将数据写入SD卡
    sd.write(data)
    time.sleep(0.1)  # 延时0.1秒

要点解读:这个程序使用SD卡模块实现了通过SD卡传输文件的功能。首先,它初始化了一个SD对象和一个SPI对象,分别指定了SD卡的路径和总线编号、波特率、极性和相位。然后,它打开了一个文件,并将文件内容读取到变量data中。最后,在一个无限循环中,它将data的内容写入SD卡,并延时0.1秒。这样就实现了通过SD卡传输文件的效果。

案例4:使用UART传输文本文件

import machine  
import uos  
  
# 设置UART引脚  
uart = machine.UART(0, 115200)  
  
# 打开要传输的文本文件  
with open('file.txt', 'r') as f:  
    # 逐行读取文件内容,并通过UART发送  
    for line in f:  
        uart.write(line)

要点解读:
首先导入所需的模块,包括machine和uos。
然后设置UART引脚,这里使用UART0,波特率为115200。
使用with语句打开要传输的文本文件,并以只读模式打开。
使用for循环逐行读取文件内容,并使用uart.write()方法将每行内容通过UART发送出去。

案例5:使用SPI传输二进制文件

import machine  
import uos  
  
# 设置SPI引脚  
spi = machine.SPI(0, sck=machine.Pin(13), mosi=machine.Pin(12), miso=machine.Pin(14))  
  
# 打开要传输的二进制文件  
with open('file.bin', 'rb') as f:  
    # 读取文件内容,并通过SPI发送  
    while True:  
        data = f.read(1024)  
        if not data:  
            break  
        spi.write(data)

要点解读:
首先导入所需的模块,包括machine和uos。
然后设置SPI引脚,这里使用SPI0,并指定SCK、MOSI和MISO引脚。
使用with语句打开要传输的二进制文件,并以二进制只读模式打开。
使用while循环读取文件内容,每次读取1024字节,并使用spi.write()方法将读取到的数据通过SPI发送出去。当读取到的数据为空时,跳出循环。

案例6:使用I2C传输图片文件

import machine  
import uos  
import sensor  
import image  
import lcd  
  
# 设置I2C引脚和LCD屏幕参数  
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=100000)  
lcd = lcd.LCD(i2c, 240, 320, color=lcd.COLOR_RGB565)  
  
# 打开要传输的图片文件,并显示在LCD屏幕上  
with open('image.jpg', 'rb') as f:  
    img = image.Image(f)  
    lcd.display(img)

要点解读:
首先导入所需的模块,包括machine、uos、sensor、image和lcd。
然后设置I2C引脚和LCD屏幕参数,这里使用I2C0,并指定SCL和SDA引脚。设置LCD屏幕分辨率为240x320,颜色模式为RGB565。
使用with语句打开要传输的图片文件,并以二进制只读模式打开。将读取到的图片数据保存在img变量中。
使用lcd.display()方法将img变量中的图片数据显示在LCD屏幕上。

案例7:使用mpremote工具传输文件

# 安装mpremote工具
pip install mpremote

# 连接到SAMD21设备
mpremote connect /dev/ttyACM0

# 列出设备上的文件
mpremote ls

# 从设备上下载文件
mpremote get boot.py

# 上传文件到设备上
mpremote put main.py

# 运行设备上的文件
mpremote run test.py

# 退出mpremote工具
mpremote exit

案例8:使用rshell工具传输文件

# 安装rshell工具
pip install rshell

# 连接到SAMD21设备
rshell -p /dev/ttyACM0

# 列出设备上的文件
ls /pyboard

# 从设备上下载文件
cp /pyboard/boot.py .

# 上传文件到设备上
cp main.py /pyboard

# 运行设备上的文件
repl ~ import test ~

# 退出rshell工具
exit

案例9:使用Thonny IDE传输文件

# 安装Thonny IDE
pip install thonny

# 打开Thonny IDE,选择Tools -> Options -> Interpreter -> MicroPython (generic)
# 选择SAMD21设备的端口号,点击OK

# 在Thonny IDE中编写或打开一个Python文件,例如main.py

# 点击File -> Save as -> This Computer -> MicroPython device,保存文件到设备上

# 点击Run -> Run current script,运行设备上的文件

# 点击File -> Open -> MicroPython device,打开设备上的一个文件,例如boot.py

# 点击File -> Save as -> This Computer,保存文件到本地电脑上

# 关闭Thonny IDE

这些程序的要点解读如下:
首先,安装需要的工具或IDE,可以使用pip命令或其他方式。
然后,连接到SAMD21设备,需要知道设备的端口号或驱动盘符。
接着,使用不同的命令或操作来传输文件,包括列出、下载、上传和运行。
最后,退出工具或IDE,断开连接。

请注意,以上案例只是为了拓展思路,可能存在错误或不适用的情况。不同的硬件平台、使用场景和MicroPython版本可能会导致不同的使用方法。在实际编程中,您需要根据您的硬件配置和具体需求进行调整,并进行多次实际测试。确保正确连接硬件并了解所使用的传感器和设备的规范和特性非常重要。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/133451154