【Seeed Studio XIAO ESP32S3 Sense 开箱Arduino教程】
视频讲解:
xiao开箱Arduino教程
目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦克风79元,后期我会整理相关专栏进行Arduino系统学习😘😘😘。有需要可以购买xiao开发板💕💕💕,SeeedXIAO ESP32S3 Sense硬件购买地址:https://s.click.taobao.com/lekazrt
活动地址:第四届2024年“寒假在家一起练”
资料地址:Seeed Studio XIAO ESP32S3 (Sense) 开发板
左图是xiao esp32S3开发板,右图是带摄像头、麦克风的xiao esp32S3开发板
1. Seeed Studio XIAO ESP32S3 (Sense) 开发板介绍
Seeed Studio XIAO系列是一款小型开发板,尺寸仅为拇指大小,具备类似的硬件结构。该系列的代号“小”表示它的小巧尺寸。其中,Seeed Studio XIAO ESP32S3 Sense集成了摄像头传感器、数字麦克风和SD卡支持。借助其嵌入式ML计算和摄影能力,该开发板成为了您探索智能语音和视觉AI的入门工具。
1.1 开发板参数
项目 | Seeed Studio XIAO ESP32S3 | Seeed Studio XIAO ESP32S3 Sense |
---|---|---|
处理器 | ESP32-S3R8Xtensa LX7双核32位处理器,工作频率高达240 MHz | 同 |
无线 | 完整的2.4GHz Wi-Fi子系统BLE:蓝牙5.0,蓝牙网状 | 同 |
内置传感器 | - | 适用于1600*1200的OV2640摄像头传感器数字麦克风 |
存储器 | 片上8M PSRAM和8MB闪存 | 片上8M PSRAM和8MB闪存板载SD卡插槽,支持32GB FAT |
接口 | 1x UART, 1x IIC, 1x IIS, 1x SPI, 11x GPIOs (PWM), 9x ADC, 1x User LED, 1x Charge LED 1x Reset button, 1x Boot button | 1x UART, 1x IIC, 1x IIS, 1x SPI, 11x GPIOs (PWM), 9x ADC, 1x User LED, 1x Charge LED, 1x B2B Connector (with 2 additional GPIOs)1x Reset button, 1x Boot button |
尺寸 | 21 x 17.5mm | 21 x 17.5 x 15mm(带扩展板) |
功率 | 输入电压(Type-C):5V 输入电压(BAT):4.2V | |
- | 充电电池电流:100mA | 充电电池电流:100mA |
启用Wi-Fi的功耗 | 活动模型: ~ 100 mA | 活动模型: ~ 110 mA (带扩展板) |
BLE启用功耗 | 活动模型:~ 85 mA | 活动模型: ~ 102 mA (带扩展板) |
工作温度 | -40°C ~ 65°C | 同 |
1.2 特征
- 强大的MCU板: 采用ESP32S3 32位双核Xtensa处理器芯片,运行频率高达240 MHz,安装多个开发端口,支持Arduino/MicroPython
- 高级功能 (用于Sense): 可拆卸的OV2640相机传感器,分辨率为1600*1200,与OV5640相机传感器兼容,内置额外的数字麦克风精心设计的电源:锂电池充电管理功能,提供4种功耗模式,可实现低至14μA的深度睡眠模式
- 拥有更多可能性的美好记忆: 提供8MB PSRAM和8MB FLASH,支持用于外部32GB FAT内存的SD卡插槽
- 出色的射频性能: 支持2.4GHz Wi-Fi和BLE双无线通信,连接U.FL天线时支持100m+远程通信
- 拇指大小的紧凑型设计:21x17.5mm,采用XIAO的经典外形,适用于可穿戴设备等空间有限的项目
2. 硬件概述
在一切开始之前,有一些产品的基本参数是非常重要的。下表提供了有关Seeed Studio XIAO ESP32S3特性的信息。
XIAO ESP32S3/SIAO ESP32S3感应前端指示图
其中用户LED灯连接IO21
XIAO ESP32S3/SIAO ESP32S3感应返回指示图&XIAO ESP32S3/SIAO ESP32S3感应引脚列表
- 5V-这是从USB端口输出的5V。你也可以将其用作电压输入,但你必须在外部电源和这个引脚之间有某种二极管(肖特基二极管、信号二极管、电源二极管),阳极到电池,阴极到5V引脚。
- 3V3-这是车载调节器的调节输出。你可以用700mA输出
- GND-电源/数据/信号接地
2.1 绑定的Pins
在每次启动或重置时,芯片都需要一些初始配置参数,例如加载芯片的引导模式、闪存的电压等。这些参数通过捆扎引脚传递。复位后,捆扎引脚作为常规IO引脚工作。
在芯片复位时由给定的捆扎引脚控制的参数如下:
• 芯片引导模式–GPIO0和GPIO46
• VDD_SPI电压–GPIO45
• ROM消息打印–GPIO46
• JTAG信号源–GPIO3
GPIO0、GPIO45和GPIO46在芯片复位时连接到芯片的内部弱上拉/下拉电阻器。 这些电阻器确定捆扎引脚的默认位值。此外,这些电阻器决定位 如果捆扎引脚连接到外部高阻抗电路,参考下表。
2.2 拓展认知
要更改位值,捆扎引脚应连接到外部下拉/上拉电阻。如果ESP32-S3被主机MCU用作设备,则捆扎引脚电压电平也可以由主机控制MCU。
所有捆扎针都有插销。在系统复位时,锁存器对其各自捆扎引脚的位值进行采样并存储它们,直到芯片断电或关闭。锁存器的状态不能以任何其他方式更改。它使捆扎引脚值在整个芯片操作期间可用,并且引脚在重置后被释放用作常规IO引脚。
关于捆扎针的定时要求,存在诸如设置时间和保持时间之类的参数。
3. 入门
为了让您更快地开始使用XIAO ESP32S3,请阅读下面的硬件和软件准备,以准备XIAO。
3.1 出厂程序
我们用一个简单的工厂程序对每个新的XIAO ESP32S3和XIAO ESP32_Sense进行预编程。
- XIAO ESP32S3
常规版本中预设的出厂程序是触针点亮程序。当你接通XIAO的电源时,触摸它的一些引脚,橙色的用户指示灯就会亮起。
- XIAO ESP32S3 Sense
XIAO ESP32S3
Sense附带预装的WebCam示例程序。你可以使用这个程序,给晓一个良好的天线安装和电源。有关详细信息,您可以阅读有关该程序的Wiki。
2.2 硬件准备
2.2.1 焊接接头
XIAO ESP32S3出厂时默认没有引脚头,您需要准备自己的引脚头,并将其焊接到XIAO的相应引脚上,以便连接到扩展板或传感器。
由于XIAO ESP32S3的尺寸很小,焊接接头时请小心,不要将不同的引脚粘在一起,也不要将焊料粘在屏蔽或其他部件上。否则,可能会导致XIAO短路或无法正常工作,由此造成的后果将由用户承担。
2.2.2 天线的安装
在XIAO ESP32S3正面的左下角,有一个单独的“WiFi/BT天线连接器”。为了获得更好的WiFi/蓝牙信号,您需要取出包装内的天线并将其安装在连接器上。天线的安装有一个小技巧,如果你直接用力按压,你会发现很难按压,你的手指会受伤!安装天线的正确方法是先将天线连接器的一侧放入连接器块中,然后在另一侧向下压一点,天线就安装好了。拆下天线也是这样,不要用蛮力直接拉天线,一侧用力提起,天线很容易取下。
2.2.3 安装扩展板(用于Sense)
如果您正在购买XIAO ESP32S3 Sense,那么您还应该包括一个扩展板。此扩展板具有1600*1200 OV2640摄像头传感器、板载SD卡插槽和数字麦克风。通过使用XIAO ESP32S3 Sense安装扩展板,您可以使用扩展板上的功能。安装扩展板非常简单,只需将扩展板上的连接器与XIAO ESP32S3上的B2B连接器对齐,用力按压并听到“咔嗒”一声,即可完成安装。
现在,我们的货架上有一款新的完全兼容XIAO ESP32S3 Sense的强大相机OV5640,如果您购买了它,您可以更换相机来使用它。
2.3 软件准备
XIAO ESP32S3的推荐编程工具是Arduino IDE,因此作为软件准备的一部分,您需要完成Arduino的安装。
:::提示 如果这是您第一次使用Arduino,我们强烈建议您参考 Arduino入门. :::
- 步骤1根据您的操作系统下载并安装Arduino IDE的稳定版本。
下载 Arduino IDE - 步骤 2. 启动Arduino应用程序。
- 步骤p 3. 将ESP32板包添加到您的Arduino IDE中。
导航到文件>首选项,并用以下url填充“Additional Boards Manager url”:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
导航到Tools > Board > Boards Manager...
, 在搜索框中键入关键字* esp32 选择最新版本的 esp32, 然后安装它。
:::警告 XIAO ESP32S3的车载软件包至少需要提供版本2.0.8。 :::
如果下载失败:可以尝试离线下载esp32
2.0.11可以参照这个教程解决办法三,亲测有效https://blog.csdn.net/weixin_43034503/article/details/128733085
- 步骤4 - 选择您的板和端口。 在Arduino IDE的顶部,您可以直接选择端口。这可能是COM3或更高版本(COM1和COM2通常保留用于硬件串行端口)。
此外,在左侧的开发板中搜索xiao。选择XIAO_ESP32S3。
有了这些准备,您就可以开始为XIAO ESP32S3编写程序进行编译和上传。
2.4 BootLoader模式
有时,我们使用错误的程序会使XIAO看起来失去端口或无法正常工作。具体性能为:
- 已连接到计算机,但找不到肖的端口号。
- 计算机已连接,端口号出现,但上载程序失败。
当你遇到以上两种情况时,你可以尝试将XIAO置于BootLoader模式,这可以解决大多数设备无法识别和上传失败的问题。具体方法是:
- 步骤1 按住XIAO ESP32S3上的BOOT(引导)按钮,不要松开它。
- 第2步 按住BOOT(引导)按钮,然后通过数据线连接到计算机,右边会常亮起红色LED。连接到计算机后释放BOOT按钮。
- 步骤3 上传Blink程序以检查XIAO ESP32S3的操作。
2.5 重置
当程序运行异常时,您可以在通电时按一次Reset,让XIAO重新执行上传的程序。 当您在通电时按住BOOT键,然后按一次Reset键时,您也可以进入BootLoader模式。
3. 运行您的第一个Blink程序
到目前为止,我相信您已经对晓ESP32S3的功能和硬件有了很好的了解。接下来,让我们以最简单的眨眼程序为例,为您的XIAO ESP32S3执行第一次眨眼!
-
步骤1. 启动Arduino应用程序。
-
步骤 2. 引导到 File > Examples > 01.Basics > Blink,打开程序。
-
步骤 3. 将板卡型号选择为XIAO ESP32S3,然后选择正确的端口号上传程序。
其中用户LED灯连接IO21,从下面pins_arduino.h可以得出
LED_BUILTIN =21
blink.ino
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/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
}
pins_arduino.h
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <stdint.h>
#include "soc/soc_caps.h"
#define USB_VID 0x2886
#define USB_PID 0x0056
#define EXTERNAL_NUM_INTERRUPTS 46
#define NUM_DIGITAL_PINS 48
#define NUM_ANALOG_INPUTS 20
static const uint8_t LED_BUILTIN = 21;
#define BUILTIN_LED LED_BUILTIN // backward compatibility
#define LED_BUILTIN LED_BUILTIN
#define analogInputToDigitalPin(p) (((p)<NUM_ANALOG_INPUTS)?(analogChannelToDigitalPin(p)):-1)
#define digitalPinToInterrupt(p) (((p)<NUM_DIGITAL_PINS)?(p):-1)
#define digitalPinHasPWM(p) (p < EXTERNAL_NUM_INTERRUPTS)
static const uint8_t TX = 43;
static const uint8_t RX = 44;
static const uint8_t SDA = 5;
static const uint8_t SCL = 6;
static const uint8_t SS = 44;
static const uint8_t MOSI = 9;
static const uint8_t MISO = 8;
static const uint8_t SCK = 7;
static const uint8_t A0 = 1;
static const uint8_t A1 = 2;
static const uint8_t A2 = 3;
static const uint8_t A3 = 4;
static const uint8_t A4 = 5;
static const uint8_t A5 = 6;
static const uint8_t A8 = 7;
static const uint8_t A9 = 8;
static const uint8_t A10 = 9;
static const uint8_t D0 = 1;
static const uint8_t D1 = 2;
static const uint8_t D2 = 3;
static const uint8_t D3 = 4;
static const uint8_t D4 = 5;
static const uint8_t D5 = 6;
static const uint8_t D6 = 43;
static const uint8_t D7 = 44;
static const uint8_t D8 = 7;
static const uint8_t D9 = 8;
static const uint8_t D10 = 9;
static const uint8_t T1 = 1;
static const uint8_t T2 = 2;
static const uint8_t T3 = 3;
static const uint8_t T4 = 4;
static const uint8_t T5 = 5;
static const uint8_t T6 = 6;
static const uint8_t T7 = 7;
static const uint8_t T8 = 8;
static const uint8_t T9 = 9;
#endif /* Pins_Arduino_h */
一旦程序成功上传,您将看到以下输出消息,您可以观察到XIAO ESP32S3右侧的橙色LED正在闪烁。
祝贺你,你已经学会了如何为XIAO ESP32S3编写和上传程序!👍👍👍
:::提示 只有当XIAO ESP32S3上的用户LED引脚设置为高电平时,LED才会熄灭,只有当引脚设置为低电平时,它才会点亮。 :::
4. 电池使用情况
XIAO ESP32S3系列内置电源管理芯片,可使用电池独立供电,或通过XIAO ESP32S3的USB端口为电池充电。如果您想为XIAO连接电池,我们建议您购买合格的3.7V可充电锂电池。焊接电池时,请小心区分正极和负极端子。电源的负极端子应位于离USB端口最近的一侧,电源的正极端子应位于远离USB端口的一侧。
:::提示 由于XIAO ESP32S3的所有GPIO引脚都分配了自己的功能,因此我们没有为电池引脚配置GPIO。这意味着我们无法通过读取其中一个GPIO的模拟值来获得软件级别的电池电压。如有必要,可以考虑将蓄电池的正极和负极端子连接到其中两个引脚上,以测量蓄电池电压。
:::警告 当您使用电池电源时,5V引脚上将没有电压。 :::
同时,我们设计了一个用于电池充电的红色指示灯,通过指示灯显示屏告知用户电池在充电中的当前状态。
1.当XIAO ESP32S3未连接到电池时,当连接Type-C电缆时红灯亮起,30秒后熄灭。 2.当连接电池并连接C型电缆进行充电时,红灯会闪烁。 3.当连接Type-C为电池充满电时,红灯熄灭。
5. 深度睡眠模式和唤醒
XIAO ESP32S3具有完整的深度睡眠模式和唤醒功能。在这里,我们将展示ESP提供的两个更常见的例子。
5.1 Demo1: 带外部唤醒功能的深度睡眠
此代码显示如何使用具有外部触发器的深度睡眠作为唤醒源,以及如何将数据存储在RTC内存中以在重新启动时使用。
/*
=====================================
This code is under Public Domain License.
Hardware Connections
======================
Push Button to GPIO 33 pulled down with a 10K Ohm
resistor
NOTE:
======
Only RTC IO can be used as a source for external wake
source. They are pins: 0,2,4,12-15,25-27,32-39.
Author:
Pranav Cherukupalli <cherukupallip@gmail.com>
*/
#define BUTTON_PIN_BITMASK 0x200000000 // 2^33 in hex
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 for an external trigger.
There are two types for ESP32, ext0 and ext1 .
ext0 uses RTC_IO to wakeup thus requires RTC peripherals
to be on while ext1 uses RTC Controller so doesnt need
peripherals to be powered on.
Note that using internal pullups/pulldowns also requires
RTC peripherals to be turned on.
*/
esp_sleep_enable_ext0_wakeup(GPIO_NUM_33,1); //1 = High, 0 = Low
//If you were to use ext1, you would use it like
//esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);
//Go to sleep now
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop(){
//This is not going to be called
}
5.2 Demo2:带定时器唤醒的深度睡眠
ESP32提供了一种深度睡眠模式,可有效节能,因为功率是物联网应用的重要因素。在这种模式下,CPU、大部分RAM和所有由APB_CLK计时的数字外围设备都关闭了电源。芯片中唯一可以通电的部分是:RTC控制器、RTC外围设备和RTC存储器。
此代码显示了最基本的深度睡眠,并带有一个定时器来唤醒它,以及如何将数据存储在RTC内存中以在重新启动时使用它。
/*
Simple Deep Sleep with Timer Wake Up
=====================================
This code is under Public Domain License.
Author:
Pranav Cherukupalli <cherukupallip@gmail.com>
*/
#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
}
:::提示 如果你想学习更多地使用深度睡眠模式和唤醒功能,你可以在Arduino IDE中找到更多ESP为芯片正式编写的示例程序。
6. 故障排除
6.1 如果上传程序失败/程序运行异常/找不到设备端口,该怎么办?
如果您遇到上述问题,建议您首先尝试按下XIAO ESP32S3上的重置按钮,尝试重新运行程序。如果问题仍然存在,请重新检查您的程序并阅读中提供的方法BootLoader Mode 以恢复设备。
6.2:为什么我的xiao有圆角不齐的问题?这是质量问题吗?
首先,需要注意的是,这不是质量问题,不会影响晓的正常功能。
XIAO ESP32S3是所有XIAO中最复杂的一个,因为它的集成度很高,并且PCB需要在工厂生产中组装在一起。由于集成度高,拼接板连接只能放在四个圆角处,这会导致图片圆角不均匀的问题。我们将努力改进工艺,以确保在后续生产中解决这个问题。
7. 总结
通过Seeed Studio XIAO ESP32S3 Sense 开箱Arduino教程,我们可以让ESP32作为主心骨,接下来就是学习其他外设有机衔接从而完成功能,进而丰富我们的生活。🛹🛹🛹
从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣
- 我会持续更新对应专栏博客,非常期待你的三连!!!🎉🎉🎉
- 如果鹏鹏有哪里说的不妥,还请大佬多多评论指教!!!👍👍👍
- 下面有我的🐧🐧🐧群推广,欢迎志同道合的朋友们加入,期待与你的思维碰撞😘😘😘
参考资源
Seeed Studio XIAO ESP32S3 (Sense) 开发板
[PDF] ESP32-S3 Datasheet
For Seeed Studio XIAO ESP32S3
[PDF] Seeed Studio XIAO ESP32S3 Schematic
[ZIP] Seeed Studio XIAO ESP32S3 Factory firmware
[STEP] Seeed Studio XIAO ESP32S3 3D Model
For Seeed Studio XIAO ESP32S3 Sense
[PDF] Seeed Studio XIAO ESP32S3 Sense Schematic