感谢EEWorld提供的评测机会,经历千辛万苦终于收到了这块开发板。包装非常不错,所有配件都被收纳在一个小盒子中。
打开后,里面一共有以下这些东西:
Sipeed官方有非常详细的资料,在官方的wiki页面上。这块板子使用的开发环境是MaixPy,注意这个MaixPy有多个版本,互相不兼容。适配我们手上K210开发板的是v1,因此我们看这个网页:
https://wiki.sipeed.com/soft/maixpy/zh/index.html
在开发之前,我们先把摄像头和屏幕接上,给开发板上电,可以看到一个红色的页面:
红色屏幕上很清楚的写着当前固件的版本。这些信息我们也可以通过串口来得到。板载的串口芯片使用的是CH552,最新版的Win11可以免驱动直接用。串口波特率是115200,随便用一个串口工具连接,连接好后按板上的RESET重置,启动后使用Ctrl + C 终止程序,便可以看到固件信息:
如果需要更新固件,我们可以去到https://dl.sipeed.com/shareURL/MAIX/MaixPy/release/master下载最新固件,目前最新是v0.6.3_2. 下载来的固件是bin文件。
接着还需要去下载一下刷固件的工具:kflash_gui:https://github.com/sipeed/kflash_gui/releases
下载好后,加载固件,其他设置保持默认,可以和我下面的图确认一下各项设置,没有问题后点击下载就可以完成固件更新。
接下来我们可以准备一下开发环境。开发环境移植自OpenMV,有相应开发经验的小伙伴应该非常熟悉。可以去这个链接下载,如果想用免安装版,直接下载7z压缩包的版本即可:http://dl.sipeed.com/MAIX/MaixPy/ide/
下载后打开,选择好开发板,按左下角按钮连上开发板,运行默认打开的helloworld,就可以看到熟悉的界面:
从上图可以看到,我们的摄像头和屏幕已经正常开始工作。当然,不使用MaixPy IDE的话,我们也可以简单的测试一下硬件。只需要在开发板上电后快速按住BOOT按钮,再短在看到显示当前在测试模式后,我们就可以看到摄像头上的画面被显示在屏幕上。这就说明硬件都可以正常工作。
如果小伙伴们好奇这些功能都是怎么做到的,其实非常简单。MaixPy的固件是移植自Micropython,这个默认的红色背景,以及测试模式,其实都是板子出厂自带的main.py程序。通过使用uPyLoader-win我们可以把程序下载下来。具体程序如下:
try:
import gc, lcd, image, sys, os
from Maix import GPIO
from fpioa_manager import fm
test_pin=16
fm.fpioa.set_function(test_pin,fm.fpioa.GPIO7)
test_gpio=GPIO(GPIO.GPIO7,GPIO.IN,GPIO.PULL_UP)
fm.fpioa.set_function(17,fm.fpioa.GPIO0)
lcd_en = GPIO(GPIO.GPIO0,GPIO.OUT)
lcd_en.value(0)
lcd.init()
lcd.clear(color=(255,0,0))
lcd.draw_string(lcd.width()//2-68,lcd.height()//2-4, "Welcome to ", lcd.WHITE, lcd.RED)
if test_gpio.value() == 0:
print('PIN 16 pulled down, enter test mode')
lcd.clear(lcd.PINK)
lcd.draw_string(lcd.width()//2-68,lcd.height()//2-4, "Test Mode, wait ...", lcd.WHITE, lcd.PINK)
import sensor
import image
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
lcd.freq(16000000)
while True:
img=sensor.snapshot()
lcd.display(img)
loading = image.Image(size=(lcd.width(), lcd.height()))
loading.draw_rectangle((0, 0, lcd.width(), lcd.height()), fill=True, color=(255, 0, 0))
info = "Welcome to MaixPy"
loading.draw_string(int(lcd.width()//2 - len(info) * 5), (lcd.height())//4, info, color=(255, 255, 255), scale=2, mono_space=0)
v = sys.implementation.version
vers = 'V{}.{}.{} : maixpy.sipeed.com'.format(v[0],v[1],v[2])
loading.draw_string(int(lcd.width()//2 - len(info) * 6), (lcd.height())//3 + 20, vers, color=(255, 255, 255), scale=1, mono_space=1)
lcd.display(loading)
tf = None
try:
os.listdir("/sd/.")
except Exception as e:
tf ="SDcard not mount,use flash!"
loading.draw_string(int(lcd.width()//2 - len(info) * 7), (lcd.height())//2 + 10, tf, color=(255, 255, 255), scale=1, mono_space=1)
if not tf:
tf ="SDcard is mount,use SD!"
loading.draw_string(int(lcd.width()//2 - len(info) * 6), (lcd.height())//2 + 10, tf, color=(255, 255, 255), scale=1, mono_space=1)
lcd.display(loading)
del loading, v, info, vers
gc.collect()
finally:
gc.collect()
阅读上面的代码,就可以看到程序含义:如果启动时检测BOOT被按下,那么就进入测试模式,抓取摄像头画面并在LCD上显示;如果没有检测到BOOT,则显示红色屏幕。
至此,开发环境搭建,硬件测试,一切准备工作都已经完成。下一期我们正式开始项目开发。