37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十一:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
知识点:勘智K210
2018年9月6日,嘉楠科技推出自主设计研发的全球首款基于RISC-V的量产商用边缘智能计算芯片勘智K210。该芯片依托于完全自主研发的AI神经网络加速器KPU,具备自主IP、视听兼具与可编程能力三大特点,能够充分适配多个业务场景的需求。
作为嘉楠科技自主研发的边缘侧AI芯片,勘智K210兼具高能耗比和灵活性。在算力方面,勘智K210可在0.3W的条件下提供1TOP的算力支持,充分适配在多数业务场景中低功耗约束下的算力需求。在芯片集成度方面,勘智K210采用视听一体化设计。在机器视觉上,芯片基于自主研发的神经网络加速器KPU,可完成基于神经网络的图像分类任务,进行人脸识别与检测,以及实时获被检测目标的分类。在听觉能力上,芯片自带APU语音处理单元,最高可支持8路音频数据及16个方向,无需占用CPU即可实现声源定向、声场成像、波束形成、语音识别与唤醒等功能。在算法定制化方面,勘智K210在可编程能力上呈现出更高的灵活性。首先,相比ARM等架构,勘智K210采用RISC-V架构,拥有更强的可定制化能力,便于开发者根据具体应用场景定制算法。其次,芯片搭载FPIOA现场可编程IO阵列,支持TensorFlow、Keras、Darknet、PaddlePaddle和Caffe等主流AI编程框架,以及全面的开发文档,对开发者十分友好。此外,芯片内置64位双核处理器架构,分为计算核与应用核,能够为开发者提供足以应对复杂业务场景的计算资源。
Maixduino AI开发板功能特性
CPU:RISC-V 双核64bit、内置FPU、400Mhz标准频率(可超频)
内置神经网络处理器
OV2640摄像头:200W像素通用24P摄像头
连接器:兼容Arduino 接口、TF卡槽、扬声器接口
无线功能:支持2.4G 802.11.b/g/n、支持Bluetooth 4.2
音频功能:MEMS 麦克风、3W扬声器输出
8 Bit(256 级) 可调颜色,5Bit (32 级)亮度调节
DVP 摄像头接口:24P 0.5mm FPC 连接器,支持OV2640、5640、7740等
LCD接口:24P 0.5mm FPC 连接器,支持8bit MCU LCD
ESP32模块:支持2.4G 802.11.b/g/n
802.11 n(2.4G)速率达到150Mbps
Bluetooth v4.2全规格,包含传统蓝牙(BR/EDR)和低功耗蓝牙(BLE)
开发环境:支持Arduino IDE、MaixPy IDE、OpenMV IDE等
技术规格
尺寸:68mm 54mm
电源输入:USB Type-C(支持6~12V输入)
温升:<20K
工作温度范围:-30~85ºC
MCU:ESP8285
无线标准:802.11 b/g/n
频率范围:2400Mhz~2483.5Mhz
发射功率:802.11.b:+15dBm
802.11.g:+10dBm(54Mbps)
802.11.n:+10dBm(65Mbps)
无线连接器:IPEX 3.03.0mm
Wi-Fi模式:Station/SoftAP/SoftAP+Station
k210 RISC-V AI+lOT ESP32视觉听觉开发套装 ,包括有
OV2640摄像头:200W像素通用24P摄像头
ST7789驱动器芯片2.4寸LCD屏(24P 320X240)
实时采集并显示图像在TFT屏上,并获取和显示实时帧数
#实时采集并显示图像在TFT屏上,并获取和显示实时帧数import sensor
import image
import lcd
import timeclock = 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
第五步是使用串口工具
- 连接硬件
连接 Type C 线, 一端电脑一端开发板
查看设备是否已经正确识别:
在 Windows 下可以打开设备管理器来查看
如果没有发现设备, 需要确认有没有装驱动以及接触是否良好
- 使用串口工具
(1) putty
www点chiark.greenend点org点uk/~sgtatham/putty/latest.html
(3)然后选择串口模式, 然后设置串口和波特率,打开串口。
然后点击回车键,即可看到 MaixPy 的交互界面了
3、检查固件版本
使用串口终端PuTTY打开串口,然后复位(或按ctrl+D),看输出的版本信息,与github 或者 master 分支 的固件版本对比,根据当前版本情况考虑升级到最新版本。这里版本是 v0.5.0-31-gd3e71c0
4、串口终端PuTTY的控制命令:
CTRL-A-在空白行上,进入原始REPL模式
CTRL-B-在空白行上,进入常规REPL模式
CTRL-C-中断正在运行的程序
CTRL-D-在空白行上,对电路板进行软复位
CTRL-E-在空白行上进入粘贴模式
5、有关可用模块的列表,请键入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
手头正好有个魔方,有五种颜色,就拿它当识别颜色的实验道具了。
打开MaixPy IDE,选择工具——机器视觉——阕值编辑器
打开源图像位置,选择帧缓冲区
调整LAB阕值,主要是在二进制图像栏,白色像素是被跟踪的像素
彻底搞懂Lab 颜色空间
名称
在开始之前,先明确一下Lab颜色空间(Lab color space)的名字:
Lab的全称是CIELAB,有时候也写成CIE Lab*
这里的CIE代表International Commission on Illumination(国际照明委员会),它是一个关于光照、颜色等的国际权威组织。
通道
Lab是由一个亮度通道(channel)和两个颜色通道组成的。在Lab颜色空间中,每个颜色用L、a、b三个数字表示,各个分量的含义是这样的:
L代表亮度
a代表从绿色到红色的分量
b代表从蓝色到黄色的分量
Perceptual uniform
Lab是基于人对颜色的感觉来设计的,更具体地说,它是感知均匀(perceptual uniform)的。Perceptual uniform的意思是,如果数字(即前面提到的L、a、b这三个数)变化的幅度一样,那么它给人带来视觉上的变化幅度也差不多。Lab相较于RGB与CMYK等颜色空间更符合人类视觉,也更容易调整:想要调节亮度(不考虑Helmholtz–Kohlrausch effect,见下注)就调节L通道,想要调节只色彩平衡就分别调a和b。
注:Helmholtz–Kohlrausch effect是人眼的一种错觉——当色彩饱和度高时,颜色会看起来更亮。
设备无关
Lab有个很好的特性——设备无关(device-independent)。也就是说,在给定了颜色空间白点(white point)(下图中表示了一种颜色空间的白点)之后,这个颜色空间就能明确地确定各个颜色是如何被创建和显示的,与使用的显示介质没有关系。 需要注意的是,Lab定义的是相对于白点的颜色,只有定义完白点是什么颜色(比如定义为CIE standard illuminant D50),我们才能知道其他的颜色。
数值范围
理论上说,L、a、b都是实数,不过实际一般限定在一个整数范围内:
L越大,亮度越高。L为0时代表黑色,为100时代表白色。
a和b为0时都代表灰色。
a从负数变到正数,对应颜色从绿色变到红色。
b从负数变到正数,对应颜色从蓝色变到黄色。
我们在实际应用中常常将颜色通道的范围-100~+100或-128127之间。
可视化
可以看到,Lab*一共有三个分量,因此可以在三维空间中呈现。 在二维空间中,常用chromaticity diagram来可视化它,也就是固定亮度L,看a和b的变化。注意,这些可视化不是精确的,只是能帮助人理解。
LAB颜色模型
是根据Commission International Eclairage(CIE)在1931年所制定的一种测定颜色的国际标准建立的。于1976年被改进,并且命名的一种色彩模式。Lab颜色模型弥补了RGB和CMYK两种色彩模式的不足。它是一种设备无关的颜色模型,也是一种基于生理特征的颜色模型。 Lab颜色模型由三个要素组成,一个要素是亮度(L),a 和b是两个颜色通道。a包括的颜色是从深绿色(低亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值);b是从亮蓝色(低亮度值)到灰色(中亮度值)再到黄色(高亮度值)。因此,这种颜色混合后将产生具有明亮效果的色彩。
Lab模式既不依赖光线,也不依赖于颜料,它是CIE组织确定的一个理论上包括了人眼可以看见的所有色彩的色彩模式。Lab模式弥补了RGB和CMYK两种色彩模式的不足。同RGB颜色空间相比,Lab是一种不常用的色彩空间。它是在1931年国际照明委员会(CIE)制定的颜色度量国际标准的基础上建立起来的。1976年,经修改后被正式命名为CIELab。它是一种设备无关的颜色系统,也是一种基于生理特征的颜色系统。这也就意味着,它是用数字化的方法来描述人的视觉感应。Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128];b表示从黄色到蓝色的范围,取值范围是[127,-128]。下图所示为Lab颜色空间的图示;
Lab颜色空间比计算机显示器甚至比人类视觉的色域都要大 ,表示为Lab的位图比RGB或CMYK位图获得同样的精度需要要求更多的像素数据。Lab模式所定义的色彩最多,且与光线及设备无关并且处理速度与RGB模式同样快,比CMYK模式快很多。因此,可以放心大胆的在图象编辑中使用Lab模 式。而且,Lab模式在转换成CMYK模式时色彩没有丢失或被替换。因此,最佳避免色彩损失的方法是:应用Lab模式编辑图象,再转换为CMYK模式打印 输出。