如何通过蓝牙在 Raspberry Pi 4 和 Arduino Nano BLE 之间进行读写? [英] How to perform read and write between Raspberry Pi 4 and Arduino Nano BLE Via Bluetooth?

查看:67
本文介绍了如何通过蓝牙在 Raspberry Pi 4 和 Arduino Nano BLE 之间进行读写?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我能够通过 bluepy 连接 Raspberry Pi 4 和 Arduino Nano BLE,用于 Rpi4 和 ArduinoBLE.h 连接 Arduino Nano BLE.不幸的是,当我尝试从 Rpi4 写入 Arduino Nano BLE 时,我没有看到预期的读取和写入输出.我没有看到 Arduino Nano BLE 的任何完美示例,因为它是最近发布的内置 BLE 的硬件.如果有人能帮我实现他们之间的沟通,那将是非常有帮助的.提前致谢.下面是我的树莓派代码.

I am able to connect a Raspberry Pi 4 an and Arduino Nano BLE through bluepy for Rpi4 and ArduinoBLE.h for Arduino Nano BLE. Unfortunately when I try to write from Rpi4 to Arduino Nano BLE, I'm not seeing the expected output for Read and Write. I don't see any perfect example for Arduino Nano BLE since it is recently released hardware with built-in BLE. It would be very helpful if anyone could help me achieve communication between them. Thanks in advance. Below is my code for Raspberry Pi.

import bluepy.btle as btle
p = btle.Peripheral("de:fc:54:87:b0:04")
services=p.getServices()
s = p.getServiceByUUID(list(services)[2].uuid)
c = s.getCharacteristics()[0]
c.write(bytes("2", "utf-8"))
p.disconnect()

我正在使用 Arduino Nano BLE 库中的 Arduino 内置示例.

And I'm using the Arduino built-in example from the Arduino Nano BLE Library.

#include <ArduinoBLE.h>

BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service
// BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
BLEByteCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

const int ledPin = LED_BUILTIN; // pin to use for the LED

void setup() {
  Serial.begin(9600);
  while (!Serial);
  // set LED pin to output mode
  pinMode(ledPin, OUTPUT);
  // begin initialization
  if (!BLE.begin()) {
    Serial.println("starting BLE failed!");
    while (1);
  }
  // set advertised local name and service UUID:
  BLE.setLocalName("LED");
  BLE.setAdvertisedService(ledService);
  // add the characteristic to the service
  ledService.addCharacteristic(switchCharacteristic);
  // add service
  BLE.addService(ledService);
  // set the initial value for the characeristic:
  switchCharacteristic.writeValue(0);
  // start advertising
  BLE.advertise();
  Serial.println("BLE LED Peripheral");
}

void loop() {
  // listen for BLE peripherals to connect:
  BLEDevice central = BLE.central();
  // if a central is connected to peripheral:
  if (central) {
    Serial.print("Connected to central: ");
    //prints the centrals MAC address:
    Serial.println(central.address());
    // while the central is still connected to peripheral:
    while (central.connected()) {
      // if the remote device wrote to the characteristic,
      // use the value to control the LED:
      if (switchCharacteristic.written()) {
        if (switchCharacteristic.value()) { // any value other than 0
          Serial.println("LED on");
          digitalWrite(ledPin, HIGH); // will turn the LED on
        } else { // a 0 value
          Serial.println(F("LED off"));
          digitalWrite(ledPin, LOW); // will turn the LED off
        }
      }
    }
    // when the central disconnects, print it out:
    Serial.print(F("Disconnected from central: "));
    Serial.println(central.address());
  }
}

推荐答案

我自己想通了,这是写入中的值一直出错.下面是正确的.我希望现在您能发现这是通过蓝牙无线连接 raspberry Pi 4 和 Arduino Nano BLE 的完美解决方案.

I figured out myself, it was the value in the write which was going wrong all this time. Below is the right one. I hope now you can find this as a perfect solution to connect raspberry Pi 4 and Arduino Nano BLE wirelessly Via Bluetooth.

c.write(bytes("0001".encode())

这篇关于如何通过蓝牙在 Raspberry Pi 4 和 Arduino Nano BLE 之间进行读写?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆