Forum: Mikrocontroller und Digitale Elektronik AT-Befehle an BT-222


von Dshing S. (dshing)


Lesenswert?

Hi,
kann mir jemand erklären, wie ich AT Befehle an einen BT222 Bluetooth 
Modul sende?
Ich will eigentlich die Baudrate auf 4800 setzen, aber ich finde 
nirgends eine Erklärung wie man den Befehl "L0" jetzt in das Modul 
bekommt. Wenn ich den String ATL0 oder nur L0 in den UART schreibe 
bekomme ich nichts zurück.
Baudatenrate ist korrekt am RX- kommt auch was an, nur aus dem TX kommt 
nichts wieder zurück. Ich hab auch keine Bluetooth Verbindung 
initialisiert.

Wäre über Tipps sehr Dankbar, ich weiß nicht mehr weiter.

von Michael H. (michael_h45)


Lesenswert?

Dshing Sung schrieb:
> kann mir jemand erklären, wie ich AT Befehle an einen BT222 Bluetooth
> Modul sende?
Per Hardware-Schnittstelle ohne dass eine BT-Verbindung besteht.

> Ich will eigentlich die Baudrate auf 4800 setzen, aber ich finde
> nirgends eine Erklärung wie man den Befehl "L0" jetzt in das Modul
ATL0<CR>
<CR> = Carriage Return = 0x0d = 13
Zwischen jedem Character eine Pause, bis das echo vom Modul 
zurückgekommen ist.

> bekommt. Wenn ich den String ATL0 oder nur L0 in den UART schreibe
> bekomme ich nichts zurück.
Dann stimmt mit der Hardware etwas nicht, da das BTM222 im 
Auslieferungszustand lokales echo liefert.

Bild/Schaltplan vom Hardwareaufbau?

von Dshing S. (dshing)


Lesenswert?

Hi,
danke schon mal.
Also anscheinend liegt das Problem daran, das das Modul nichts am 
RX-Kanal empfängt. Zu mindestens gibt es über BT nichts zurück wenn man 
was darauf schreibt, andersherum klappt es allerdings schon.
Ich hab den RX an dem Pin26 direkt unter dem TX, so wie es im Datenblatt 
steht. Woran kann es noch liegen?

von Michael H. (michael_h45)


Lesenswert?

Michael H. schrieb:
> Bild/Schaltplan vom Hardwareaufbau?

von Dshing S. (dshing)


Angehängte Dateien:

Lesenswert?

Hi,
so sollte es aussehen.

von Guru (Gast)


Angehängte Dateien:

Lesenswert?

>so sollte es aussehen.
Eher nicht. Die Transistorschaltungen sind überflüssig.
Selbst wenn da nur eine Verstärkung stattfinden soll, sind Ausgänge und 
Eingänge vertauscht.

Lass die Transistoren weg und verbinde, wie in meinem Bild gezeigt, den 
MAX direkt mit dem Prozessor.

von Guru (Gast)


Lesenswert?

Oh. Sch... Das ist ja wegen der 3.3V. Habe ich übersehen. Sorry.

Aber ist nicht der RX Anschluss vom BTM ein Eingang und der TX ein 
Ausgang?
Jedenfalls sind die Pegelwandler falsch am MAX angeschlossen.

von Thomas R. (Gast)


Lesenswert?

Nicht nur die Transistoren sind überflüssig, der MAX232 ist es auch.
Er zerstört nur den BTM222, weil der 3V-Pegel haben will.

von Harald (Gast)


Lesenswert?

Michael H. schrieb:
> Zwischen jedem Character eine Pause, bis das echo vom Modul
> zurückgekommen ist.

Das ist übrigens nur bei Firmware Versionen VOR(!) V4.35, ab dieser 
Version ist dieser Bug beseitigt.

siehe auch:
Beitrag "BTM-222 antwortet immer nur mit ERROR"

von Dshing S. (dshing)


Lesenswert?

Thomas R. schrieb:
> Nicht nur die Transistoren sind überflüssig, der MAX232 ist es auch.
> Er zerstört nur den BTM222, weil der 3V-Pegel haben will.

Verstehe ich nicht wieso ist der Max232 überflüssig? Soll ich etwa mit 
den RS232 Pegel(+/-12V) an den BT222?
Das würde ihn doch zerstören und nicht die 3V von den Transistoren.

Hab den Max232 auch mal mit 3,3V betrieben und die Transistoren 
weggelassen, hilft auch nichts. Wenn ich ein µC an den Max232 hänge 
klappt die Kommunikation Problemlos.

von Guru (Gast)


Lesenswert?

Also, warum der Thomas das meint, kann ich mir auch nicht erklären.

Wenn Du von RS232-Pegeln auf 3.3V Pegel kommen willst ist die Schaltung 
mit dem MAX und den Transistoren an sich schon so in Ordnung. Es gäbe, 
denke ich, auch noch MAX mit 3.3V Pegeln auf der CPU-Seite.

Das einzige was nicht stimmt, ist die Anschaltung der Transistoren an 
den MAX. Du hast den Ausgang des TX-Pegelwandlers an den Ausgang R1OUT 
des MAX angeschlossen und den EIngang des RX-Wandlers an den TX1IN - 
Eingang des MAX. Das kann nicht gehen.

von Simon K. (simon) Benutzerseite


Lesenswert?

Dshing Sung schrieb:
> Thomas R. schrieb:
>> Nicht nur die Transistoren sind überflüssig, der MAX232 ist es auch.
>> Er zerstört nur den BTM222, weil der 3V-Pegel haben will.
>
> Verstehe ich nicht wieso ist der Max232 überflüssig? Soll ich etwa mit
> den RS232 Pegel(+/-12V) an den BT222?
> Das würde ihn doch zerstören und nicht die 3V von den Transistoren.
Nein, so war das nicht gemeint.
Du brauchst was anderes als den MAX232. Zum Beispiel einen MAX2232, der 
mit 3,3V funktioniert.

> Hab den Max232 auch mal mit 3,3V betrieben und die Transistoren
> weggelassen, hilft auch nichts. Wenn ich ein µC an den Max232 hänge
> klappt die Kommunikation Problemlos.

Logisch, der Max232 funktioniert auch nicht mit 3,3V.

von Michael H. (michael_h45)


Angehängte Dateien:

Lesenswert?

So wie in deinem Bild kann gar nichts funktionieren.
Wenn also doch etwas funktioniert, stimmt dein Bild nicht.

So wie im Anhang muss es aussehen.

Überprüf deinen Hardwareaufbau!

von Dshing S. (dshing)


Lesenswert?

Ja sorry, die müssen vertauscht sein. Hab ich hier auch so.

Mit 3,3V funktioniert es aber auch bei mir, zu mindesten beim Senden.
Allerdings bekomme ich jetzt solange kein BT an ist ein Echo vom BT222, 
jedoch mit BT funktioniert das Empfangen immer noch nicht nur das 
Senden.

Also wie sendet man denn die AT-Befehle? Einfach als String AT... senden 
und dann müsste als Antwort zu mindestens ein Error zurück kommen?

von Michael H. (michael_h45)


Lesenswert?

Dshing Sung schrieb:
> Allerdings bekomme ich jetzt solange kein BT an ist ein Echo vom BT222,
Gut. Dann passt immerhin schon mal deine Hardware.

> jedoch mit BT funktioniert das Empfangen immer noch nicht nur das
> Senden.
Manche Bluetooth-Geräte am PC haben für Senden und Empfangen ZWEI 
VERSCHIEDENE Com-Ports am PC. Warum auch immer...

> Also wie sendet man denn die AT-Befehle? Einfach als String AT... senden
> und dann müsste als Antwort zu mindestens ein Error zurück kommen?
Eigentlich ja.
Das BTM222 muss dazu in der richtigen "Rolle" sein. Ich weiß nur nicht 
mehr, ob es Master oder Slave sein muss.
Einfach ausprobieren.

Wenn du z.B. ATN?<CR> sendet, muss der Name zurückkommen. 
"serial-adaptor" oder sowas ist das per default.

von myTwoCent (Gast)


Lesenswert?

Simon K. schrieb:
> Du brauchst was anderes als den MAX232. Zum Beispiel einen MAX2232, der
> mit 3,3V funktioniert.

Ein MAX2232 hilft da auch nichts. Das ist ein 900MHz ISM Band 
Verstärker.
Du meinst wahrscheinlich einen MAX3232.

von Michael H. (michael_h45)


Lesenswert?


von Dshing S. (dshing)


Lesenswert?

Alles klar, jetzt antwortet er komischerweise und es lässt sich auch die 
Baud verändern. Danke für die Hilfe, weiß leider nicht genau woran es 
lag :)

Aber wie funktioniert das mit dem Master Slave Modus?
Also default ist er im Slave und damit kann ich senden aber nicht 
empfangen?
Ich hab ihn mal umgestellt auf Maser, aber da kann ich mich nicht mehr 
mit ihm verbinden.

von Michael H. (michael_h45)


Lesenswert?

Dshing Sung schrieb:
> Alles klar, jetzt antwortet er komischerweise und es lässt sich auch die
> Baud verändern. Danke für die Hilfe, weiß leider nicht genau woran es
> lag :)
Am Hardware-Aufbau =)

> Also default ist er im Slave und damit kann ich senden aber nicht
> empfangen?
Nein.
Ich hab nur gesagt, dass manche PC devices zwei verschiedene COM-Ports 
für das selbe profil zum Senden und Emfpangen zur Verfügung stellen.
Sprich du kannst vom PC aus an dein device im SPP profil mit einem 
COM-Port senden auf auf dem anderen empfangen.
Das muss aber nicht so sein. Ich hatte den Fall nur schon ein mal.

Falls du ein Android-Handy hast, hol dir mal die App BlueTerm. Damit 
gehts auf alle Fälle problemlos.

> Ich hab ihn mal umgestellt auf Maser, aber da kann ich mich nicht mehr
> mit ihm verbinden.
Blueooth ist eine Master-Slave-Struktur. Dein bluetooth device kann 
master oder slave in seinem netzwerk sein.
Die Verbindung wird immer vom Master iniitiert.

von Simon K. (simon) Benutzerseite


Lesenswert?

myTwoCent schrieb:
> Simon K. schrieb:
>> Du brauchst was anderes als den MAX232. Zum Beispiel einen MAX2232, der
>> mit 3,3V funktioniert.
>
> Ein MAX2232 hilft da auch nichts. Das ist ein 900MHz ISM Band
> Verstärker.
> Du meinst wahrscheinlich einen MAX3232.

Ups ;-) Genau den meinte ich.

von Thomas R. (Gast)


Lesenswert?

Thomas R. schrieb:
> Nicht nur die Transistoren sind überflüssig, der MAX232 ist es auch.
> Er zerstört nur den BTM222, weil der 3V-Pegel haben will.

Da habe ich groben Unfug geschrieben - ich hatte das Schaltbild nur 
überflogen und dachte, links sitzt ein µC und rechts gehts in den 
BTM222.

Ich bitte um Entschuldigung!

von Dshing S. (dshing)


Lesenswert?

Hmm ok dann hab ich das mit dem Master Slave Prinzip soweit verstanden.
Das Problem warum ich sonst nichts empfangen habe ist, das das Terminal 
Programm erst ab ca.1000 Zeichen diese aus dem Puffer oder sonst wo her 
holt. So viele hab ich natürlich nie in einem Versuch gesendet XD
Also sind jetzt alle Unklarheit beseitigt.
Danke euch.

von Daniel R. (anut_peach)


Lesenswert?

hi,
ich verwende das modul als master, und soweit klappt auch alles.
aber, wie kann ich eine bestehende verbindung trennen?
mit +++ komm ich ja nur raus zu den at-commands, aber die verbindung 
steht weiterhin.
ev. ein kleiner trick!?
danke.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Daniel R. schrieb:
> ich verwende das modul als master, und soweit klappt auch alles.
> aber, wie kann ich eine bestehende verbindung trennen?

Bei Modems ging das früher mit ATH.

von Daniel R. (anut_peach)


Lesenswert?

danke, ath funktioniert!

von Daniel R. (anut_peach)


Lesenswert?

hi,
ich hätte noch ne frage.
ich hab nun das trennen der Verbindung am PC (usb-uart adapter + putty) 
geschafft wo das bt222 dran hängt.
erst per +++ zurück zu cmd und mit ath die verbindung trennen.

jetzt hätte ich das auch so in mein uC Programm eingebaut und das BT222 
dran gehängt. andere AT-befehle gehen soweit auch, zb. ata baut 
verbindung auf...
aber ich schaffe es partout nicht dass er die escape-sequenz frisst!
spiel nun schon eine ewigkeit rum, aber er sendet immer nur die + rüber 
zum empfänger anstatt zum cmd zurück zu kehren.
hat jemand ein idee?

quick and dirty-code schaut so aus:
printf("+");
delay_ms(250);
printf("+");
delay_ms(250);
printf("+");
// zu schnell hintereinander mag er die + auch nicht haben :o)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.