FireBeetle Board-ESP32-E

1.FireBeetle ESP32-E产品简介

FireBeetle ESP32-E是一款基于ESP-WROOM-32E双核芯片的主控板,它专为IoT设计。
它支持WIFI和蓝牙双模通信并具有体积小巧超低功耗板载充电电路接口易用等特性。可灵活的用于家庭物联网改装工业物联网改装可穿戴设备等等。
通过和IFTTT等物联网平台的连接,你可轻松制作出你独有的特色物联网智能家居系统。
FireBeetle ESP32-E深度支持ArduinoIDE编程,并且即将支持Scratch图形化编程及MicroPython编程。 我们提供了详细的在线教程和应用案例,以及上千种免焊接的Gravity接口传感器与执行器,可轻松上手制作,大幅度降低你的学习时间。邮票孔的设计,让它可以方便的嵌入你设计的PCB上,大大缩减你的原型开发成本以及原型测试时间。

2.FireBeetle系列是什么

FireBeetle是一个高性能且更mini的Arduino开源开发板系列,现在FireBeetle不仅完全兼容arduino的开发环境,并且拥有更丰富的软硬件资源,它将支持makecode、Mind+、pinpong、MicroPython的开发环境(即将完善),无论是图形化编程、C语言、python编程还是JS编程都可以随心所欲的操作硬件。

它是如此的灵活并且开源,我们为您提供了最简单的编程方式!最详细的教程资料!上千种易用的Gravity外设!无论您是学生、电子爱好者、艺术家或者设计师,它都将是您开启电子世界的最佳伙伴,不用再面对复杂的电路、烧脑的程序、五花八门的通信协议,使用FireBeetle别再犹豫!成就您的无限可能!

3.特性

4.性能描述

5.外观指示图

6.引脚布局

6.1 概述

FireBeetle ESP32-E多达22个物理GPIO,其中34-39 仅用作输入管脚,其他的既可以作为输入又可以作为输出管脚。 所有逻辑电压均为3.3V

6.2 Power

6.3 Control

6.4 GPIO

6.5 UART

ESP32共有2个UART端口, 其中UART0用于与PC通信

串口名 Arduino TX RX
UART0 Serial pin1 pin3
UART2 Serial2 pin17 pin16

7. 首次使用

7.1 Arduino环境配置

当您首次使用FireBeetle主控,您需要了解以下步骤

  1. 添加IDE中的json链接
  2. 下载主控的核心
  3. 选择开发板以及串口
  4. 打开示例程序并烧录
  5. 了解串口监视器

如果这是您第一次接触arduino,此例程将是您的第一个程序
烧录此程序您将看到LED规律闪烁
FireBeetle Board-ESP32默认Blink灯连接到D9/2

    // 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
    }

烧录成功

7.3 蓝牙基础示例

ESP32具有蓝牙功能,此例程将示范使用两块FireBeetle ESP32-E进行蓝牙透传。
通过其中一块ESP32向另一块ESP32发送数据,是使用蓝牙无线通信的最基本模型。

//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Victor Tchistiak - 2019
//
//This example demostrates master mode bluetooth connection and pin 
//it creates a bridge between Serial and Classical Bluetooth (SPP)
//this is an extention of the SerialToSerialBT example by Evandro Copercini - 2018
//

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

String MACadd = "AA:BB:CC:11:22:33";
uint8_t address[6]  = {0xAA, 0xBB, 0xCC, 0x11, 0x22, 0x33};
//uint8_t address[6]  = {0x00, 0x1D, 0xA5, 0x02, 0xC3, 0x22};
String name = "ESP32test";
char *pin = "1234"; //<- standard pin would be provided by default
bool connected;

void setup() {
  Serial.begin(115200);
  //SerialBT.setPin(pin);
  SerialBT.begin("ESP32master", true); 
  //SerialBT.setPin(pin);
  Serial.println("The device started in master mode, make sure remote BT device is on!");

  // connect(address) is fast (upto 10 secs max), connect(name) is slow (upto 30 secs max) as it needs
  // to resolve name to address first, but it allows to connect to different devices with the same name.
  // Set CoreDebugLevel to Info to view devices bluetooth address and device names
  connected = SerialBT.connect(name);
  //connected = SerialBT.connect(address);

  if(connected) {
    Serial.println("Connected Succesfully!");
  } else {
    while(!SerialBT.connected(10000)) {
      Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app."); 
    }
  }
  // disconnect() may take upto 10 secs max
  if (SerialBT.disconnect()) {
    Serial.println("Disconnected Succesfully!");
  }
  // this would reconnect to the name(will use address, if resolved) or address used with connect(name/address).
  SerialBT.connect();
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(20);
}
//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Evandro Copercini - 2018
//
//This example creates a bridge between Serial and Classical Bluetooth (SPP)
//and also demonstrate that SerialBT have the same functionalities of a normal Serial

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  Serial.println("The device started, now you can pair it with bluetooth!");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(20);
}

结果

通过主机串口发送:“我是主机”
从机串口显示“从机接收:我是主机”
通过从机串口发送:“我是从机”
主机串口显示“主机接收:我是从机”

成员函数

7.4 WIFI基础示例

ESP32具有WIFI功能,以下示例使用ESP32创建了一个wifi服务器,使用客户端连接到该服务器,遥控LED的亮灭

/*
  WiFiAccessPoint.ino 创建了一个wifi热点并提供了一个web服务

  Steps:
  1. 连接到这个wifi "yourAp"
  2. 访问 http://192.168.4.1/H 来开灯或者访问http://192.168.4.1/L 来关灯
     OR
     Run raw TCP "GET /H" and "GET /L" on PuTTY terminal with 192.168.4.1 as IP address and 80 as port
*/

#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>


// 设置你的wifi与密码
const char *ssid = "esp32";
const char *password = "";

WiFiServer server(80);

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);//将LED引脚设置为输出模式
  Serial.begin(115200);
  Serial.println();
  Serial.println("Configuring access point...");

  // 配置wifi以及获取IP地址.
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.begin();

  Serial.println("Server started");
}

void loop() {
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    Serial.println("New Client.");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // the content of the HTTP response follows the header:
            client.print("Click <a href=\"/H\">here</a> to turn ON the LED.<br>");
            client.print("Click <a href=\"/L\">here</a> to turn OFF the LED.<br>");

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          } else {    // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /H")) {
          digitalWrite(LED_BUILTIN, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /L")) {
          digitalWrite(LED_BUILTIN, LOW);                // GET /L turns the LED off
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println("Client Disconnected.");
  }
}

结果

使用手机连接该wifi,通过浏览器访问192.168.4.1,如图所示显示ip地址为192.168.4.1,服务已开启

使用浏览器访问该ip地址得到如下图所示

尝试分别点击链接控制LED吧

成员函数

7.5 霍尔传感器

ESP32自带霍尔传感器 , 当有磁场靠近时,会显示正负值

void setup()
{
  Serial.begin(9600);
}
void loop()
{
   Serial.printf("hallRead:%d\n",hallRead());
   delay(200);
}

结果

成员函数

7.5 电容按键

ESP32提供了电容触摸传感器的功能, 共有T0,T2~T9 共 9个touch传感器可用.分别对应引脚4、2、15、13、12、14、27、33、32. 无需设置PinMode,touchRead()返回值为0~255. 触摸强度越大,返回值越小。 烧录此例程,将使用4/D12引脚作为触摸按键,并通过串口监视器返回触摸值

void setup()
{
  Serial.begin(9600);
}

void loop()
{
   Serial.printf("touch:%d\n",touchRead(4));
}

结果

成员函数

7.6 GDI显示接口

FireBeetle Board-ESP32 V4.0

此接口为DFRbot专用GDI显示屏接口,使用18pin-FPC线连接,单线材连接屏幕,为您提供最简捷的屏幕使用方式。
以下是GDI接口使用的引脚列表

FPC PINS FireBeetle ESP32 PINS Description
VCC 3V3 3.3V
BLK(PWM调光) 12/D13 背光
GND GND GND
SCLK 18/SCK SPI时钟
MOSI 23/MOSI 主机输出,从机输入
MISO 19/MISO 主机输入,从机输出
DC 25/D2 数据/命令
RES 26/D3 复位
CS 14/D6 TFT片选
SDCS 13/D7 SD卡片选
FCS 0/D5 字库
TCS 4/D12 触摸
SCL 22/SCL I2C时钟
SDA 21/SDA I2C数据
INT 16/D11 INT
BUSY-TE 17/D10 防撕裂引脚
X1 NC 自定义引脚1
X2 NC 自定义引脚2

使用FPC链接屏幕时根据GDL demo配置所需对应的引脚号即可,通常只需要根据不同主控配置三个引脚
支持GDI的显示屏:

/*ESP32 and ESP8266*/
#elif defined(ESP32) || defined(ESP8266)
#define TFT_DC  25
#define TFT_CS  14
#define TFT_RST 26

具体使用方式请参考,GDL显示屏wiki:https://wiki.dfrobot.com.cn/_SKU_DFR0664_2.0_240x320_LCD

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

7.7 RGB_LED

FastLED是一款功能强大却简单易用的可以控制WS2812、LPD8806等LED光带的Arduino第三方库。目前FastLED是公认的Arduino开发者应用最为广泛的LED控制库之一。 FireBeetle将FastLED集成在核心库中,以下代码将演示如何使用5/D8连接的RGB_LED

#include <FastLED.h>

// How many leds in your strip?
#define NUM_LEDS 1

// For led chips like WS2812, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
// Clock pin only needed for SPI based chipsets when not using hardware SPI
#define DATA_PIN 5
#define CLOCK_PIN 13

// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() { 
    // Uncomment/edit one of the following lines for your leds arrangement.
    // ## Clockless types ##
    FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // GRB ordering is assumed
}

void loop() { 
  //灯珠显示红色
  leds[0] = CRGB::Red;
  FastLED.show();
  delay(500);
  // 灯珠显示绿色
  leds[0] = CRGB::Green;
  FastLED.show();
  delay(500);
  // 灯珠显示蓝色
  leds[0] = CRGB::Blue;
  FastLED.show();
  delay(500);
}

成员函数

7.8 sleep模式

在sleep模式下可以将功耗降低至10μA(断开低功耗焊盘),以下demo将演示定时进入sleep模式

#define uS_TO_S_FACTOR 1000000ULL  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  5        /* Time ESP32 will go to sleep (in seconds) */

RTC_DATA_ATTR int bootCount = 0;

/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason(){
  esp_sleep_wakeup_cause_t wakeup_reason;

  wakeup_reason = esp_sleep_get_wakeup_cause();

  switch(wakeup_reason)
  {
    case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
    case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
    case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
    case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
    case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
    default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
  }
}

void setup(){
  Serial.begin(115200);
  delay(1000); //Take some time to open up the Serial Monitor

  //Increment boot number and print it every reboot
  ++bootCount;
  Serial.println("Boot number: " + String(bootCount));

  //Print the wakeup reason for ESP32
  print_wakeup_reason();

  /*
  First we configure the wake up source
  We set our ESP32 to wake up every 5 seconds
  */
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
  " Seconds");

  /*
  Next we decide what all peripherals to shut down/keep on
  By default, ESP32 will automatically power down the peripherals
  not needed by the wakeup source, but if you want to be a poweruser
  this is for you. Read in detail at the API docs
  http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html
  Left the line commented as an example of how to configure peripherals.
  The line below turns off all RTC peripherals in deep sleep.
  */
  //esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  //Serial.println("Configured all RTC Peripherals to be powered down in sleep");

  /*
  Now that we have setup a wake cause and if needed setup the
  peripherals state in deep sleep, we can now start going to
  deep sleep.
  In the case that no wake up sources were provided but deep
  sleep was started, it will sleep forever unless hardware
  reset occurs.
  */
  Serial.println("Going to sleep now");
  Serial.flush(); 
  esp_deep_sleep_start();
  Serial.println("This will never be printed");
}

void loop(){
  //This is not going to be called
}

成员函数

8.Arduino基础教程

8.1 GPIO

数字IO

按键控制LED

模拟IO

8.2 PWM

8.3 串口

输入

输出

软件串口

运行时间函数

延时函数

8.3 调声函数

8.4 中断

8.5 I2C

I2C主从机与引脚

与串口的一对一通信方式不同,总线通信通常有主机(Master)和从机(Slave)之分。通信时,主机负责启动和终止数据传送,同时还要输出时钟信号;从机会被主机寻址,并且响应主机的通信请求,通信速率的控制由主机完成,主机会通过SCL引脚输出时钟信号供总线上的所有从机使用。同时,I2C是一种半双工通信方式,即总线上的设备通过SDA引脚传输通信数据,数据的发送和接收由主机控制,切换进行。ESP32有两个I2C控制器(也称为端口),负责处理两条I2C总线上的通信。每个I2C控制器都可以作为主机或从机运行。引脚21 默认的SDA, 引脚22是默认的SCL

8.6 SPI

SPI引脚
ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。
SPI0是专用于Flash的缓存,ESP32将连接的SPI Flash设备映射到内存中。
SPI1和SPI0 使用相同的硬件线,SPI1用于写入flash芯片。
HSPI和VSPI可以任意使用。
SPI1、HSPI和VSPI共有三条片选线,因此作为SPI主机允许ESP32 至多驱动三个SPI设备。

9.进阶教程

9.1 使用SD库

SD类

File类

File类提供了读/写文件的功能,该类的功能与之前使用的串口相关函数的功能非常类似。其成员函数如下。

9.2红外遥控

IRrecv类

IRrecv类可用于接收红外信号并对其解码。在使用该类之前,需要实例化一个该类的对象。其成员函数如下。

IRsend类

IRsend类可以对红外信号编码并发送。

9.3WIFI

ESP32同时支持STA以及AP模式的WiFi连接。

#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
HTTPClient http;
const char* ssid="dfrobotOffice";
const char* password="dfrobot2011";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 28800;
const int daylightOffset_sec = 0;
DynamicJsonDocument doc(1024);
DynamicJsonDocument doc1(1024);

void printLocalTime(){
 struct tm timeinfo;
 if(!getLocalTime(&timeinfo)){
   Serial.println("Failed to obtian time");
   return ;
 }
 Serial.println(&timeinfo,"%A, %B %d %Y %H:%M:%S");
}

void printLocalWeather(){
    http.begin("http://www.weather.com.cn/data/cityinfo/101270101.html");
    int httpCode = http.GET();
    if(httpCode == HTTP_CODE_OK){
      String pageData = http .getString();
      //Serial.println(pageData);
      deserializeJson(doc,pageData);
      JsonObject obj = doc.as<JsonObject>();
      String weatherInfo = obj["weatherinfo"];
      deserializeJson(doc1,weatherInfo);
      JsonObject obj1 = doc1.as<JsonObject>();
      String city = obj1["city"];
      String temp1 = obj1["temp1"];
      String temp2 = obj1["temp2"];
      String weather = obj1["weather"];
      String cityInfo ="地点:"+ city;
      String tempInfo =" 温度: " + temp1 + "~" + temp2;
      String cityWeatherinfo = " 天气状况: " + weather;
      Serial.println("获得天气情况如下:");
      printLocalTime();
      Serial.print(cityInfo);
      Serial.print(tempInfo);
      Serial.println(cityWeatherinfo);
    }else{
      Serial.println("GET ERR");
    }
    http.end();
}

void setup() {
Serial.begin(115200);
  Serial.printf("Connecting to %s",ssid);
  WiFi.begin(ssid,password);
  while(WiFi.status()!=WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.println(" CONNECTED");
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

 // printLocalWeather();  
}

void loop() {
  if(WiFi.status() == WL_CONNECTED){
    printLocalWeather();  
  }else{
    Serial.println("WiFi  Disconnect");
   }
}

说明:本Demo实现了通过WiFi功能获取网络时间以及通过访问国家气象局提供的http://www.weather.com.cn/datalcityinfo/101010100.html来获取天气情况,本接口中“101010100"为城市代码。
注意:该例程需要下载ArduinoJson库,下载方式如下图

结果

WiFiClass

HTTPClient

DynamicJsonDocument

9.4 蓝牙

本demo建立了一个BlE_Server,可以为客户端提供数据和发送通知,当服务器接收到客户端发来的数据时会将收到的数据以通知的方式发送给客户端。即本Demo中BLE服务端提供的通知服务只作用于将接收到的客户端数据的回传。

#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
#define SERVICE_UUID             "DFCD0001-36E1-4688-B7F5-EA07361B26A8"
#define CHARACTERISTIC1_UUID     "DFCD000A-36E1-4688-B7F5-EA07361B26A8"
bool deviceConnected = false;
BLEServer *pServer;
BLEService *pService;
BLECharacteristic* pCharacteristic;
class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
    };

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};
class MyCallbacks: public BLECharacteristicCallbacks {
    void onWrite(BLECharacteristic *pCharacteristic) {
      std::string value = pCharacteristic->getValue();

      if (value.length() > 0) {
        Serial.println("*********");
        Serial.print("New value: ");
        for (int i = 0; i < value.length(); i++){
          Serial.print(value[i]);
        }
        Serial.println();
        Serial.println("*********");
        pCharacteristic->notify();
      }
    }
};
void setupBLE()
{
  BLEDevice::init("DFRobot_ESP32");   //创建BLE设备
  pServer = BLEDevice::createServer();   //创建BLE服务器
  pServer->setCallbacks(new MyServerCallbacks());   //设置服务器的回调函数
  pService = pServer->createService(SERVICE_UUID); //创建BLE服务
  pCharacteristic = pService->createCharacteristic(
                                                 CHARACTERISTIC1_UUID,
                                                 BLECharacteristic::PROPERTY_READ|
                                                 BLECharacteristic::PROPERTY_NOTIFY|
                                                 BLECharacteristic::PROPERTY_WRITE);   //创建服务的特征值
  pCharacteristic->setCallbacks(new MyCallbacks());    //设置特征值的回调函数
  pCharacteristic->addDescriptor(new BLE2902());
  pCharacteristic->setValue("Hello DFRobot");
  pService->start();
  BLEAdvertising *pAdvertising = pServer->getAdvertising();
  pAdvertising->start();
}
void setup() {
  Serial.begin(115200);
  setupBLE();
}

void loop() {
   delay(3000);
}

结果

本demo使用FireBeetle ESP32-E作为BLE的服务端,客户端可以是手机。在手机上安装蓝牙助手,与ESP32模块建立BLE连接。这里对iPhone手机提供的Light Blue操作进行演示,Android系统的手机也有类似的蓝牙软件助手。
手机客户端操作如下:



BLEDevice

BLEServer

BLEService

### BLECharacteristic

BLEAdvertising

10.阿里云IoT

什么是阿里云

阿里云IoT致力于实现万物互联的美好世界,为生态合作伙伴提供基于云端一体化、安全物联网基础平台等,在通过该平台高效连接,管理设备的同时,其开放能力使合作伙伴更高效、低成本地构建各种创新的物联网应用场景。 阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,指令数据通过API调用下发至设备端,实现远程控制。 此外阿里云IoT还提供了丰富的开发服务,用户可以直接在该平台上搭建Web可视化、移动应用、服务开发等开发服务,这降低了物联网项目开发的难度,有了它,用户无需任何专业的开发技巧也可开发自己的项目。

智能灯光

图片

11.IFTTT

什么是IFTTT

IFTTT是If This Then That的缩写,事实上是让你的网络行为能够引发连锁反应、让你使用更为方便,其宗旨是“Put the internet to work for you”(让互联网为你服务)。IFTTT旨在帮助人们利用各网站的开放API,监控用户设置的 Trigger,如果 Trigger 被触发则执行用户设置的 Action ,通常我们可以创建 N 个 Applet ,来满足我们的各种自动化需求。

数据邮件

尺寸图

常见问题

驱动安装

FireBeetle-ESP32采用CH340串口芯片,在绝大部分的设备中,都可以免驱使用。若您发现插上设备,驱动没有自动安装,也可以自行手动安装:

Windows驱动安装——点击下载CH340驱动程序

Mac驱动安装——点击下载CH340驱动程序

CH340_驱动安装

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多