菜鸟教程小白 发表于 2022-12-12 23:14:51

ios - 将数据从支持 BLE 的 arduino 发送到 iOS 应用程序


                                            <p><p>我正在使用 Adafruit Bluefruit Feather 构建一个设备,该设备可以收集数据,然后将数据发送到 iPhone,在那里进行读取和处理。我查看了无数试图解释如何对设备进行编程的示例,但我似乎对如何通过蓝牙将设备连接到 iPhone 存在误解。 </p>

<p>我们将此代码基于 Adafruit 示例之一,并尝试合并 Adafruit BLE Gatt 库 (<a href="https://learn.adafruit.com/introducing-adafruit-ble-bluetooth-low-energy-friend/ble-gatt" rel="noreferrer noopener nofollow">https://learn.adafruit.com/introducing-adafruit-ble-bluetooth-low-energy-friend/ble-gatt</a>),但它不起作用,这是我们第一次使用蓝牙。我们使用的 iOS 代码来自 <a href="https://github.com/nebs/hello-bluetooth" rel="noreferrer noopener nofollow">https://github.com/nebs/hello-bluetooth</a> .我们没有对 swift 代码进行任何更改。欢迎任何建议。我们发现了很多关于将数据从应用程序发送到 arduino 的信息,但关于将数据从 arduino 发送到应用程序的信息有限。如果您能告诉我们我们是否走在正确的轨道上,或者在发送数据方面是否应该进行任何更改,我们将不胜感激。</p>

<p>到目前为止,我一直在使用以下内容:</p>

<pre><code>#include &lt;Arduino.h&gt;
#include &lt;SPI.h&gt;
#if not defined (_VARIANT_ARDUINO_DUE_X_) &amp;&amp; not defined (_VARIANT_ARDUINO_ZERO_)
#include &lt;SoftwareSerial.h&gt;
#endif
#include &#34;Adafruit_BLE.h&#34;
#include &#34;Adafruit_BluefruitLE_SPI.h&#34;
#include &#34;Adafruit_BluefruitLE_UART.h&#34;
#include &#34;BluefruitConfig.h&#34;
#include &#34;Adafruit_BLEGatt.h&#34;
#define FACTORYRESET_ENABLE      1
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
Adafruit_BLEGatt gatt(ble);
void error(const __FlashStringHelper*err) {
Serial.println(err);
while (1);
}

int32_t gattServiceId;
int32_t gattNotifiableCharId;
int32_t gattWritableResponseCharId;
int32_t gattWritableNoResponseCharId;
int32_t gattReadableCharId;
int32_t jumperPresentID;

void setup(void){
while (!Serial);// required for Flora &amp; Micro
delay(500);
boolean success;
Serial.begin(115200);
randomSeed(micros());
Serial.print(F(&#34;Initialising the Bluefruit LE module: &#34;));
if ( !ble.begin(VERBOSE_MODE) ){
    error(F(&#34;Couldn&#39;t find Bluefruit, make sure it&#39;s in CoMmanD mode &amp; check wiring?&#34;));
}
Serial.println( F(&#34;OK!&#34;) );
if ( FACTORYRESET_ENABLE ){
    Serial.println(F(&#34;Performing a factory reset: &#34;));
    if ( ! ble.factoryReset() ){
      error(F(&#34;Couldn&#39;t factory reset&#34;));
    }
}
ble.echo(false);
Serial.println(&#34;Requesting Bluefruit info:&#34;);
ble.info();
Serial.println(F(&#34;Adding the Custom GATT Service definition: &#34;));
success = ble.sendCommandWithIntReply( F(&#34;AT+GATTADDSERVICE=UUID128=00-77-13-12-10-00-00-00-00-00-EE-BA-AD-DA-BE-CF&#34;), &amp;gattServiceId);
if (! success) {
    error(F(&#34;Could not add Custom GATT service&#34;));
}
Serial.println(F(&#34;Adding the Notifiable characteristic: &#34;));
success = ble.sendCommandWithIntReply( F(&#34;AT+GATTADDCHAR=UUID128=00-67-42-01-14-88-59-77-42-42-AB-BA-DA-DA-EE-CC,PROPERTIES=0x10,MIN_LEN=1, MAX_LEN=20, VALUE=-9999&#34;), &amp;gattNotifiableCharId);
    if (! success) {
    error(F(&#34;Could not add Custom Notifiable characteristic&#34;));
}
Serial.println(F(&#34;Adding the Writable with Response characteristic: &#34;));
success = ble.sendCommandWithIntReply( F(&#34;AT+GATTADDCHAR=UUID128=00-68-42-02-00-77-12-10-13-42-CC-BA-DE-FA-EA-BB,PROPERTIES=0x04,MIN_LEN=1, MAX_LEN=20, VALUE=GREEN&#34;), &amp;gattWritableResponseCharId);
    if (! success) {
    error(F(&#34;Could not add Custom Writable with Response characteristic&#34;));
}
Serial.println(F(&#34;Adding the Writable with No Response characteristic: &#34;));
success = ble.sendCommandWithIntReply( F(&#34;AT+GATTADDCHAR=UUID128=00-69-42-03-00-77-12-10-13-42-CC-BA-DE-FA-EA-BC,PROPERTIES=0x08,MIN_LEN=1, MAX_LEN=20, VALUE=GREEN&#34;), &amp;gattWritableNoResponseCharId);
    if (! success) {
    error(F(&#34;Could not add Custom Writable with No Response characteristic&#34;));
}
Serial.println(F(&#34;Adding the Readable characteristic: &#34;));
success = ble.sendCommandWithIntReply( F(&#34;AT+GATTADDCHAR=UUID128=00-70-42-04-00-77-12-10-13-42-CC-BA-DE-FA-EA-BD,PROPERTIES=0x02,MIN_LEN=1, MAX_LEN=20, VALUE=GREEN&#34;), &amp;gattReadableCharId);
    if (! success) {
    error(F(&#34;Could not add Custom Readable characteristic&#34;));
}
Serial.print(F(&#34;Adding Custom GATT Service UUID to the advertising payload: &#34;));
ble.sendCommandCheckOK( F(&#34;AT+GAPSETADVDATA=02-01-06-03-02-12-13&#34;) );

jumperPresentID = gatt.addCharacteristic(0x04, GATT_CHARS_PROPERTIES_INDICATE, 5, 5, 5);

/* Reset the device for the new service setting changes to take effect */
Serial.print(F(&#34;Performing a SW reset (service changes require a reset): &#34;));
ble.reset();

pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
}

void loop(void){
Serial.println(&#34;VOLTAGE&#34;);
int sensorValue = analogRead(A1);
float voltage = sensorValue * (3.3 / 1023.0);
   delay(2000);
Serial.println(voltage);
if(voltage == 0){
    Serial.println(&#34;ALERT&#34;);
}
if(analogRead(A1) == 0 || analogRead(A2) == 0 || analogRead(A3) == 0 || analogRead(A4) == 0 || analogRead(A5) == 0){
      Serial.print(&#34;one is removed&#34;);
      gatt.setChar(jumperPresentID, 0, 5);
}else{
    gatt.setChar(jumperPresentID, 2, 5);
}
Serial.println(voltage);
delay(2000);
}
</code></pre>

<p>编辑:
我已经添加了 Arduino 串口的输出</p>

<blockquote>
<p>Adafruit Bluefruit AT Command Example
------------------------------------- Initialising the Bluefruit LE module: OK! Performing a factory reset:AT+FACTORYRESET</p>

<p>&lt;- OK ATE=0</p>

<p>&lt;- OK Requesting Bluefruit info:
---------------- BLESPIFRIEND nRF51822 QFACA10 5953B6F51A2BE44E
0.6.7
0.6.7 Sep 17 2015 S110 8.0.0, 0.2
---------------- Adding the Custom GATT Service definition:AT+GATTADDSERVICE=UUID128=00-77-13-12-10-00-00-00-00-00-EE-BA-AD-DA-BE-CF</p>

<p>&lt;- 1</p>

<p>&lt;- OK Adding the Notifiable characteristic:
AT+GATTADDCHAR=UUID128=00-67-42-01-14-88-59-77-42-42-AB-BA-DA-DA-EE-CC,PROPERTIES=0x10,MIN_LEN=1,
MAX_LEN=20, VALUE=-9999</p>

<p>&lt;- 1</p>

<p>&lt;- OK Adding the Writable with Response characteristic:
AT+GATTADDCHAR=UUID128=00-68-42-02-00-77-12-10-13-42-CC-BA-DE-FA-EA-BB,PROPERTIES=0x04,MIN_LEN=1,
MAX_LEN=20, VALUE=GREEN</p>

<p>&lt;- 2</p>

<p>&lt;- OK Adding the Writable with No Response characteristic:
AT+GATTADDCHAR=UUID128=00-69-42-03-00-77-12-10-13-42-CC-BA-DE-FA-EA-BC,PROPERTIES=0x08,MIN_LEN=1,
MAX_LEN=20, VALUE=GREEN</p>

<p>&lt;- 3</p>

<p>&lt;- OK Adding the Readable characteristic:
AT+GATTADDCHAR=UUID128=00-70-42-04-00-77-12-10-13-42-CC-BA-DE-FA-EA-BD,PROPERTIES=0x02,MIN_LEN=1,
MAX_LEN=20, VALUE=GREEN</p>

<p>&lt;- 4</p>

<p>&lt;- OK Adding Custom GATT Service UUID to the advertising payload:
AT+GAPSETADVDATA=02-01-06-03-02-12-13</p>

<p>&lt;- OK
AT+GATTADDCHAR=UUID=4,PROPERTIES=32,MIN_LEN=5,MAX_LEN=5,DATATYPE=5
Option Error: DATATYPE=5</p>

<p>&lt;- ERROR Performing a SW reset (service changes require a reset): ATZ</p>

<p>&lt;- OK VOLTAGE
0.97 AT+GATTCHAR=0,01-00-01-02-EE</p>

<p>&lt;- ERROR
0.97 VOLTAGE
0.15 AT+GATTCHAR=0,01-00-01-02-EE</p>
</blockquote></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>确保您有足够的电量。如果没有足够的电量来启动蓝牙或 Wifi 设备,一些蓝牙或 WiFi Arduino 在运行 Arduino 草图后会关闭。另外,尝试使用 Adafruits iPhone 代码尝试连接。
<a href="https://learn.adafruit.com/bluefruit-le-connect-for-ios" rel="noreferrer noopener nofollow">https://learn.adafruit.com/bluefruit-le-connect-for-ios</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将数据从支持 BLE 的 arduino 发送到 iOS 应用程序,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41224698/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41224698/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将数据从支持 BLE 的 arduino 发送到 iOS 应用程序