www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik Bluetoothmodul BTM-222

Autor: Thomas (Gast)
Datum: 23.10.2007 10:51
Dateianhang: btm222_datasheet.pdf (361,3 KB, 2525 Downloads)

Hallo zusammen,

habe o. g. Modul (von www.TME.pl), komme aber irgendwie nicht mit dem
Datenblatt zurecht.
Sende ich die AT-Befehle über die UART oder über Bluetooth?
Wie unterscheidet das Modul, ob ich nun Daten oder Befehle sende?
Vielleicht hat ja schon wer was gemacht und würde ein Beispiel hier
veröffentlichen.

Vielen Dank für Eure Hilfe

Thomas
Autor: Christoph Budelmann (christophbudelmann)
Datum: 23.10.2007 11:09

Hallo Thomas,

AT-Befehle sendest du über den UART. Wenn das Modul eine
Bluetooth-Verbindung aufgebaut hat, kannst du keine Befehle mehr an das
Modul schicken, alle Zeichen werden per Bluetooth versendet.

Ich arbeite momentan an einer Library, die ich aber noch nicht ganz
fertig habe. Kommt aber in Kürze.

Zum Anfang solltest du das Modul am einfachsten an den PC anschließen
und mit Hyper-Terminal Zeichen versenden. Zunächst solltest du ein
"ATD0" senden, um dem Modul zu sagen, dass alle PCs eine Verbindung mit
ihm aufbauen dürfen. Standardmäßig ist irgendeine komische ID
eingestellt. Wenn du jetzt nach dem Bluetooth-Modul suchst, den
Hauptschlüssel austauscht (Standard ist "0000" oder "1234", ich weiß es
nicht mehr.) und die Verbindung aufbaust, sendet das Modul noch ein
"CONNECT" und reicht dann alle Daten transparent durch. Beendest du die
Verbindung, kommt ein "DISCONNECT" und du kannst wieder AT-Befehle
senden.

Gruß
Christoph
Autor: Thomas (Gast)
Datum: 23.10.2007 11:40

Super - vielen Dank. Werde das Teil dann am Wochenende mal anschließen
und ausprobieren. Das mit Deiner Lib wär natürlich ideal.

Gruß, Thomas
Autor: Thomas (Gast)
Datum: 23.10.2007 11:42

Achja - nochwas: Müssen RTS und CTS benutzt werden?
Autor: Christoph Budelmann (christophbudelmann)
Datum: 23.10.2007 14:19

Nein. Ich habe zunächst auch alles außer den Versorgungspins, der
Antenne sowie RX und TX freigelassen.
Autor: Jogi (Gast)
Datum: 23.10.2007 19:47

Kann mir Dummie jemand sagen welche Antenne für dieses Modul geeignet
ist bzw. wie man eine solche selbster baut.

Danke Jogi
Autor: Christoph Budelmann (christophbudelmann)
Datum: 23.10.2007 20:04

Einfach ein Stück Draht oder Litze dranlöten, Länge Lamda/4 (also etwa
31mm für Bluetooth (2,45GHz)).
Autor: Christoph Budelmann (christophbudelmann)
Datum: 23.10.2007 20:05

Kurzer Nachtrag: Sehr schöne Chip-Antennen gibt es bei Farnell, sind nur
2x3mm² groß, aber leider auch 3€ teuer.
Autor: jack (Gast)
Datum: 24.10.2007 11:38

Hallo Christoph,
du schreibst

>Zum Anfang solltest du das Modul am einfachsten an den PC anschließen
>und mit Hyper-Terminal Zeichen versenden. Zunächst solltest du ein
>"ATD0" senden, um dem Modul zu sagen, dass alle PCs eine Verbindung mit
>ihm aufbauen dürfen. Standardmäßig ist irgendeine komische ID
>eingestellt. Wenn du jetzt nach dem Bluetooth-Modul suchst, den
>Hauptschlüssel austauscht (Standard ist "0000" oder "1234", ich weiß es
>nicht mehr.) und die Verbindung aufbaust, sendet das Modul noch ein
>"CONNECT" und reicht dann alle Daten transparent durch. Beendest du die
>Verbindung, kommt ein "DISCONNECT" und du kannst wieder AT-Befehle
>senden.

Wo kann ich die komp. Befehlsbeschreibung wie z.Bsp. den "ATD0"-Befehl
finden?

Grüße
  Jack
Autor: Gepi (Gast)
Datum: 24.10.2007 16:15

Autor: Boris (Gast)
Datum: 26.10.2007 12:01

So, habe jetzt auch so ein schönes Modul :-)
Bevor ich aber den Lötkolben schwinge:
Reicht das als Minimal-Anschluss, um das Modul wenigstens schonmal
"sehen" zu können (z.B. mit einem PDA)?

Antenne:
Pins: 37

GND:
Pins: 38, 29, 18, 19, 10, 1

VCC:
Pins: 17, 2

Und warum gibt es so viele GND und VCC Anschlüsse? Und ist es richtig an
VCC und PVCC die selbe Spannung anzulegen?
Autor: Gepi (Gast)
Datum: 26.10.2007 12:35

ja wird gefunden mit Antenne und Spannungsversorgung!

PVCC = VCC = 3.3V

viele GND weil HF und deshalb Masse wichtig ... ein Anschluss sollte
reichen
Autor: Boris (Gast)
Datum: 26.10.2007 12:54

Wow, das ist ja echt hammer! Hätte nicht gedacht, dass das so einfach
funktioniert :-D Tausend Dank Leute!

Dann können wir ja gleich weiter machen:
Wenn ich nun Befehle an das Modul, und Daten über den UART meines AVR
senden will (die dann natürlcih per BT weiterübertragen werden sollen),
welche Pins werden dann benötigt?
Wenn ich das oben richtig verstanden habe, werden auch die Modul-Befehle
per UART an das Modul gesendet? Muss ich also nur RX und TX des AVR mit
RX und TX des Moduls verbinden, und schon gehts los?


PS: Ich hoffe ich gehe euch mit meinen Fragen nicht zu sehr auf die
Nerven. Aber leider weiß ich nicht, wo ich diese Informationen sonst
herbekommen sollte (das Datenblatt z.B. hilft nicht wirklich viel). Und
ihr scheint's ja alle voll drauf zu haben :-)
Autor: Christoph Budelmann (christophbudelmann)
Datum: 26.10.2007 13:11

Ja, einfach den UART anschließen. Flußkontrolle brauchst du nicht.

Allerdings solltest du beim Senden von AT-Befehlen nach jedem Zeichen
warten, bis dieses vom Modul zurückgesendet wurde.

Ansonsten, einfach mal probieren, kaputt machen kann man eigentlich
nichts.
Autor: Boris (Gast)
Datum: 26.10.2007 15:02

Habe jetzt ziemlich lange herumprobiert, aber bekomms nicht so ganz hin.
Allerdings weiß ich nicht, ob es am Empfänger (PDA) oder meinem AVR
liegt...

Könnte vielleicht jemand ein funktionsfähiges Programm (das z.B. einfach
nur ständig ein Byte sendet) hier rein stellen? Das würde das testen
ungemein erleichtern...

Danke!
Autor: Gepi (Gast)
Datum: 26.10.2007 16:13

häng das Ding doch erstmal an dein HyperTerminal/GTKTerm/Minicom und
probiers damit ... kannst ja über BT dein Handy wählen lassen (bei mir
ging das)
Autor: Christoph Budelmann (christophbudelmann)
Datum: 26.10.2007 21:16

Du brauchst kein Programm. Einfach einmal ein ATD0 per Hyperterminal,
etc. senden um Verbindungen von allen PCs zuzulassen,
Bluetooth-Verbindung am PC, PDA, was weiß ich, einrichten mit dem Modul
und du kannst senden.
Autor: Boris (Gast)
Datum: 30.10.2007 18:46
Dateianhang: bluetooth.c (1,4 KB, 362 Downloads) | formatierter Code

Leider kann ich das Modul nicht an einen PC anschließen (Habe nämlich
keine serielle Schnittstelle).
Allerdings habe ich versucht, den Befehl per ATMega16 zu senden, aber
das BM-Modul reagiert nicht (keine Antwort). Den Quellcode habe ich mal
angehängt.
Die USART Funktionen sind einfach aus dem Datenblatt geborgt ;-)

Hab ich da was Wichtiges vergessen?
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 30.10.2007 20:17

Die AT-Zeile muß mit 0x0D (CR) abgeschlossen werden. Außerdem muß
hintereinander weg geschrieben werden, ohne auf ein Echo zu warten.
Also ATI1<CR> zum Beispiel.
Autor: Boris (Gast)
Datum: 30.10.2007 20:26

Aber Christoph meinte oben:
"Allerdings solltest du beim Senden von AT-Befehlen nach jedem Zeichen
warten, bis dieses vom Modul zurückgesendet wurde."

Was denn nu ;-)


Habe deine Vorschläge trotzdem mal ausprobiert, hilft aber leider
trotzdem nichts (BM-Modul scheint das ATD0 nicht erhalten zu haben?)...
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 30.10.2007 20:35

Versuche mal, einfach AT<CR> zu geben, es müßte dann OK<CR><LF>
zurückkommen. Oder ob ATI1 (aaa tee iii eins) funktioniert, da sollte
das Modul seine Einstellungen ausspuken. Warten auf jedes Echo führt zu
ERROR<CR><LF> im Termianalfenster.

PS: Die spitzen Klammern bitte nicht mitsenden, die sind nur zur
Trennung von Text und Steuerzeichen.
Autor: Boris (Gast)
Datum: 30.10.2007 20:51

Egal was ich mache, es kommt nix zurück :-(

Ich habe mal zwei LEDS hergenommen und an die RX und TX Leitungen
angeschlossen. Beim senden des AVR blinkt die eine LED auch fröhlich,
die andere bleibt aber immer aus. Es scheint also wirklich nichts vom
BM-Modul zurück zu kommen.

Um ganz sicher zu gehen hier nochmal die möglichen Fehlerquellen, die
mir so einfallen:

1) Kabel korrekt angeschlossen?
Ich habe am AVR Pin PD0 (RXD) mit Pin27 (TX) am BM verbunden.
Außerdem ist am AVR Pin PD1 (TXD) mit Pin26 (RX) am BM verbunden.

2) Baudrate, Stopbits etc. richtig?
Ist meine USART-Initialisierung mit den Standardwerten des BMs
kompatibel?

Danke nochmal :-)
Autor: Boris (Gast)
Datum: 31.10.2007 10:04

Habs immer noch nicht hinbekommen :-(
Hilfe!
Autor: Karl heinz Buchegger (kbuchegg) (Moderator)
Datum: 31.10.2007 10:24

Im Moment hast du eher schlechte Karten:

Deine Probleme:
Du weist nicht ob das BM Modul funktioniert
Du weist nicht ob die UART am Mega16 funktioniert
Du weist nich ob dein Programm funktioniert
Du weist nicht ob dein Kabel richtig ist

Das sind zuviele Unbekannte.
Ich würde mal mit allem Nachdruck versuchen einen
Rechner aufzutreiben, der noch eine Serielle Schnittstelle
hat. Damit kannst du das Kabel testen, das BM Modul mit
Hyperterminal testen, die UART vom Mega16 testen.
Also so ziemlich jede Einzelkomponente, die dir ein
Problem bescheren könnte.
Erst wenn jede Komponente für sich einzeln begutachtet,
bzw. korrigiert wurde, müsste dann ein Zusammenschluß
von Mega16 und BM Modul auf Anhieb funktionieren.

Hab damit keine Erfahrung, aber ein USB nach RS232 Umsetzter
müsste da eigentlich schon eine enorme Erleichterung sein.
Autor: Boris (Gast)
Datum: 31.10.2007 11:03

So schlimm isses garnicht!

Das das BM Modul funktioniert wei- ich, weil ich es mit meinem PDA
finde, pairen kann und auch dessen Services auflisten kann. Nur bei der
Seriellen Kommunikation sperrt sich das Modul dann, vermutlich aufgrund
der noch fehlenden Initialisierung.

Das das USART funktioniert sehe ich ja an den LEDs, die ich
angeschlossen hab. Wenn ich zeichen sende, blinkt diese ja. Scheint also
auch OK zu sein.
Dem ents[prechend gehe ich auch mal davon aus, dass mein Programm
funktioniert...
Autor: Karl heinz Buchegger (kbuchegg) (Moderator)
Datum: 31.10.2007 11:18

Boris wrote:
> So schlimm isses garnicht!
>
> Das das BM Modul funktioniert wei- ich, weil ich es mit meinem PDA
> finde, pairen kann und auch dessen Services auflisten kann. Nur bei der
> Seriellen Kommunikation sperrt sich das Modul dann, vermutlich aufgrund
> der noch fehlenden Initialisierung.

Wenn ich die Vorgängerpostings durchlese: Das Ding braucht
keine Initialisierung. Die UART funktioniert sofort nach dem
Einschalten.

>
> Das das USART funktioniert sehe ich ja an den LEDs, die ich
> angeschlossen hab. Wenn ich zeichen sende, blinkt diese ja. Scheint also
> auch OK zu sein.

Aber du siehst nicht ob die Baudrate stimmt. Ob sie grundsätzlich
falsch ist, oder ob du nur knapp daneben liegst. Ein PC mit
Hyperterminal könnte dir das sofort sagen.

> Dem ents[prechend gehe ich auch mal davon aus, dass mein Programm
> funktioniert...

Na ja. Wenn doch alles funktioniert, woran hapert es dann :-)
(Hinweis: Die UART des BM Moduls ist es sicherlich nicht)

Systematisch vorgehen. Mit wildem Herumprobieren löst man
Probleme höchstens zufällig. Eine Komponente nach der anderen
als Fehlerquelle ausschliessen führt mit 100% Sicherheit
zum Erfolg. Stelle grundsätzlich alles solange in Frage, bis
du nachweisen kannst, dass es funktioniert.
Autor: Boris (Gast)
Datum: 31.10.2007 11:50

"Stelle grundsätzlich alles solange in Frage, bis
du nachweisen kannst, dass es funktioniert."

Hehe, das werd ich dann wohl tun ;-)


"Wenn ich die Vorgängerpostings durchlese: Das Ding braucht
keine Initialisierung. Die UART funktioniert sofort nach dem
Einschalten."

In einem anderen Thread hatte man mir erklärt, man müsse zunächst ein
ATD0 senden, damit eine Vernünftige Verbindung zustande kommen
kann...oder hab ich da jetzt was falsch verstanden?
Autor: Karl heinz Buchegger (kbuchegg) (Moderator)
Datum: 31.10.2007 12:18

Boris wrote:
> "Stelle grundsätzlich alles solange in Frage, bis
> du nachweisen kannst, dass es funktioniert."
>
> Hehe, das werd ich dann wohl tun ;-)
>
>
> "Wenn ich die Vorgängerpostings durchlese: Das Ding braucht
> keine Initialisierung. Die UART funktioniert sofort nach dem
> Einschalten."
>
> In einem anderen Thread hatte man mir erklärt, man müsse zunächst ein
> ATD0 senden,

Wie sendest du denn ein ATD0 wenn die UART im Modul nicht
funktioniert?

Du musst unterscheiden zwischen:
'Die UART funktioniert grundsätzlich und das Teil nimmt
Kommandos an und führt sie aus'
und
'Das Modul ist so konfiguriert, dass es tatsächlich sendet'

Die UART wird schon funktionieren, daher wäre es auch so wichtig
das Teil mal an eine nachweislich funktionierende Serielle
zu hängen um zu sehen, was alles gemacht werden muss, damit
das Teil aus dem Idle Zustand in den Übertragungszustand geht.

Aber im Moment weist du ja noch nicht, ob das BM-Modul überhaupt
irgendetwas versteht. Das wird nicht am BM-Modul liegen sondern
an deiner Sendeeinheit.
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 12:32

Mal ´ne ganz dumme Frage an Boris: Mit welcher Spannung läuft Dein BTM
und mit welcher der Controller?
Autor: Boris (Gast)
Datum: 31.10.2007 12:52

Der Controller mit 4,9V, das BM mit 3,5V.
Meinst du das gibt Probleme bei der seriellen Übertragung zwischen den
beiden? Da hab ich auch mal drüber nachgedacht, aber war mir nicht so
sicher...
Autor: Karl heinz Buchegger (kbuchegg) (Moderator)
Datum: 31.10.2007 12:58

Hmm.
Ist das eigentlich eine TTL UART?

In einer der ersten Postings wird gesagt, das Modul an den
PC anzuschliessen. Da hier kein Umsetzer erwähnt ist, gehe
ich mal davon aus, dass es sich um keine TTL-Uart handelt.

Daher die Frage: Du hast doch auf dem Controller einen MAX232
drauf, oder nicht? Die Tx/Rx Leitungen vom Controller direkt
mit dem Modul zu verbinden wird nicht funktionieren, weil die
Pegel genau falsch herum sind.

Kann allerdings auch sein, dass ich hier falsch liege. Allerdings
ist im Datenblatt nicht explizite von einer TTL UART die Rede.
Autor: Boris (Gast)
Datum: 31.10.2007 13:02

Nein, einen MAX habe ich nicht. Ich war der Meinung AVR und BM würden
die selben Spannungen benutzen, und erst wenn man an den PC wollte,
bräuchte man einen MAX.
Christoph hat das ja auch bestätigt, wenn ich ihn richtig verstanden
habe?
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 13:09

Wenn Dein BTM jetzt noch nicht kaputt ist, haste Glück gehabt. Das BTM
liefert und erwartet Pegel auf 3.0-3.7V, entsprechend seiner
Speisespannung. Es müssen also Pegelwandler her, sonst wird über die
UART die gesamte Betriebsspannung des Moduls hochgezogen. Für Modul RX
reicht ein Spannungsteiler, für Modul TX nach Controller RX muß ein
echter Pegelwandler aus pnp-npn Transistorpaar oder mittels passendem IC
realisiert werden. Deshalb bekommt Dein Controller auch nichts zurück,
der Pegel für logisch High reicht nicht.
Autor: Boris (Gast)
Datum: 31.10.2007 13:15

Na Hurra :-)
Ich kann das Modul immernoch mit meinem PDA finden, ganz kaputt ist es
also nicht...

Gibt es da nicht auch eine ATMega 16 Version die auf 3V läuft? ATMega16L
oder so?
Der müsste doch Pin-gleich mit dem normalen Mega16 sein, und ich komme
dann ohne die Pegelwandler aus?
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 13:22

Das kannst Du auch machen, allerdings hast Du vom Controller her dann
eine Geschwindigkeitsbegrenzung auf 8Mhz - wenn Dir das für Dein Projekt
reicht, dann ist´s okay. Bei meiner Anwendung in einem komplexeren Gerät
bin ich auf volle 5V am Controller angewiesen.
Autor: Boris (Gast)
Datum: 31.10.2007 14:01

Habe das System nun auf 3V umgestellt, aber es bleibt leider nach wie
vor alles beim alten.

Mein AVR sendet, aber USART_receive empfängt kein einziges Bit....
GRUMMEL
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 14:04

Das ist jetzt aber ausgesprochen blöd...
Autor: Christoph Budelmann (christophbudelmann)
Datum: 31.10.2007 14:23

Hast du bei dem Modul mindestens einmal ein ATD0 gesendet? Das Modul
akzeptiert sonst nur Verbindungen von einem ganz bestimmten Rechner.
Ansonsten kann das Modul keine wirkliche Verbindung aufbauen, was sich
darin äußert, dass du den COM-Port am PC oder PDA zwar siehst, ihn aber
nicht öffnen kannst.

Ansonsten wenn du dem Modul irgendeinen Mist sendest, muss es mit ERROR
antworten. Wenn das nicht klappt, stimmt irgendwas mit deinem Aufbau
noch nicht.
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 14:32

Mein Modul zum Beispiel akzeptiert ATD0 gar nicht. Trotzdem kann ich mit
jedem Rechner darauf zugreifen. Bin aber in Verbindung mit dem
Hersteller, um die letzten Fragen zu klären.
Autor: Christoph Budelmann (christophbudelmann)
Datum: 31.10.2007 14:35

Meine drei Module schon... Komisch. Ohne den Befehl funktionieren sie
auch nciht. Aber der Hersteller ist eigentlich recht hilfsbereit.
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 14:39

Stimmt. Ich arbeite derzeit mit dem BTM112, was absolut wunderbar sendet
und empfängt, sich aber nicht konfigurieren läßt. Die Verbindung zum
UART steht aber - hmm...
Autor: Boris (Gast)
Datum: 31.10.2007 15:00
Dateianhang: BlueTooth.c (1,6 KB, 217 Downloads) | formatierter Code

"Hast du bei dem Modul mindestens einmal ein ATD0 gesendet? Das Modul
akzeptiert sonst nur Verbindungen von einem ganz bestimmten Rechner.
Ansonsten kann das Modul keine wirkliche Verbindung aufbauen, was sich
darin äußert, dass du den COM-Port am PC oder PDA zwar siehst, ihn aber
nicht öffnen kannst."

=> Hab ich. Aber das Problem das ich habe ist genau das, das du
beschreibst.

"Ansonsten wenn du dem Modul irgendeinen Mist sendest, muss es mit ERROR
antworten. Wenn das nicht klappt, stimmt irgendwas mit deinem Aufbau
noch nicht."

Leider antwortet das Modul garnicht. Die LED an der RX Leitung bleibt
immer dunkel, während die TX beim Senden blinkt (und ja, die LED ist
richtig angeschlossen). Anders ausgedrückt: der TX Pin am BM-Modul ist
immer LOW, also auf 3V (ist ja active low, oder?).

Daher denke ich auch mal, dass die Daten die ich sende irgendwie komisch
sind, so dass das Modul nicht darauf antwortet....
Kann nicht vielleicht doch jemand das HEX File eines funktionierenden
Programms hochladen/den Code mal hier rein posten? Nur damit ich
ausschließen kann, dass mein USART falsch konfiguriert ist...

(Den aktuellen Code habe ich nochmal angehängt, ist aber nicht viel
anders als der erste.)
Autor: Simon K. (simon) Benutzerseite
Datum: 31.10.2007 15:25

  UBRRH = (unsigned char)(baud>>8);
  UBRRL = (unsigned char)baud;

Ne, das ist jetzt wirklich nicht dein Ernst?

Und das hier erst:
  USART_Transmit('0x0D');
Autor: Boris (Gast)
Datum: 31.10.2007 15:30

Hö? Was ist denn das Problem mit den beiden Zeilen? Die habe ich 1 zu 1
aus dem Datenblatt des ATMega16 übernommen....

Und der zweite Fehler ist durch Copy'n'Paste entstanden. Und erklärt
leider nicht, warum garnichts zurückkommt, nichtmal ein ERROR.
Autor: PP (Gast)
Datum: 31.10.2007 15:44

Ich versteh nicht warum Du Dich so dagegen wehrst BT-Modul und AVR erst
mal jeweils getrennt an den PC zu hängen. Da merkst mit HTerm doch
sofort wo es hackt.
Grade jetzt nach dem Du das BT-Modul mit zu viel Spannung an der RS232
versorgt hast. Evt ist ja auch der Rx BT-Modul hin.

Mein DRINGENDER Rat:
+RS232/USB Adapter für PC besorgen
+MAX232 oä als Pegelwandler davor
+BT-Modul und AVR nacheinander an MAX232 anschließen und testen

Nur so kommst da vernünftig weiter, alles andere ist mist.
Und der "Aufwand" lohnt. Wirst noch oft genug brauchen bei diesem/andrem
Projekt(Kann man zB Kommunikation zwischen BT-Modul und AVR mit abhören
wenn man Rx vom PC parallel schaltet, aber das kommt erst wenn die
Module für sich laufen).

PP
Autor: Simon K. (simon) Benutzerseite
Datum: 31.10.2007 15:45

Boris wrote:
> Hö? Was ist denn das Problem mit den beiden Zeilen? Die habe ich 1 zu 1
> aus dem Datenblatt des ATMega16 übernommen....

guckstu, eh?
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
Autor: Boris (Gast)
Datum: 31.10.2007 15:56

@ Simon K.
Oh mein Gott! Irgendwie hatte ich geglaubt, der würde direkt die
Baudrate erwarten. Keine Ahnung, wie ich darauf gekommen bin...
Naja, die gute Nachricht: ich brauche keine 6€ Versandkosten bei
Reichelt ausgeben um mir einen max232 zu bestellen. Zumindest noch nicht
;-)

Denn: ES FUNKTIONIERT!

Auf jeden Fall antwortet das BM-Modul schonmal. Nur was genau weiß ich
leider nicht, da mit meiner neuen 3V Konstruktion das LC-Display nicht
mehr funktioniert. Aber das soll mich jetzt nicht von einem ausgedehnten
Freudentanz abhalten! :-D

Danke!
Autor: Simon K. (simon) Benutzerseite
Datum: 31.10.2007 16:21

Sehr schön! ;)
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 16:52

Pegelwandler! Ich sach nur Pegelwandler. Dann geht auch das LCD wieder.
Toll, daß das BTM jetzt antwortet.
Autor: Boris (Gast)
Datum: 31.10.2007 17:12

^^ Immer dieser Pegelwandler! Hast du mal einen konkreten Namen für
mich?
Meinst du vielleicht sowas wie einen 7805? Die scheint es aber leider
nur für 5 und 8V zu geben (zumindest auf den ersten Reichelt-Blick), und
sind relativ klobig...
Autor: Hagen Re (hagen)
Datum: 31.10.2007 17:30

Funktioniert bei euch das ATH? Kommando ? Ich habe das BTM-112 Modul und
im Slave Modus ohne bestehende Verbindung zieht das Teil 44mA. Besteht
dann eine Verbindung man sendet aber nichts so reduziert sich der
Stromverbrauch auf 3mA. Nun dachte ich das ich über ATH0 den
Discovery-Modus des Moduls beeinflussen kann. Ansonsten funktioniert
alles, also Master/Slave, Verbindungsaufbau etc.pp. Nur eben der
Stromverbrauch stört noch.

Gruß Hagen
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 17:32

Boris, nix für ungut, aber ich habe Dir ein Stück weiter oben schon
gesagt, wie es geht. Nochmal zum Mitschreiben: RX am Modul bekommt einen
Widerstand 3.3k nach Masse. Mit 1.8k schließt Du RX Modul an TX
Controller an. Modul TX geht über einen Widerstand 3.3k auf einen BC557
(BC857) dessen Emitter an 3.3V von der Modulversorgung angeschlossen
wird. Der Kollektor geht dann auf einen weiteren Widerstand 3.3k auf die
Basis eines BC547 (BC847), dessen Emitter auf Masse liegt. Der Kollektor
geht an RX vom Controller und an einen Widerstand 3.3k nach +5V der
Versorgung des Controllers. Zwischen Emitter und Basis beider
Transistoren kommen noch einmal je 1k, die die Transistoren schneller
schalten lassen.

Ein 7805 ist kein Pegelwandler, sondern ein Festspannungsregler.

Für das Modul brauchst Du noch einen Festspannungsregler 3.3V und für
den Controller dann halt einen für 5V.
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 17:36

Bei mir gehen keine AT-commands außer ATI0 und ATI1 und AT, ansonsten
bekomme ich immer ein ERROR zurück. Die Stromaufnahme ist um 35mA ohne
bestehende Verbindung und etwa 5mA bei bestehender Verbindung ohne
Datenaustausch.
Autor: Christoph Budelmann (christophbudelmann)
Datum: 31.10.2007 17:52

Boris wrote:
> ^^ Immer dieser Pegelwandler! Hast du mal einen konkreten Namen für
> mich?
> Meinst du vielleicht sowas wie einen 7805? Die scheint es aber leider
> nur für 5 und 8V zu geben (zumindest auf den ersten Reichelt-Blick), und
> sind relativ klobig...

Nein, die Signalpegel müssen angepasst werden. Entweder du betreibst
deinen Atmega und das LCD mit 5V und wandelst die Signale zum BT-Modul
oder du baust einen Pegelwandler zwischen Atmega (der dann mit 3,3V
läuft) und dem LCD ein.

Beispiele zur Realisierung gibt es unter "Pegelwandler" in der
Codesammlung.
Autor: Hagen Re (hagen)
Datum: 31.10.2007 17:53

ATI0 und ATI1, diese Kommandos sind garnicht im Datenblatt beschrieben ?
Wie kommst du auf diese Kommandos ?

Übrigens ATX0,ATX1,ATC0,ATC1 sind ebenfalls nicht im datenblatt. Mit ATC
schaltet man das Hardwareflowcontrol ein/aus.

Gruß Hagen
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 17:57

Ich habe die Kommandos vom Service zugeschickt bekommen.
Autor: Hagen Re (hagen)
Datum: 31.10.2007 21:00

Hi TravelRec,

könntest du mir diese Kommandos bitte mailen ?

Gruß Hagen
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 31.10.2007 22:09
Dateianhang: BTD43X_user_manual.pdf (106,7 KB, 718 Downloads)

Yep. Das ist die Beschreibung für ein Dongle, soll aber auch für die
einzelnen Module zutreffen.
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 01.11.2007 00:29

So, ich bin´s nochmal. Mein Problem hat sich gerade erledigt. Es bestand
darin, daß ich die Daten als String an das Modul versendet hatte. Nun
verhält es sich tatsächlich aber so, daß das Teil jedes Zeichen erst
einmal als Echo zurücksenden will, bevor ein neues Zeichen akzeptiert
wird. Man muß also, wie weiter oben schon einmal bemerkt wurde, erst im
UART-Receive-Register des Controllers nachschauen, ob das gerade
versendete Byte wieder angekommen ist, dann darf man weitersenden. Das
komplette Commando muß mit dem Steuerzeichen 0x0D (ENTER) abgeschlossen
werden. Ist alles vom Modul verstanden worden, sendet es 0x0D 0x0A 'O'
'K' 0x0D 0x0A zurück. Bei einer Anfrage an das Modul werden zwischen die
Steuerzeichen 0x0D 0x0A noch Datenbytes eingeschoben. Also dann mal viel
Glück beim Proggen :-)
Autor: Boris (Gast)
Datum: 01.11.2007 00:34

Um euch auch mal was Gutes zu tun:
Nachdem nun dank eurer Hilfe alles so prima funktioniert, schreibe ich
gerade ein schönes Programm für PocketPCs / Smartphones (WindowsMobile
5/6). Vom Coden hab ich nämlich mehr Ahnung als von E-Technik ;-)

Das Proggi sucht nach Bluetoothgeräten, kann sich mit diesen verbinden,
deren angebotenen Services auflisten und sich auch zu diesen verbinden.
Danach können über die serielle Schnittstelle Daten gelesen und
geschrieben werden. Damit wird das Handy quasi zur Fernbedienung /
Debugger.

Wenn ihr Interesse habt kann ich das Tool ja dann mal hier online
stellen...
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 01.11.2007 00:47

Auf alle Fälle: Her damit ;-) ! Geht Dein Modul jetzt so richtig?
Autor: Hagen Re (hagen)
Datum: 01.11.2007 01:09

@Travel Rec.

danke für das Datenblatt, das klärt so einige Punkte dir mir unklar
waren. Bisher habe ich so fast jede Funktion mal durchgetestet und dabei
sind so par Fallstricke aufgekommen, ich rede über das BTM-112

1.) Erst nach langer Suche fand ich ein Terminalprogram das richtig
arbeitet. Für den Anfang sollte man mit HyperTerminal das Modul per PC
ansprechen. Dann dort sofort ATE0, also Echos aus, ausführen. Danach
kann man auch mit normalen Programmen arbeiten die per Buffer asynchron
den RS232 Sende/Empfangsroutinen arbeiten.

2.) Im Datenblatt des BTM-112 an PIO(7) eine LED nach Masse schalten,
Vorwiderstand. Das ist die Link-Status-LED die anzeigt wann das Modul
einen Discovery, Pairing, Inquiry Status hat. Im Discovery Modus zieht
das Modul den meisten Strom. Ist man einmal verbunden so sinkt der Strom
auf 3mA wenn keine Daten übertragen werden.

3.) Im Datenblatt an PIO(6) ist falsch. Der korrekte Pin ist PIO(5)
ebenfalls LED nach Masse. Diese LED leuchtet auf wenn Daten übertragen
werden, also nach einem Verbindungsaufbau.

4.) mit ATX1 die +++ Sequenz zum Wechseln aus dem DATA ind den COMAND
Mode aktivieren.

5.) Geht man mit ATR0 in den Master Modus sollte man erstmal ATO1
ausführen. Danach ein ATF? um die in Reichweite befindlichen Module zu
finden. Man muß aber einige Zewit warten bis dieser Suchvorgang fertig
ist. Danach kann man mit ATA1 bis ATA8 eines der Module verbinden. Mit
+++ kommt man aus der bestehenden Daten-Verbindung wieder in den
Kommandomodus. Man kann nun mit ATH die aktuelle verbindung trennen.
Gibt man jetzt mit ATD=xxxxxxxxxxx eine feste Geräte ID vor und wechselt
mit ATO0 in den automatischen Verbindungsmodus so connected das Modul
nun immer automatisch mit der Gegenstelle. Das kann man testen indem man
auf dem PC den Bluetooth Serial Port trennt, das Modul baut sofort
wieder die Verbindung auf.

6.) mit ATZ kann man 2 Konfigurationen laden. ATZ0 offiziell und ATZ1
gibts eine zweite Konfiguration. Die ist im Grunde identisch mit der
Ausnahme das die Baudrate auf 9600 Baud eingestellt ist. Darauf bin ich
beim Testen herein gefallen und dachte schon das mein Modul kaput
konfiguriert ist. Musste aber nur die Baudrate auf 9600 Baud einstellen
;)

Getestet habe ich das Teil im Master/Slave Modus mit meinem PC, Palm
Thungsten T und Siemens Handy. Beim Handy konnte ich mit den Siemens AT
Befehlen das Handy steueren ;)

Gruß Hagen
Autor: Travel Rec. (travelrec) Benutzerseite
Datum: 01.11.2007 01:23

Danke für die Infos Hagen, ich denke mal, das BTM112 haben wir jetzt im
Griff :-) Gute Nacht dann mal. Heute ist wieder Arbeit.
Autor: Boris (Gast)
Datum: 01.11.2007 09:26

Joa, ich denk mal dass es richtig geht. Zumindest hab ich ein paar vom
AVR gesendete 'a's auf meinem PDA empfangen. Dann wird's wohl in die
andere Richtung auch funktionieren...

Das ist soooooo cool :-D
Autor: Boris (Gast)
Datum: 01.11.2007 11:10

Nochmal eine Frage: brauche ich eigentlich noch irgendwelche der anderen
Pins am BM-Modul? Viel mehr als "Serial Communication" will ich ja nicht
machen.

Dann würde ich das ganze nämlich mal in einen schönen, zu meinen
Steckbrettern kompatiblen, Sockel löten und mit Heißkleber versiegeln.
Oder geht das Modul kaputt, wenn man es mit Heißkleber "behandelt"? ;-)