Arduino Nano empfängt sonderbare Zeichen

Hey Leute,
ich habe eine App für mein Galaxy S4 in Android Studio geschrieben.
Diese besitzt zwei Buttons, welche einen String senden. Die Befehle können erst nach einer erfolgreichen Verbindung zu einem Bluetooth-Gerät gesendet werden. Zum prüfen, nutze ich den Serial Monitor.

Die Verbindung aufzubauen ist kein Problem.

Abhängig ob ich Serial.read() oder Serial.write() benutze, werden entweder Zahlen(meistens 254 oder 255) oder Vierecke angezeigt. An meinem Arduino Nano ist ein HC-06(RS232) nach Anweisung angeschlossen.

3v3 -> Vcc
Ground -> Ground
RX(pin 1) -> TX
TX(pin 0) -> RX

Die Baudrate liegt bei 9600, sowohl im Monitor als auch im Befehl Serial.begin(9600).

Bevor der String über die App gesendet wird, konvertiert ein Befehl den String in ein byte Array.
Leider bietet Java unter Android keine andere Möglichkeit an, wenn ich mich nicht irre.

Habe es mit verschiedenen Quellcodes für den Arduino versucht.

Weiß einer was der Fehler sein könnte?

ViTrex:
Weiß einer was der Fehler sein könnte?

Du kannst nicht gleichzeitig USB (seriellen Monitor) und die serielle Schnittstelle verwenden.
D0 und D1 werden auch für den USB-Serial-Wandler verwendet.

Hallo,
soll heißen, Du brauchst so etwas wie SoftwareSerial.
Weiß aber nicht, ob es auf Deinem Ding läuft. Da kannst Du dann die Pin`s für die serielle Schnittstelle
"frei" wählen.
Gruß und Spaß
Andreas

HotSystems:
Du kannst nicht gleichzeitig USB (seriellen Monitor) und die serielle Schnittstelle verwenden.
D0 und D1 werden auch für den USB-Serial-Wandler verwendet.

Danke für den Tipp, dass wusste ich noch nicht :slight_smile:

[/quote]

SkobyMobil:
Hallo,
soll heißen, Du brauchst so etwas wie SoftwareSerial.
Weiß aber nicht, ob es auf Deinem Ding läuft. Da kannst Du dann die Pin`s für die serielle Schnittstelle
"frei" wählen.
Gruß und Spaß
Andreas

SoftwareSerial habe ich öfters schon gelesen. Werde das mal ausprobieren. Werde den Arduino mal mit einem Lipo versorgen und ein Display anschließen.

ViTrex:
SoftwareSerial habe ich öfters schon gelesen. Werde das mal ausprobieren. Werde den Arduino mal mit einem Lipo versorgen und ein Display anschließen.

Ist eigentlich genau so simpel zu nutzen, wie die direkte Serielle.
Nur dass du eben die Pins selbst bestimmen kannst.

Ach!
Ist ja ein Ding. Haste das von mir abgeschrieben, oder wie bist Du drauf gekommen? :wink:
Gruß und Spaß
Andreas

SkobyMobil:
Ach!
Ist ja ein Ding. Haste das von mir abgeschrieben, oder wie bist Du drauf gekommen? :wink:
Gruß und Spaß
Andreas

Jup...habe nur den Text ein wenig geändert, damit es nicht JEDEM auffällt. :smiling_imp:

Hallo,
tatsächlich!? Ist mir schon häufiger aufgefallen, das Du ein pfiffiges Kerlchen sein könntest. :stuck_out_tongue:
Gruß und Spaß
Andreas

Hmm...

Wie wäre es mit einer Alternative (um ein wenig Ablenkung zu bringen)?

z.B. AltSoftSerial
Da ist die Pinwahl nicht ganz so frei :o :o :o

Wobei das, neben den Vorteilen, nicht unbedingt ein Nachteil sein muss.

SkobyMobil:
tatsächlich!? Ist mir schon häufiger aufgefallen, das Du ein pfiffiges Kerlchen sein könntest. :stuck_out_tongue:

Wieso "sein könntest" ? jetzt bin ich aber enttäuscht von dir. :sob:

combie:
Wie wäre es mit einer Alternative (um ein wenig Ablenkung zu bringen)?

z.B. AltSoftSerial
Da ist die Pinwahl nicht ganz so frei :o :o :o

Wobei das, neben den Vorteilen, nicht unbedingt ein Nachteil sein muss.

Gut so, so bleibt dem TO auch eine Entscheidung.

Habe jetzt mal was kleines ausprobiert.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

char c;

void setup() 
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);

pinMode(2, OUTPUT);
}

void loop() { // run over and over
if (mySerial.available()>0) {
  digitalWrite(2, HIGH);
  delay(2000);
  digitalWrite(2, LOW);

  char c = mySerial.read();
  
  Serial.write(c);
}
}

Leider werden mir immer noch Vierecke ausgegeben. Habe ich noch etwas wichtiges übersehen?

Serial.begin(57600);

Hast Du dieselbe Baudrate auch im Terminal eingestellt?
Grüße Uwe

uwefed:

Serial.begin(57600);

Hast Du dieselbe Baudrate auch im Terminal eingestellt?
Grüße Uwe

Jo... leider ändert sich gar nichts. Empfange aber leider nur Vierecke.

Hallo,
von vorne…
stelle mal ALLE Datenraten auf 9600Bd.
Dann Serial.print(); nicht write

Dann mal Aufklärung:

Du hast ein Galaxy S4
Ein HC-06 (Bluetooth zu Serial Adapter)
Einen echten Arduino Nano
Einen PC, an dem der Nano angeschlossen ist.

So, dann hast DU eine geheimnisvolle "App" die noch geheimeres sendet.

Bis hier alles richtig?

Nun nimmst Du Deinen Nano (ohne alles) und sendest mit dem einen String zum PC. Dieser muß fehlerfrei über den SeriellenMonitor ausgegeben werden.
Wenn dem denn so ist…
Verdrahtest Du den HC-06 mit dem Nano, und sendest wieder einen String.
Dieser muß fehlerfrei über den SeriellenMonitor ausgegeben werden.
Wenn dem denn so ist…

Suchst Du Dir eine Bluetooth-Quelle von der Du weißt, das sie funktioniert.
Mit dieser sendest Du etwas (V-Card, was weiß ich) bekanntest an den HC.

Am besten geht das mit einem TerminalProgramm, da kanst Du Klartext ohne
großen SchnickSchnack senden.

Du hast hier zu viele unbekannte Baustellen, wir wissen auch nichts.

Wie wäre es denn mal mit Deinem Sketch (in CodeTags, Editor </> oben links). DatenblattLink zu Deinem Nano und Deinem HC. Welche Libs nutzt Du denn, u.s.w.
Gruß und Spaß
Andreas

Habe mir mal von Tinkernut Labs ein Video angeschaut. Quelltext kopiert und die App "ArduDroid" runtergeladen. Funktioniert nicht.

Habe mir danach die App "Bluetooth Terminal" heruntergeladen und den Quelltext kopiert... vergebens.

Stimmt was nicht mit meinem Modul?

Wenn das HC-06 noch keine Verbindung hat, blinkt die LED regelmäßig. Wenn eine Verbindung aufgebaut wurde, soll die LED durchgehen leuchten. Bei meinem HC-06 leuchet bei einer Verbindung die LED zweimal in einem Abstand von 3-4 Sekunden.

Ich kenne mich bei BT-Modulen nicht aus, aber die ganzen Tutorials besagen, dass die LED bei einer Verbindung durchgehen an sein soll. Habe aber auch ein Video gefunden in dem das BT-Modul genauso leuchtet wie meins.

Hallo,
Du kannst hier schreiben bis Dir die Finger bluten… wenn Du nicht mit
konkreten Informationen rüberkommst kannst Du das vergessen.
Was bei anderen passiert, das muß noch lange nicht bei Dir genau so sein.

"Ich kenne mich bei BT-Modulen nicht aus"

Du scheinst Dich mit nichts auszukennen und stochers wie wild im Nebel rum.
Fange doch erst einmal damit an, die Dokumentation Deiner Hardware zu lesen.
Wäre auch bestimmt nicht schlecht, mal zu versuchen eine Verbindung mit dem
HC-06 herzustellen.
Aber mach mal weiter so… ich bin nicht Google.
Gruß und Spaß dabei
Andreas
P.S. ich habe mal ein wenig geschaut...
Es ist "kein" richtiges Problem das HC-06 mit einem Arduino zu betreiben.
Du mußt nur mal machen, was geschrieben steht.

Zudem hat dir SkobyMobil in Post #14 sehr genau beschrieben, wie du vorgehen solltest.
Warum machst du das nicht ?
Wichtig ist in dieser Materie, dass du Schritt für Schritt vorgehst.
Nur so kannst du deine Probleme lösen.
Und sehr wichtig dabei, Grundlagen lernen.

Stimmt was nicht mit meinem Modul?

Das können wir nicht sagen, da du es auf deinem Tisch liegen hast.
Möglich ist das natürlich schon.