小方舟基础教程

小方舟是为普及STEAM创客教育、人工智能教育、编程教育研发的开源人工智能硬件,即可当作AI视觉传感器,也可以是AI开发板。它集成K210高性能64位双核芯片,内置AI硬件加速单元,可实现各类场景的本地视觉算法跟语音识别。

视觉识别可实现功能:人脸检测、色块识别、形状识别、物体分类、二维码、语音识别等。

../_images/01.png ../_images/02.png

参数介绍

../_images/481.png

基本操作

开关机:

小方舟的电源口插上电源线,拨动开关,等待几秒后,屏幕亮起,出现摄像头捕捉的画面,即代表开机成功(开机可能比较慢,请耐心等待)。

../_images/341.png ../_images/351.png
电路连接:

新手建议使用配套杜邦线,它的一端是4P接口,接在小方舟上,另一端是两个3p口组成,接在扩展板的P0、P1引脚。

../_images/361.png

扩展板以IOX为例,接在IOX的P0、P1,线的颜色与IOX的颜色对应好,插上即可。

../_images/471.png
烧录程序:

小方舟可使用mpython、mpythonX、mind+等软件进行编程,这里以mpython为例(后面涉及的程序都在是mpython软件完成的)。 mpython软件下载连接:https://www.labplus.cn/software 打开mpython软件,点击扩展部分的添加,添加“N+”模块即可。

../_images/381.png ../_images/391.png

用数据线将掌控板与电脑连接,在电路连接以及掌控板通电后,小方舟可不用额外供电。

../_images/401.png ../_images/411.png

当软件上方的“未连接”变为“已连接”,说明连接成功。点击上方的“刷入”,即可将程序烧入到掌控板中。

../_images/421.png
AB键操作:

面向屏幕,左边的是A键,右边的是B键。

../_images/431.png

按下A键可切换模式,系统内置了4种模式:COLOR、QR CODE、CLASS和FACE,对应是的颜色识别、二维码识别、物体识别以及人脸识别,这四种识别方式是不需要插TF卡即可实现的。

../_images/441.png

按下B键可以学习方框内的目标,长按B键可以将已学习的数据清除,然后可进行重新学习。

颜色识别

学习与识别:

要进行颜色的识别,首先需要用程序将模式设置成颜色识别模式,或者按一下A键,可进行模式切换。

../_images/06.png ../_images/07.png

将小方舟摄像头对准目标颜色块,自动框会自动选目标颜色块。调整小方舟与颜色块的角度和距离,让黑色方框尽量框住整个目标色块。按下B键开始第一次学习,松开则结束学习,如果学习成功,则会出现ID号;将方框对准其他颜色块,按下B键开始第二次学习;长按B键,取消学习成果,重新学习。

../_images/08.png ../_images/09.png

学习了多种颜色后,屏幕上会根据应颜色显示该颜色的 ID,边框的大小随颜色块的面积一起变化,边框会自动跟踪色块。 小方舟显示的颜色 ID 与学习颜色的先后顺序是一致的,也就是:ID号会按顺序依次标注为“ID0”,“ID1”,“ID2”,以此类推,不同颜色对应的边框颜色也不同。

../_images/101.png
小案例:

学习两种颜色,识别到颜色时,掌控板的屏幕显示对应ID号。先让小方舟学习两种不同的颜色,颜色最好差异大些,然后开始编写程序,

图形化:
../_images/451.png
代码:
from nplus import *
from mpython import *
ai = K210_AI()
ai.mode_change(0)
ai.lcd_senser_rotation()
while True:
    if ai.get_id_data(0):
        oled.fill(0)
        oled.DispChar('ID0', 0, 0, 1)
        oled.fill(0)
    if ai.get_id_data(1):
        oled.fill(0)
        oled.DispChar('ID1', 0, 0, 1)
        oled.fill(0)

二维码识别

学习与识别:

将模式切换为二维码识别,同样按下B键进行学习,当小方舟检测到二维码时,屏幕上会用白色方框框选出检测到的二维码。

../_images/121.png ../_images/131.png

学习成功后,小方舟的屏幕右下角会显示二维码的信息,不会显示ID号,但是系统依旧会按照学习顺序表标上ID号。

../_images/141.png
小案例:

小方舟学习一个二维码,如果检测到学习的二维码,则小方舟上的RGB灯亮红灯,否则亮绿灯。

图形化:
../_images/461.png
代码:
from nplus import *
from mpython import *
ai = K210_AI()
ai.mode_change(1)
while True:
    if ai.get_id_data(0):
        ai.set_ws2812_rgb(0, 255, 0, 0)
        ai.set_ws2812_rgb(1, 255, 0, 0)
    else:
        ai.set_ws2812_rgb(0, 0, 255, 0)
        ai.set_ws2812_rgb(1, 0, 255, 0)

20类物体识别

小方舟的物体识别功能,目前可以识别20类物体,分别为:飞机、自行车、鸟、船、瓶子、巴士、汽车、猫、椅子、牛、餐桌、狗、马、摩托车、人、盆栽植物、羊、沙发、火车、电视。对应的英文名称分别为:aeroplane,bicycle,bird,boat,bottle,bus,car,cat,chair,cow,dining table,dog,horse,motorbike,person,pottedplant,sheep,sofa,train,tvmonitor。

学习与识别:

将模式切换为物体识别,按下B键进行学习。

../_images/181.png ../_images/191.png

学习之后,在方框的右上角会以英文方式显示学习的物体对象属于哪一类别。遇到相似的物体时,屏幕上会有白色方框自动框选出物体,并显示该物体的类别。

../_images/201.png ../_images/211.png
小案例:

识别三类物体,不同物体在掌控板上显示不同的颜色。

../_images/221.png
图形化:
../_images/231.png
代码:
from nplus import *
from mpython import *
import time
ai = K210_AI()
ai.mode_change(3)
while True:
    if ai.get_id_data(0):
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
    if ai.get_id_data(1):
        rgb.fill((int(255), int(204), int(102)))
        rgb.write()
        time.sleep_ms(1)
    if ai.get_id_data(2):
        rgb.fill((int(0), int(204), int(204)))
        rgb.write()
        time.sleep_ms(1)

人脸识别

学习与识别:

将模式切换为人脸识别。在我们平时使用人脸检测时将小方舟屏幕中央对准目标人物的脸部,自动框会自动框选目标人物的脸部。

../_images/241.png
小案例:

在掌控板上用圆表示人脸所在位置。

1.获取人脸坐标 小方舟上的屏幕可以看作是一个坐标轴,左上角是坐标原点,横向是x轴,纵向是y轴,最右边是256,最下边是192。

获取人脸坐标后将会出现以下四个数据:

../_images/261.png

掌控板上的四个数据,第一个是人脸中心的X轴坐标,第二个是y轴坐标,第三个是白色边框的宽,第四个是白色边框的长。

2.人脸位置在掌控板上显示 在掌控板上以圆点的形式,将人脸的位置表现出来。使用映射进行表示。

图形化:
../_images/271.png
代码:
from nplus import *
from mpython import *
import time
ai = K210_AI()
ai.mode_change(2)
while True:
    if ai.get_id_data(0):
        my_list = ai.get_center_coord()
        oled.fill(0)
        oled.fill_circle(((128 - 0) / (256 - 0)) * (my_list[0] - 0) + 0, ((64 - 0) / (192 - 0)) * (my_list[1] - 0) + 0, 3, 1)
        oled.show()
        time.sleep(0.5)

拍照与录像

拍照与录像是保存在内存卡上,因此必须插上。内存卡最好在16G以内,最大不要超过32G,内存卡推荐主流品牌,否则会有不识别的现象。

../_images/281.png
小案例1-拍照:

按下掌控板A键,开始拍照。

拍照成功后,小方舟屏幕左下角会出现Save Picture:1.0(或2.0、3.0等等),1.0、2.0、3.0表示图片的序号。

../_images/30.png
图形化:
../_images/291.png
代码:
from nplus import *
from mpython import *
import time
ai = K210_AI()
def on_button_a_down(_):
    time.sleep_ms(10)
    if button_a.value() == 1: return
    ai.picture_capture(1)
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
小案例2-录像:

按下掌控板A键,开始录像。

开始录像时,左上角会出现红色字体“record…..”;当录像结束后左下角会出现绿色字体“video capture over,save”,表示录像完成,正在保存。

../_images/321.png ../_images/331.png

拍照与录像无法同时进行,如果在录像的时候,让它拍照,那么它会等录像结束后,再进行拍照。

图形化:
../_images/311.png
代码:
from nplus import *
from mpython import *
import time
ai = K210_AI()
def on_button_a_down(_):
    time.sleep_ms(10)
    if button_a.value() == 1: return
    ai.video_capture(10)

button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)

相关下载

发布日期 2020/09/28
mpython库下载: nplus.py
发布日期 2020/09/28
mpython库下载: nplus.zip