标题: 【Arduino】168种传感器系列实验(153)---Maixduino AI开发板 [打印本页]

作者: eagler8    时间: 2020-3-6 17:20
标题: 【Arduino】168种传感器系列实验(153)---Maixduino AI开发板
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装










作者: eagler8    时间: 2020-3-6 17:22

勘智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位双核处理器架构,分为计算核与应用核,能够为开发者提供足以应对复杂业务场景的计算资源。


作者: eagler8    时间: 2020-3-6 17:37





一颗芯片就可以实现声源定向、声场成像、波束形成、语音唤醒、语音识别等机器听觉功能。嘉楠耘智Kendryte是一款可用在智能家居、工业自动化、教育、农业、医疗等多领域终端设备的人工智能芯片,应用范围十分广泛。

作者: eagler8    时间: 2020-3-6 18:29
Kendryte K210 是集成机器视觉与机器听觉能力的系统级芯片 (SoC)。使用台积电 (TSMC) 超低功耗的 28 纳米先进制程,具有双核 64 位处理器,拥有较好的功耗性能,稳定性与可靠性。该方案力求零门槛开发,可在最短时效部署于用户的产品中,赋予产品人工智能。Kendryte K210 定位于 AI 与 IoT 市场的 SoC,同时是使用非常方便的 MCU。Kendryte 中文含义为勘智,而勘智取自勘物探智。这颗芯片主要应用领域为物联网领域,在物联网领域进行开发,因此为勘物;这颗芯片主要提供的是人工智能解决方案,在人工智能领域探索,因此为探智。
• 具备机器视觉能力
• 具备机器听觉能力
• 更好的低功耗视觉处理速度与准确率
• 具备卷积人工神经网络硬件加速器 KPU,可高性能进行卷积人工神经网络运算
• TSMC 28nm 先进制程,温度范围-40°C 到 125°C,稳定可靠
• 支持固件加密,难以使用普通方法破解
• 独特的可编程 IO 阵列,使产品设计更加灵活
• 低电压,与相同处理能力的系统相比具有更低功耗
• 3.3V/1.8V 双电压支持,无需电平转换,节约成本

AI 解决方案
1.机器视觉
Kendryte K210 具备机器视觉能力,是零门槛机器视觉嵌入式解决方案。它可以在低功耗情况下进行卷积神经网络计算。
该芯片可以实现以下机器视觉能力:
• 基于卷积神经网络的一般目标检测
• 基于卷积神经网络的图像分类任务
• 人脸检测和人脸识别
• 实时获取被检测目标的大小与坐标
• 实时获取被检测目标的种类

2.机器听觉
Kendryte K210 具备机器听觉能力。芯片上自带高性能麦克风阵列音频处理器,可以进行实时声源定向与波束形成。
该芯片可以实现以下机器听觉能力:
• 声源定向
• 声场成像
• 波束形成
• 语音唤醒
• 语音识别

3. 视觉/听觉混合解决方案
Kendryte K210 可结合机器视觉和机器听觉能力,提供更强大的功能。一方面,在应用中既可以通过声源定位和声场成像辅助机器视觉对目标的跟踪,又可以通过一般目标检测获得目标的方位后辅助机器听觉对该方位进行波束形成。另一方面,可以通过摄像头传来的图像获得人的方向后,使得麦克风阵列通过波束形成指向该人。同时也可以根据麦克风阵列确定一个说话人的方向,转动摄像头指向该人。





作者: eagler8    时间: 2020-3-6 18:56


勘智K210系统架构
K210 包含 RISC-V 64 位双核 CPU,每个核心内置独立 FPU. K210 的核心功能是机器视觉与听觉,其包含用于计算卷积人工神经网络的 KPU 与用于处理麦克风阵列输入的 APU. 同时 K210 具备快速傅里叶变换加速器,可以进行高性能复数 FFT 计算。因此对于大多数机器学习算法,K210 具备高性能处理能力。K210 内嵌 AES 与 SHA256 算法加速器,为用户提供基本安全功能。K210 拥有高性能、低功耗的 SRAM,以及功能强大的 DMA,在数据吞吐能力方面性能优异。K210 具备丰富的外设单元,分别是:DVP、JTAG、OTP、FPIOA、GPIO、UART、SPI、RTC、I2S、I2C、WDT、Timer 与 PWM,可满足海量应用场景。


作者: eagler8    时间: 2020-3-6 19:23





作者: eagler8    时间: 2020-3-6 20:16



RISC-V
RISC-V(读作“RISC-FIVE”)是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V表示为第五代RISC(精简指令集计算机),表示此前已经四代RISC处理器原型芯片。每一代RISC处理器都是在同一人带领下完成,那就是加州大学伯克利分校的David A. Patterson教授。与大多数ISA相反,RISC-V ISA可以免费地用于所有希望的设备中,允许任何人设计、制造和销售RISC-V芯片和软件。图1展示了此前的四代RISC处理器原型芯片。它虽然不是第一个开源的的指令集(ISA),但它很重要,因为它第一个被设计成可以根据具体场景可以选择适合的指令集的指令集架构。基于RISC-V指令集架构可以设计服务器CPU,家用电器cpu,工控cpu和用在比指头小的传感器中的cpu。

与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。虽然这不是第一个开源指令集,但它具有重要意义,因为其设计使其适用于现代计算设备(如仓库规模云计算机、高端移动电话和微小嵌入式系统)。设计者考虑到了这些用途中的性能与功率效率。该指令集还具有众多支持的软件,这解决了新指令集通常的弱点。该项目2010年始于加州大学伯克利分校,但许多贡献者是该大学以外的志愿者和行业工作者。RISC-V指令集的设计考虑了小型、快速、低功耗的现实情况来实做,但并没有对特定的微架构做过度的设计。截至2017年5月,RISC-V已经确立了版本2.22的用户空间的指令集(userspace ISA),而特权指令集(privileged ISA)也处在草案版本1.10。


作者: eagler8    时间: 2020-3-6 20:23
RISC-V主要特色
1、 完全开源
对指令集使用,RISC-V基金会不收取高额的授权费。开源采用宽松的BSD协议,企业完全自由免费使用,同时也容许企业添加自有指令集拓展而不必开放共享以实现差异化发展。

2 、架构简单
RISC-V架构秉承简单的设计哲学。体现为:
在处理器领域,主流的架构为x86与ARM架构。x86与ARM架构的发展的过程也伴随了现代处理器架构技术的不断发展成熟,但作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,导致其指令数目多,指令冗余严重,文档数量庞大,所以要在这些架构上开发新的操作系统或者直接开发应用门槛很高。而RISC-V架构则能完全抛弃包袱,借助计算机体系结构经过多年的发展已经成为比较成熟的技术的优势,从轻上路。RISC-V基础指令集则只有40多条,加上其他的模块化扩展指令总共几十条指令。 RISC-V的规范文档仅有145页,而“特权架构文档”的篇幅也仅为91页。

3、 易于移植*nix
现代操作系统都做了特权级指令和用户级指令的分离,特权指令只能操作系统调用,而用户级指令才能在用户模式调用,保障操作系统的稳定。RISC-V提供了特权级指令和用户级指令,同时提供了详细的RISC-V特权级指令规范和RISC-V用户级指令规范的详细信息,使开发者能非常方便的移植linux和unix系统到RISC-V平台。

4 、模块化设计
RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用场景。用户能够灵活选择不同的模块组合,来实现自己定制化设备的需要,比如针对于小面积低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。

5 、完整的工具链
对于设计CPU来说,工具链是软件开发人员和cpu交互的窗口,没有工具链,对软件开发人员开发软件要求很高,甚至软件开发者无法让cpu工作起来。在cpu设计中,工具链的开发是一个需要巨大工作量的工作。如果用RISC-V来设计芯片,芯片设计公司不再担心工具链问题,只需专注于芯片设计,RISC-V社区已经提供了完整的工具链,并且RISC-V基金会持续维护该工具链。当前RISC-V的支持已经合并到主要的工具中,比如编译工具链gcc, 仿真工具qemu等

6 、开源实现
BOOM: Christopher Celio的RV64乱序处理器实现。Chisel, BSD Licensed。[GitHub][Doc]
BottleRocket: RV32IMC微处理器。Chisel, Apache Licensed。 [GitHub]
bwitherspoon: RV32微处理器。SystemVerilog, ISC Licensed。[GitHub]
Clarvi: 剑桥大学教学用RISC-V处理器。SystemVerilog, BSD Licensed。[GitHub]
F32: 针对FPGA的RV32微处理器,VHDL,BSD Licensed。[GitHub]
GRVI: Gray Research LLC. 针对FPGA优化的RV32微处理器,commercial licensed。[Web]
Hummingbird E200. 二级流水线,目标替代Cortex-M0/8051, Verilog, Apache 2.0 licensed。[GitHub]
invicta: 一级流水线的RV32微处理器。Verilog,BSD Licensed。[GitHub]
Kamikaze: RV32微处理器。Verilog,MIT Liencensed。[GitHub]
KCP53000: Samuel A. Falvo II的RV64处理器实现。Verilog, MPL Licensed。[GitHub]
nanorv32: 2机流水线的RV32实现。Verilog, GPLv2 Licensed。[GitHub]
OpenV: 支持RV32的开源微处理器,Verilog,MIT Licensed,OnChipUIS,来源于哥伦比亚的Universidad Industrial de Santander。[GitHub]
ORCA: 支持RV32的开源微处理器,VHDL,BSD Licensed,VectorBlox。[Github]
PicoRV32: Clifford Wolf设计的(针对FPGA)RV32微处理器,Verilog,ISC Licensed。[GitHub]
Potato: 针对FPGA的RV32微处理器。VHDL,BSD Licensed。[GitHub]
RI5CY:支持RV32的开源微处理器
PULPino: SystemVerilog,Solderpad Licensed, 来源于苏黎世理工和博洛尼亚大学的PULP项目。[GitHub][Web]
River: GNSS Senor Ltd.基于Rocket架构开发的RV64处理器。VHDL, BSD Licensed。[GitHub]
Rocket: 支持RV64/32的开源处理器
Rocket-Chip: Chisel,BSD Licensed, Free chips project, UC Berkeley分离的开源工程。[GitHub]
Freedom: Chisel,Apache Licensed, SiFive, UC Berkeley分离的初创企业。[GitHub][Web]
lowRISC:Chisel+SystemVerilog,Solderpad Licensed, 从剑桥大学发起的非盈利组织。[GitHub][Web]
RoCC: the Rocket customized coprocessor interface 和Rocket处理器紧密互联的的协处理器接口。[BSG]
RV12: RoaLogic的RV32微处理器。Verilog, RoaLogic non-commercial Licensed。[GitHub]
SCR1: Syntacore的RV32开源微处理器。SystemVerilog,Solerpad Licensed。[GitHub]
SHAKTI:印度IIT-Madras的RISC-V处理器系列,Bluespec, BSD Licensed。[Bitbucket]
Sodor: 教学用的RISC-V处理器。Chisel, BSD Licensed。[GitHub]
uRV: 针对FPGA的RV32微处理器。Verilog,LGPLv3 Licensed.[ohwr]
VexRiscv: 用SpinalHDL编写的针对FPGA的RV32微处理器。SpinalHDL, MIT Licensed。[GitHub]
YARVI: Tommy Thorn设计的RV32I微处理器,Verilog,GPL2v Licensed。[GitHub]

6 、成功的流片案例
已经有机构和商业公司流片的案例。可关注RISC-V社区了解具体信息。

7 、社区贡献
完整的工具链维护,大量的开源项目。risc-v的google讨论组(名称:RISC-V ISA Dev)吸引各地自愿者参与讨论来不断改进risc-v架构。





作者: eagler8    时间: 2020-3-7 08:26


RISC-V指令集正式因为伯克利大学想开发一款CPU时,要么是一些老旧的架构,要么收费昂贵,芯片设计领域亟需一个开源的指令集。神说要有光,就有了光,神说要有空气,就有了空气,神说要有好的开源指令集,于是就有了RISC-V,没有好的轮子就造个轮子。RISC-V基金会就如W3C,RISC-V指令集就如HTML5,HTML5掀起了web领域的一场革命,RISC-V也将带来芯片领域的一场革命。

作者: eagler8    时间: 2020-3-7 08:40


RISC-V产业生态正进入快速发展期。加州大学伯克利分校在2015年成立非盈利组织RISC-V基金会,该基金会旨在聚合全球创新力量共同构建开放、合作的软硬件社区,打造RISC-V生态系统。三年多来,谷歌、高通、IBM、英伟达、NXP、西部数据、Microsemi、中科院计算所、麻省理工学院、华盛顿大学、英国宇航系统公司等200多个企业和研究机构先后加入了RISC-V基金会。

作者: eagler8    时间: 2020-3-7 08:54


RISC-V 指令特点
1 设计哲学-简单就是美
大道至简,在IC设计的实际工作中,最简洁的设计往往是最可靠的,在大多数的项目实践中一次次的得到检验。
IC设计的工作性质非常特殊,其最终的产出是芯片,而一款芯片的设计和制造周期均很长,无法像软件代码那样轻易的升级和打补丁,每一次芯片的改版到交付都需要几个月的周期。不仅如此,芯片的一次制造成本费用高昂,从几十万美金到百千万美金不等。这些特性都决定了IC设计的试错成本极为高昂,因此能够有效的降低错误的发生就显得非常的重要。
1.1 无病一身轻——架构的篇幅
后发优势,RISC-V设计汲取X86和ARM架构中的经验,前人踩过的坑不用再犯,同时无需向下兼容老旧的设计和已经过时的指令。想想去看一本架构文档,里面一大半的篇幅都在讲过时的指令和设计,是不是感觉宝贵的时间都被浪费了。
在处理器领域,目前主流的架构为x86与ARM架构。经过几十年的发展,现代的x86与ARM架构的架构文档长达几百数千页。打印出来能有半个桌子高,可真是“著作等身”。之所以现代x86与ARM架构的文档长达数千页,且版本众多,一个主要的原因是因为其架构的发展的过程也伴随了现代处理器架构技术的不断发展成熟。并且作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,或者在定义新的架构部分时为了能够将就已经存在的技术部分而显得非常的别扭。久而久之就变得极为冗长。
而现在才推出的RISC-V架构,则具备了后发优势,由于计算机体系结构经过多年的发展已经成为比较成熟的技术,多年来在不断成熟的过程中暴露的问题都已经被研究透彻,因此新的RISC-V架构能够加以规避,并且没有背负向后兼容的历史包袱,可以说是无病一身轻。
目前的“RISC-V架构文档”分为“指令集文档”(riscv-spec-v2.2.pdf)和“特权架构文档”(riscv-privileged-v1.10.pdf)。“指令集文档”的篇幅为145页,而“特权架构文档”的篇幅也仅为91页。熟悉体系结构的工程师仅需一至两天便可将其通读,虽然“RISC-V的架构文档”还在不断地丰富,但是相比“x86的架构文档”与“ARM的架构文档”,RISC-V的篇幅可以说是极其短小精悍。
1.2 能屈能伸——模块化的指令集
RISC-V架构相比其他成熟的商业架构的最大一个不同还在于它是一个模块化的架构。因此,RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用。
这种模块化是x86与ARM架构所不具备的。以ARM的架构为例,ARM的架构分为A、R和M三个系列,分别针对于Application(应用操作系统)、Real-Time(实时)和Embedded(嵌入式)三个领域,彼此之间并不兼容。
但是模块化的RISC-V架构能够使得用户能够灵活选择不同的模块组合,以满足不同的应用场景,可以说是“老少咸宜”。譬如针对于小面积低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。而他们共同的部分则可以相互兼容。
1.3 浓缩的都是精华——指令的数量
短小精悍的架构以及模块化的哲学,使得RISC-V架构的指令数目非常的简洁。基本的RISC-V指令数目仅有40多条,加上其他的模块化扩展指令总共几十条指令。


作者: eagler8    时间: 2020-3-7 09:01
勘智K210成支持RISC-V NOMMU范本
如果谈及嵌入式领域,RISC-V或许是你绝对绕不过的一个知识点。虽然ARM依旧是移动端的霸主,但RISC-V被外界赋予了太多意义,架构本身适合于颇具前景的嵌入式开发,其免费开源的特性也在当前的国际环境中备受关注,俨然成为移动端领域的新晋网红。 RISC-V大势所趋,市场上也涌现了一些基于该架构的芯片与开发模组,例如很多开发者正在使用的勘智K210。去年底,名为Jean-Luc的资深工程师分享了将Linux5.1系统部署在K210处理器上的工作。同时,他也在文中引用了西部数据的分享,勘智K210被作为支持RISC-V NOMMU的示范列入其中。




在AI领域,神经网络属于计算密集型场景,人脸识别等算法往往会受到边缘侧应用场景的功耗限制。嘉楠表示ARM在实际计算的过程中往往会伴随大量的能耗,并不是非常经济的架构。公开资料显示,嘉楠是RISC-V联盟中前五家使用RISC-V架构的厂商之一。在勘智系列AI芯片的研发中,嘉楠使用了RISC-V RocketChip,减少了大量相关的工作量,也节省了大量的研发人力成本,以及IP授权的成本。 目前,勘智K210及其开发模组受到不少开发者的青睐,吸引了来自百度、阿里等国内顶尖AI团队的目光。例如嘉楠为百度AI开发平台PaddlePaddle定制开发模组PaddlePi-K210,打通了PaddlePaddle 模型设备端部署解决方案。开发人员不需要硬件更改,使用公版模具就可以一直做到样品阶段。在前沿项目的探索上,勘智K210兼容阿里最新TinyML算法模型,是可用于探索TinyML科研项目的RV平台。



作者: eagler8    时间: 2020-3-7 09:24
Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装






作者: eagler8    时间: 2020-3-7 09:45


Maixduino
基于MAIX模块,是用于AI + IoT应用的RISC-V 64开发板。与其他Sipeed MAIX dev不同。主板Maixduino采用Arduino Uno外形设计,板载ESP32模块和MAIX AI模块。MAIX是Sipeed专门设计的产品系列,专为在边缘运行AI而设计。将AI模型从云端移动到网络边缘的设备,在这些设备上运行速度更快,成本更低,隐私性更高。


作者: eagler8    时间: 2020-3-7 09:56




作者: eagler8    时间: 2020-3-7 10:16


作者: eagler8    时间: 2020-3-7 10:18




作者: eagler8    时间: 2020-3-7 10:20


作者: eagler8    时间: 2020-3-7 10:24


作者: eagler8    时间: 2020-3-7 10:44



  • CPU:带FPU的双核64位RISC-V;400MHz神经网络处理器
  • QVGA@60FPS/VGA@30FPS图像识别
  • 板载ESP32模块支持2.4G 802.11.b/g/n和蓝牙4.2
  • Arduino Uno外形,Arduino兼容接口
  • 板载全向I[size=75%]2S数字输出MEMS麦克风
  • 用于DVP相机的24P 0.5mm FPC连接器
  • 8位MCU LCD 24P 0.5mm FPC连接器
  • 基于卷积神经网络的机器视觉



   
        
  • 支持自弹式micro SD卡支架
  • 重置和启动按钮;3W DAC+PA音频输出
  • 连接USB Type-C电缆以完成下载
  • 用于机器听觉的高性能麦克风阵列处理器
  • 支持MaixPy IDE、Arduino IDE、OpenMV IDE和PlatformIO IDE
  • 支持Tiny-Yolo、Mobilenet和TensorFlow Lite,用于深度学习






作者: eagler8    时间: 2020-3-7 11:27


作者: eagler8    时间: 2020-3-7 11:30


作者: eagler8    时间: 2020-3-7 12:22
本帖最后由 eagler8 于 2020-3-7 13:14 编辑

尝试配置Maixduino开发环境(win10)
1、安装串口驱动
正常情况下,win10 ,linux3.0+ ,mac os都可以自动识别并安装串口驱动。如果遇到驱动失败,可以去 FTDI 官网下载对应的 VCP 驱动程序。www点ftdichip点com/Drivers/VCP.htm
win驱动下载地址:www点ftdichip点com/Drivers/CDM/CDM21228_Setup.zip
如果到驱动安装不正确,请彻底卸载原驱动,下载官方驱动,切断网络并安装驱动即可解决问题。









作者: eagler8    时间: 2020-3-7 12:25





作者: eagler8    时间: 2020-3-7 12:28


作者: eagler8    时间: 2020-3-7 13:06
2、下载安装Arduino IDE(目前版本号1.8.12)
链接:https://downloads.arduino.cc/arduino-1.8.12-windows.exe





作者: eagler8    时间: 2020-3-7 15:04





作者: eagler8    时间: 2020-3-7 15:10
3、在 Arduino IDE中添加Maixduino开发板
打开Arduino IDE, 选择 文件 -> 首选项,
添加 附加开发板管理器网址:
dl.sipeed点com/MAIX/Maixduino/package_Maixduino_k210_index.json (推荐)
或者
dl.sipeed点com/MAIX/Maixduino/package_Maixduino_k210_dl_cdn_index.json (如果上面的链接下载过慢,请尝试这个链接)





作者: eagler8    时间: 2020-3-7 15:21





作者: eagler8    时间: 2020-3-7 17:13
文件挺大的,下载也慢,头尾用了近一个半小时,终于完成了









作者: eagler8    时间: 2020-3-7 17:25
4、重新设置开发板
在Arduino IDE顶部的 工具 栏中重新设置开发板
开发板: 选择你的开发板。
烧录固件: 仅支持Maix GO, 默认 open-ec。
烧录波特率: 如果烧录失败请降低波特率。
端口:  串口端口, e.g. /dev/ttyUSB0
程序员:  烧录工具,你 必须 选择 k-flash





作者: eagler8    时间: 2020-3-7 18:00
5、测试Maixduino开发环境




作者: eagler8    时间: 2020-3-7 18:17


作者: eagler8    时间: 2020-3-7 18:29
烧录成功




作者: eagler8    时间: 2020-3-7 18:33
【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装

项目之一:测试Maixduino开发环境
主要内容:字符串到整数的转换
读取串行输入字符串,直到它看到换行符,然后转换字符串,
如果字符是数字,则为数字。





作者: eagler8    时间: 2020-3-8 08:18
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装

  4.   项目之一:测试Maixduino开发环境
  5.   主要内容:字符串到整数的转换
  6.   读取串行输入字符串,直到它看到换行符,然后转换字符串,
  7.   如果字符是数字,则为数字。
  8. */

  9. String inString = ""; // 保存输入的字符串

  10. void setup() {
  11.   // 打开串行通信并等待端口打开:
  12.   Serial.begin(9600);
  13.   while (!Serial) {
  14.     ; // 等待串行端口连接。仅本地USB端口需要
  15.   }

  16.   // 发送简介:
  17.   Serial.println("\n\nString toInt():");
  18.   Serial.println();
  19. }

  20. void loop() {
  21.   // 读取串行输入:
  22.   while (Serial.available() > 0) {
  23.     int inChar = Serial.read();
  24.     if (isDigit(inChar)) {
  25.       // 将传入字节转换为字符并将其添加到字符串:
  26.       inString += (char)inChar;
  27.     }
  28.     // 如果得到换行符,请打印字符串,然后打印字符串的值:
  29.     if (inChar == '\n') {
  30.       Serial.print("Value:");
  31.       Serial.println(inString.toInt());
  32.       Serial.print("String: ");
  33.       Serial.println(inString);
  34.       // 清除新输入的字符串:
  35.       inString = "";
  36.     }
  37.   }
  38. }
复制代码



作者: eagler8    时间: 2020-3-8 08:24
Maixduino开发板资料
● Github:https://github.com/Lichee-Pi
● SDK相关资料:cn.dl.sipeed点com/MAIX/SDK
● HDK相关资料:cn.dl.sipeed点com/MAIX/HDK
● Maixduino相关资料:maixduino.sipeed.com
● MaixPy(micropython)相关资料:cn.dl.sipeed点com/MAIX/MaixPy
● Wiki:maixpy.sipeed.com
● Blog:blog.sipeed.com
● BBS:  bbs.sipeed.com
● AI技术支持群:878189804
● 模型商店:maixhub点com
● Telegram group: t点me/sipeed
● Support 邮箱:support@sipeed.com
● 视频: https://space.bilibili.com/27717 ... 1790372634597661220





作者: aing123    时间: 2020-3-8 10:44
wo 竟然看完了

作者: eagler8    时间: 2020-3-10 10:50
aing123 发表于 2020-3-8 10:44
wo 竟然看完了

是块不错的板子,呵呵
作者: eagler8    时间: 2020-3-11 14:22


功能特性

                         802.11 n(2.4G)速率达到150Mbps

                         Bluetooth v4.2全规格,包含传统蓝牙(BR/EDR)和低功耗蓝牙(BLE)


技术规格

                         802.11.g:+10dBm(54Mbps)

                        802.11.n:+10dBm(65Mbps)



作者: eagler8    时间: 2020-3-11 14:22


k210 RISC-V AI+lOT ESP32视觉听觉开发套装 ,包括有
OV2640摄像头:200W像素通用24P摄像头
ST7789驱动器芯片2.4寸LCD屏(24P 320X240)

作者: eagler8    时间: 2020-3-11 14:23
OV2640图像传感器
具有200万像素(1632x1232像素),其体积小、工作电压低,提供单片UXGA摄像和影像处理器的所有功能。通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率10位采样数据。该产品UXGA图像最高达到15帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。OmmiVision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。





作者: eagler8    时间: 2020-3-11 14:25


作者: eagler8    时间: 2020-3-11 14:26

OV2640主要参数
可以支持定制FPC长度,镜头角度(70-160度)可以支持定制FPC长度,镜头角度(70-160度)
感光阵列1632x1232 最大格式UXGA
IO电压1.7V-3.3V 模拟电压2.5-3.0v(内部LDO给核供电1.2V)
功耗工作TBD 休眠<20μA
温度操作-30℃到70℃
稳定工作0℃到50℃
输出格式(8位)YUV/YCbCr4:2:2 RGB565/555/444 GRB4:2:2 Raw RGB Data
光学尺寸1/4"
视场角70度
最大贞率15fps SXGA
灵敏度1.3V/(Lux-sec)
信噪比40 dB
动态范围50 dB
浏览模式逐行
电子曝光1行到1247行
像素面积2.2μm x 2.2μm
暗电流15mV/s at 60℃
工作电流40mA


作者: eagler8    时间: 2020-3-11 14:27
OV2640内部方块图





作者: eagler8    时间: 2020-3-11 14:27
OV2640模块特点
●  高灵敏度、 低电压适合嵌入式和低照度应用
●  标准的SCCB接口,兼容I2C接口
● 支持VarioPixel子采样方式
●RawRGB,RGB(GRB4:2:2,RGB565/555/444),YUV(4:2:2)和YCbCr(4:2:2)输出格式
●  支持UXGA、SXGA,VGA,QVGA,QQVGA,CIF,QCIF以及直到40x30大小的各种尺寸
●  支持自动曝光控制、自动增益控制、自动白平衡,自动消除灯光条纹、自动黑电平校准.图像质量控制包括色饱和度、色相、伽玛、锐度ANTI_BLOOM等设置。
●ISP具有消除噪声和坏点补偿功能
● 镜头失光补偿
● 饱和度自动调节
● 边缘增强自动调节
● 降噪自动调节
●  支持图像缩放、平移和窗口设置
●  支持图像压缩,即可输出JPEG图像数据
●  自带嵌入式微处理器
●  集成有源晶振12M,无需外部提供时钟
●  集成LDO,只需供电3.3V即可正常工作

参考电原理图









作者: eagler8    时间: 2020-3-11 14:52


ST7789驱动器芯片2.4寸LCD屏(24P 320X240)
1. 模块名称:液晶显示模块
2. 型号:KD024C-4
3. 同类型型号:
4. 兼容型号:
5. 显示模式:TFT
6. 显示色彩:65/262K
7. 分辨率: 240*320
8. 点距:0.153 (H) x 0.153 (V)
9. 视角:12:00
10. 控制IC:ST7789V
11. 显示类型:全透型,常白
12. 外形尺寸:42.72*60.26*2.6mm
13. 可视面积:38.32*50.56 mm
14. 点阵区面积:36.72*48.96mm
15. 亮度:300cd/m2
16. 对比度:500
17. 接口类型: 8/9/16/18位8080并口
                   16/18位RGB接口
                    3/4线SPI接口
18. 引脚数:24
19. 引脚距离:0.5mm
20. 连接类型: FPC插接型
21. 工作电压:3.3V
22. 背光灯颜色及类型: 白色LED背光
23. 背光电路:4 LED 并联, 共阳
If=80mA, Vf =3.2V
24. 使用寿命:100000h
25. 工作温度:-20----70°C
26. 储存温度:-30----80°C
27. 质量体系认证:ISO9001:2008
28. 产品认证:RoHS


作者: eagler8    时间: 2020-3-11 20:43


作者: eagler8    时间: 2020-3-11 21:57
【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  安装<Sipeed_ST7789.h>库,开发板自带
  项目之二:测试Maixduino配套2.4寸LCD屏





作者: eagler8    时间: 2020-3-11 21:59
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  4.   安装<Sipeed_ST7789.h>库,开发板自带
  5.   项目之二:测试Maixduino配套2.4寸LCD屏
  6. */

  7. #include <Sipeed_ST7789.h>

  8. SPIClass spi_(SPI0); // Maix系列板载LCD必须为SPI0
  9. Sipeed_ST7789 lcd(320, 240, spi_);


  10. void func()
  11. {
  12.   lcd.fillScreen(COLOR_RED);
  13.   lcd.drawRect(20, 20, 50, 50, COLOR_WHITE);
  14.   lcd.fillCircle(100, 100, 40, COLOR_WHITE);
  15.   lcd.fillTriangle(10, 200, 300, 200, 300, 150, COLOR_WHITE);
  16.   lcd.setTextSize(2);
  17.   lcd.setTextColor(COLOR_WHITE);
  18.   lcd.setCursor(100, 30);
  19.   lcd.println("hello Maixduino");
  20. }

  21. void func2()
  22. {
  23.   lcd.fillScreen(COLOR_RED);
  24.   lcd.drawRect(20, 20, 50, 50, COLOR_WHITE);
  25.   lcd.fillCircle(180, 50, 40, COLOR_WHITE);
  26.   lcd.fillTriangle(10, 300, 200, 300, 200, 150, COLOR_WHITE);
  27.   lcd.setTextSize(2);
  28.   lcd.setTextColor(COLOR_WHITE);
  29.   lcd.setCursor(1, 100);
  30.   lcd.println("hello Maixduino");
  31. }

  32. void setup()
  33. {
  34.   lcd.begin(15000000, COLOR_RED);
  35. }

  36. void loop()
  37. {
  38.   lcd.setRotation(0);
  39.   func();
  40.   delay(3000);
  41.   lcd.invertDisplay(true);
  42.   func();
  43.   delay(3000);
  44.   lcd.setRotation(1);
  45.   func2();
  46.   delay(3000);
  47.   lcd.setRotation(2);
  48.   func();
  49.   delay(3000);
  50.   lcd.setRotation(3);
  51.   func2();
  52.   delay(3000);
  53. }
复制代码



作者: eagler8    时间: 2020-3-11 22:00


作者: eagler8    时间: 2020-3-12 08:53
推断Maixduino板子右上角,这颗芯片是三轴数字加速计MSA300(猜测的)





作者: eagler8    时间: 2020-3-12 08:56


作者: eagler8    时间: 2020-3-12 09:20


MSA300
1、是一种三轴低g加速度计,具有I2C/SPI数字输出
2、消费级以及专业级应用
3、它具有动态用户可选择的完整
4、加速度测量范围为±2g/±4g/±8g/±16g和al
5、输出数据速率从1Hz到500Hz
6、MSA300提供超小型
(2毫米x 2毫米,高度1毫米)LGA包装
7、使用温度范围 -40°C至+85°C

主要特征
1、超小包装2x2x1毫米,LGA-12针
2、用户可选择范围, ±2g, ±4g, ±8g, ±16g
3、1.62V至3.6V工作电源电压
4、1.2V至3.6V IO电源电压
5、用户可选择的数据输出速率
6、接口I2C/SPI(4线/3线)
7、具备二个中断引脚
8、14位分辨率
9、低功耗
10、编程偏移和敏感
11、符合RoHS应用规范
12、适合手机和平板电脑
13、显示方向
14、手势识别
15、振动监测
16、内倾角和倾斜感应
17、计步器
18、玩游戏
19、自由落体检测


作者: eagler8    时间: 2020-3-12 09:39


作者: eagler8    时间: 2020-3-12 10:26


作者: eagler8    时间: 2020-3-12 11:07
本帖最后由 eagler8 于 2020-3-12 11:09 编辑
  1. /*【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  2. 实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  3. 安装 <MSA300.h>库,开发板自带
  4. 项目之三:测试Maixduino板载三轴数字加速计MSA300
  5. */

  6. #include <MSA300.h>
  7. #include <Wire.h>

  8. // 这是将创建的字符串的长度
  9. // 包含减号和小数点
  10. const signed char formattedStringLength = 11;

  11. // 待打印的异常点后的位数
  12. const unsigned char numVarsAfterDecimal = 6;

  13. acc_t data;
  14. MSA300 msa;

  15. static char outstr[formattedStringLength];

  16. char * formatValue(float value)
  17. {
  18. dtostrf(value, formattedStringLength, numVarsAfterDecimal, outstr);
  19. return outstr;
  20. }

  21. void setup()
  22. {
  23. Serial.begin(9600);
  24. Wire.begin();
  25. msa.begin();
  26. }

  27. void loop()
  28. {
  29. data = msa.getAcceleration();

  30. Serial.printf("Xa:%s ", formatValue(data.x));
  31. Serial.printf("Ya:%s ", formatValue(data.y));
  32. Serial.printf("Za:%s", formatValue(data.z));
  33. Serial.println();

  34. delay(1000);
  35. }
复制代码


作者: eagler8    时间: 2020-3-12 11:18
二种可能:
一是只有示例,Maixduino板上没有MSA300硬件
二是有硬件,但设置接口有误,没有信号输入





作者: eagler8    时间: 2020-3-12 16:12


作者: eagler8    时间: 2020-3-12 16:14
板载MEMS麦克风
MEMS(微型机电系统) 麦克风是基于MEMS技术制造的麦克风,简单的说就是一个电容器集成在微硅晶片上,可以采用表贴工艺进行制造,能够承受很高的回流焊温度,容易与 CMOS 工艺及其它音频电路相集成,并具有改进的噪声消除性能与良好的 RF 及 EMI 抑制能。MEMS麦克风的全部潜能还有待挖掘,但是采用这种技术的产品已经在多种应用中体现出了诸多优势,特别是中高端手机应用中。





作者: eagler8    时间: 2020-3-12 16:17
MEMS MIC优势
实际使用的大多数麦克风都是ECM(驻极体电容器)麦克风,这种技术已经有几十年的历史。ECM 的工作原理是利用驻有永久电荷的聚合材料振动膜。与ECM的聚合材料振动膜相比,MEMS麦克风在不同温度下的性能都十分稳定,其敏感性不会受温度、振动、湿度和时间的影响。由于耐热性强,MEMS麦克风可承受260℃的高温回流焊,而性能不会有任何变化。由于组装前后敏感性变化很小,还可以节省制造过程中的音频调试成本。MEMS麦克风需要ASIC提供的外部偏置,而ECM没有这种偏置。有效的偏置将使MEMS麦克风在整个操作温度范围内都可保持稳定的声学和电气参数,还支持具有不同敏感性的麦克风设计。传统ECM的尺寸通常比MEMS麦克风大,并且不能进行SMT(表面贴装技术)操作。在MEMS麦克风的制造过程中,SMT回流焊简化了制造流程,可以省略一个通常以手工方式进行的制造步骤。在ECM麦克风内,必须添加进行信号处理的电子元件;而在MEMS麦克风中,只需在上添加额外的专用功能即可。与ECM相比,这种额外功能的优点是使麦克风具有很高的电源抑制比,能够有效抑制电源电压的波动。另一个优点是,集成在芯片上的宽带RF抑制功能,这一点不仅对手机这样的RF应用尤其重要,而且对所有与手机操作原理类似的设备(如助听器)都非常重要。MEMS麦克风的小型振动膜还有另一个优点,直径不到1mm的小型薄膜的重量同样轻巧,这意味着,与ECM相比,MEMS麦克风会对由安装在同一PCB上的扬声器引起的PCB 噪声产生更低的振动耦合。

MEMS MIC发展前景
对于大型的半导体制造商来说,他们具备制造该产品系列的核心能力。首先是MEMS 设计和制造能力,其次是ASIC设计和制造能力,最后是大容量、低成本的封装能力。迄今为止,音频公司一直占据着几乎整个MEMS麦克风市场,它们必须依赖半导体代工厂提供相关技术并与他们分享利润。现在,英飞凌的进入意味着该市场拥有了新的选择,并且降低了元件购买者的风险。尺寸方面的限制主要来自MEMS本身。另外,由于音频端口不能采用真空工具进行操作,尺寸的进一步缩小将会受到制造过程中标准自动化贴装工具的限制。ASIC中将会集成更多功能:和数字输出是第一步;还可利用标准组件,如风噪信号过滤组件;专用接口和信号预处理将成为很大的应用领域;RF屏蔽也会得到进一步改进。在音频方面,MEMS麦克风也会有很多变化。SMM310不只在20Hz20kHz的频率范围内针对人声进行了优化,还有较高的声学敏感性。很难预测何时会出现带有集成式麦克风并能记录美妙立体声的单芯片摄像电话,但毫无疑问,技术正在朝着这个方向发展。


作者: eagler8    时间: 2020-3-12 16:21
MEMS麦克风的构造图
相较于ECM麦克风的聚合材料振动膜,在不同温度下,MEMS麦克风所展现的性能都相当稳定,不会受到时间、温度、湿度和振动的影响。MEMS麦克风的耐热性相当强,可以承受摄氏260度的高温回流焊,但是其性能不会有任何变化。再加上MEMS麦克风可以有效的降低射频所产生的干扰,这就让其逐渐发展成为麦克风主流。MEMS麦克风包含一个灵活悬浮的薄膜,它可在一个固定背板之上自由移动,所有元件均在一个硅晶圆上制造。该结构形成一个可变电容,固定电荷施加于薄膜与背板之间。传入的声压波通过背板中的孔,引起薄膜运动,其运动量与压缩和稀疏波的幅度成比例。这种运动改变薄膜与背板之间的距离,进而改变电容,如下图所示。在电荷恒定的情况下,此电容变化转换为电信号。


作者: eagler8    时间: 2020-3-12 16:28





作者: eagler8    时间: 2020-3-12 16:30


作者: eagler8    时间: 2020-3-12 16:34
  1. /*【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  2. 实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  3. 项目之四:测试板载MEMS麦克风之添加语音识别库
  4. 安装<Maix_Speech_Recognition.h>库,开发板自带
  5. */

  6. #include "Maix_Speech_Recognition.h"

  7. SpeechRecognizer rec;//语音识别器记录

  8. void setup()
  9. {
  10. rec.begin();
  11. Serial.begin(115200);
  12. Serial.println("start rec...");
  13. if( rec.record(0, 0) == 0) // 关键字num,型号num
  14. {
  15. rec.print_model(0, 0);
  16. }
  17. else
  18. Serial.println("rec failed");
  19. }

  20. void loop()
  21. {
  22. }
复制代码



作者: eagler8    时间: 2020-3-12 16:38
项目之四:测试板载MEMS麦克风之添加语音识别库
安装<Maix_Speech_Recognition.h>库,开发板自带





作者: eagler8    时间: 2020-3-19 12:45
【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  项目之五:寻找Maixduino板载LED端口号(pin1)
  Maixduino 支持基本的 Arduino 输入输出函数,你可以像使用其他 Arduino 开发板一样使用它们。
  Maixduino 可以自由操作不超过 32 个数字 IO 口,并可以将它们同时映射到 48 个 FPIO 上。

  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  4.   项目之五:寻找Maixduino板载LED端口号(pin1)
  5.   Maixduino 支持基本的 Arduino 输入输出函数,你可以像使用其他 Arduino 开发板一样使用它们。
  6.   Maixduino 可以自由操作不超过 32 个数字 IO 口,并可以将它们同时映射到 48 个 FPIO 上。
  7. */

  8. void setup() {
  9.   pinMode(LED_BUILTIN, OUTPUT);
  10. }

  11. void loop() {
  12.   digitalWrite(LED_BUILTIN, HIGH);
  13.   delay(1000);
  14.   digitalWrite(LED_BUILTIN, LOW);
  15.   delay(1000);
  16. }
复制代码





作者: eagler8    时间: 2020-3-19 12:46


作者: eagler8    时间: 2020-3-19 16:46

项目之六:通过模拟输出功能来设置呼吸灯
  Maixduino 使用 K210 芯片的 PWM 模块实现模拟输出 analogWrite() 功能。
  不能使用模拟输入 analogRead() 功能。
  Maixduino 可以在 48 个自由引脚中最多选择 12 个设置模拟输出功能。


  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  4.   项目之六:通过模拟输出功能来设置呼吸灯
  5.   Maixduino 使用 K210 芯片的 PWM 模块实现模拟输出 analogWrite() 功能。
  6.   不能使用模拟输入 analogRead() 功能。
  7.   Maixduino 可以在 48 个自由引脚中最多选择 12 个设置模拟输出功能。
  8. */

  9. int led1 = 1; // 板载LED

  10. void setup()
  11. {
  12.   pinMode(led1, OUTPUT);
  13. }

  14. void setColor(int value)
  15. {
  16.   analogWrite(led1, 220-value);
  17. }

  18. void loop()
  19. {
  20.   int i;
  21.   for (i=0; i<221; i++)
  22.   {
  23.     setColor(i);
  24.     delay(5);
  25.   }
  26.   delay(100);        
  27. }
复制代码




作者: eagler8    时间: 2020-3-19 17:25
项目之七:串口输出]
]  序列对应于UARTHSClass,其余的Serial1、Serial2和Serial3是UARTClass。
]
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装

  4.   项目之七:串口输出"Hello world!"

  5.   在Maixduino中,有两种类型的串行设备:UARTHSClass和UARTClass。
  6.   序列对应于UARTHSClass,其余的Serial1、Serial2和Serial3是UARTClass。
  7.   串行使用默认引脚4(RX),5(TX)。
  8. */

  9. #include <Arduino.h>

  10. void setup()
  11. {
  12.   Serial.begin(9600);
  13. }

  14. void loop()
  15. {
  16.   Serial.println("Hello world!");
  17.   delay(2000);
  18. }
复制代码






作者: eagler8    时间: 2020-3-19 17:25


作者: eagler8    时间: 2020-3-22 13:10
【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  程序之八:I2C测试

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  4.   程序之八:I2C测试
  5. */

  6. #include <Wire.h>

  7. void setup() {
  8.   Serial.begin (115200);

  9.   // 等待串行端口连接
  10.   while (!Serial)
  11.   {
  12.   }

  13.   Serial.println ();
  14.   Serial.println ("I2C Testing ...");
  15.   byte count = 0;

  16.   Wire.begin();
  17.   Wire.beginTransmission(0x3C);
  18.   Wire.write(0x80);
  19.   Wire.write(0xAF);
  20.   Wire.endTransmission();
  21.   Serial.println ("Done.");

  22. }  // 安装结束

  23. void loop() {}
复制代码





作者: eagler8    时间: 2020-3-22 13:11


作者: eagler8    时间: 2020-3-22 13:30
【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  程序之九:I2C设备扫描仪

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
  4.   程序之九:I2C设备扫描仪
  5. */

  6. #include <Wire.h>

  7. void setup() {
  8.   Serial.begin (115200);

  9.   // 等待串行端口连接
  10.   while (!Serial)
  11.   {
  12.   }

  13.   Serial.println ();
  14.   Serial.println ("I2C scanner. Scanning ...");
  15.   byte count = 0;

  16.   Wire.begin();
  17.   for (byte i = 8; i < 120; i++)
  18.   {
  19.     Wire.beginTransmission (i);
  20.     if (Wire.endTransmission () == 0)
  21.     {
  22.       Serial.print ("Found address: ");
  23.       Serial.print (i, DEC);
  24.       Serial.print (" (0x");
  25.       Serial.print (i, HEX);
  26.       Serial.println (")");
  27.       count++;
  28.       //delay (1);  //也许不需要?
  29.     } // 良好反应结束
  30.   } // 结束for循环
  31.   Serial.println ("Done.");
  32.   Serial.print ("Found ");
  33.   Serial.print (count, DEC);
  34.   Serial.println (" device(s).");
  35. }  // 安装结束

  36. void loop() {}
复制代码





作者: eagler8    时间: 2020-3-22 13:31


作者: eagler8    时间: 2020-3-23 11:17
Maixduino系列实验(8)---尝试PlatformIO IDE开发环境(win10)




作者: eagler8    时间: 2020-3-23 12:14
PlatformIO 是一款超级方便的跨平台开源物联网硬件集成开发环境,支持 30 多款平台,630 多钟开发板的集成开发。提供跨平台的代码构建器、集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等。PIO 还拥有丰富的第三方库支持,仅需简单几步操作就可以轻松配置开发环境。现在Maix系列开发板(包括Maixduino)已经加持了 PIO IDE,可以同时支持 kendryte-standalone-sdk 和 Arduino 下的开发。

作者: eagler8    时间: 2020-3-23 12:25
PlatformIO 安装
首先需要下载VSCode,打开浏览器输入code.visualstudio(进入到官网),然后进入VSCode的首页,按照下图中红色箭头指示步骤点击下载,大家可以根据自己的操作系统进行下载,VSCode支持windows OS等系统。






作者: eagler8    时间: 2020-3-23 12:36
在 vscode 上安装 platformIO 插件
在搜索栏搜索 platformIO 后点击下面列表的第一个 platformIO IDE




作者: eagler8    时间: 2020-3-23 12:38
点击插件界面上的安装





作者: eagler8    时间: 2020-3-23 12:49
安装成功后在左侧列表会出现一个图标,左下角会出现一个小房子




作者: eagler8    时间: 2020-3-23 12:55
一共安装了5个插件




作者: eagler8    时间: 2020-3-24 09:12
尝试添加 Maix 系列开发板,这里是Maixduino
PIO 目前提供命令行与图形界面两种方式来安装。
1、命令行
点击左侧PIO标志 -> 点击左下方的新建终端 -> 在终端窗口中执行下面的安装指令(New Terminal)
开发版(与Github同步)
platformio platform install https://github.com/sipeed/platform-kendryte210
稳定版
platformio platform install “kendryte210”




作者: eagler8    时间: 2020-3-24 09:27
安装出错





作者: eagler8    时间: 2020-3-24 09:35
后来关闭PlatformIO IDE,重新启动,好像是可以了
PlatformManager:安装kendryte210
kendryte210 @ 1.2.1已安装
PackageManager:安装工具链-kendryte210 @〜8.2.0
正在下载[##################################] 100%
开箱[##################################] 100%
toolchain-kendryte210 @ 8.2.0已成功安装!
平台“ kendryte210”已成功安装!
其余的软件包将根据您的构建环境自动安装。


作者: eagler8    时间: 2020-3-24 10:13




作者: eagler8    时间: 2020-3-24 10:22
在打开的窗口中输入下面的网址

https://github.com/sipeed/platform-kendryte210

点击 Install 即可添加完成。





作者: eagler8    时间: 2020-3-24 10:27


无法安装平台
PIO核心调用错误:“ PlatformManager:安装platform-kendryte210 \ r \ n \ n \ n错误:请从https://git-scm.com/downloads安装Git客户端”


作者: eagler8    时间: 2020-3-24 10:40
git下载

官网下载:https://git-scm.com/downloads





作者: eagler8    时间: 2020-3-24 10:43


作者: eagler8    时间: 2020-3-24 11:04


验证git是否安装成功,在桌面右键,选择 “Git Bash Here”,然后输入“git”,出现帮助信息,说明我们的Windows下Git服务器端安装成功,如下图:




作者: eagler8    时间: 2020-3-24 11:52
这个好像通过了




平台已成功安装
PlatformManager:安装platform-kendryte210
kendryte210 @ 6099b97已成功安装!
PackageManager:安装工具链-kendryte210 @〜8.2.0
已安装toolchain-kendryte210 @ 8.2.0
平台“ https://github.com/sipeed/platform-kendryte210”已成功安装!
其余的软件包将根据您的构建环境自动安装。


作者: eagler8    时间: 2020-3-24 13:06
尝试新建工程

点击左下角的小房子进入 platformIO 的主页面后,点击 New Project





作者: eagler8    时间: 2020-3-24 13:18
填写 工程名、板子、框架。工程名就依据个人爱好啦,板子由于我是用 Maixduino 板子,所以这里我就选了 Maixduino 板子。选择Sipeed Maixduino 板子后便会自动的选择框架。下方是选择保存的地址,一般是默认的,只要把钩去掉,就可以选择自定义的地址。





作者: eagler8    时间: 2020-3-24 13:31
拉到下面来,点击 finish ,就成功的建立了一个工程
左侧的资源管理器就会显示工程文件夹
platformio.ini (为配置文件)
lib (自动生成的程序库的目录)
src (存放程序源文件的目录)




作者: eagler8    时间: 2020-3-24 14:01
连接板子,可以查看到二个端口(前面安装驱动了)





作者: eagler8    时间: 2020-3-24 14:06
也可以查到这款Maixduino AI开发板




作者: eagler8    时间: 2020-3-24 16:18
Arduino blink
打开 PIO 主页 选择 Project Examples





作者: eagler8    时间: 2020-3-24 16:24
选择 arduino blink 点击 Import 导入示例程序 (初次导入需要下载架构文件及工具,需要等待时间)





作者: eagler8    时间: 2020-3-24 16:29
导入成功后即可见到示例工程









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1