#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
#include <String.h>
BLECharacteristic *pCharacteristic; //创建一个BLE特性pCharacteristic
bool deviceConnected = false; //连接否标志位
uint8_t txValue = 0; //TX的值
long lastMsg = 0; //存放时间的变量
String rxload = "BlackWalnutLabs"; //RX的预置值
#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
//服务器回调
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 rxValue = pCharacteristic->getValue();
if (rxValue.length() > 0)
{
rxload = "";
for (int i = 0; i < rxValue.length(); i++)
{
rxload += (char)rxValue[i];
Serial.print(rxValue[i]);
}
Serial.println("");
}
}
};
void setupBLE(String BLEName)
{
const char *ble_name = BLEName.c_str(); //将传入的BLE的名字转换为指针
BLEDevice::init(ble_name); //初始化一个蓝牙设备
BLEServer *pServer = BLEDevice::createServer(); // 创建一个蓝牙服务器
pServer->setCallbacks(new MyServerCallbacks()); //服务器回调函数设置为MyServerCallbacks
BLEService *pService = pServer->createService(SERVICE_UUID); //创建一个BLE服务
pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
//创建一个(读)特征值 类型是通知
pCharacteristic->addDescriptor(new BLE2902());
//为特征添加一个描述
BLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
//创建一个(写)特征 类型是写入
pCharacteristic->setCallbacks(new MyCallbacks());
//为特征添加一个回调
pService->start(); //开启服务
pServer->getAdvertising()->start(); //服务器开始广播
Serial.println("Waiting a client connection to notify...");
}
void setup()
{
Serial.begin(115200);
setupBLE("ESP32BLE"); //设置蓝牙名称
}
void loop()
{
long now = millis(); //记录当前时间
if (now - lastMsg > 1000)
{ //每隔1秒发一次信号
if (deviceConnected && rxload.length() > 0)
{
String str = rxload;
if (str=="10086\r\n")
{
const char *newValue = str.c_str();
pCharacteristic->setValue(newValue);
pCharacteristic->notify();
}
}
lastMsg = now; //刷新上一次发送数据的时间
}
}
————————————————
寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。
Arduino-ESP32与ESP-IDF的版本对应表。
Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。
ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。
ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。
ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。
Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789
本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。
本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。
ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。
ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。