Pi to Feather蓝牙低能耗通信

时间:2018-11-11 17:28:18

标签: arduino raspberry-pi bluetooth-lowenergy raspberry-pi3 adafruit

因此,对于一个项目,我试图通过蓝牙低功耗在Adafruit Feather 32u4和Raspberry PI 3之间进行双向通信。我能够通过UART服务使通信正常进行,但是我想创建一个具有某些特征的自定义服务,可以从这两个设备进行设置和读取。我在树莓派上运行高尚的Node,这就是我计划设置和读取来自Feather的值的方式。

有人能帮我实现任何代码示例吗?我似乎很难通过BLE标准找到有关自定义服务的许多信息。

这是我创建服务的方式:

  Serial.println(F("Adding the definition (UUID = 0x8000): "));
  success = ble.sendCommandWithIntReply( F("AT+GATTADDSERVICE=UUID=0x8000"), &serviceId);
  if (! success) {
    error(F("Could not add service"));
  }

  Serial.println(F("Adding the status characteristic (UUID = 0x8001): "));
  success = ble.sendCommandWithIntReply( F("AT+GATTADDCHAR=UUID=0x8001, PROPERTIES=0x08, MIN_LEN=2, DATATYPE=INTEGER, VALUE=0, DESCRIPTION=Outlet 1 Status"), &StatusCharId);
    if (! success) {
    error(F("Could not add characteristic"));
  }

这就是我试图用高贵的(节点)读/写的方式

device.discoverServices(['8000'], function(error, services) {
                if(error) {console.log(error);}
                var customService = services[0];
                console.log(customService);

                if(customService) {         
                    customService.discoverCharacteristics(null, function(error, chars) {
                        for(var i in chars) {
                            console.log(' ' + i + ' uuid: ' + chars[i].uuid);

                            if(chars[i].uuid == '8001'){
                                    setInterval(() => {
                                        const convert = (from, to) => str => Buffer.from(str, from).toString(to)
                                        const utf8ToHex = convert('utf8', 'hex')
                                        const hexToUtf8 = convert('hex', 'utf8')
                                        var random = getRandomInt(2);

                                        chars[i].write(new Buffer(random), true, function (error) {
                                            if (error) {
                                            console.log(error);
                                            }
                                        }.bind(this));
                                        chars[i].read(function(error, data) {
                                            // data is a buffer


                                            var val = data.toString('hex');

                                            console.log(data.toString('hex'));
                                        });
                                    }, 2500);               

                            }

看来我的节点代码没有正确设置该值。而且我希望能在羽毛上聆听变化

0 个答案:

没有答案