0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用M5Stick和M5Stamp触发蓝牙操作BLE通信

科技观察员 来源:Pradeep 作者:Pradeep 2022-05-11 15:52 次阅读

在本文中,我将向您展示如何使用 M5Stamp PICO 和 M5Stick C 触发蓝牙操作使用 BLE 通信,是非常便宜且高效的 ESP32 控制器

所需组件:

M5Stick C

M5Stamp PICO

什么是 M5Stick 和 M5Stamp?

M5Stack 是一家设计和制造开发包的技术公司,包含硬件编程平台和物联网解决方案。它由 Jimmy Lai 于 2017 年举办,总部位于中国深圳。

M5Stack 创建了 M5Stick 和 M5Stamps,它们都是基于 ESP32 的 M5 电池。M5Stick C 内置了 TFT 对象和对象,而 M5Stamp 连接小图标,可用于各种物产品

按照说明这些使用 Arduino IDE 设置 M5Stamp 和 M5Stick。

M5Stick C 将 M5Stamp 发送 BLE 发送,而 PICO 将 M5 Stamp 发送 BLE 接收器。当点击按钮上的按钮 A 时,M5Stamp 的 LED 就会变成绿色。

发射机编码:

#include
#include "BLEDevice.h"
#include "BLEUtils.h"
#include "BLEServer.h"
#include "BLEBeacon.h"

BLEAdvertising *pAdvertising; // BLE 广告类型
struct timeval now;
#define GPIO_DEEP_SLEEP_DURATION 1 // 休眠 x 秒然后唤醒
RTC_DATA_ATTR static time_t last; // 记住 RTC 内存中的上次启动
RTC_DATA_ATTR static uint32_t bootcount; // 记住 RTC 内存中的引导次数
#define BEACON_UUID "87b99b2c-90fd-11e9-bc42-526af7764f64" // UUID 1 128 位(可以使用 linux 工具 uuidgen 或通过 https://www.uuidgenerator.net/ 获取随机数)
无效 setBeacon()
{

BLEBeacon oBeacon = BLEBeacon();
oBeacon.setManufacturerId(0x4C00);
oBeacon.setProximityUUID(BLEUUID(BEACON_UUID));
oBeacon.setMajor((bootcount & 0xFFFF0000) >> 16);
oBeacon.setMinor(bootcount & 0xFFFF);
BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
BLEAdvertisementData oScanResponseData = BLEAdvertisementData();

oAdvertisementData.setFlags(0x04); // BR_EDR_NOT_SUPPORTED 0x04

std::string strServiceData = "";

strServiceData += (char)26; // Len
strServiceData += (char)0xFF; //
输入 strServiceData += oBeacon.getData();
oAdvertisementData.addData(strServiceData);

pAdvertising->setAdvertisementData(oAdvertisementData);
pAdvertising->setScanResponseData(oScanResponseData);
}

无效设置(){
M5.begin();
序列号.开始(115200);
M5.Lcd.setTextColor(黄色); //设置字体颜色为黄色。字体设置颜色为
M5.Lcd.setRotation(3);
M5.Axp.ScreenBreath(10);
M5.Lcd.setTextColor(红色);
M5.Lcd.setCursor(3, 10);
M5.Lcd.setTextSize(2);
}

无效循环(){

M5.update();
M5.Lcd.setCursor(3, 10);
if (M5.BtnA.wasReleased()) {
M5.Lcd.setTextColor(GREEN);
M5.Lcd.println("触发");
Serial.println("触发方式");
// 创建 BLE 设备
BLEDevice::init("BLE Receiver 01");
// 创建 BLE 服务器
BLEServer *pServer = BLEDevice::createServer(); // <-- 不再需要实例化 BLEServer,更少的闪存和内存使用
pAdvertising = BLEDevice::getAdvertising();
BLEDevice::startAdvertising();
设置信标();
// 开始广告
pAdvertising->start();
Serial.println("广告开始...");
延迟(1000);
pAdvertising->stop();
M5.Lcd.fillScreen(黑色);
M5.Lcd.setCursor(3, 10);
}
}

将上述代码上传到您的 M5Stick C 控制器。

pYYBAGJ7am6ATkYfAAD_FePQAM0623.png

接收器编码:

#include "Arduino.h"
#include
#include
#include
#include
#include

// 你的灯带中有多少个 LED?
#define NUM_LEDS 1
#define DATA_PIN 27

// 定义 LED 的数组
CRGB leds[NUM_LEDS];

字符串 knownBLEAddresses[] = {"24:a1:60:53:06:3e"};
int RSSI_THRESHOLD = -100;
bool device_found;
整数扫描时间 = 1;//以秒为单位
BLEScan* pBLEScan;
类 MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
for (int i = 0; i < (sizeof(knownBLEAddresses) / sizeof(knownBLEAddresses[0])); i++)
{
if (strcmp(advertisedDevice.getAddress(). toString().c_str(), knownBLEAddresses[i].c_str()) == 0)
{
device_found = true;
休息;
}
否则
device_found = false;
}
Serial.printf("广告设备:%s \n", AdvertisementdDevice.toString().c_str());
}
};
无效设置() {
Serial.begin(115200);//在 ESP32 上启用 UART
FastLED.addLeds(leds, NUM_LEDS); // GRB 排序是典型的
Serial.println("Scanning..."); // 打印扫描
BLEDevice::init("");
pBLEScan = BLEDevice::getScan(); //创建新的扫描
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); //初始化回调函数
pBLEScan->setActiveScan(true); //主动扫描消耗更多能量,但更快地得到结果
pBLEScan->setInterval(100); // 设置扫描间隔
pBLEScan->setWindow(99);

void loop()
{
BLEScanResults foundDevices = pBLEScan->start(scanTime, false);

for (int i = 0; i < foundDevices.getCount(); i++)
{
BLEAdvertisedDevice device = foundDevices.getDevice(i);
int rssi = device.getRSSI();
Serial.print("RSSI:");
序列号.println(rssi);
if (rssi > RSSI_THRESHOLD && device_found == true)
{
Serial.println("Triggred");
发光二极管 [0] = 0xf00000;
FastLED.show();
延迟(200);
}

}
// 现在关闭 LED,然后暂停
leds[0] = 0x00f000;
FastLED.show();
延迟(200);
pBLEScan->clearResults(); // 从BLEScan缓冲区中删除结果以释放内存
}

注意:在上面的代码中,您必须更改 M5Stick C 的 BLE 地址。

pYYBAGJ7amKAR9KSAAA4q653iC8675.png

在这里,我添加了我的 M5Stick C 的 BLE 地址,你在做的时候需要根据你的具体情况改变这个地址。

将发射和接收器的结果代码上传到M5Stamp

上,将 M5Stamp 连接 PC 并随后显示到您,然后点击 M5Stick C 上的 A,TFT 将继续上载显示。

pYYBAGJ7al6AQF9CAAMZTTejpnw425.png

每当您在 M5Stick C 看到消息时,请检查中搜索结果。

poYBAGJ7aleAT8ULAAE-3dWcYPU889.png

M5Stamp 的 LED 指示灯也将显示在 ESP 发送器中的名称、RSS 和播放器中。

poYBAGJ7alKACG65AAOevOg7xvY832.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15132

    浏览量

    170830
  • BLE
    BLE
    +关注

    关注

    12

    文章

    606

    浏览量

    58792
  • Pico
    +关注

    关注

    0

    文章

    154

    浏览量

    16833
  • ESP32
    +关注

    关注

    13

    文章

    893

    浏览量

    15765
收藏 人收藏

    评论

    相关推荐

    蓝牙4.0 BLE 模块

    BTool连接BLE主机端,对BLE模块进行连接和数据通信测试与评估。 模块特色:BLE单模蓝牙模块;SOC方案,体积小;超低功耗;协议
    发表于 09-16 10:27

    【Banana Pi M1+试用体验】ble使用

    统一入口这是前篇【Banana Pi M1+试用体验】资料,ssh,配置,wifi现在物联网比较的火, 包括BLE, zigbee, 本章主要介绍ble的安装和简单的连接, 接下来会更新和常用的
    发表于 07-05 16:14

    详解那个你不尽知的BLE蓝牙

    待配对设备发送过来的数据第五步:建立并保存连接*BLE的连接状态示意图* 物联网发展,离不开无线通信协议。蓝牙作为一项全球通用的无线标准,为越来越多的设备赋予了简便、安全的连接性。最新一代蓝牙
    发表于 10-17 17:12

    详解蓝牙52832模块的串口透传通讯方式

    (固件升级支持蓝牙5)协议。具有工业级、小尺寸、功耗低等特点,可以帮助用户以最低的成本和最快速度开发蓝牙应用。SKB369的基本特征:蓝牙版本:基于
    发表于 09-14 16:02

    ble5ghz wifi怎么同时使用

    我们使用BCM433芯片,并通过WICE 3.7.0~7实现蓝牙连接的过程。在该部分的数据表中,在第115页,它指出“BCM4340不提供同时2.4 GHz和5 GHz的操作”。由于BLE
    发表于 10-24 16:57

    M5Stack学习Arduino(五)BLE-MIDI

    ``M5Stack支持蓝牙,本节就利用BLE功能来做一个蓝牙MIDI外设,通过M5Stack的按键触发
    发表于 09-02 16:00

    浅谈:无线通信中的蓝牙BLE技术

    了10倍,极大开拓了蓝牙技术的应用前景。  5、高安全性  为了保证数据传输的安全性,使用AES-128 CCM加密算法进行数据包加密认证。  BLE无线网络通信信道分析  天线对于无
    发表于 11-28 09:42

    CH579M蓝牙能搜到但是连接不上是什么原因?

    和MAC地址都是正确的,但是总是连接超时。用ble助手看发射功率是负二十多db,功率应该足够数据传输。单独测过天线,发射效率能达到TI文档中的超过90%,接收能力也可以,手机发蓝牙10cm左右频谱仪
    发表于 08-19 07:44

    【野火启明6M5开发板体验】野火启明6M5开箱

    齐全,网络、通信接口配备全面,也引出了大量接口,单片机的功能也很强大,更适合于工程开发和验证。总之是各有特点,但是就我而言,还是更喜欢6M5,对于RA4M2有种,昨天是小甜甜,今天就是牛夫人的感觉
    发表于 12-18 16:05

    ESP32-C3蓝牙MESH如何与JDY-24M蓝牙MESH组网通信

    ?计划使用手机进行初次配网操作,是否esp32只需node角色,配网后可以与jdy自动组网通信。2.ESP32模块在使用了蓝牙MESH、mqtt通过wifi连接后,还可以扫描周围蓝牙广
    发表于 02-16 07:53

    无线通信蓝牙BLE技术

    看到不同的无线数据传输协议在数据传输速率和传输距离有各自的使用范围。   Zigbee、蓝牙以及WIFI标准都是工作在2.4GHz频段的无线通信标准。 下面将BLE与传统蓝牙、WIFI
    发表于 05-12 17:26

    低功耗蓝牙的协议与BLE外设如何与BLE中心进行通信

    本视频中,我们深入了解低功耗蓝牙(BLE)技术中采用的协议,特别是通用属性协议,即GATT。我们也考察BLE外设如何与BLE中心通信
    的头像 发表于 10-12 04:09 5668次阅读

    蓝牙BLE通信代码免费下载

    本文档的主要内容详细介绍的是蓝牙BLE通信代码免费下载
    发表于 01-15 15:52 38次下载
    <b class='flag-5'>蓝牙</b><b class='flag-5'>BLE</b>的<b class='flag-5'>通信</b>代码免费下载

    如何使用M5Stamp PICO和Qubitro构建物联网门锁监控系统

    在这篇文章中,我将向您展示如何使用小型M5Stamp PICO控制器和Qubitro构建DIY物联网门锁监控系统。
    的头像 发表于 06-04 17:38 1394次阅读
    如何使用<b class='flag-5'>M5Stamp</b> PICO和Qubitro构建物联网门锁监控系统

    M5Stick C开源分享

    电子发烧友网站提供《M5Stick C开源分享.zip》资料免费下载
    发表于 06-19 14:12 0次下载
    <b class='flag-5'>M5Stick</b> C开源分享