Связь между Arduino Nano и контроллером HM-10 BLE не работает - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу проверить, работает ли связь между моим SerialMonitor в Arduino IDE и контроллером BLE.

Я ввел команду AT на свой SerialMonitor, и она предполагает вернуть OK ответ, но ничего не произошло.

Это схема, которую я использовал:

enter image description here

Код:

 #include <SoftwareSerial.h>
SoftwareSerial bleSerial(2, 3); // RX, TX
void setup() {
  //initialize serial port for logs
  Serial.begin(9600);
  while (!Serial) {
  }
  bleSerial.begin(9600);
}
void loop() {
  if (bleSerial.available()) {
     Serial.write(bleSerial.read());
  }

  if (Serial.available()) {
    bleSerial.write(Serial.read());
  }
}

ОБНОВЛЕНИЕ:

Изменены значения для SoftwareSerial bleSerial (3, 2); // RX, TX по-прежнему не работает.

UPDATE2:

Я пробовал переключать контакты и код, но ничего не работает. По крайней мере, я должен видеть контроллер HM-10 в своих устройствах Bluetooth на моем телефоне Android, но ничего не вижу.

ОБНОВЛЕНИЕ3:

Я использовал код из this Пост Stackoverflow и работает нормально. Наконец-то я вижу контроллер в своих устройствах Bluetooth на моем телефоне Android. После команды AT+NAME? возвращается имя MLT-BT05. Похоже, вы должны прочитать сообщение на символ и установить задержку 10 мс между символами, иначе будет невозможно прочитать сообщение с контроллера BLE. Это была единственная проблема.

1 Ответ

0 голосов
/ 19 апреля 2020

Вы должны подключить RX-TX и TX-RX (не RX-RX и TX-TX, как показано на графике c), поэтому измените кабели и код с

 SoftwareSerial bleSerial(2, 3); // RX, TX

на

 SoftwareSerial bleSerial(3, 2); // RX, TX

Подключение в соответствии с этим графиком c (включая делитель напряжения) enter image description here

Abd использовать следующий эскиз для проверки (подробности см. В комментариях):

//  SerialIn_SerialOut_HM-10_01
//
//  Uses hardware serial to talk to the host computer and AltSoftSerial for communication with the bluetooth module
//
//  What ever is entered in the serial monitor is sent to the connected device
//  Anything received from the connected device is copied to the serial monitor
//  Does not send line endings to the HM-10
//
//  Pins
//  BT VCC to Arduino 5V out. 
//  BT GND to GND
//  Arduino D8 (SS RX) - BT TX no need voltage divider 
//  Arduino D9 (SS TX) - BT RX through a voltage divider (5v to 3.3v)
//

#include <SoftwareSerial.h>
SoftwareSerial BTserial;      

char c=' ';
bool NL = true;

void setup() 
{
    Serial.begin(9600);
    Serial.print("Sketch:   ");   Serial.println(__FILE__);
    Serial.print("Uploaded: ");   Serial.println(__DATE__);
    Serial.println(" ");

    BTserial.begin(9600);  
    Serial.println("BTserial started at 9600");
}

void loop()
{
    // Read from the Bluetooth module and send to the Arduino Serial Monitor
    if (BTserial.available())
    {
        c = BTserial.read();
        Serial.write(c);
    }

    // Read from the Serial Monitor and send to the Bluetooth module
    if (Serial.available())
    {
        c = Serial.read();

        if (c!=10 & c!=13 ) 
        {  
             BTserial.write(c);
        }

        // Echo the user input to the main window. The ">" character indicates the user entered text.
        if (NL) { Serial.print("\r\n>");  NL = false; }
        Serial.write(c);
        if (c==10) { NL = true; }
    }
}
...