概述
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
引脚说明以及外观指示图
外观指示图
NOTE: NC不连接,VCC为电源电压输出(5V-USB 供电时输出USB电压, 3.7V-锂电池供电时输出电池电压)
电源及引脚
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 |
NOTE: 请不要重复使用相关引脚
使用教程
驱动安装
FireBeetle-M0内置了USB通信,在绝大部分的设备中,都可以免驱使用,您可以跳过此步骤。
若您发现插上设备,驱动没有自动安装,也可以自行手动安装:[点击链接下载驱动程序]
根据您的系统,x86系统点击①,64位系统点击②,根据提示信息完成驱动安装。
Arduino IDE 编译环境配置
- 配置URL网址到Arduino IDE
打开Arduino IDE,点击'''File->Preferences''',如下图所示:
在新打开的界面中,点击如下图红色圆圈中的按钮,
将如下链接地址复制到新弹出的对话框中:https://downloadcd.dfrobot.com.cn/boards/package_DFRobot_index.json
点击OK
- 更新板卡
打开Tools->Board:->Boards Manager,如下图所示:
Boards Manager会自动更新板卡,会在列表中看到FireBeetle-M0主板,点击安装如下图所示:
安装完成后,列表会显示已经安装FireBeetle-M0主板,如下图所示:
安装成功!
- 选择主板与串口
打开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);
}
显示结果如图
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、图片显示、音频播放等有趣的功能。
双击①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:
尺寸图
- 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或者论坛联系我们!
更多问题及有趣的应用,可以 [访问论坛]