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)
通过了编译
RAM:[] 0.5%(从6291456字节使用了32456字节)
Flash:[] 0.4%(从16777216字节使用了68319字节)
======== [成功]花费了8.84秒==========
Verbose mode can be enabled via -v, --verbose
option
PLATFORM: Kendryte K210 1.2.1 > Sipeed MAIXDUINO
HARDWARE: K210 400MHz, 6MB RAM, 16MB Flash
DEBUG: Current (iot-bus-jtag) External (iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, sipeed-rv-debugger, tumpa)
PACKAGES:
- framework-maixduino 0.3.9
- tool-kflash-kendryte210 0.9.1
- tool-openocd-kendryte 1.203.1 (2.3)
- toolchain-kendryte210 8.2.0
LDF: Library Dependency Finder ->
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 14 compatible libraries
Scanning dependencies…
No dependencies
Building in release mode
Checking size .pio\build\sipeed-maixduino\firmware.elf
Advanced Memory Usage is available via “PlatformIO Home > Project Inspect”
RAM: [ ] 0.5% (used 32456 bytes from 6291456 bytes)
Flash: [ ] 0.4% (used 68319 bytes from 16777216 bytes)
Configuring upload protocol…
AVAILABLE: iot-bus-jtag, jlink, kflash, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, sipeed-rv-debugger, tumpa
CURRENT: upload_protocol = kflash
Looking for upload port…
Auto-detected: COM6
Uploading .pio\build\sipeed-maixduino\firmware.bin
[INFO] COM Port Selected Manually: COM6
could not open port ‘COM6’: PermissionError(13, ‘拒绝访问。’,
None, 5)
*** [upload] Error 1
================= [FAILED] Took 5.58 seconds =================
Environment Status Duration
sipeed-maix-go FAILED 00:00:18.024
sipeed-maix-one-dock FAILED 00:00:05.576
sipeed-maix-bit FAILED 00:00:05.499
sipeed-maixduino FAILED 00:00:05.579
=========== 4 failed, 0 succeeded in 00:00:34.678 ===========
终端进程已终止,退出代码: 1
配置:docs.platformio点org/page/boards/kendryte210/sipeed-maixduino.html
平台:Kendryte K210 1.2.1> Sipeed MAIXDUINO
硬件:K210 400MHz,6MB RAM,16MB闪存
调试:当前(iot-bus-jtag)外部(iot-bus-jtag,jlink,minimodule,olimex-arm-usb-ocd,olimex-arm-usb-ocd-h,olimex-arm-usb-tiny-h, olimex-jtag-tiny,sipeed-rv-debugger,tumpa)
包装:
-framework-maixduino 0.3.9
-工具-kflash-kendryte210 0.9.1
-工具openocd-kendryte 1.203.1(2.3)
-工具链-kendryte210 8.2.0
LDF:库依赖查找程序-> bit点ly/configure-pio-ldf
LDF模式:查找器〜链,兼容性〜软
找到14个兼容的库
扫描依赖项…
没有依赖
在发布模式下构建
检查大小.pio \ build \ sipeed-maixduino \ firmware.elf
可通过“ PlatformIO主页>项目检查”获得高级内存使用情况
RAM:[] 0.5%(从6291456字节使用了32456字节)
Flash:[] 0.4%(从16777216字节使用了68319字节)
正在配置上传协议…
可用:iot-bus-jtag,jlink,kflash,minimodule,olimex-arm-usb-ocd,olimex-arm-usb-ocd-h,olimex-arm-usb-tiny-h,olimex-jtag-tiny, rv调试器,tumpa
当前:upload_protocol = kflash
寻找上传端口…
自动检测:COM6
上载.pio \ build \ sipeed-maixduino \ firmware.bin
[INFO]手动选择的COM端口:COM6
无法打开端口“ COM6”:PermissionError(13,‘拒绝访问。’,
无5)
*** [上传]错误1
================ [失败]花费了5.58秒=================
环境状态持续时间
sipeed-maix-go失败00:00:18.024
sipeed-maix-one-dock失败00:00:05.576
sipeed-maix位失败00:00:05.499
sipeed-maixduino失败00:00:05.579
=========== 4次失败,0次成功00:00:34.678 ============
把接脚改为pin 1,下载成功
这时需要编辑工程配置文件 platformio.ini 根据自己的开发板型号,删掉其他开发板环境(只保留Maixduino)。
学习搭建MaixPy IDE(Micropython)开发环境
MaixPy 是将 Micropython 移植到 K210( 一款64位双核带硬件FPU、卷积加速器、FFT、sha256的 RISC-V CPU, ) 的一个项目, 支持 MCU 常规操作, 更集成了机器视觉和麦克风阵列, 以快速开发具有极低成本和体积实用的 AIOT 领域智能应用。
MicroPython
基于ANSI C,语法跟Python 3基本一致,拥有自家的解析器、编译器、虚拟机和类库等。目前支持基于32-bit的ARM处理器,比如说STM32F405。借助它,用户完全可以通过Python脚本语言实现硬件底层的访问和控制,如控制LED灯泡、LCD显示器、读取电压、控制电机、访问SD卡等。
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等,实现各种功能,而不用再去研究底层模块的使用方法。这样不但降低了开发难度,而且减少了重复开发工作,可以加快开发速度,提高了开发效率。以前需要较高水平的嵌入式工程师花费数天甚至数周才能完成的功能,现在普通的嵌入式开发者用几个小时就能实现类似的功能,而且要更加轻松和简单。
MicroPython系统的经典结构由三部分组成,分别是微控制器硬件(这里是-Maixduino)、MicroPython固件、用户程序。MicroPython支持的类型开发板,需要自己编译源代码,产生固件,并将固件下载到微控制器中才能运行MicroPython。
第一步是更新MaixPy 固件
1、下载K210开发板固件,更新MaixPy固件相当于给开发板烧录系统,使用Type C 线连接开发板和电脑,下载开发板固件,方式有两种:
(1)GitHub发布的固件(下载最新版本)
https://github.com/sipeed/MaixPy/releases
(2)官方最新提交的固件版本
dl.sipeed点com/MAIX/MaixPy/release/master/
这里选择了v0.5.0_31版本