JDY-31 AT modus

Bavelt

Golden Member

Is het iemand wel eens gelukt on zo'n Bluetooth-moduultje (JDY-31, compatible met HC-06) in de AT-command modus te krijgen? Er zijn veel publicaties de het over een KEY-pin hebben, die je dan 'hoog' moet zetten, maar deze module heeft de Key-pin niet. Wel een EN-pin, maar die reageert blijkbaar nergens op.

Met een AT-commando zou je de default Baudrate en de naam van het netwerk kunnen wijzigen.
Alle publicaties met de Arduino ten spijt, lukt het me niet. Ik krijg geen enkel respons op AT-commando's.
De moduultjes op zich werken wel goed, er lijkt niks stuk.

Fouten zijn het bewijs dat je het probeert..

Weet niet of de HC-05 helemaal het zelfde is als de HC=06/JDY-31, maar ik heb mijn HC-05 gewoon aan de RS232 van de PC gehangen en met een terminal programmatje commando's er naartoe gestuurd.

Edit: Mijn module is echt helemaal kaal, dus geen extra boardje eronder zoals je wel is ziet op internet.
Misschien zit er iets op het extra boardje niet helemaal lekker, schijnt voor te komen dat ze niet volledig aangesloten zijn...
Zie deze website: https://www.teachmemicro.com/hc-05-bluetooth-command-list/

[Bericht gewijzigd door SkalTura op vrijdag 10 juli 2020 09:08:51 (16%)

In the beginning there was nothing, but even that exploded

De serieele Bluetooth modules die ik heb hebben een drukknopje. Ingedrukt houden bij opstarten en je zit in de AT mode.

De gebruiksaanwijzing was wel echt fout, afgezien van het gebruikelijke. Dat was voor mij de voornaamste horde.

Bavelt

Golden Member

De serieele Bluetooth modules die ik heb hebben een drukknopje. Ingedrukt houden bij opstarten en je zit in de AT mode.

Dat had ik inderdaad ook gelezen op publicaties. Die dingen van mij (een keer HC06, twee keer JDY-31) hebben geen drukknopje, maar zo te zien op het printje wel een ruimte waar er eentje hád kunnen zitten..

Misschien moet ik er maar eens een draadje op solderen en het testen..

Fouten zijn het bewijs dat je het probeert..

Ik heb ook moeite gehad met mijn HC-06.
Die staat altijd in AT mode zolang er geen verbinding is met de PC. Dwz zolang de PC de seriele poort naar de module niet opent is het ding in AT mode.

Maar dat zie je niet zo gemakkelijk. Je krijgt geen response tenzij alles 100% Ok is.

Dwz :
- Werkt alleen vanaf de uart kant. Kan niet vanuit de PC.
- Geen pause tussen de letters. Kleine pauze betekent einde bericht, en incompleet bericht geeft geen antwoord.
- Niet afsluiten met CR of LF. Dat maakt het commando ongeldig en dan krijg je geen antwoord.
- Juiste baudrate gebruiken. Als je de baudrate niet weet dan opnieuw proberen met een andere baudrate totdat je antwoord krijgt. Telkens met minstens 1 seconde pause.
- Alleen hoodfletters.

Mijn HC-06 reageert wel op een "AT" commando met "OK". De JDY-31 blijkt dat niet te ondersteunen. En geeft dan geen antwoord.

Wat wel zou moeten werken is "ATVERSION".
Op mijn HC-06 moet dat zijn "AT+VERSION".

Maar ik zie op internet dat je juist wel moet afsluiten met CR + LF "\r\n".
Kan best dat er verschillende software versies in omloop zijn. En die kunnen kleine verschillen hebben in de berichten, met grote gevolgen.

Ik krijg de mijne aan de gang door de uart te koppelen aan Serial2 van een arduino. Met een klein programmatje kun je dan de benodigde commando's sturen.

Bavelt

Golden Member

Op 10 juli 2020 12:21:16 schreef deKees:
Ik krijg de mijne aan de gang door de uart te koppelen aan Serial2 van een arduino. Met een klein programmatje kun je dan de benodigde commando's sturen.

Hoe moet ik me dat voorstellen, de serial2 van een Arduino(UNO)?

Fouten zijn het bewijs dat je het probeert..

Je kunt een software serial poort starten, zoals in dit programma'tje.

HC06-Setup.ino

[Bericht gewijzigd door deKees op maandag 13 juli 2020 22:09:36 (40%)

Bavelt

Golden Member

Dit krijg ik niet goed aan de praat. Dwz, de sketch vertalen en upoaden werkt. Mijn Arduino zit op COM4.
Op de serial monitor (Arduino) krijg ik doorlopend "Sorry, No respons from HC06"

Ik heb Hterm beschikbaar als terminal programma, maar het nu moet ik die nu aansluiten?

Fouten zijn het bewijs dat je het probeert..

Hterm heb je nog niet nodig.

De Arduino koppelt naar de HC-06 via pin 2 Pin3.
Mijn HC-06 heeft een knipperlichtje die blijft knipperen zolang er geen verbinding is met een Host, dus zolang de module in AT mode is.

Dus dan moet hij reageren.

// Using software serial port.
// - HC-06 defaults to slave mode,
// - Pin 2 : RxD to HC06 TxD
// - Pin 3 : TxD to HC06 RxD
SoftwareSerial MySerial(2,3);

Als dat niet werkt dan weet ik het ook niet. Maar ik zag wel op internet dat een kaal 'AT' niet werkt op een JDY-31. Dus dat moet je aanpassen. En waarschijnlijk staat de module op 9600 baud in het begin, en kun je daarmee een paar varianten proberen.

Bavelt

Golden Member

Het ledje knippert idd.

Maar waarmee zend ik nu de AT-commando's?
Met de serial Monitor van de Arduino?

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Ik zie het al; het commando zit in het programma.
Een tweede JDY-31 moduultje komt verder.

Hij vindt de baudrate van 38400. Daarna stokt het met 'failed to set baudrate'.

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Ik heb het inmiddels aan de praat met onderstaand programmaatje.

Maar wat ik merk is dat de AT-commando-set van deze JDY-31 erg beperkt is.
Zo werkt Naam, Baudrate en Versie wel, maar veel andere niet.

c code:

#include <SoftwareSerial.h>

SoftwareSerial hc06(2,3);

void setup(){
  //Initialize Serial Monitor
  Serial.begin(38400);
  Serial.println("ENTER AT Commands:");
  //Initialize Bluetooth Serial Port
  hc06.begin(38400);
}

void loop(){
  //Write data from HC06 to Serial Monitor
  if (hc06.available()){
    Serial.write(hc06.read());
  }
  
  //Write from Serial Monitor to HC06
  if (Serial.available()){
    hc06.write(Serial.read());
  }  
}
Fouten zijn het bewijs dat je het probeert..

Ha mooi, dan begint er toch leven in te komen.

Als je de baudrate, naam en pincode kunt zetten dan zal de rest ook wel werken.

Bavelt

Golden Member

Als je de baudrate, naam en pincode kunt zetten dan zal de rest ook wel werken.

Toch is dit niet helemaal zo.
Dit zijn de commando's waar een respons op komt:
- AT
- AT+VERSION
- AT+BAUDx
- AT+NAME="xxxx"

Alle andere commando's uit het rijtje, zoals bv AT+PIN000 of AT+ADDR doen niets (komt ook geen respons terug)

Fouten zijn het bewijs dat je het probeert..

Pincode is 4 cijfers : "AT+PIN1234".
Die hoef je niet te veranderen. Gewoon laten staan. Zal wel '1234'zijn.

Adress heb je niet nodig.

De naam moet je kunnen zien via bluetooth in de PC (settings -> devices and printers'). Dan kun je 'pairen' en krijg je een comport nummer.

Daarna kun je met een terminal programma verbinding maken.

[Bericht gewijzigd door deKees op dinsdag 14 juli 2020 18:21:14 (20%)

Bavelt

Golden Member

Het is nu grotendeels gelukt. Ik had drie moduultje; twee ervan zijn van het type JDY-31 uit China, de andere is een "echte" HC06 uit de reguliere handel.

De JDY-31 werken nu. Ik heb de baudrate op 38400 gezet. De AT modus werkt zolang je géén verbinding met bluetooth hebt gemaakt (bv via smartphone). Zodra je koppelt, wordt de AT-modus verlaten.

Het lastige was dat je bij veranderen van baudrate ook de serial terminal moet meeveranderen, anders verzendt hij met een verkeerde baudrate.
De JDY-31 willen een CR en LF hebben na het AT-commando.

De HC06 is lastiger. Deze kent maar een beperkt aantal commando's.
Bij deze module moet je juist weer géén CR en LF toevoegen.
Op het kale AT-commano komt ook geen 'OK' terug.

Maar ik kan nu verder: het doel was om via een spraakcommando en een toepassing op de Smartphone 'iets' aan te kunnen sturen, zoals een aantal kleuren ledjes.
Daarvoor heb ik de string nodig die de bluetooth module ontvangt.

Fouten zijn het bewijs dat je het probeert..