Forum: Mikrocontroller und Digitale Elektronik Atmega8 mit HC-06 Bluetooth Modul


von Tobi (Gast)


Lesenswert?

Hallo,

mein Ziel ist es, über eine App, wie BluControl oder BlueTerm, Daten an 
einen Atmega8 zu senden bzw. zu empfangen. Leider hapert es bei mir 
schon ganz am Anfang...
Ich finde keine gescheite Anleitung, die mir erklärt, wie diese 
AT-Befehle funktionieren, also wie man die sendet und wie ich dann ein 
Zeichen an ein verbundenes Gerät sende und empfange.
Höchstens ein paar Arduino Seiten, aber da bin ich mir nicht sicher, wie 
ich diesen Code auf den Atmega8 anwenden kann.

Zusätzlich habe ich schon mal versucht mich mit dem Modul zu verbinden. 
Nach Eingabe des Pins wird angezeigt, dass gepaart wird, woraufhin das 
Gerät in die Liste der bekannten Pairing Geräte verschwindet und nichts 
mehr passiert. D.h. keine aktive Bluetooth Verbindung. Unter ios wird 
das Gerät noch nicht mal angezeigt.

Ich hoffe jemand kann mich in die richtige Richtung leiten, da uc's noch 
relativ neu für mich sind..

Vielen Dank schonmal :)

Tobi

von lächler (Gast)


Lesenswert?

Tobi schrieb:
> Ich hoffe jemand kann mich in die richtige Richtung leiten, da uc's noch
> relativ neu für mich sind..

Was heißt den "relativ neu"? Hast du schon andere Projekte mit uC 
gebaut?

von Tobi (Gast)


Lesenswert?

Hat zwar nicht so viel mit meiner Frage zu tun, aber ich habe ein paar 
Sachen schon gemacht. IO, AD-Wandler undso...
Ich finde die Möglichkeit der drahtlosen Steuerung halt sehr 
interessant.

von lächler (Gast)


Lesenswert?

Im Grunde genommen brauchst du die AT-Befehle erst mal nicht. Das HC-06 
hat eine Grundkonfiguration (9600 8N1) mit der ein Verbindungsaufbau 
auch ohne AT-Befehle funktioniert.
Dein Handy Terminalprogramm muss die Verbindung aufbauen. Die von dort 
gesendeten Zeichen kannst du dann auf üblichen Weg als seriellen 
Datenstrom mit dem Atmega abfragen.

von Armin J. (arminj)


Lesenswert?

Hallo Tobi,
hast Du schon mal BlueDisplay probiert?
https://play.google.com/store/apps/details?id=de.joachimsmeyer.android.bluedisplay

Das läuft mit einem HC05 Modul aus der Tüte und da gibt es ein einfaches 
Blink Example.
Ist allerdings nur für Android.

von Tobi (Gast)


Lesenswert?

lächler schrieb:
> Dein Handy Terminalprogramm muss die Verbindung aufbauen.
Aber da haperts ja schon.. Laut dem Datenblatt soll die rote LED 
dauerhaft leuchten, wenn eine Verbindung aufgebaut wurde. Bei mir blinkt 
diese aber dauerhaft und auf dem Android Handy verschwindet das Gerät in 
die Liste ohne eine aktive Verbindung zu haben...

lächler schrieb:
> Die von dort gesendeten Zeichen kannst du dann auf üblichen Weg als seriellen
> Datenstrom mit dem Atmega abfragen.
Genau da komme ich auf Seiten des uC's nicht weiter.. Ich hätte jetzt 
erstmal probiert die Zeichen zu unterscheiden und entsprechend eine LED 
anzuschalten oder sowas. Jedoch wie lese ich die Zeichen ein?


Armin J. schrieb:
> hast Du schon mal BlueDisplay probiert?

Hallo Armin,
bist du der Entwickler oder ist der Name nur zufällig der gleiche? ^^ 
Welche C Datei brauche ich denn für den Atmega8?

von Armin J. (arminj)


Lesenswert?

Tobi schrieb
> Hallo Armin,
> bist du der Entwickler oder ist der Name nur zufällig der gleiche? ^^
> Welche C Datei brauche ich denn für den Atmega8?

Ja ich bin der Entwickler.
Ich hab das ganze für Arduino (und ARM) entwickelt, es müsste aber auch 
so gehen.
Du brauchst die Dateien aus 
https://github.com/ArminJo/android-blue-display/tree/master/arduino/libraries/BlueDisplay
Und natürlich aus dem dort enthaltenen BlinkExample, die musst du noch 
von .ino nach .cpp umbenennen, wenn du es unbedingt ohne Arduino 
Entwicklungsungebung machen willst.
Für Arduino gibt es unter 
https://github.com/ArminJo/android-blue-display/tree/master/arduino eine 
readme Datei.
Und unter 
https://github.com/ArminJo/android-blue-display/tree/master/arduino/libraries/BlueDisplay/examples/HC_05_Initialization 
gibt es auch ein Beispiel, wie man das HC05 mit AT Befehlen 
umprogrammierst.

Viel Erfolg

von Tobi (Gast)


Lesenswert?

Hallo,

irgendwas scheint mit meinem Bluetooth Modul nicht zu stimmen.. Naja 
erstmal beschäftige ich mich dann wohl mit dem UART.

Mit dem Programm Termite empfange ich nur [00]. Schnell hintereinander.
Das Programm stammt aus einem anderen Forum. Funktionierte angeblich mit 
Atmega8.
1
#include <avr/io.h>
2
#include <util/delay.h>
3
4
#define F_CPU 12000000L
5
#define BAUD 9600L
6
7
#define UBRR_VAL ((F_CPU+BAUD * 8)/(BAUD*16)-1)    //clever runde
8
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))    //reale Baudrate
9
10
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000)    //Fehler in Promille
11
12
#if ((BAUD_ERROR>10)||(BAUD_ERROR<-10))
13
#error Systematischer Fehler in der Baudrate größer 1% und damit zu hoch!
14
#endif
15
16
int main(void)
17
{
18
  UBRRH = UBRR_VAL >> 8;
19
  UBRRL = UBRR_VAL & 0xFF;
20
  
21
  UCSRB = (1<<RXEN)|(1<<TXEN);    //UART TX einschalten
22
  UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);  //Asynchron 8N1
23
  while(1)
24
  {
25
    
26
    while (!(UCSRA & (1<<UDRE)))  //warten bis Senden möglich
27
    {
28
    }
29
    UDR = 'x';
30
    _delay_ms(100);
31
  }
32
}

: Bearbeitet durch User
von Krafti (Gast)


Lesenswert?

Hi,
als Info zu den (mobilen) Apfelprodukten:
Mit IOS kannst du die Nutzung des seriellem BT-Protokoll vergessen.
Apple erlaubt das auf mobiler Plattform nur mit lizenzierten Chipsätzen 
und dafür muss dann etwas $$$ an Apple fließen ;-)

LG Krafti

von Tobi (Gast)


Lesenswert?

Hi und danke für die Info Krafti. Etwas ähnliches habe ich mir schon 
gedacht ^^ Ist ja immer so bei denen...

Bzgl. der Seriellen Schnittstelle habe ich halt einen USB zu RS232 
Adapter genommen und dort Read, write und ground angeschlossen. Dann 
wurde mir am PC sehr schnell hinter einander diese Zeichenfolge 
ausgegeben. Ich habe gelesen, dass man einen MAX232 verwenden soll. 
Jedoch finde ich fast nur fertige Boards mit einem MAX3232, z.B. 
http://www.amazon.de/MAX3232-Serial-Konverter-Module-Stecker/dp/B00HV4K9ZY/ref=sr_1_1?s=computers&ie=UTF8&qid=1442691342&sr=1-1&keywords=max232+rs232
Warum braucht man sowas? Aus dem USB kommen doch nur 5V und der Atmega8 
sendet und verkraftet doch genauso 5 Volt?

Funktionieren Boards mit MAX3232? Also löst das mein Problem der 
falschen Übertragung?

Viele Grüße
Tobi :)

von Marco G. (grmg2010)


Lesenswert?

Hast du den Quelltext nur kopiert oder auch an deinen uC angepasst?
Falls die Taktfrequenz nicht stimmen sollte, kannst du die Übertagung 
vergessen.

von Armin J. (arminj)


Lesenswert?

Tobi schrieb:

> Funktionieren Boards mit MAX3232? Also löst das mein Problem der
> falschen Übertragung?

Hallo Tobi,
bei mir funktioniert das mit einem billig USB zu RS232 Konverter 
einwandfrei, daran liegst sicher nicht.

von SmartNOOB (Gast)


Lesenswert?

Krafti schrieb:
> Hi,
> als Info zu den (mobilen) Apfelprodukten:
> Mit IOS kannst du die Nutzung des seriellem BT-Protokoll vergessen.
> Apple erlaubt das auf mobiler Plattform nur mit lizenzierten Chipsätzen
> und dafür muss dann etwas $$$ an Apple fließen ;-)
>
> LG Krafti

Das ist nicht ganz richtig. Mit Bluetooth 4.0 gibt es ein seriell 
ähnliches GATT Profil, dass auch von Apple unterstützt wird. Kompatible 
Adapter sind z.B. der HM-10. Ich benutze so einen Adapter um eine 
Smartwatch zu entwickeln für ein iPhone.
Verbinden kann man sich aber nicht direkt aus den Einstellungen sondern 
aus der jeweiligen App (zum Testen LightBlue).
Ich habe ein paar Themen auch in meinem Blog beschrieben. Wenn interesse 
besteht kann ich die Links gerne Posten, sonst sieht das nach 
Eigenwerbung aus...

von Stefan F. (Gast)


Lesenswert?

Einige Android Handies unterstützen das SPP Protokoll nicht, welches du 
benötigst.

Du kannst das am einfachsten mit dem Bluetooth Chat Programm antesten, 
dass im Android SDK als Beispielprogramm enthalten ist. Starte das Chat 
Programm einfach auf zwei Smartphones und teste die Kommunikation 
zwischen bei beiden Smartphones.

Um Verbindung zu einem HC-0x Modul aufzubauen, musst du die im Quelltext 
hardcodierte UUID Nummer auf "00001101-0000-1000-8000-00805F9B34FB" 
ändern. Diese Nummer wird IMHO von allen SPP Modulen verwendet.

von Bestromer (Gast)


Lesenswert?

Tobi schrieb:
> Bzgl. der Seriellen Schnittstelle habe ich halt einen USB zu RS232
> Adapter genommen und dort Read, write und ground angeschlossen. Dann
> wurde mir am PC sehr schnell hinter einander diese Zeichenfolge
> ausgegeben. Ich habe gelesen, dass man einen MAX232 verwenden soll.
> Warum braucht man sowas?
...Um z.B. das Signal zu invertieren...

> Aus dem USB kommen doch nur 5V und der Atmega8
> sendet und verkraftet doch genauso 5 Volt?

Hast Du mal gemessen??... ich behaupte mal das da Pegel von mindestens 
+5V und -5V anliegen,ob das Deinem Atmega gefällt?

> Funktionieren Boards mit MAX3232? Also löst das mein Problem der
> falschen Übertragung?

...würde ich denken, oder Du nimmst einen USB zu seriell Adapter mit 
TTL-Pegel, also ohne RS232-Treiber....
Geht Dein Adapter zu öffnen kannst Du alternativ den TTL-Pegel vor dem 
Treiber abgreifen und zum testen heraus führen...
Man kann auch mittels zweier Transistoren einen provisorischen 
"Pegelwandler" umd inverter bauen,wobei natürlich keine negative 
Spannung erzeugt wird wie bei einem Treiber mit Ladungspumpen.
Das hat den Nachteil das Gegenstellen mit Autopowerdown nicht aufwachen, 
was bei Deinen Adapter aber nicht der Fall ist,sonst wäre nix auf Deinem 
PC angekommen....

>
> Viele Grüße
> Tobi :)

....Grüsse zurück :)

von Tobi (Gast)


Lesenswert?

Marco G. schrieb:
> Hast du den Quelltext nur kopiert oder auch an deinen uC angepasst?
Der Quelltext stammte von einem Atmega8, wie ich auch benutze, von daher 
sollte es eigentlich nicht daran liegen.

Armin J. schrieb:
> Hallo Tobi,
> bei mir funktioniert das mit einem billig USB zu RS232 Konverter
> einwandfrei, daran liegst sicher nicht.

Hallo, so einen billigen habe ich auch.. Genauer gesagt den hier: 
http://www.amazon.de/CSL-seriell-RS232-Adapter-Port/dp/B008FKABG0

@stefanus: Vielen Dank für deine Antwort. Sobald ich das mit dem RS232 
hin bekommen habe, werde ich mir das definitiv nochmal ansehen :)

Bestromer schrieb:
> Hast Du mal gemessen??... ich behaupte mal das da Pegel von mindestens
> +5V und -5V anliegen,ob das Deinem Atmega gefällt?
Ja, hatte ich allerdings. Bei mir lagen auch während der Übertragung 
circa 4,75V von Atmega kommend an, andere Richtung war ich nicht in der 
Lage eine Spannung über 10mV festzustellen.

Meinen Adapter kann ich leider nicht öffnen. Genauso kann ich meine 
Jumper Wire nicht wirklich richtig dran fest bekommen, daher suche ich 
nach einem Board, welches ich direkt an meinen Adapter stecken kann. 
Sonst hätte ich mir das mal eben auf einer Platine zusammen gelötet. Da 
ich aber eh kaum Teile hier habe lohnt sich das nicht.
Zusammengefasst mit einem Board wie diesem hier kann ich nichts falsch 
machen und meine Kommunikation müsste dann auch ordentlich 
funktionieren? 
http://www.ebay.de/itm/Max3232-5V-3-3V-RS232-Serial-Port-to-TTL-Digital-Converter-Module-CP12008-J33-/281353512577?hash=item4181f9e681

Vielen Dank noch einmal an alle Antworten :)

von Armin J. (arminj)


Lesenswert?

Hallo Tobi,

Tobi schrieb:
> Hallo, so einen billigen habe ich auch.. Genauer gesagt den hier:
> http://www.amazon.de/CSL-seriell-RS232-Adapter-Por...

mein Adapter ist der hier: 
http://www.ebay.de/itm/PL2303TA-USB-to-TTL-RS232-module-upgraded-USB-serial-port-Cable-Connector-win7-/191168670491
Achte darauf, dass Du einen Windows 8.1 kompatiblen bekommst.

Armin

von Tobi (Gast)


Lesenswert?

Armin J. schrieb:
> Achte darauf, dass Du einen Windows 8.1 kompatiblen bekommst.

Hallo Armin,

mein Adapter ist auf jeden Fall Windows Kompatibel. Ursprünglich habe 
ich diesen für die Programmierung eines Cisco Switch benutzt (natürlich 
mit ensprechendem weiteren Adapterkabel).
Aber im Grunde hast du auf jeden Fall recht. Ein Adapter ist besser als 
mit zig Verbindungsstücken zu arbeiten. Daher würde ich mir einen 
solchen Adapter, wie du hast, kaufen. Nur die Versandzeit stört mich!
Ich habe dieses hier jetzt mal bestellt: 
http://www.amazon.de/COM-FOUR%C2%AE-PL2303HX-RS232-Kabel-Modul-Konverter/dp/B00WE051XK/ref=sr_1_7?ie=UTF8&qid=1443097119&sr=8-7&keywords=usb+ttl+rs232
Werde ich am Sonntag ausprobieren und hier berichten :)

Grüße
Tobi

von ArminJ (Gast)


Lesenswert?

Tobi schrieb:
> Ich habe dieses hier jetzt mal bestellt:
> 
http://www.amazon.de/COM-FOUR%C2%AE-PL2303HX-RS232-Kabel-Modul-Konverter/dp/B00WE051XK/ref=sr_1_7?ie=UTF8&qid=1443097119&sr=8-7&keywords=usb+ttl+rs232
> Werde ich am Sonntag ausprobieren und hier berichten :)

Hi Tobi,
Du weißt schon, dass es dafür keine Windows 8 Treiber gibt?

Gruß
Armin

von Nil (nilsnilss)


Lesenswert?

Tobi schrieb:
> Marco G. schrieb:
>> Hast du den Quelltext nur kopiert oder auch an deinen uC angepasst?
> Der Quelltext stammte von einem Atmega8, wie ich auch benutze, von daher
> sollte es eigentlich nicht daran liegen.

Läuft dein uC auch mit entsprechendem Quarz und Fuses?

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.