2015-10-23 3 views
0

Я работаю с модулем Ethernet Arduino Nano + HC-05 Bluetooth + ENC28J60. Использование EtherCard.h from JeeLabs.net. У меня есть некоторые проблемы с модулем Bluetooth.Arduino Nano + HC-05: AT + INQ дает поврежденный выход

модуль Bluetooth установлен в режим AT (Удерживая нажатой кнопку с зажимом/Giving 5V в штифтом 34. Попробованная оба пути)

Вот мои конфигурации:

ROLE=1 
CMODE=1 
INQM=1,5,23 

И вот loop() и связанные с ним функции

static uint32_t timer; 

void loop() { 
    ether.packetLoop(ether.packetReceive()); 

    if (millis() >= timer) { 
    if (BTScan()) { 
     sendRequest(); // Send HTTP POST with `deviceBT` using EtherCard 
    } 
    } 
} 

String deviceBT = ""; 

bool BTScan() { 
    bluetooth.listen(); 

    if (bluetooth.available()) { 
    deviceBT = ""; 

    String readstr = bluetooth.readString(); 
    readstr.trim(); 

    if (readstr == PSTR("ERROR:(16)")) { 
     Serial.println(F("BLUETOOTH NOT INITIALIZED\nBLUETOOTH INIT:")); 
     bluetooth.println(F("AT+INIT")); 
     if (bluetooth.find(F("OK"))) Serial.println(F("OK")); 
    } else if (readstr.length() > 0) { 
     for (int i = 0; i < 2; i++) { 
     digitalWrite(LED_PIN, HIGH); delay(100); 
     digitalWrite(LED_PIN, LOW); delay(200); 
     } 
     if (readstr.indexOf(F("+INQ:")) > -1) { 
     Serial.println(F("BLUETOOTH FOUND:")); 
     Serial.println(readstr); 
     deviceBT = readstr; 
     return true; 
     } 
    } 
    } 

    Serial.println(F("BLUETOOTH INQUIRE START:")); 
    bluetooth.println(F("AT+INQ")); 
    timer = millis() + 5000; 

    return false; 
} 

Предполагая, что мой Bluetooth идентификатор 303A: 64: 9A65CD и программа отвечает это через последовательный.

BLUETOOTH INQUIRE START: 
BLUETOOTH FOUND: 
OK 
+INQ:303A:è4:9A<5CD,2010C,7FFC 

// sometimes 
BLUETOOTH FOUND: 
gK 
+INQ:303A:6::9A85F¢,2010C,7FFF 

// some other time 
BLUETOOTH FOUND: 
+INQ:303A:64:9C<5FD,20˜0C,7FFF 

Bluetooth работает отлично в другой программе без части Ethernet, физические установки одинаковы.

Все моего эскиза использует 17,664 байт (57%) и глобальные переменные используют 984 байт (48%)

Пожалуйста, помогите. Что-то не так с моим кодом?

ответ

0

Я думаю, что оказался обходным путем, или, возможно, это решение.

В функции loop() я добавил небольшую задержку 500ms после звонка в ether.packetLoop() и, похоже, сработает.

Не уверен, есть ли какие-либо побочные эффекты от этого, так как я абсолютно новичок в этом программировании.

void loop() { 
    ether.packetLoop(ether.packetReceive()); 

    delay(500); // Add 500ms delay to the loop 

    if (millis() >= timer) { 
    if (BTScan()) { 
     sendRequest(); // Send HTTP POST with `deviceBT` using EtherCard 
    } 
    } 
} 

Пожалуйста, исправьте меня, если я не буду.

Смежные вопросы