Связь между 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; }
}
}