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
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?
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.
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.
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.
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?
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
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
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
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 :)
Hast du den Quelltext nur kopiert oder auch an deinen uC angepasst? Falls die Taktfrequenz nicht stimmen sollte, kannst du die Übertagung vergessen.
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.
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...
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.
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 :)
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 :)
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.