ESP32 to HC-06

 ( levideo | 2019. március 15., péntek - 13:09 )

Környezet : Arduino IDE

Hogy lehetne egy ESP32 egységet társítani egy HC-06 modullal Blueooth-on keresztül??
Azt szeretném , hogy az ESP32 küldene
BT-n adatot a HC-06-nak, a "BluetoothSerial.h" -t használva.

Ott akadtam el, hogy a HC-06 -nál van beállítva PIN kód, és ezt nem tudom átadni az ESP32-ben.

Van egy ilyen kódom, de nem működik :

#include "esp_bt_main.h"
#include "esp_gap_bt_api.h"
#include "esp_spp_api.h"
#include

#define BT_HCI_UART_BAUDRATE_DEFAULT 9600
#define SPP_SHOW_SPEED 1
#define SPP_SHOW_MODE SPP_SHOW_DATA

uint8_t address[6] = {0x00, 0x18, 0xE4, 0x00, 0x26, 0x70};
String MACadd = "00:18:E4:00:26:70";

static const esp_spp_sec_t sec_mask = ESP_SPP_SEC_NONE;
static const esp_spp_role_t role_master = ESP_SPP_ROLE_MASTER;

esp_err_t connHan;

BluetoothSerial SerialBT;

void setup() {
Serial.begin(115200);
Serial.println("The device is ready!");
SerialBT.begin("Glove ESP");
Serial.println("Looking for device...");
if (esp_spp_start_discovery(address) == ESP_OK) {
Serial.println("Device found!");
}
else {
Serial.println("Device not found :(");
}

connHan = esp_spp_connect(ESP_SPP_SEC_NONE, ESP_SPP_ROLE_MASTER, 3, address);
if (connHan == ESP_OK) {
Serial.println("Device Connected!");
}
else {
Serial.println("Device not connected :(");
}
}

void loop() {

Serial.println(" Client connected");
SerialBT.write('N\n\r');
delay(10000);

}

Kiírja , hogy "Device Connected!" , de a HC-06 nem kapja meg az elküldött 'N\n\r' -karaktert. (N és soremelés).

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Kiegészítés :

A negyedik sor:
#include (kacsacsőr)BluetoothSerial.h(kacsacsőr)

A HC-06 természetesen rá van kötve egy mikrovezérlőre (Arduino UNO)
Ha egy HC-05+Arduino UNO kombóval vagy Androidról app-al küldöm el a 'N\n\r" -t , akkor működik a dolog..

De most éppen nincs a fiókomban több HC-05 modul, ezért próbálkoznék ESP32-vel. Meg más miatt is jobb lenne ...

Itt sincs válasz, de hátha ti okosabbak vagytok :
https://stackoverflow.com/questions/50221002/how-to-connect-esp32-to-hc-06-via-bluetoothserial

valamit nem zártál le

A code -részt a topikban.
Nagy gond ??
Hogy tudom szerkeszteni ??

Nem probalkoztam meg ezzel (bar epp a multkor talaltam egy HC-05-ot a fiokban - evek ota ott all:-), de a kododban ez all:

esp_spp_connect(ESP_SPP_SEC_NONE, ESP_SPP_ROLE_MASTER, 3, address);

es hajol latom a HC-06 csak slave tud lenni.

Ez nem lehet gond?

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

Igen. Ez csak slave, de annak is szánom. Az ESP32 -nak kéne lenni a masternek.

Ez az ESP32 kódja.

HC-05 és HC-06 között simán meg a ROLE1(HC-05) megoldással, ha a jelszavuk egyforma.

Illetve ha mobillal kapcsolódok az ESP32 -re bluetooth-szal, látom is a mobilon a kapott N-betűket, tehát küldi..

Csak a HC-06-on nem jelenik meg..

OK, csak egy otlet volt, (nem melyedtem el a BT-ban). En ugy ertelmeztem, hogy a master / slave a ket BT eszkoz kozotti viszonlylatban ertendo - de megegyszer: nem ertek hozza ennyire.

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

A MASTER küld (ESP32, HC-05, mobil telcsi), a SLAVE fogad (HC-06).
Ha ami eddig olvastam erről, helyes ...

Akartam szerkeszteni, csak megeloztel ;-)

Szoval azt hiszem felfogtam - elosszor ugy ertettem, hogy az ESP32 soros portjara van kotve a HC-06, de ha jol gondolom (mostmar) az ESP32 a master es a HC-06 a slave, es nem zsinoron megy koztuk a kommunikacio, hanem ott van BT kapcsolat.

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

Tovabbi otlet: az nem lehet gond, hogy az ESP32 esetleg csak BLE a HC-05/06 meg csak BT?

A mi chipjeink pl. csak BLE-t tudnak (EFR32BGxxx), igy Classic Bluetooth-os eszkozokkel nem kepesek kapcsolatot letesiteni.

Szerk: bar ha jol olvasom az ESP32 tudja a Classic BT-t is.

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

ESP32 tudja a Classic BT-t is.
Elvileg a kód, amit a netről szereztem, a Classic SPP.
Én még a BAUD -sebességre tippelek, hogy nem egyforma a HC-06-tal, amin 9600.
Csak nem találom , hogy hogyan lehet azt beállítani az ESP32 -n ..

Nem tudom, hogy kell-e baud rate-et allitani az ESP32-n, a jel BT-n ugye nem azzal a sebesseggel megy a levegoben, a payload gondolom megjelenik valahol a radio memoriaban, a BT-os library meg gondolom kiszedi azt ami az applikacionak kell. Szoval az ESP32 applikacio oldalarol ez csak egy virtualis soros port. Szerintem a baud rate-nek csak a HC-0x oldalon van jelentossege, ahol fizikai soros port van, nem?

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

Hú !!
Ez elég tudományosan hangzik... De biztos igazad van.
A HC-06 <=> HC-05 kommunikációnál a moduloknak egy sebességen (9600 baud) kell lennie , az biztos, különben nem kommunikálnak.
Ez vezérlő független, a BT modulon állítható AT-parancsokkal.
De ESP32-nél meg az AT parancsmódba sem tudok belépni...

A HC-0x-ek labain fizikailag ott van az RX es a TX kivezetes es egy masik eszkozbe mennek bele. Szerintem az ESP32 eseten a Bluetooth 'RX' es 'TX' nincs kivezetve labra, hanem csak egy bufferbe lehet irni a byte-okat amit kuldenel, meg egy bufferbol lehet olvasni a byte-okat amik jottek.

De nem ismerem az ESP32-t, csak mas hasonlo cuccokkal valo tapasztalat alpjan gondolom.

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

"The supported serial baud rates are in the range from 9600 to 1843200 with 921600 being the default since it matches the baud rate of the bluetooth channel itself. "

Ezt itt találtam : https://github.com/olegv142/esp32-bt-serial

Tehát az átviteli sebesség ennél is állítható.

A HC-05 -nél ez 9600 BAUD default. De csak 115200 -ig ajánlott növelni, mert állítólag utána már vesznek el adatok.

OK, atgondoltam, tenyleg lehet ertelme allitani a baud rate-et az ESP32 oldalon.

A "levegoben" a BT csomagok ugyanolyan sebesseggel mennek at, viszont ha az ESP32 tul surun kuldi, akkor a masik oldalon (a HC-0x-bol kifele) kisebb sebesseggel nem tudna kijonni az osszes kuldott byte - illetve forditva is, ha a HC-0x nagy sebessegre van allitva, az ESP32 meg lassura, akkor felesleges varakozas lenne a byte-ok kozott (ez csak az ESP32 -> HC-0x iranyban okozhat problemat, a masik iranyban nincs jelentossege, hacsak nem az van, hogy a sebessegtol fuggoen tobb / kevesebb BT csomag kuldodik).

De azt hiszem, ez reszemrol mar elment kisse az okoskodas iranyaba, megprobalom nem egetni magam tovabb ;-)

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

Igazad lehet.. A sebesség nem mindegy. Nem véletlenül írták, hogy a HC-05 --- HC-06 kapcsolatban mind a sebességnek (9600 Baud) , mind a jelszónak (1234) meg kell egyeznie a két egységen, mert csak így tudnak kapcsolódni egymáshoz.
ESP32 -nél viszont igazából sem a sebességet , sem a PIN-t nem tudom beállítani , hogy jó legyen a HC-06-nak.

Próbálkoztam azzal, hogy a HC-06-on a sebességet megemeltem 115200 -re de így sem érzékel semmit abból, amit az ESP32 küld Clsssic bluetooth-on (SPP) keresztül.

Egyenlőre feladtam...

Lehet, hogy ezzel a módszerrel kéne megpróbálni ??
http://www.martyncurrey.com/connecting-2-arduinos-by-bluetooth-using-a-hc-05-and-a-hc-06-pair-bind-and-link/ <<<< Sajnos ez sem jött be.

A sebességet átállítottam a HC-06 -on 115200 -re, így elvileg egyforma a BAUD az ESP32-vel.

A PIN-t kéne valahogy beállítani az ESP32-n, de fogalmam sincs, hogy hogyan.


Biztos hogy a framework-od tudja PIN-t classic-on?
https://github.com/espressif/esp-idf/issues/1541
Kb 8 honapja kerult csak bele ESP-IDF masterbe a funkcio.

Mas: az hogy nem zarja le automatikusan a code taget a Drupal egy vicc!

Sot meg en sem tudom lezarni!

A bibi az, hogy nem tudom AT-parancsokkal beállítani az ESP32 Classic BT-jét.
Illetve nem találtam olyat, hogy AT+PIN1234 , vagy hasonló parancs ...

Egyenlőre lapoztam, és megoldottam a HC-06 vezérlését egy saját Androidos app-al egy régi Samsung XCover2 telcsivel.