1. 使用屏幕+lcd
import sensor, lcd
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames()
lcd.init(freq=15000000)
while(True):
lcd.display(sensor.snapshot())
import sensor, lcd
: 首先导入内置的sensor
(摄像头)库和lcd
(屏幕)库sensor.reset()
: 初始化摄像头,这里失败需要检查硬件sensor.set_pixformat(sensor.RGB565)
: 设置摄像头为RGB565
格式,默认都是用RGB565
即可sensor.set_framesize(sensor.QVGA)
: 分辨率为QVGA
,即320x240
sensor.run(1)
: 开始运行,在现在的版本中也可以不调用,在上面设置完成后,摄像头会自动开始运行sensor.skip_frames()
: 摄像头刚启动时,图像质量还没稳定,所以跳过一些图像lcd.init(freq=15000000)
: 初始化 LCD, 这里传了一个参数叫freq
即频率, 是指定驱动 LCD 的时钟频率,这里是15MHz
,可以根据硬件性能调整while(True)
: 这是一个循环,循环里面的代码会被不停地运行sensor.snapshot()
:从摄像头取一帧图像数据,返回值是一张图像的对象lcd.display()
: 显示图像到 LCDlcd.display(sensor.snapshot())
: 这里就是先执行括号里的获取图像,返回值直接作为参数给 LCD 进行显示2. 区分 GPIO
和 IO
的区别:
IO
也可以叫Pin
也就是引脚,是芯片引出来的硬件引脚
而GPIO
是一种外设,可以控制这些Pin/IO
的外设
注:Pin
和外设只能唯一对应
3. 点亮LED
from fpioa_manager import fm
from Maix import GPIO
io_led_red = 13
fm.register(io_led_red, fm.fpioa.GPIO0)
led_r=GPIO(GPIO.GPIO0, GPIO.OUT)
led_r.value(0)
fpioa_manager
包导入fm
对象,主要用于引脚和外设的映射Maix
导入了 GPIO
这个类, GPIO 外设相关操作io_led_red
,值为13
,即Pin13/IO13
使用fm
(fpioa manager 的缩写)这个内置的对象来注册芯片的外设和引脚的对应关系, 这里 fm.fpioa.GPIO0
是 K210 的一个 GPIO 外设(注意区分 GPIO(外设) 和引脚(实实在在的硬件引脚)的区别
), 所以把 fm.fpioa.GPIO0
注册到了 引脚 IO13
;
然后定义一个 GPIO
对象led_r
, 具体参数看 GPIO
API 文档, 在左边侧边栏查找。
使用 led_r.value(1)
或者 led_r.value(0)
来设置高低电平即可, 因为这里设置了低电平, 根据上面的原理图可知低电平导通,LED 灯亮
4. 加载模型
kmodel 模型区: KpuTask = kpu.load(0xm00000) 0xm00000 烧录起始地址
SD卡: task = kpu.load('/sd/kmodel文件名')
5. MaixPy 文件系统的使用
MaixPy 的虚拟文件系统(VFS) 可以挂载多个不同类型文件系统,并为用户操作这些文件系统提供统一接口,用户使用这些接口时可以忽略不同文件系统之间的差异。
这些接口在 os
模块中统一实现。
开机如果有SD
卡, 会自动将当前目录切换到/sd
, 如果没有,则会自动切换到/flash。
例:os.listdir() 不传入参数 默认显示当前目录下文件
6. 开机自启动脚本
系统会在 /flash
或者 /sd
(优先) 目录创建 boot.py
文件和main.py
, 开机会自动先执行boot.py
,然后执行main.py
(如果检测到SD卡则执行SD卡里的), 编辑这两个脚本的内容即可实现开机自启。
7. SD 卡自动拷贝到 Flash 文件系统
将SD上要拷贝到 Flash 文件系统的文件重命名为cover.boot.py
或者cover.main.py
, 然后放到SD
卡根目录, 开发板断电插入SD
卡,然后开发板上电, 程序就会自动将这两个文件拷贝到/flash/boot.py
或者/flash/main.py
,这样就算后面取出了SD
卡,程序已经在 /flash/boot.py
或者/flash/main.py
了
8. 上传运行脚本
(1)Maixpy IDE 发送文件(上传) 运行程序(发送程序到开发板,不烧录)
(2)uPyloader 发送文件(上传) 运行开发板上的文件(execute)
(3)mpfs 文件目录管理(/, sd/)(命令行上传)
运行程序(不上传脚本到板子而是直接在板子上运行该脚本) mpfs put file_in_PC.py
(4)ampy 执行位于电脑上的文件(文件不会保存到开发板) ampy run file_in_PC.py
(5)终端执行 import 文件名
或者 exec()
来运行脚本
9. maixpy和普通C语言开发区别:
C语言开发:C代码编译链接为二进制文件,烧录到flash,由芯片运行它。
maixpy开发:预先烧录好C语言写的固件,通过串口与之通信(发送脚本给开发板),固件程序会解析接收到的脚本内容并执行。
10. 从内存读取(或者网络读取)图像
可以先将文件读取到内存, 具体是从哪里读取的看你的应用了, 比如网络,或者串口 SPI 等等,
构造一个 bytes
对象
import image
jpeg_buff = b'\xFF' # jpeg buffer
img = image.Image(jpeg_buff, from_bytes = True)
print(img)