Blinker+FreeRTOS使用蓝牙实现数据实时传输

该代码示例展示了如何在ESP32上利用Blinker库处理WiFi和蓝牙的数据传输。WiFi连接受限于每9秒10次更新的频率,而蓝牙因无需服务器连接而实现更快的数据发送。程序创建了一个定时任务用于持续发送数据,并定义了按钮事件回调和数据读取函数。
摘要由CSDN通过智能技术生成

Blinker的wifi无法做到数据的实时传输,只能每个9秒进行一次数据连续10次更新,使用蓝牙功能由于不需要连接服务器,因此可以实现数据的快速发送。

//硬件使用的是ESP32 

#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif

#define BLINKER_BLE

#include <Blinker.h>

// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");
BlinkerNumber Number2("data1");

int counter = 0;

// 创建一个定时发送任务
void TaskBlink( void *pvParameters );
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

void setup()
{
    // 初始化串口
    Serial.begin(115200);
          // Now set up two tasks to run independently

    BLINKER_DEBUG.stream(Serial);
    // BLINKER_DEBUG.debugAll();
    
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    // Blinker.begin(auth, ssid, pswd);
    Blinker.begin();
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
//任务创建、分配空间,如果出现重启情况一般还是因为分配空间不足,可以增大空间
//
  xTaskCreatePinnedToCore(
    TaskBlink
    ,  "TaskBlink"   // A name just for humans
    ,  2048  // This stack size can be checked & adjusted by reading the Stack Highwater
    ,  NULL
    ,  1  // Priority, with 3 (configMAX_PRIORITIES - 1) being the highest, and 0 being the lowest.
    ,  NULL 
    ,  ARDUINO_RUNNING_CORE);

}

void loop() {
    Blinker.run();
}

//实时发送数据,在组件Number2上每隔100ms显示一次数据,
//注意在for循环中必须要有一个端正的delay,否则会导致任务一直占用CPU
void TaskBlink(void *pvParameters)  // This is a task.
{
  (void) pvParameters;

  for (;;) // A Task shall never return or exit.
  {
    Number2.print(random(0,120)/(float)1.5);
    delay(100);  // one tick delay (15ms) in between reads for stability
  }
}

 Blinker手机端配置及效果

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XiangYuanL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值