3041浏览
查看: 3041|回复: 0

[官方教程] Maixduino系列实验 (9)- 学习搭建MaixPy IDE(Micropython)开发...

[复制链接]
本帖最后由 猪百岁 于 2021-3-3 18:09 编辑

Maixduino系列实验(9)---学习搭建MaixPy IDE(Micropython)开发环境

MonMarch-202103015319..png

MaixPy是将Micropython移植到K210(一款64位双核带硬件FPU丶卷积加速器丶FFT丶sha256的RISC-V CPU)的一个项目,支持MCU常规操作,更集成了机器视觉和麦克风阵列,以快速开发具有极低成本和体积实用的AIOT领域智能应用。

MicroPython是英国剑桥大学的教授Damien George(达米安-乔治)所发明,Damien George是一名计算机工程师,他每天都要使用Python语言工作,同时也在做一些机器人项目。有一天,他突然冒出了一个想法:能否用Python语言来控制单片机,进行实现对机器人的操控呢?

大家都知道,Python是一款非常容易使用的脚本语言,它的语法简洁,使用简单,功能强大,容易扩展。而且python有强大的社区支持,有非常多的库可以使用,它的网络功能和计算功能也很强,可以方便的和其它语言配合使用,使用者也可以开发自己库,因此python被广泛应用于工程管理、网络编程、科学计算、人工智能、机器人、教育等许多行业,python语言也长期在编程语言排行榜上处于前五的位置。更重要的是python也是完全开源的,不像Windows、Java那样受到某些大公司的控制和影响,它完全是靠社区在推动和维护,所以python受到越来越多的开发者青睐。不过遗憾的是,因为受到硬件成本、运行性能、开发习惯等一些原因的影响,前些年python并没有在通用嵌入式方面得到太多的应用。

随着半导体技术和制造工艺的快速发展,芯片的升级换代速度也越来越快,芯片的功能、内部的存储器容量和资源不断增加,而成本却在不断降低。特别是随着象ST公司和乐鑫公司高性价比的芯片和方案应用越来越多,这就给python在低端嵌入式系统上的使用带来了可能。

Damien 花费了六个月的时间开发了MicroPython。MicroPython本身使用GNU C进行开发,在ST公司的微控制器上实现了Python 3的基本功能,拥有完善的解析器、编译器、虚拟机和类库等。在保留了python语言主要特性的基础上,他还对嵌入式系统的底层做了非常不错的封装,将常用功能都封装到库中,甚至为一些常用的传感器和硬件编写了专门的驱动。我们使用时只需要通过调用这些库和函数,就可以快速控制LED、液晶、舵机、多种传感器、SD、UART、I2C等,实现各种功能,而不用再去研究底层模块的使用方法。这样不但降低了开发难度,而且减少了重复开发工作,可以加快开发速度,提高了开发效率。以前需要较高水平的嵌入式工程师花费数天甚至数周才能完成的功能,现在普通的嵌入式开发者用几个小时就能实现类似的功能,而且要更加轻松和简单。

MonMarch-202103018815..png

MicroPython系统的经典结构由三部分组成,分别是微控制器硬件(这里是-Maixduino)、MicroPython固件、用户程序。MicroPython支持的类型开发板,需要自己编译源代码,产生固件,并将固件下载到微控制器中才能运行MicroPython。

第一步是更新MaixPy 固件

  1. 下载K210开发板固件,更新MaixPy固件相当于给开发板烧录系统,使用Type C 线连接开发板和电脑,下载开发板固件,方式有两种:

MonMarch-202103015393..png

  1. 官方最新提交的固件版本

https://dl.sipeed.com/MAIX/MaixPy/release/master/
这里选择了v0.5.0_31版本

MonMarch-202103017453..png

MonMarch-202103017954..png

MonMarch-202103018969..png

第二步是下载烧录软件kflash_gui 应用,直接下载GitHub项目工程,下载完成点击“kflash_gui.exe”文件。

资料页

https://github.com/sipeed/kflash_gui

下载页面

https://github.com/sipeed/kflash_gui/releases

MonMarch-202103015580..png

经测试,1.24、1.25和1.32都能打开(这里使用v1.32版本来烧录固件)

几个选项选好

MonMarch-202103011967..png

MonMarch-202103017857..png

MonMarch-202103016097..png

附:
kflash_gui 特性

支持 .bin 和 .kfpgk 文件, 支持文件选择器选择

支持开发板选择

可选择程序烧录到 Flash 或者 SRAM

自动检测电脑上的串口

波特率可编辑

黑白两种皮肤可供选择

界面支持中英文切换

支持烧录进度显示和烧录速度显示

支持取消下载进程

支持合并多个 bin 文件为一个 bin 文件

支持把 kfpkg 文件转换为一个 bin 文件

支持使能 bin 文件

自动识别文件是不是固件

kflash_gui 使用方法
下载文件(kflash_gui_v.) 下载地址:release页面

解压, 并双击 kflash_gui.exe 或 kflash_gui
可以自行建快捷方式或者固定到开始页面或者固定要任务栏方便使用

如果是 Linux, 可以修改 kflash_gui.desktop 里面的路径, 然后用管理员身份复制到/usr/share/application 目录, 然后就可以在系统菜单里面找到kflash_gui的图标了,点击即可打开

选择 bin 文件或者 kfpkg 文件, 如果是bin文件需要指定地址,如果是固件需要指定0×0000地址

选择开发板
选择烧录到开发板的哪个位置 Flash(速度慢但是重新上电还可运行) 或者 SRAM(RAM中运行,下载快断电丢失程序)

选择串口
选择波特率,推荐1.5M
点击 下载 按钮来开始下载
如果需要取消,点击 取消 按钮

通常一个固件文件中至少有四个文件,以“maixpy_v0.5.0_31_gd3e71c0”固件为例,具体说明如下:

eif_maixpy_v0.5.0_31_gd3e71c0.7z:普通用户不用关心,用于死机调试;

maixpy_v0.5.0_31_gd3e71c0_m5stickv:M5STACK环境;

maixpy_v0.5.0_31_gd3e71c0_minimum: MaixPy固件最小集合,不支持 MaixPy IDE, 不包含OpenMV的相关算法;

maixpy_v0.5.0_31_gd3e71c0.bin:完整版的MaixPy固件。

这里我们需要使用maixpy_v0.5.0_31_gd3e71c0.bin:完整版的MaixPy固件。

第三步是安装MaixPy IDE

  1. 下载MaixPy IDE,MaixPy 使用Micropython 脚本语法,所以不像 C语言 一样需要编译,要使用MaixPy IDE , 开发板固件必须是V0.3.1 版本以上, 否则MaixPy IDE上会连接不上, 使用前尽量检查固件版本和IDE 版本,都更新到最新版以保障能正常使用。

https://cn.dl.sipeed.com/MAIX/MaixPy/ide

MonMarch-202103019280..png

MonMarch-202103011424..png

http://dl.sipeed.com/MAIX/MaixPy/ide/_/v0.2.4/maixpy-ide-windows-0.2.4.exe

  1. 下载结束,进行安装

MonMarch-202103014964..png

MonMarch-202103015470..png

第四步是测试运行MaixPy IDE

  1. 确定开发板:工具——选择开发板——Maixduino

MonMarch-202103014753..png

  1. 安装驱动,选择端口工具——打开终端——串行端口——COM7——115200

MonMarch-202103011192..png

MonMarch-202103015519..png

rst:0×1(POWERON-u RESET),引导:0×13(SPI FAST-u FLASH-u引导)

配置SIP:0,SPIWP:0xee

Drv:0×00,q:0×00,d Drv:0×00,cs0 Drv:0×00,hd

Drv:0×00,wp Drv:0×00

模式:DIO,时钟div:2

负载:0×3fff0018,长度:4

负载:0×3fff001c,长度:868

负载:0×40078000,长度:9436

负载:0×40080400,长度:5668

条目0×4008068c

  1. 连接——出错了,多次连不上,不知问题在哪里?

MonMarch-202103013122..png

MonMarch-202103017425..png

经检查,前面烧录的固件错了,应该是最后这个(完整版)

MonMarch-202103018840..png

烧录完成,打开串口,可以看到相关详情

MonMarch-202103017879..png

终于连接上了,见底栏的固件版本 0.50
MonMarch-202103011516..png

#1.将板连接到计算机
#2.在MaixPy IDE顶部选择板:工具-> 开发板`
#3.单击下面的连接按钮以连接板
#4.单击下面的绿色运行箭头按钮运行脚本!

import sensor, image, time, lcd #导入传感器,图像,时间,液晶

lcd.init(freq = 15000000)
sensor.reset() #重置并初始化传感器
                                     #自动运行,调用sensor.run(0)停止
sensor.set_pixformat(sensor.RGB565) #将像素格式设置为RGB565(或GREYSCALE)
sensor.set_framesize(sensor.QVGA) #将帧大小设置为QVGA(320×240)
sensor.skip_frames(time = 2000) #等待设置生效。
clock = time.clock() #创建一个时钟对象以跟踪FPS。

while(True):
    clock.tick() #更新FPS时钟。
    img = sensor.snapshot() #拍照并返回图像。
    lcd.display(img) #在LCD上显示
    print(clock.fps()) #注意:MaixPy的凸轮在连接时的运行速度大约是其一半
                                     #到IDE。断开连接后,FPS应增加。`

MonMarch-202103015578..png

MonMarch-202103017214..png

MonMarch-202103017296..png

实时拍照

`import sensor
import image
import lcd

lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
while True:
img=sensor.snapshot()
lcd.display(img)`

MonMarch-202103016974..png

MonMarch-202103016214..png

MonMarch-202103016975..png

MonMarch-202103013986..png

实时采集并显示图像在TFT屏上,并获取和显示实时帧数

`#实时采集并显示图像在TFT屏上,并获取和显示实时帧数

import sensor
import image
import lcd
import time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(30)
while True:
clock.tick()
img = sensor.snapshot()
fps =clock.fps()
img.draw_string(40,2, (“%2.1ffps” %(fps)), color=(128,0,0), scale=2)
lcd.display(img)

阴天光线不太好,实时帧数为16 fps

MonMarch-202103019350..png

第五步是使用串口工具

  1. 连接硬件,连接 Type C 线, 一端电脑一端开发板

查看设备是否已经正确识别:

在 Windows 下可以打开设备管理器来查看

如果没有发现设备, 需要确认有没有装驱动以及接触是否良好

MonMarch-202103015512..png

  1. 使用串口工具
  • putty

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

MonMarch-202103015908..png

  • xshell

https://xshell.en.softonic.com/download

MonMarch-202103014239..png

  • 然后选择串口模式, 然后设置串口和波特率,打开串口。

MonMarch-202103014329..png

然后点击回车键,即可看到 MaixPy 的交互界面了

MonMarch-202103012085..png

  1. 检查固件版本

使用串口终端PuTTY打开串口,然后复位(或按ctrl+D),看输出的版本信息,与github 或者 master 分支 的固件版本对比,根据当前版本情况考虑升级到最新版本。这里版本是 v0.5.0-31-gd3e71c0

  1. 串口终端PuTTY的控制命令

    CTRL-A-在空白行上,进入原始REPL模式

    CTRL-B-在空白行上,进入常规REPL模式

    CTRL-C-中断正在运行的程序

    CTRL-D-在空白行上,对电路板进行软复位

    CTRL-E-在空白行上进入粘贴模式

  2. 有关可用模块的列表,请键入help(‘modules’)

KPU gc random uio

Maix hashlib re ujson

main heapq sensor ulab

_boot image socket uos

_thread json struct urandom

_webrepl lcd sys ure

array machine time usocket

audio math touchscreen ustruct

binascii math ubinascii utime

board micropython ucollections utimeq

builtins modules ucryptolib uzlib

cmath nes uctypes video

collections network uerrno zlib

errno os uhashlib

fpioa_manager pye_mp uheapq

Plus any modules on the filesystem

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail