概述

DFRobot FireBeetle是DFRobot小巧开发板系列,既可单独使用也可以堆叠使用,拥有不同的主控板与扩展板,多样的功能堆叠,简单的模块组合。
FireBeetle M0,与arduino M0一样使用了ATSAMD21G18 ARM Cortex M0+高性能低功耗芯片,主频高达48MHz,拥有32KB RAM和256KB Flash,分别是Atmega328的8倍和16倍。
FireBeetle M0搭载了16MB SPI Flash,其中内置了12MB U盘,大大简化用户的桌面系统与开发板的数据交互操作,并且支持基于SPI Flash的easy flash数据库,内置基于SPI Flash的字模,用户使用屏幕可直接显示中英日韩多国语言文字。
使用了更方便的Type-C接口,更舒适的卧式按钮,板载了WS2812 RGB灯,并且板载了FPC插座用于连接屏幕,使用屏幕从未如此简单。

特性

  • DFRobot FireBeetle V2系列兼容
  • 高性能低功耗(Ultra-low power 为30uA)
  • 内置U盘、数据库、字库高级功能
  • 板载FPC母座(GDI专用接口),连接屏幕更简单
  • 小尺寸,方便安装

性能描述

  • 输入电压:3.3V~5.5V
  • 支持低功耗:30uA
  • 支持最大充电电流:300mA
  • 支持USB充电
  • 处理器:ATSAMD21G18
  • 主频:48MHz
  • SRAM:32KB
  • Flash:内置256KB 板载16MB SPI Flash
  • GPIO:25(均支持PWM输出)
  • 6 x 12-bit ADC
  • 1 x 10-bit DAC
  • SPI:1
  • I2C:1
  • UART:2
  • RGB LED:WS2812 连接引脚~8
  • 接口方式:FireBeetle V2系列兼容
  • 工作温度:-40℃~+85℃
  • 模块尺寸:25.4 x 60(mm)
  • 安装孔尺寸:M2孔径,内径2mm

引脚说明以及外观指示图

外观指示图

Board Overview

NOTE: NC不连接,VCC为电源电压输出(5V-USB 供电时输出USB电压, 3.7V-锂电池供电时输出电池电压)

电源及引脚

Power pins

FireBeetle M0为电源连接设计了丰富的接口

  • GND-这是所有电源和逻辑的公共接地
  • VIN -这是USB/Lipoly电池输入的正电压(5V-USB 供电时输出USB电压, 3.7V-锂电池供电时输出电池电压)
  • EN-这是3.3V稳压器的使能引脚。它已上拉,因此接地能够禁用3.3V稳压器
  • 3V3-这是3.3V稳压器的输出,可以提供500mA峰值

引脚介绍

这是微控制器的通用I / O引脚设置。

所有逻辑电压均为3.3V

几乎所有引脚均可进行PWM输出

所有引脚均可为中断输入

  • ~0 / RX1 -GPIO~0,也接收Serial1(硬件UART)的(输入)引脚,也可以是模拟输入
  • ~1 / TX1 -GPIO#1,也用于Serial1的发送(输出)引脚,也可以是模拟输入
  • ~2 -GPIO~2
  • ~3 -GPIO~3
  • ~5 -GPIO~5
  • ~6 -GPIO~6
  • ~7 -GPIO~7
  • ~9 -GPIO~9,
  • ~10 -GPIO~10
  • ~11 -GPIO~11
  • ~12 -GPIO~12
  • ~13 -GPIO~13,并连接到USB插孔旁边的红色LED
  • A0-该引脚为模拟输入 A0,但由于具有DAC(数模转换器),因此也是模拟输出。您可以将原始电压设置为0至3.3V,与PWM输出不同,这是一个真正的模拟输出
  • A1至A5-这些都是模拟输入以及数字I / O引脚。
  • SDA -I2C(线)数据引脚。
  • SCL -I2C(线)时钟引脚。
  • SCK / MOSI / MISO-这些是硬件SPI引脚,您可以将它们用作日常的GPIO引脚(但建议使其保持空闲状态,因为它们最适合用于高速SPI硬件)。
  • RX 接收Serial2(硬件UART)的(输入)引脚
  • TX 用于Serial2的发送(输出)引脚
  • NC 空引脚未连接芯片

~4 Button

我们将~4引脚连接在UserButton,并在底部留出焊盘。

在特殊情况下您可以自行焊接引出后和其他引脚一样使用,但是这样会影响串口重置功能的使用。

请参考"使用教程-串口重置"

FPC对应线序

我们为连接屏幕设计了GDI接口,使用18pin-FPC线连接屏幕,用以便捷的使用屏幕,以下是GDI接口使用的引脚列表

FPC PINS FireBeetle M0 PINS Description
VCC 3V3 3.3V
BLK(PWM调光) 9 背光
GND GND GND
SCLK SCK SPI时钟
MOSI MOSI 主机输出,从机输入
MISO MISO 主机输入,从机输出
DC 7 数据/命令
RES 6 复位
CS 5 TFT片选
SDCS 3 SD卡片选
FCS A4 字库
TCS A3 触摸
SCL SCL IIC时钟
SDA SDA IIC数据
INT 2 INT
BUSY-TE 10 防撕裂引脚
X1 NC 自定义引脚1
X2 NC 自定义引脚2

warning_yellow.png NOTE: 请不要重复使用相关引脚

使用教程

驱动安装

FireBeetle-M0内置了USB通信,在绝大部分的设备中,都可以免驱使用,您可以跳过此步骤。

若您发现插上设备,驱动没有自动安装,也可以自行手动安装:[点击链接下载驱动程序]

根据您的系统,x86系统点击①,64位系统点击②,根据提示信息完成驱动安装。

Arduino IDE 编译环境配置

- 配置URL网址到Arduino IDE

打开Arduino IDE,点击'''File->Preferences''',如下图所示:



安装SDK1



在新打开的界面中,点击如下图红色圆圈中的按钮,



安装SDK2



将如下链接地址复制到新弹出的对话框中:https://downloadcd.dfrobot.com.cn/boards/package_DFRobot_index.json




点击OK

- 更新板卡

打开Tools->Board:->Boards Manager,如下图所示:



安装SDK 4



Boards Manager会自动更新板卡,会在列表中看到FireBeetle-M0主板,点击安装如下图所示:



安装SDK 5



安装完成后,列表会显示已经安装FireBeetle-M0主板,如下图所示:



安装SDK 6



安装成功!

- 选择主板与串口

打开Tools->Board:选择FireBeetle M0主板



打开Tools->PORT:选择对应的串口


- 烧录程序

使用准备好的Blink程序进行一次烧录

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

在①中输入您编写的完整程序

点击②进行烧录

等待③窗口显示"Done uploading"等信息即烧录完成。

FireBeetle M0默认Blink灯连接到13,您可以到观察~13灯稳定闪烁,此时已经完成一次完整arduino烧录。

电池测量

锂电池在4.2V时为满电状态,使用过程中大部分时间维持在3.7V左右

最后下降到3.2V左右时电量耗尽,然后保护电路切断其供电。

为了简化此操作,我们在Li-ion接口上接入了一个双100K电阻分压器,并将其连接至A2。

如果您用完电池,您可能想知道电压是多少!使用以下代码:

#define VBATPIN A2
void setup() {
  // put your setup code here, to run once:
}
void loop() {
  float measuredvbat = analogRead(VBATPIN);
  measuredvbat *= 2;    // we divided by 2, so multiply back 
  measuredvbat *= 3.3;  // Multiply by 3.3V, our reference voltage
  measuredvbat /= 1024; // convert to voltage
  Serial.print("VBat: " ); Serial.println(measuredvbat);
}

显示结果如图

demo结果1

WS2812

M0板载的WS2812连接到Arduino的引脚~8 ,我们使用开源FastLED库,并将其设置为在pin8,您可以在以下位置找到内置的demo:

#include "FastLED.h"            // 此示例程序需要使用FastLED库
 
#define NUM_LEDS 1            // LED灯珠数量
#define DATA_PIN 8              // Arduino输出控制信号引脚
#define LED_TYPE WS2812         // LED灯带型号
#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序
 
uint8_t max_bright = 128;       // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高
 
CRGB leds[NUM_LEDS];            // 建立光带leds
 
void setup() { 
  LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带 
  FastLED.setBrightness(max_bright);                            // 设置光带亮度
}
 
void loop() { 
  leds[0] = CRGB::Red;          // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠
  FastLED.show();                // 更新LED色彩
  delay(50);                     // 等待500毫秒
}

U盘

如何简化主板与PC的数据交互?

FireBeetle M0内置了SPI Flash,可以像U盘一样连接电脑

您可以存储CSV、txt、jpg、wav等文件,实现datalogger、图片显示、音频播放等有趣的功能。

U盘模式

双击①RST即可进入U盘模式,此时②绿灯常亮

通过PC弹出U盘可退出U盘模式

EF数据库

EasyFlash是一款开源的轻量级面向嵌入式平台的Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发。非常适合智能家居、可穿戴、工控、医疗等需要断电存储功能的产品,资源占用极低,支持各种 MCU 片上存储器。
您可以在此链接,了解关于EF数据库的详细信息。
FireBeetle M0内置了EasyFlash库,在以下位置找到相应demo

/*!
 * @file delValue.ino
 * @brief 设置一个键值对并通过key删除它
 * @n 实验现象:串口监视器打印出key对应value的长度
 *
 * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @licence     The MIT License (MIT)
 * @author [LiYue](Yue.Li@dfrobot.com)
 * @version  V1.0
 * @date  2019-12-23
 * @get from https://www.dfrobot.com
 * @url https://github.com/cdjq/DFRobot_EasyFlash
 */

#include <DFRobot_EasyFlash.h>
DFRobot_EasyFlash easyflash;

char key[] = "key";               
char value[] = "value";
char valueRec[20];
size_t valueLen;
size_t getLen;
String data;
void setup()
{
  Serial.begin(115200);
  while(!Serial);
  easyflash.begin();
  easyflash.setValue(key,value);
  data = easyflash.getValue(key);
  getLen = easyflash.getValue(key,valueRec,20,valueLen);   //getValue()返回获得的key的长度,valueLen记录value的实际长度(获得长度小于等于用来接受的buffer长,所以可能小于实际长度)。
  Serial.print("The length of the value is :");Serial.println(getLen);
  Serial.println(data);
  easyflash.delValue(key);                        //根据key删除键值对
  getLen = easyflash.getValue(key,valueRec,20,valueLen);  //getValue()返回实际获得的长度,注意这里如果value已经删除,valueLen无法获得value的实际长度,所以valueLen的值不会变,传进来是多少函数运行完还是多少
  Serial.print("After delete the key&value.The length of the value is :");Serial.println(getLen);
}

void loop() {

}

内置字库

使用屏幕打印非英文字符时,经常会因为字库文件过大,使程序占用过多非必要的内存

在UNO、leonardo等主控中无法运行

而FireBeetle M0内置了字库,使庞大的字库文件无需占用flash,大大节省您宝贵的flash空间,轻松显示各国文字

使用方法:

  • 烧录字模
  • 使用字模

以上位置可以找到使用demo
①烧录字库demo

②串口显示字符打印demo

CSV库

同样为了简化数据交互的难题,FireBeetle移植了CSV库

CSV
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

将数据以CSV文件格式储存在FireBeetle M0中,使用EXCEL编辑FireBeetle U盘中的CSV数据,您可以便捷的完成筛选数据、绘制图表等有趣的操作。

您可以在如图位置找到demo:

CSV

尺寸图

主板尺寸

  • pin脚间距:2.54mm
  • 安装孔间距:24mm/53mm
  • 安装孔尺寸:3.1mm
  • 主板尺寸:29.00mm×58.00mm
  • 板厚:1.6mm

常见问题

引脚输出和上拉

使用上拉打开引脚作为输入的旧方法是使用

pinMode(pin, INPUT)

这是因为8位AVR芯片上的上拉选择寄存器与输出选择寄存器相同。
对于M0,您不能再这样做了!而是使用:

pinMode(pin, INPUT_PULLUP)

以此方式编写的代码仍然具有与AVR向后兼容的优势。对于不同的板类型,您不需要单独的版本

SerialUSB与Serial

大部分arduino示例是通过Serial.print进行调试并提供输出的,而官方Arduino M0内核的USB端口改为SerialUSB。

我们对此进行了改进,您使用Serial和SerialUSB时均可使用USB进行调试。而TX1、RX1与TX、RX通信接口我们分别设置为Serial1与Serial2。

其他问题

如果您对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 [访问论坛]

更多

点击下载芯片手册
点击下载原理图