一、硬件介绍
1、主控开发板
使用的是XIAO ESP32S3开发板,集成ESP32S3 32位双核处理器芯片,最高运行频率240MHz,板载8MB PSRAM和8MB FLASH

功能引脚示意图

2、Grove Creator Kit 器件
在本次开发中,使用到的 `Grove Creator Kit 套件` 中的器件如下:
Grove - Tilt Switch
Grove-倾斜开关相当于一个按钮,用作数字输入;倾斜开关内部有一对小球,当外壳直立时,小球会与引脚接触。
倾斜外壳时,小球不接触,因此不形成连接;倾斜开关的SIG引脚通常输出低电平;
当倾斜开关直立时,倾斜开关内部的一对小球将与引脚接触,SIG引脚将输出高电平;

主要特性

Grove - Button
Grove - 按钮是一个瞬时按键开关,它包含一个独立的“瞬时开/关”按钮。
“瞬时”意味着按钮在释放后会自动弹回,按下按钮时输出高电平信号,释放时输出低电平信号;

主要特性

Grove - Vibration Sensor
Grove - 振动传感器是一个高灵敏度的无方向性振动传感器,当模块处于稳定状态时,电路导通,输出为高电平。当发生移动或振动时,电路会短暂断开并输出低电平;

主要特性

二、功能实现
1、硬件搭建
将倾斜开关、震动传感器、按键模块,通过Grove接口连接到开发板对应的引脚上;

实物搭建效果:

2、功能效果
通过按键按下切换工作模式(倾斜检测 / 震动检测),串口提示当前模式,倾斜模式检测倾斜信号,震动模式检测震动信号,对应传感器触发时串口打印状态;
倾斜检测模式:只读取倾斜传感器,检测输出打印 “当前处于倾斜状态”;
震动检测模式:只读取震动传感器,检测输出打印 “当前处于震动状态”;
串口打印输出当前检测模式及相关状态;
三、代码编写
主要相关代码
#define BUTTON_PIN D10
#define VIBRATION_PIN D8
#define TILT_PIN D9
// 0=倾斜检测模式 1=震动检测模式
#define MODE_TILT 0
#define MODE_VIBR 1
int buttonState = -1;
int lastButtonState = -1; //按键上一次状态
int vibrationState = -1;
int tiltState = -1;
int workMode = MODE_TILT; //默认 倾斜检测模式
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT);
pinMode(VIBRATION_PIN, INPUT);
pinMode(TILT_PIN, INPUT);
delay(100);
}
void loop(){
buttonState = digitalRead(BUTTON_PIN);
vibrationState = digitalRead(VIBRATION_PIN);
tiltState = digitalRead(TILT_PIN);
if(buttonState == HIGH && lastButtonState == LOW)
{
//切换模式
if(workMode == MODE_TILT)
{
workMode = MODE_VIBR;
Serial.println("切换为:震动检测模式");
}
else
{
workMode = MODE_TILT;
Serial.println("切换为:倾斜检测模式");
}
}
lastButtonState = buttonState;
if(workMode == MODE_TILT)
{
//倾斜模式
if (tiltState == HIGH)
{
Serial.println("当前处于倾斜状态");
}
}
else if(workMode == MODE_VIBR)
{
//震动模式
if (vibrationState == LOW)
{
Serial.println("当前处于震动状态");
}
}
}四、程序烧录
1、连接USB数据线至开发板;
2、选择端口号对应的开发板;
3、点击 `上传` 烧录程序到开发板上;

五、效果演示

我要赚赏金
