Board Overview

概述

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插座用于连接屏幕,使用屏幕从未如此简单。

特性

性能描述

引脚说明以及外观指示图

外观指示图

Board Overview

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

电源及引脚

Power pins

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

引脚介绍

这是微控制器的通用I / O引脚设置。
所有逻辑电压均为3.3V
几乎所有引脚均可进行PWM输出
所有引脚均可为中断输入

~4 Button

我们将~4引脚连接在UserButton,并在底部留出焊盘。
在特殊情况下您可以自行焊接引出后和其他引脚一样使用,但是这样会影响串口重置功能的使用。
请参考"使用教程-串口重置"

FPC对应线序

我们为连接屏幕设计了FPC连接器,将主板的部分引脚并联在FPC上,用以便捷的使用屏幕,以下是所连接的引脚列表

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通信,在绝大部分的设备中,都可以免驱使用。若您发现插上设备,驱动没有自动安装,也可以自行手动安装

Arduino IDE 编译环境配置

- 配置URL网址到Arduino IDE

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

安装SDK1

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

安装SDK2

将如下链接地址复制到新弹出的对话框中:http://download.dfrobot.top/firebeetle/package_firebeetle_index.json

安装SDK3
点击OK

- 更新板卡 打开Tools->Board:->Boards Manager,如下图所示:

安装SDK 4

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

安装SDK 5

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

安装SDK 6

安装成功!

FireBeetle M0默认Blink灯连接到13,打开arduino的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
}

电池测量

Lipoly电池在4.2V时被“最大化”,并在大部分电池寿命中停留在3.7V左右,然后缓慢下降至3.2V左右,然后保护电路将其切断。通过测量电压,您可以快速确定何时达到3.7V以下 为了简化此操作,我们在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板载的W812连接到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盘

U盘模式
如何简化主板与PC的数据交互?
FireBeetle M0内置了SPI Flash U盘,连接电脑,①双击RST即可进入U盘模式此时②绿灯常亮

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() {

}

内置字库

在屏幕打印文字时程序太大?M0内置了字库,轻松显示各国文字 使用方法:

CSV库

同样为了简化数据交互的难题,FireBeetle移植了CSV库,您可以在如图位置找到demo
CSV

尺寸图

主板尺寸

常见问题

串口重置

程序跑飞导致串口丢失?我们设计了Blink重置功能,将程序重置为RGB blink,更方便的找回串口
串口重置
按住~4按钮后,单击RST,进入重置准备状态,并在此状态中会等待两秒
此时~8RGB灯在重置准备状态中会亮起红灯,同时~13LED灯也会常亮
串口重置2
红灯亮起后,单击~4,开始烧录RGB Blinkc程序,烧录时RGB亮起蓝灯,烧录状态非常快所以蓝灯通常一闪而过
烧录成功后RGB灯依次发出红绿蓝光,此时将板子连接电脑将正常弹出串口

引脚输出和上拉

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

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或者论坛联系我们! 更多问题及有趣的应用,可以 [访问论坛]

更多