Связь между Arduino Nano и контроллером HM-10 BLE не работает

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

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

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

Код:

 #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 все еще не работают.

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

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

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

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

1 ответ

Решение

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

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

к

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

Подключите согласно этой схеме (включая делитель напряжения)

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; }
    }
}
Другие вопросы по тегам