Adafruit ItsyBitsy M0 Express开发板:双模编程与硬件全解析
2026/5/17 4:48:19 网站建设 项目流程

1. 项目概述:为什么选择ItsyBitsy M0 Express?

如果你正在寻找一款尺寸小巧、功能强大,并且能让你在Arduino和CircuitPython之间无缝切换的开发板,那么Adafruit ItsyBitsy M0 Express绝对值得你花时间深入了解。我手头这块板子,长度只有3.5厘米,宽度不到1.8厘米,比一张SD卡还要小一圈,但千万别被它的体积骗了。它内置的ATSAMD21G18 Cortex M0+处理器,运行在48MHz主频,拥有256KB的Flash和32KB的RAM,性能足以应对大多数嵌入式原型开发的需求。

这块板子最吸引我的地方在于它的“双模”特性。出厂时它预装了CircuitPython,插上USB线,电脑上就会弹出一个名为CIRCUITPY的U盘,你可以直接用任何文本编辑器修改里面的code.py文件来编程,就像在电脑上写Python脚本一样简单直观,非常适合快速验证想法和教学。而当你需要更高的执行效率、更底层的硬件控制,或者想复用海量的Arduino生态库时,切换到Arduino IDE开发也毫无障碍。这种灵活性,让它在从教育到产品原型的各个阶段都能找到用武之地。

它的引脚布局也经过精心设计,几乎完全兼容更早的ItsyBitsy 32u4 3.3V版本。这意味着你为旧版设计的扩展板或接线,有很大概率可以直接沿用,保护了你的前期投资。板上集成的2MB SPI Flash芯片是“Express”系列的标志,在CircuitPython模式下,它直接作为可读写的文件系统;在Arduino模式下,你也可以用它来存储数据日志、网页资源或者额外的程序代码,相当于自带了一个微型硬盘。

2. 核心硬件解析与引脚功能全览

拿到一块新板子,第一件事就是搞清楚它的“武功秘籍”——引脚定义。ItsyBitsy M0 Express的引脚虽多,但归类清晰,理解了电源、数字、模拟和特殊功能这几大类,用起来就得心应手了。

2.1 电源引脚:灵活供电与高效分配

板子左上角,紧挨着Micro USB口,有三个关键的电源引脚:BATGUSB

  • BAT(电池输入):这是外部电源输入脚,电压范围是3.5V到6V。当你需要设备脱离电脑独立运行时,接一个锂电池或3节AA电池盒到这里就搞定了。板载的电源管理芯片会自动在USB电源和BAT输入之间选择电压更高的那一路供电,实现无间断切换。这意味着你可以一直插着USB调试,同时接上电池,拔掉USB后设备能立刻由电池供电,非常适合做移动设备。
  • G(地线):所有电路的公共参考点,必须连接。
  • USB(5V输出):这个引脚比较特别,它直接从USB接口取电,输出一个干净的5V。当你需要驱动一些耗电大户,比如一串几十个NeoPixel LED或者多个舵机时,就应该从这里取电,而不是从3.3V稳压器输出,避免因电流不足导致板子重启。

此外,还有几个增强型的电源引脚:

  • 3V:这是板载稳压器的输出,稳定的3.3V,最大可提供500mA电流,用于给逻辑电路和大多数传感器供电。
  • Vhi(高压输出):这是一个非常实用的引脚。它通过一个“或”二极管电路,直接输出BATUSB两者中电压较高的那个(通常是5V或电池电压)。它没有经过稳压,但能提供较大的电流,是驱动舵机、WS2812B灯条等需要5V逻辑电平和高电流设备的理想选择。
  • EN(使能引脚):连接至稳压器的使能端。将其拉低可以关闭3V输出(仅在使用电池供电时有效),用于实现超低功耗的深度睡眠。接USB时此引脚无效。

实操心得:驱动外部设备时,务必做好电源规划。数字传感器用3V,电机、灯带用VhiUSB。务必共地!我曾因为忘记共地,导致I2C通信时好时坏,排查了半天。

2.2 逻辑引脚:数字、模拟与通信的枢纽

板子提供了多达23个通用GPIO,所有逻辑电平都是3.3V。切记:不要将5V信号直接连接到这些引脚,否则可能损坏芯片。

顶部边缘引脚(从左到右):

  • #0 / RX:GPIO 0,也是硬件串口Serial1的接收引脚。还可作为模拟输入A20或I2S的LRCLK。
  • #1 / TX:GPIO 1,硬件串口Serial1的发送引脚。也可作为模拟输入A21或I2S位时钟。
  • SDASCL:硬件I2C接口。重要:板上没有内置上拉电阻。使用I2C设备时,必须在SDASCL线上各接一个2.2kΩ到10kΩ的电阻到3V,否则通信无法进行。
  • #5:GPIO 5,标记为“5!”。这是一个特殊的仅输出引脚,关键是其输出电平被转换到了Vhi的电压(约5V)。这使它成为驱动NeoPixel的完美选择,因为NeoPixel需要~5V的逻辑高电平。结合Adafruit的NeoPixel DMA库,可以做到不占用CPU时间驱动灯带。
  • #7:GPIO 7,或I2S LRCLK。
  • #9:GPIO 9,支持PWM输出,也是模拟输入A25。
  • #10,#11,#12:GPIO 10, 11, 12,均支持PWM输出。#12还可作为I2S数据通道0。
  • #13:GPIO 13,支持PWM输出,并且直接连接到了板载的红色LED(靠近复位按钮)。你的第一个“Blink”程序就靠它了。

底部边缘引脚(从左到右):

  • A0:这不仅仅是一个模拟输入(A0),它内部集成了一个真正的10位数模转换器。这意味着你可以通过程序输出0到3.3V之间任意精确的直流电压,而不像PWM那样只是方波。可以用来播放低质量的音频或生成精确的参考电压。
  • A1A5:模拟输入A1-A5,同时也是数字IO。其中A1和A2支持PWM输出。
  • SCK,MOSI,MISO:这是主硬件SPI接口的引脚。虽然它们也可以当作普通GPIO,但强烈建议保留给需要高速SPI通信的设备(如显示屏、SD卡、特定传感器),以获得最佳性能。

右侧边缘引脚(从上到下):

  • #2,#3,#4:GPIO 2, 3, 4。其中#3#4支持PWM输出,并分别对应模拟输入A23和A22。#3还可作为I2S主时钟,#4可作为I2S数据通道1。
  • SWCLKSWDIO:这是ARM Cortex-M的调试接口引脚。普通用户一般用不到,但如果你需要重新刷写 bootloader 或进行单步调试,就会用到它们。

特殊功能引脚:

  • RST:复位引脚。拉低此引脚(接地)可以手动复位微控制器。快速双击(在1秒内连接两次)可以强制进入Bootloader模式。
  • ARef:模拟参考电压输入。默认情况下,ADC(模数转换器)使用3.3V作为参考。如果你需要更高的测量精度或不同的量程,可以将一个稳定的外部电压(不得超过3.3V!)接到此引脚,并在代码中配置使用外部参考。注意:对于M0芯片,使用外部ARef时,A0引脚上的DAC功能可能会受影响。

2.3 内置外设:SPI Flash与DotStar LED

作为“Express”系列的一员,这两样东西是灵魂所在。

2MB SPI Flash芯片:这块芯片通过一组独立的SPI总线(SPI1)连接到单片机,与主SCK/MOSI/MISO引脚互不冲突。在CircuitPython模式下,它被格式化为一个FAT文件系统,就是你看到的CIRCUITPY盘符,你的代码、库文件都存放在这里。在Arduino下,你可以通过SPI1总线访问它,当作一个海量的EEPROM来用,进行数据记录。

DotStar RGB LED:这是一个APA102封装的智能RGB LED,通过专用的时钟(#40)和数据(#41)引脚连接。在Arduino中,使用Adafruit_DotStar库,将其初始化为一个只有1颗灯的灯带即可控制。它的作用很多:Bootloader模式下,绿色常亮表示就绪,红色表示USB枚举失败;在CircuitPython运行时,它会通过颜色变化指示状态(如黄色表示代码正在运行,绿色表示等待REPL输入)。

3. 双环境开发实战:Arduino IDE配置与核心差异

虽然CircuitPython上手极快,但Arduino IDE在性能控制和库生态上仍有巨大优势。让ItsyBitsy M0 Express在Arduino环境下跑起来,需要一些配置。

3.1 Arduino IDE环境搭建

  1. 安装Arduino IDE:确保你使用的是1.8.x或更高版本。从Arduino官网下载安装即可。
  2. 添加开发板支持网址:打开IDE,进入文件->首选项(Windows/Linux)或Arduino IDE->首选项(macOS)。找到“附加开发板管理器网址”的输入框。点击右侧的图标,在弹出的窗口中添加一行新网址:
    https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
    点击“确定”保存。这个网址告诉IDE去哪里找Adafruit的板子定义。
  3. 安装板支持包:打开工具->开发板->开发板管理器...。等待索引更新完毕,在搜索框中输入“SAMD”。
    • 首先,找到并安装“Arduino SAMD Boards (32-bits ARM Cortex-M0+)”by Arduino。这是官方核心支持包。
    • 然后,搜索“Adafruit SAMD”,安装“Adafruit SAMD Boards”by Adafruit。这个包包含了ItsyBitsy M0 Express等Adafruit特定板子的优化配置和示例。
  4. 选择开发板:安装完成后,在工具->开发板菜单下,选择Adafruit SAMD Boards->Adafruit ItsyBitsy M0 Express
  5. 选择端口:用USB线连接板子到电脑。在工具->端口菜单下,会出现一个新的串口(例如COM3/dev/cu.usbmodem14101),选择它。

现在,你可以尝试上传经典的Blink示例了。打开文件->示例->01.Basics->Blink,点击上传按钮。如果一切顺利,你会看到板载的红色LED(引脚13)开始闪烁。上传成功后,IDE下方可能会提示“磁盘未正确弹出”,这是Bootloader工作的正常现象,忽略即可。

常见问题排查

  • 上传失败,提示“无法打开端口”:确保没有其他程序(如串口监视器、Mu编辑器)占用了该串口。
  • 提示“未找到开发板”:检查USB线是否仅为充电线(无数据功能)。尝试按两次复位键,让板子进入Bootloader模式(红色LED脉冲呼吸),然后再尝试上传。
  • 编译错误,提示缺少头文件:你可能需要安装特定的库。使用工具->管理库...来搜索安装。

3.2 从传统Arduino迁移到M0的核心代码差异

如果你有AVR Arduino(如Uno)的代码,大部分可以直接运行,但有几个关键点需要注意:

  1. 模拟参考电压:如果你想使用ARef引脚的外部参考电压,代码应为analogReference(AR_EXTERNAL);。在AVR上是EXTERNAL,这里多了AR_前缀。

  2. 上拉电阻的启用:在AVR上,设置引脚上拉的“古老”方法是:

    pinMode(pin, INPUT); digitalWrite(pin, HIGH); // 启用内部上拉

    在SAMD21上,这行不通。正确且兼容性更好的方法是:

    pinMode(pin, INPUT_PULLUP);
  3. PWM的细微差别:在AVR上,analogWrite(pin, 255)会让引脚输出恒定的高电平。在SAMD21上,它输出的是255/256占空比的PWM,仍然有极短的低电平脉冲。如果你需要引脚完全导通,可以这样处理:

    if (value == 255) { digitalWrite(pin, HIGH); } else { analogWrite(pin, value); }
  4. 使用A0的DAC功能:当你想用analogWrite()在A0引脚输出真正的模拟电压时,不要设置pinMode(A0, OUTPUT)。DAC输出是独立的功能,设置输出模式反而可能导致冲突。直接调用analogWrite(A0, value);即可,其中value范围是0-1023(对应0-3.3V)。

  5. 串口对象:在官方Arduino SAMD核心中,USB串口是SerialUSB,而Serial指向一个物理串口。但在Adafruit SAMD核心中,我们做了优化,Serial默认就指向USB串口,所以你可以继续用Serial.begin(9600);Serial.println("Hello");,和使用Uno时一样。如果你不确定,在代码开头用#define Serial SerialUSB来确保兼容性也是个好习惯。

  6. 电容触摸功能:SAMD21内置了硬件电容触摸传感器。在Arduino中,可以使用Adafruit的FreeTouch库来轻松读取A0, A1, A2, A3, A4, A5, #9这些引脚的触摸状态,无需任何外部电阻电容。

4. CircuitPython快速上手与生态应用

CircuitPython是MicroPython的一个分支,由Adafruit主导开发,以其极简的上手流程和对硬件抽象的良好平衡而著称。对于ItsyBitsy M0 Express,这是“开箱即用”的体验。

4.1 初识CircuitPython与Mu编辑器

当你首次插入ItsyBitsy M0 Express时,电脑会识别出一个名为CIRCUITPY的U盘。里面已经预装了一个简单的code.py程序。用任何文本编辑器(如VS Code, Sublime Text,甚至记事本)打开它,修改代码,保存。板子会自动重启并运行新代码。这种“编辑-保存-运行”的循环,效率极高。

但对于CircuitPython开发,我强烈推荐使用Mu编辑器。它是一个专为初学者和教育设计的Python编辑器,内置了串口控制台、代码检查器和简单的绘图功能。

  1. 下载安装Mu:从 mu-editor.io 下载对应你操作系统的版本并安装。
  2. 首次运行:打开Mu,它会自动检测到连接的CircuitPython设备。在模式选择器中,选择“CircuitPython”。
  3. 编写代码:你会看到一个简洁的编辑界面。左侧是代码区,下方是“串行”控制台。尝试输入以下代码并点击“保存”:
    import board import digitalio import time led = digitalio.DigitalInOut(board.LED) # 对于ItsyBitsy M0,板载红灯是D13 led.direction = digitalio.Direction.OUTPUT while True: led.value = True time.sleep(0.5) led.value = False time.sleep(0.5)
    保存时,文件会自动命名为code.py并存入CIRCUITPY盘。你会立刻看到红色LED开始闪烁。

4.2 串行控制台与REPL:交互式调试利器

Mu编辑器底部的面板就是串行控制台。它显示了来自板子的所有print()输出,更重要的是,它提供了访问REPL的入口。

REPL是“读取-求值-打印-循环”的缩写,简单说就是一个实时的Python交互式命令行。在Mu中,按Ctrl+C可以中断当前运行的程序,并进入REPL。你会看到>>>提示符。

在REPL中,你可以:

  • 直接执行Python语句:>>> 1+2
  • 查看模块和对象:>>> import board; dir(board)
  • 实时控制硬件:>>> led.value = True(前提是led对象已在之前的代码中定义,或在REPL中重新初始化)
  • 调试程序:当程序因错误停止时,REPL会显示详细的错误追踪信息,这是排查问题的关键。

要退出REPL并重新运行code.py,按Ctrl+D,或者直接在Mu编辑器中点击“串行”面板上的“停止”然后“运行”。

注意事项:在Linux系统上,你可能需要将用户添加到dialout组以获得串口访问权限:sudo usermod -a -G dialout $USER,然后注销并重新登录

4.3 库管理与项目捆绑包

CircuitPython的强大离不开丰富的硬件驱动库。Adafruit提供了两个主要的库捆绑包:

  1. Adafruit CircuitPython Library Bundle:包含了所有由Adafruit官方维护的传感器、显示器和设备驱动库。
  2. CircuitPython Community Library Bundle:由社区贡献的第三方库。

如何安装库?最简单的方法是使用“项目捆绑包”或手动复制。

  • 方法一(推荐新手):访问对应项目的Adafruit学习指南页面(例如“Adafruit NeoPixel Überguide”),通常会提供一个“下载项目捆绑包”的链接。这个.zip文件包含了项目所需的所有库和示例代码。解压后,将lib文件夹内的.mpy.py文件复制到你的CIRCUITPY盘的lib文件夹内即可。
  • 方法二(手动管理):从Adafruit的GitHub发布页面下载完整的库捆绑包。解压后,根据你的项目需要,从庞大的库文件夹中挑选出需要的库文件,复制到CIRCUITPY盘的lib文件夹。

库文件格式:你会看到.mpy.py两种文件。.mpy是预编译的字节码,加载更快、占用内存更少,推荐使用。.py是纯文本源码。

如果你的代码出现ImportError: no module named ‘adafruit_bus_device’这样的错误,几乎可以肯定是你缺少了对应的库文件。总线设备库(adafruit_bus_device)是很多其他库的基础,通常必须安装。

4.4 核心硬件控制示例精讲

让我们通过几个典型例子,看看在CircuitPython中操作硬件是多么直观。

示例1:读取模拟电压(电位器)

import board import analogio import time # 初始化A1引脚为模拟输入 pot = analogio.AnalogIn(board.A1) def get_voltage(pin): # 将16位ADC原始值(0-65535)转换为电压值(0-3.3V) return (pin.value * 3.3) / 65535 while True: voltage = get_voltage(pot) print((voltage,)) # 打印为元组,方便Mu绘图器绘图 time.sleep(0.1)

将电位器中间引脚接A1,两侧分别接3.3V和GND。在Mu的串行控制台,你可以看到变化的电压值。点击“绘图器”图标,还能看到实时波形图。

示例2:控制舵机

import board import pwmio import time from adafruit_motor import servo # 创建PWM对象,控制引脚A2,频率50Hz(标准舵机) pwm = pwmio.PWMOut(board.A2, frequency=50) # 创建舵机对象,最小脉冲500us,最大脉冲2500us my_servo = servo.Servo(pwm, min_pulse=500, max_pulse=2500) while True: for angle in range(0, 180, 5): # 从0度到180度,每次5度 my_servo.angle = angle time.sleep(0.05) for angle in range(180, 0, -5): # 从180度到0度 my_servo.angle = angle time.sleep(0.05)

这个例子展示了使用adafruit_motor库控制舵机。注意,舵机需要接在VhiUSB引脚获取5V电源,信号线接A2,并确保共地。

示例3:使用I2C传感器(BMP280气压计)

import board import busio import adafruit_bmp280 import time # 创建I2C总线对象 i2c = busio.I2C(board.SCL, board.SDA) # 创建传感器对象,指定I2C总线和地址(BMP280默认0x77) sensor = adafruit_bmp280.Adafruit_BMP280_I2C(i2c, address=0x77) # 设置海平面气压用于计算海拔(根据你当地天气调整) sensor.sea_level_pressure = 1013.25 while True: print(f"温度: {sensor.temperature:.1f} C") print(f"气压: {sensor.pressure:.1f} hPa") print(f"海拔: {sensor.altitude:.1f} 米") print("-" * 20) time.sleep(2)

这个例子体现了CircuitPython硬件抽象的优雅。busio.I2C()创建了I2C总线对象,然后传感器库adafruit_bmp280利用这个总线对象进行通信。你无需关心底层的寄存器操作。记得将BMP280的VCC接3.3V,GND接GND,SCL接板子SCL,SDA接板子SDA,并在SDA和SCL线上各接一个4.7kΩ的上拉电阻到3.3V。

5. 高级技巧、问题排查与资源汇总

掌握了基础,我们来看看一些能提升效率和解决实际问题的进阶内容。

5.1 充分利用SPI Flash进行数据记录

在Arduino模式下,2MB的SPI Flash是一个巨大的存储空间。你可以把它当作一个简单的文件系统来用。Adafruit提供了一个Adafruit_SPIFlash库来简化操作。

#include <Adafruit_SPIFlash.h> // 使用SPI1总线,Flash芯片的片选引脚是39 Adafruit_SPIFlash flash(39); void setup() { Serial.begin(9600); while (!Serial) delay(10); if (!flash.begin()) { Serial.println("Error, failed to initialize SPI flash!"); while(1); } // 获取Flash信息 Serial.print("Flash chip JEDEC ID: 0x"); Serial.println(flash.getJEDECID(), HEX); Serial.print("Flash size: "); Serial.print(flash.size() / 1024); Serial.println(" KB"); // 写入数据 uint8_t writeBuffer[] = "Hello, ItsyBitsy Flash!"; flash.writeBuffer(0, writeBuffer, sizeof(writeBuffer)); // 读取数据 uint8_t readBuffer[50]; flash.readBuffer(0, readBuffer, sizeof(writeBuffer)); Serial.print("Read from flash: "); Serial.println((char*)readBuffer); } void loop() { // 主循环 }

这个例子演示了最基本的读写。更实用的做法是结合Adafruit_LittleFS库,在Flash上创建一个完整的文件系统,像操作SD卡一样读写文件,非常适合长时间的数据记录应用。

5.2 常见问题与解决方案速查表

问题现象可能原因解决方案
CIRCUITPY盘符不出现1. 板子处于Bootloader模式。
2. CircuitPython固件损坏。
3. USB线或端口问题。
1. 按一次复位键,等待几秒。
2. 重新刷写CircuitPython UF2固件(从官网下载.uf2文件,拖入BOOT盘)。
3. 更换USB线或端口,确保是数据线。
代码不运行,RGB LED呈黄色code.py中存在语法错误或运行时错误。进入REPL(Ctrl+C),查看具体的错误信息。常见错误:缩进错误、未安装库、拼写错误。
串口控制台无输出1. 波特率设置错误(CircuitPython固定为9600)。
2. 程序中没有print语句。
3. 其他软件占用了串口。
1. 在Mu或串口工具中确保波特率为9600。
2. 检查代码。
3. 关闭可能占用端口的IDE或终端。
I2C设备无法通信1. 忘记接上拉电阻(最常见)。
2. 地址错误。
3. 接线错误(SDA/SCL接反)。
1. 在SDA和SCL线上各接一个2.2kΩ-10kΩ电阻到3.3V。
2. 使用I2C扫描程序确认设备地址。
3. 检查接线。
NeoPixel不亮或颜色异常1. 电源不足。
2. 数据线接错引脚。
3. 代码中LED数量定义错误。
1. 为灯带单独供电,并将电源地与板子共地。数据线接引脚D5(电平转换引脚)最佳。
2. 检查接线。
3. 确保num_pixels参数与实际灯珠数一致。
在Arduino IDE中上传失败1. 端口选择错误。
2. 板子型号选择错误。
3. 处于非Bootloader模式。
1. 确认选择了正确的COM口。
2. 确认选择了“Adafruit ItsyBitsy M0 Express”。
3. 快速双击复位键,待RGB LED呈绿色呼吸状后重试上传。
Mac上向CIRCUITPY复制文件慢macOS系统自动生成.DS_Store等隐藏文件,占用空间和写入时间。在终端执行defaults write com.apple.desktopservices DSDontWriteNetworkStores true并重启,可禁止在移动磁盘生成这些文件。

5.3 性能优化与进阶方向

当你熟悉基本操作后,可以探索这些进阶领域以释放板子的全部潜力:

  1. 使用硬件中断:SAMD21支持所有引脚(除D4)的外部中断。在Arduino中,使用attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)。在CircuitPython中,可以使用keypad模块或alarm模块的引脚唤醒功能来实现高效的事件响应。

  2. 低功耗设计:ItsyBitsy M0在睡眠模式下功耗可以降到微安级。在Arduino中,研究ArduinoLowPower库。在CircuitPython中,使用alarm模块来设置深度睡眠,并通过定时器或引脚变化唤醒。

  3. USB HID设备:你可以把它变成一个自定义键盘或鼠标。CircuitPython原生支持usb_hid模块,几行代码就能让板子模拟按键或鼠标移动。这在制作宏键盘或辅助输入设备时非常有用。

  4. 音频播放:利用A0引脚的DAC,可以播放低采样率的WAV文件。结合audiocoreaudioio模块(CircuitPython),或Adafruit_ZeroDMAAdafruit_ZeroPDM库(Arduino),可以实现简单的音频输出。

  5. 多任务与异步:对于复杂的应用,可以考虑在CircuitPython中使用asyncio库进行协作式多任务,或者在Arduino中使用FreeRTOS之类的实时操作系统(虽然对M0来说资源较紧张)。

5.4 社区与资源

遇到无法解决的问题?你不是一个人。Adafruit围绕其硬件构建了极其活跃和友好的社区。

  • Adafruit Discord:这是获得实时帮助最快的地方。有专门的#circuitpython#arduino频道,很多资深用户和Adafruit员工都在那里。
  • Adafruit学习系统:你正在阅读的这篇指南就来源于此。这里有成千上万个项目教程,从基础到高级,涵盖所有Adafruit产品。
  • CircuitPython官方网站:获取最新固件、库捆绑包和核心文档。
  • GitHub:所有CircuitPython库和核心代码都是开源的。你可以提交Issue报告bug,或者直接阅读源码来理解底层原理。

从我个人的经验来看,ItsyBitsy M0 Express最大的魅力在于它在“强大”和“易用”之间找到了一个完美的平衡点。它小巧到可以塞进任何项目外壳,却又功能齐全,足以支撑起一个复杂原型。双开发环境的支持让你可以根据项目阶段自由选择:用CircuitPython快速迭代创意和逻辑,用Arduino优化最终性能和尺寸。那块2MB的Flash,在数据记录类项目中简直是救星。唯一需要注意的就是它的3.3V逻辑电平,在与5V设备通信时务必使用电平转换器。总之,这是一块能伴随你从学习到产品原型的优秀开发板,值得你花时间去深入挖掘它的每一项功能。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询