Hallo,
ich versuche seit einiger Zeit mittels selbst geschriebener Android app
mich mit dem BTM 222 zu verbinden. Leider ohne Erfolg.
Ich habe auch schon die beispiel APP von Google versucht "BluetoothChat"
Auch die will einfach nicht funtzen. ;-(
Nun meine Frage(n):
1.Wie genau muss ich das BTM 222 konfigurieren?
- Mich wundert schon das ich auf den ATO? Befehl immer ein error zurück
bekomme.
2. Muss ich irgendeine Bestätigung an die anroid app zurück senden?
- also vom BTM 222 --> Android handy
Falls ich mich schlecht/unverständlich ausgefrückt habe, bitte
entschuldigt.
Danke & Gruß Hans
Hallo,
noch ne Frage.
Kann es sein das man das BTM Modul noch erst zu einer bestimmten device
klasse umkonfigurieren muss?
Ich stocher im Nebel, deshalb bitte ich blöde Fragen meinersteits zu
entschuldigen.
Danke & Gruß Hans
Habs noch nicht selbst gemacht, aber man muss die UUID setzen
There is only one line of code to change to get a communication between
your mobile and the BTM 222 working. Just replace the UUID definition in
the file “BluetoothChatService.java” in line 49 with the UUID
“00001101-0000-1000-8000-00805F9B34FB
http://helios.wh2.tu-dresden.de/~benni_koch/blog/?p=274
-----
Mangels an 2 Android-Phones war meine erster Test den Bluetoothchat mit
meinem BT-GPS-Empfänger zu verbinden, denn der verwendet ja auch SPP und
sendet einfach Text. Der Trick besteht nur darin, dass du die richtige
UUID verwenden musst. Die UUID setzt sich aus der Base-UUID und einer
Kennung für das BT-Profil zusammen.
Versuchs mal mit der UUID: 00001101-0000-1000-8000-00805F9B34FB
Die 1101 am Anfang steht für SPP.
http://www.android-hilfe.de/android-app-entwicklung/184601-bluetooth-chat-example-2.html
-------
Google hilft Dir in solch einem Fall.
Hallo,
normaler Weise braucht man das BTM nicht weiter zu konfigurieren, evtl.
nur die Baudrate.
Was macht ATO geht nur, wenn das BTM als Master konfiguriert wurde, was
ich hier allerdings nicht annehme (Master = Handy). Daher die error
Meldung.
Die Deviceklasse kann beim BTM222 nicht umgestellt werden, es ist ein
SPP Modul (seriell Ersatz).
Also wie Vorredner schon gesagt, an der App mal schauen, was da nicht
stimmt. GGf. mal ein BT-Verbindung zwischen PC und BTM222 herstellen, ob
da ein generelles Problem evtl. ist...
>Ich stocher im Nebel, deshalb bitte ich blöde Fragen meinersteits zu>entschuldigen.
Gibt nur blöde Lösungen
hans schrieb:> ich versuche seit einiger Zeit mittels selbst geschriebener Android app> mich mit dem BTM 222 zu verbinden. Leider ohne Erfolg.
Ich beschäftige mich auch seit ein paar Tagen mit Android Apps, möchte
auch in die "Android-Welt" einsteigen und will paar Geräte via
Bluetooth steuern. Bin noch ganz am Anfang, aber die App "BluetoothChat"
zu kompilieren ging auf Anhieb, naja fast:
Herr Mueller schrieb:> Versuchs mal mit der UUID: 00001101-0000-1000-8000-00805F9B34FB
Das sollte auf jeden Fall mal ändern...
"Kommunikation" ist auf jeden Fall da, auch mit 2 Android-Smartphones
geht problemlos.
Ich hab mir jetzt mehrere BTM Module bestellt, will das "Teil"
austesten, aber das dauert noch. ich muss noch erstmal die Testschaltung
aufbauen..
Eine Frage hätte ich noch, programmierst du nur unter Java oder hast du
auch die Android NDK drauf, ich will ja nicht auf C/C++ Programmierung
verzichten ;-)
Das Problem, wenn ich eine Funktion (z.B test) aus C in Java übergebe,
was auch laut Kompilierung problemlos funktioniert, stürzt meine App ab,
wenn ich test Funktion aufrufe. Aber wenn ich da nur unter Java
kompiliere dann gehts problemlos. Was kann das sein, falsche
Einstellung/Installation von Cygwin?
Gruß
Hermann
Hermann U. schrieb im Beitrag #
>> Das Problem, wenn ich eine Funktion (z.B test) aus C in Java übergebe,> was auch laut Kompilierung problemlos funktioniert, stürzt meine App ab,> wenn ich test Funktion aufrufe. Aber wenn ich da nur unter Java> kompiliere dann gehts problemlos. Was kann das sein, falsche> Einstellung/Installation von Cygwin
Schaue mal hier nach:
www.android-hilfe.de
Hallo zusammen,
erst mal vielen Dank!!!!!!
Es schien wirklich an der UUID gelegen zu haben. Ich habe anscheinend
vergessen den letzten Buchstaben mit zu kopieren. Verdammt. ;-)
Ich selber programmiere die App nur in Java. Na ja oder ich versuche es
zumindest.
So jetzt habe ich mich mit dem BTM-Modul verbinden können und
anscheinend auch Daten von der App ans Modul senden können.
Leider nur im Block. Es werden keine einzelnen Zeichen gesendet, trotz
"mmOutStream.flush();" Mal sehen wie es bei diesem Problem weiter geht.
;-)
Noch mal vielen vielen Dank. Klasse Forum!!!!!
Beste Grüße Hans
hans schrieb:> Leider nur im Block. Es werden keine einzelnen Zeichen gesendet, trotz> "mmOutStream.flush();" Mal sehen wie es bei diesem Problem weiter geht.> ;-)
Und was hier mit, ist halt ungetestet, die APP:
Bernhard Spitzer schrieb:> Das BTM222 nimmt AT-Befehle nur auf der seriellen Schnittstelle> entgegen. Nicht auf der BT-Seite.
Das ist mir schon klar, und wo sieht du die AT Kommandos bei mir?
Das hier?:
1
byte[]zeichen="@1\n".getBytes();
2
mChatService.write(zeichen);
Das wird von der App (Andorid) via Bluetooth losgeschickt, da kannst du
senden was du willst, oder nicht?
Das sind halt alles Theorien, ich kann es garnicht testen (keine
Hardware da)...
Gruß
Hermann
Hermann U. schrieb:> Das ist mir schon klar, und wo sieht du die AT Kommandos bei mir?hans schrieb:> Ich habe auch schon die beispiel APP von Google versucht "BluetoothChat">> Auch die will einfach nicht funtzen. ;-(>> Nun meine Frage(n):>> 1.Wie genau muss ich das BTM 222 konfigurieren?> - Mich wundert schon das ich auf den ATO? Befehl immer ein error zurück> bekomme.
Aus der Aussage schloss ich, dass Du vom Anroid aus die AT-Befehle
abseten willst.
> 2. Muss ich irgendeine Bestätigung an die anroid app zurück senden?> - also vom BTM 222 --> Android handy
Für AT-Befehle nicht. Was Dein Protokoll verlangt musst Du schon selber
wissen.
Welche Firmware-Version ist denn bei deinem BTM222 drauf? (Kommando
ATI?)
Die FW 4.35 akzeptiert AT-Befehle nur mit CR. Kein CR+LF! Nur direkt
nach Modul-Reset wird 1x ein AT-Befehl, der mit CR+LF endet,
beantwortet...
Die ältere FW 4.22 hat dagegen auch CR+LF akzeptiert.
Ach ja, wenn Du zwischen Data- und Kommando Modus mit "+++" umschaltest,
solltest Du die +++ nicht unmittelbar nacheinander schicken. Sende
einzelne Zeichen und dazwischen ein paar ms Pause. Das abschließende CR
ebenfalls mit etwas Pause (guard-time im Datenblatt)
Für den Befehl ATO0 muss das Modul übrigens im Master-Mode konfiguriert
sein. Im Slave-Mode geht der nicht.
ich versuche gerade auch, das BTM222 per Android auszulesen.
Wenn das Problem ist, dass das Handy immer davon ausgeht, dass es der
Master ist, müsste man doch nur das Modul als Slave deklarieren.
Das geht doch per Konfig-Befehl "ATR1"
müsste danach das Empfangen per Android App nicht möglich sein, ohne
diese neu zu kompilieren?
Das handy kann auch Verbindungsanforderungen vom Modul annehmen. Aber
dazu brauchst du eine spezielle App. Das ist allerdings schwierig, da
Apps ja normalerweise angehalten werden, wenn sie nicht gerade sichtbar
sind.
und was wäre der einfachste Weg, wenn man nicht gerade selbst eine neue
App schreiben möchte?
Wäre es nicht simpler, das Modul als Slave zu konfigurieren, um die
etlichen "seriel adaptor, BT-terminal"-Apps aus dem Store nutzen zu
können?
Ich würde auch gerne eine Antwort auf die zuletzt gestellte Frage sehen.
Habe das Modul nun auch über den Befehl "ATR1" als Slave gesetzt. Doch
eine Ausgabe per App am Smartphone erfolgt trotzdem nicht, nur über
Laptop.
> Wäre es nicht simpler, das Modul als Slave zu konfigurieren,> um die etlichen "seriel adaptor, BT-terminal"-Apps aus dem> Store nutzen zu können?
Ganz genau. Das entspricht ja auch der Standard-Konfiguration.
Ich habe mich schon etwas mehr in die Bluetooth Android Welt eingelesen.
1. Wichtigste ist die UUID, die habt ihr ja schon richtig eingestellt.
2. Bei Android gibt es MasterSockets und SlaveSockets, da ihr ja später
vermutlich vom Handy aus Daten an das Module weiter an euren
Mikrocontroller senden möchtet würde ich hier die App als MasterSocket
anlegen, und das Module bei seinen Standardeinstellungen belassen
(Werkseinstellungen -> ATZ0) also im SlaveMode.
3. und nun gibt es in der großen AndroidLibrary für diese MasterSockets
relativ einfache Klassen.
Ich bekomme morgen meinen BTM222 und werde dann meine APP zum einfachen
Daten senden versuchen soweit anzupassen und dann werde ich mein
Resultat(Code) hier mal offen legen.
Ich bin ja schon beruhigt, dass sich mehrere mit diesem Module
beschäftigen.
Eine Frage, das Module kann ich direkt mit RX und TX(UART Schnittstelle)
vom STM32F429ZI DiscoveryBoard verbinden oder? Brauche also keinen
Pegelwandler 5->3,3V?
Hier ist ein minimaler Beispiel-Quelltext für das Android SDK:
http://stefanfrings.de/avr_io/BtTest.zip
Der Code setzt voraus, dass das Modul bereits angemeldet ist. Das kannst
du ohne App in der "Systemsteuerung" des Handies unter "Bluetooth"
erledigen. Merk Dir den Namen, denn den musst du im Quelltext
austauschen.
> Eine Frage, das Module kann ich direkt mit RX und TX> vom STM32F429ZI DiscoveryBoard verbinden oder?
Ja, wenn du es mit 3,3 Volt betreibst.
Stefan Us schrieb:> Ja, wenn du es mit 3,3 Volt betreibst.
Ich betreibe das Board über USB mit 5V
aber das Module kann ich ja an die VCC33 anschließen --> also das Module
läuft dann ja mit 3,3V
Das grössere Problem liegt aber immer noch in der Datenübertragung per
Bluetooth an ein Smartphone oder Tablet! Koppeln lässt sich das Modul.
Wie gesagt UUID ist geändert und das BT-Modul wird mit den
Standardeinstellungen betrieben (Slave-Modus).
Ausgabe immer noch nur am PC möglich und nicht am Smartphone.
Vielen Dank für die Zeichnung Thomas, ich kann den STM auch direkt mit
3,3V versorgen wenn er das mitmacht, dann benötige ich keinen
Pegelwandler.
Ich habe jetzt schon in vielen Zeichnung gesehen das die
Spannungsversorgung über einen Kondensator auf Masse gezogen wird. Wofür
braucht man das? Warum macht man das? Macht das nicht eine
Spannungsquelle selber?
Ich bekomme mein Modul in der nächsten Stunde per Post, dann werde ich
es mal mit meiner App versuchen, ich werde dann mal posten, wie es bei
mir aussieht ob ich da was hinbekomme...
Du hast bisher also versucht von deinem Mikrocontroller Daten an das
Modul zu senden, einmal an den PC dann kommen die Daten auch an. Habe
ich das richtig verstanden? Und wenn du versuchst die Daten mit dem
Handy abzufangen kommen die Daten nicht an? Dafür nutzt du die
"BluetoothChat" App? Ich denke hier liegt auch der Fehler, denn diese
App wurde nicht dafür entwickelt das sie Daten von einem Controller
Seriell empfängt. Sondern zwischen zwei Geräte mit dieser App.
Ich hoffe das mein Code so wie Ich das jetzt geschrieben habe später
funktioniert.
Nutzt du Eclipse oder AndroidStudio?
Johannes J. schrieb:> Du hast bisher also versucht von deinem Mikrocontroller Daten an das> Modul zu senden, einmal an den PC dann kommen die Daten auch an. Habe> ich das richtig verstanden? Und wenn du versuchst die Daten mit dem> Handy abzufangen kommen die Daten nicht an?
Genau so sieht es aus, ich sende die Daten über das BT-Modul und kann
sie auch am PC auslesen, über das Terminalprgramm PuTTy.
Auf dem Smartphone bekomme ich die Daten nicht ausgeselen, dabei habe
ich mehrere Apps ausprobiert (BluetoothChat, SENA BTerm,
BluetoothTerminal, SerialPortMonitor, UconnectHex und einige mehr).
Ich hoffe du bekommst es irgendwie hin und kannst von deinem Erfolg
berichten :-)
Ich selber habe keine App geschrieben, da App-Programmierung für mich
Neuland ist. Ich habe lediglich ein fertiges Projekt verwendet, wo die
UUID bereist umgestellt wurde. Habe mir das Projekt nur mit
AndroidStudio angeguckt.
Das Projekt ist auf der folgenden Seite zu finden:
http://helios.wh2.tu-dresden.de/~benni_koch/blog/?p=274
Habe die APK-Datei aus dem Projekt auf das Smartphone gespielt, konnte
jedoch immer noch keine Daten auslesen.
Johannes J. schrieb:> Ich habe jetzt schon in vielen Zeichnung gesehen das die> Spannungsversorgung über einen Kondensator auf Masse gezogen wird. Wofür> braucht man das?
Ich vermute mal, dass du den Kondensator zur Pufferung bzw.
Stabiliserung der Versorgunsspannung bei einer kurzzeitigen
Unterbrechung meinst.
Der STM Mikrocontroller kann mit 1,7 bis 3,6 Volt betrieben werden. Wenn
die Spannungsdifferenz zwischen Mikrocontroller und Bluetooth Modul
nicht größer als 0,5 Volt ist, kann man sie ohne Pegelwandler
miteinander verbinden.
Möglicherweise enthält das Mikrocontroller-Board einen Spannungsregler,
der die 5V aus dem Netzteil auf 3,3V herunter regelt. Wenn der 100mA
oder mehr übrig hat, kann man damit gleich auch das Bluetooth Modul mit
versorgen.
Der USB-UART Adapter mit CP2201 Chip liefert 3,3V Signale, er ist jedoch
5V tolerant. Er kann also mit anderen Modulen verbunden werden, die mit
2,8V bis 5V versorgt werden.
Tausend Dank für diese Nachricht,
um ehrlich zu sein habe ich den ganzen Tag gehofft das die Nachricht
noch kommt:D Habe den Adapter jetzt auch ständig so genutzt.
Also gute Neuigkeiten!
Ich kann mit dem Handy über meine App Strings senden an das Modul und
diese am Pc mit meinem USB TLL Adapter mit der Software CoolTherm
anzeigen lassen!
Morgen schaue ich mal das ich einen Empfänger zum Laufen bekomme, der
auch den Bus abhört und die Daten auf dem Handy anzeigt!
ich melde mich nochmal zurück:
Ich kann immernoch keine Strings mit dem Smartphone empfangen, wohl aber
mit einem PC.
Dort wird das Modul als Serial Port eingebunden und diesen kann ich im
Terminalprogramm auswählen.
Auf dem Handy nutze ich mittlerweile die Software "SENA BTerm Bluetooth
Terminal"
https://play.google.com/store/apps/details?id=com.sena.bterm&hl=de
diese kann sowohl als Master, als auch als Slave in der BT-Kommunikation
fungieren.
ich kann das Modul mit dem Handy pairen und das Modul auch in der App
auswählen.
Nachrichten kommen allerdings nicht an.
Im Anhang ist meine App mit dieser habe ich heute erfolgreich den
Datenaustausch hinbekommen.
Einmal zwischen PC und Handy.
auch zwischen STM32 und Handy.
BTM222:
Slave
19200Baud
keine Änderungen am Namen
Dann sollte es mit dieser App funktionieren!
ElectricJohnny schrieb:> Danke für deine Mühe, leider funktioniert es bei mir nicht.>> Ich drücke auf "connect", der button bleibt aber gelb.
Wie heißt denn dein BluetoothModul? Also der BluetoothName? Das ist das
einzige was ich mir vorstellen könnte...
Welches Smartphone?
Ich habe die Schaltung gerade erst aufgebaut, das Modul ist fabrikneu.
Name also "Serial Adaptor"
Wie gesagt, an einem Laptop mit Bluetooth (Virtueller COM Port) empfange
ich über "Putty" Strings, die ich mit dem Modul sende.
Konkret teste ich da auf einem Samsung Galaxy Tab 4 7.0 mit Android 4.4.
Ich teste gleich noch weitere Geräte und berichte dann.
okay ich habe jetzt noch ein Motorola Defy (CM11, Kitkat) getestet.
Button bleibt auch gelb.
ich bin ein bisschen am verzweifeln :)
nehme ich das pairing mit dem adapater zuvor schon in den
bluetooth-einstellungen vor, oder erst in der app?
okay auf einem Razr I mit 4.1 ist der Button nun dauerhaft grün.
In der Textbox steht allerdings immernoch der Standardtext "Hier steht
immer..."
Mit dem µC sende ich einen string "TEST" mit der baudrate 19200.
Also ich habe mit dem µC HelloWorld Strings oder Namen oder auch nur
Buchstaben senden und empfangen können mit der App.
Ich nutze ein Nexus5 irgendwie wundert es mich das die App nicht auf
anderen Geräten funktioniert...
ElectricJohnny schrieb:> okay auf einem Razr I mit 4.1 ist der Button nun dauerhaft grün.>> In der Textbox steht allerdings immernoch der Standardtext "Hier steht> immer...">> Mit dem µC sende ich einen string "TEST" mit der baudrate 19200.
Konntest du unter dieser Konstellation denn etwas senden?! Also vom
Handy senden?
Johannes J. schrieb:> Ich nutze ein Nexus5 irgendwie wundert es mich das die App nicht auf> anderen Geräten funktioniert...
Ich verwende auch SENA BTerm um mit dem BTM222 und dem HC-05/HC-06 zu
kommunizieren. Funktioniert mit meinem LG problemlos (Android 4.2.xx).
Allerdings verbinde ich das BT-Modul vor dem Start der App meist von
Hand aus der BT-Konfig über die Sichtbaren/gekoppelten Geräte.
es gibt Neuigkeiten:
konrekt habe ich die Schaltung, mit der ich kommunizieren will, zwei mal
aufgebaut.
Ursprüglich hat die Kommunikation mit deinen Schaltungen nicht geklappt.
Pairing mit dem Android Device ging, aber egal welche Terminal App ich
ausprobiert hatte, hat die eigentliche Verbindung mit der Seriellen
Schnittstelle nicht funktioniert.
Komischerweise hat die Kommunikation jeweil mit einem Notebook mit
Bluetooth und Windows 7 mit Putty funktioniert.
Zwischenzeitlich hat sich ein BT-Modul verabschiedet, weshalb ich
zweifachen Ersatz, diesmal von einem anderen Anbieter bestellt habe.
Das neue Modul ist augenscheinlich zu dem ursprünglichen gleich, hat
allerdings eine andere PCB-Farbe (kräftiges grün statt blau-grün)
Ich habe das kaputte Modul ausgetauscht, plötzlich funktioniert die
Kommunikation mit einem Smartphone/Tablett auf Anhieb!
Ich dachte mir okay, evtl andere Revision/Firmware auf dem ersten
BTM222, also in der anderen Schaltung auch auf das neue Modul getauscht.
Bringt aber keine Veränderung.
Kopplung und Datenaustausch mit dem PC funktioniert, Terminalprogramm
auf dem Tablet bringt jetzt nur einen Error.
Ich werde noch bekloppt!
Ich habe jetzt zweimal die gleiche Schaltung, gleich aufgebaut, gleicher
BTM222, gleiche Software.
Eine funktioniert komplett inkl. Android Kommunikation, die andere kann
nur Daten mit einem PC austauschen.
Wo soll ich jetzt mit der Fehlersuche ansetzen?
Schaltung fehlerhaft scheint unlogisch, da die Kommunikation mit dem PC
funktioniert und die gleiche Schaltung auf dem 2. Modul geht, Software
auf dem µC kann es deshalb auch nicht sein.
Achja, FW-Version des BTM222 ist 6.28.
Ich habs gerade nochmal gecheckt, die Pads des BTM222 sind zwar schwer
von Hand zu kontaktieren, sind aber gut verbunden.
Die Spannung ist an beiden VCC Pins jeweils mit einem Kondensator
geglättet.
Keine Verbesserung.
Immernoch:
Übertragung zum Laptop geht, Android nicht.
Anderes Modul geht beides.
okay Problem gelöst.
Spannungsversorgung war zu knapp dimensioniert.
Größerer Regler verbaut, Pairing klappt!
Ist zwar seltsam, dass sich das nur bei dem Pairing mit einem Tablet
geäußert hat und Windows ging, aber was solls! :)