ESP32C3 CORE+蓝牙收发+PIO

一、蓝牙收发

最近在使用ESP32C3的蓝牙开发,总结自己的学习笔记,怕自己以后忘了,供自己学习参考。
1.蓝牙app
我直接下的是应用市场的蓝牙app。

打开界面

2.收发上位机
因为之前做了稚辉君的HoloCubic,当时用的这个上位机刷固件,所以就用这个上位机了。

二、主程序

在网上随便找的main.cpp函数,代码如下,不需要下载其他的库

#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()); //服务器回调函数设置为MyServerCallbacksBLEService *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; //刷新上一次发送数据的时间}
}

烧录进入开发板之后,用手机的蓝牙调试APP连接我们的开发板的蓝牙”ESP32BLE"

ESP32C3 CORE+蓝牙收发+PIO相关推荐

  1. android studio手机与蓝牙收发数据_QT for Android :蓝牙

    首先要搭建QT for Andorid环境,忘记怎么弄了,基本是要装NDK.JDK.ANDROID STUDIO. 先做测试 QT on Android 编写蓝牙使用HC-05​blog.csdn.n ...

  2. 【蓝牙CC2541】调试蓝牙收发功能

    在使用串口调试助手时,需要把发送新行的对勾去除掉,才可正常发送AT指令 勾选上发送新行,则模块不返回OK 串口小助手测试AT指令收发 帮助指令 当手机连接蓝牙后,透传的数据可以显示在串口调试助手上

  3. 基于esp32的手机蓝牙收发调试器

    一,实验准备 开始之前,先吹一波ESP32,乐鑫YYDS!ESP32包含WIFI模块和蓝牙4.0模块,双核CPU工作频率为80-240Mhz,其大致功能如下图所示: 外设接口 • 34 个 GPIO ...

  4. vs基于控制台应用程序的定时发送邮件_.NET Core 下收发邮件之 MailKit

    利用代码发送邮件在工作中还是比较常见的,相信大家都用过SmtpClient来处理发送邮件的操作,不过这个类以及被标记已过时,所以介绍一个微软推荐的库MailKit来处理. MailKit开源地址:ht ...

  5. .NET CORE 下收发邮件之 MAILKIT

    背景 利用代码发送邮件在工作中还是比较常见的,相信大家都用过SmtpClient来处理发送邮件的操作,不过这个类以及被标记已过时,所以介绍一个微软推荐的库MailKit来处理. MailKit开源地址 ...

  6. ESP32-C3 学习测试 蓝牙 篇(四、GATT Server 示例解析)

    了解了蓝牙 GATT 相关概念,趁热打铁,分析一下官方示例 GATT Server 的应用程序架构. 目录 前言 一.GATT Server 示例分析 1.1 初始化 1.2 回调函数 gatts_e ...

  7. ESP32-C3 应用 篇(实例二、通过蓝牙将传感器数据发送给手机,手机端控制 SK6812 LED)

    ESP32-C3 蓝牙部分我们学习了GATT,本文尝试使用蓝牙做一个简单的小应用. 目录 前言 一.整体框架 二.数据传输部分 2.1 添加温湿度驱动组件 2.2 传感器数据传输程序 再次说明: ES ...

  8. 【开发教程10】疯壳·开源蓝牙心率防水运动手环-蓝牙 BLE 收发

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 蓝牙 BLE 收发 1相关简介          DA14580 内部集成了射频模块,同时官方也提供了一套 SDK,里面包含了蓝牙协议栈部分.本节 ...

  9. ESP32-C3 学习测试 蓝牙 篇(二、蓝牙调试APP、开发板手机连接初体验)

    等了好久终于等到今天,盼了好久终于把蓝牙测试 = =! ESP32-C3 专栏好久没更新了,这次抽点时间把蓝牙的准备工作做完. 目录 前言 1.蓝牙手机调试工具 2.ESP-IDF中示例的选择 3.E ...

最新文章

  1. 用Java2D画出树的结构图
  2. 友盟-上传开发发布证书
  3. bash/shell的字符串trim实现
  4. redhat linux创建磁盘分区,redhat6.4 挂载硬盘,创建新分区,删除分区
  5. 关于TCP粘包的拙见
  6. html5鼠标放大,利用HTML5实现粒子游走鼠标经过放大特效
  7. 爱奇艺CEO龚宇呼吁网络电影涨价:6块钱太低了
  8. java int范围_Java之int及它的取值范围
  9. 机器学习--组合分类方法之AdaBoost算法实战(单层决策树原理代码详解)
  10. 2021年数学建模国赛C题问题一详细思路和代码
  11. 尚硅谷Vue2.0+Vue3.0全套教程视频笔记 + 代码 [P101-135]
  12. 机器学习常见算法分类
  13. 学以致用深入浅出数字信号处理 pdf_数字阵列雷达:零中频接收机的优缺点
  14. win10系统安装软件双击无反应
  15. 实验: 配置trunk
  16. OpenCV把彩色图片转换为灰度图片
  17. 第八届“图灵杯”NEUQ—ACM程序设计竞赛个人赛(同步赛)
  18. 渗透测试的灵魂:信息收集
  19. Shell 脚本 — 多行注释、开启子/不开启子进程执行、转义带颜色输出、读取键盘输入、输入输出重定向、单双引号、命令替换、读取变量、系统变量、正则过滤、算术运算、一行多条命令、字符串比较
  20. [转]Android 开源项目分类汇总

热门文章

  1. 周一见!距离阿里巴巴开源开放周还有3天
  2. 淘宝框架atlas集成
  3. CSS3新增属性汇总
  4. Unity使用C#网络下载用户头像
  5. 神经网络和人工智能原理,人工神经网络基本原理
  6. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(二)
  7. 使用freesurfer进行海马亚区分割学习笔记
  8. linux如何查看内存ddr几代,如何通过命令查看内存是ddr2还是ddr3的?
  9. 微信加粉啦 - 微信加粉统计管理的解决方案;
  10. 第二章 学生指导(01 小学生身心发展的规律 02 学生心理发展与教育 03 小学生的学习)