BTM 222 paaren mit Androis app

Gast #3344961
Lesenswert?

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
#3345205
Lesenswert?

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.
Gast #3345216
Lesenswert?

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
(Firma: www.pcb-devboards.de) #3345336
Lesenswert?

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
Gast #3345700
Lesenswert?

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
Gast #3345917
Lesenswert?

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
(Firma: www.pcb-devboards.de) #3346380
Lesenswert?

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:
1
byte[] zeichen = "@1\n".getBytes();
2
mChatService.write(zeichen);
3

4
//byte[] zeichen = "@2\n".getBytes();
5
//mChatService.write(zeichen);

deine Interrupt Routine:
1
void __attribute__((__interrupt__,no_auto_psv)) _U3RXInterrupt(void)
2
{
3

4
  IFS5bits.U3RXIF = 0; // clear RX interrupt flag
5

6
/* Check for receive errors */
7
  if(U3STAbits.FERR == 1)
8
   {
9
    }
10
/* Must clear the overrun error to keep UART receiving */
11
  if(U3STAbits.OERR == 1)
12
    {
13
    U3STAbits.OERR = 0;
14
    }
15
   /* Get the data */
16
    if(U3STAbits.URXDA == 1)
17
     {
18
       RxBuffer[cnt++] = U3RXREG;
19

20
       if(RxBuffer[cnt -1] == '\n')
21
         {
22
           if(RxBuffer[0] == '@')
23
             {
24
               switch (RxBuffer[1]) {
25
                case '1':                    // hex: 31
26
                    mein_byte = RxBuffer[1]; 
27
                    mach_mal_was();          // :-)
28
                    break;
29

30
//                case '2':                    // hex: 32
31
//                    mein_byte = RxBuffer[1]; 
32
//                    mach_mal_was_anderes();          // :-)
33
//                    break;
34

35
                default:
36
                    break;
37
            }
38
        }
39
        
40
       cnt = 0;
41

42

43
     }
44

45
 
46
}


Gruß
Hermann
(Firma: www.pcb-devboards.de) #3348168
Lesenswert?

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
#3352952
Lesenswert?

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.
#3352959
Lesenswert?

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.
Gast #4015268
Lesenswert?

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?
#4017237
Lesenswert?

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?
Gast #4017247
Lesenswert?

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.
#4017968
Lesenswert?

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?
Gast #4018097
Lesenswert?

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.
Gast #4018677
Lesenswert?

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.
#4018685
Lesenswert?

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!
Gast #4019968
Lesenswert?

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.
Gast #4020052
Lesenswert?

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.
#4035119
Lesenswert?

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.
Gast #4038294
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren