Datum: 23.10.2007 10:51
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
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
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
Datum: 23.10.2007 11:42
Achja - nochwas: Müssen RTS und CTS benutzt werden?
Datum: 23.10.2007 14:19
Nein. Ich habe zunächst auch alles außer den Versorgungspins, der Antenne sowie RX und TX freigelassen.
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
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)).
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.
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
Datum: 24.10.2007 16:15
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?
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
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 :-)
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.
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!
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)
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.
Datum: 30.10.2007 18:46
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?
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.
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?)...
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.
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 :-)
Datum: 31.10.2007 10:04
Habs immer noch nicht hinbekommen :-( Hilfe!
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.
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...
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.
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?
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.
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?
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...
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.
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?
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.
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?
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.
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
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.
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.
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.
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...
Datum: 31.10.2007 15:00
"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.)
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'); |
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.
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
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...
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!
Datum: 31.10.2007 16:52
Pegelwandler! Ich sach nur Pegelwandler. Dann geht auch das LCD wieder. Toll, daß das BTM jetzt antwortet.
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...
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
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.
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.
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.
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
Datum: 31.10.2007 17:57
Ich habe die Kommandos vom Service zugeschickt bekommen.
Datum: 31.10.2007 21:00
Hi TravelRec, könntest du mir diese Kommandos bitte mailen ? Gruß Hagen
Datum: 31.10.2007 22:09
Yep. Das ist die Beschreibung für ein Dongle, soll aber auch für die einzelnen Module zutreffen.
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 :-)
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...
Datum: 01.11.2007 00:47
Auf alle Fälle: Her damit ;-) ! Geht Dein Modul jetzt so richtig?
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
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.
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
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"? ;-)