将数据从Arduino发送到应用程序

时间:2016-11-22 15:12:44

标签: swift bluetooth arduino bluetooth-lowenergy

从本教程开始:https://www.raywenderlich.com/85900/arduino-tutorial-integrating-bluetooth-le-ios-swift我可以通过iPhone应用程序控制伺服。它将数据从iPhone发送到arduino板。我想要的是能够将数据从Arduino发送到应用程序,基本上反过来,但我很困惑,我将如何使用Arduino发送它。

这是在Arduino上将数据发送到伺服的方式:

if(BLE_Shield.available()) {
    myservo.write(BLE_Shield.read());  // Write position to servo
}

我被告知的是,我需要写入UART端口以使用UUID A9CD2F86-8661-4EB1-B132-367A3434BC90在RX特性上进行传输,并让应用程序收到有关RX特性变化的通知。我很难理解这一点,并感谢任何帮助!该网站包含页面底部的完整Swift源代码。

1 个答案:

答案 0 :(得分:1)

我从未使用黑寡妇BLE Shield ,因为通常我使用简单的 HM-10 BLE 4.0 模块,但逻辑将是相同的。要将数据从Arduino发送到iPhone,你应该写......“写”:

BLE_Shield.write("Test");

要接收数据,您必须在BTService.swift类中编写函数didUpdateValueFor characteristic

 func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {

    if (error != nil) {
        print("Error rading characteristics: \(error)......)")
        return;
    }

    if (characteristic.value != nil) {
        //value here.

        print("value is : \(characteristic.value)")
        let dataBLE = String(data: characteristic.value!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))

        print("Data from Arduino:\(dataBLE!)")
    }
}

为此,您必须确保iPhone始终连接到BLE。