Go Down

Topic: Strings von Bluetooth erstellen (Read 302 times) previous topic - next topic

allzeittechniker

Hallo zusammen,
Ich habe vor mit einem Arduino Nano und einem HC-05 Bluetooth Modul ein Zugangssystem zu bauen. Das Passwort wird hierbei von einem Handy übertragen.
Hier der komplette Code:
Code: [Select]
//Software Serial einfügen
#include <SoftwareSerial.h>
//Relais Schaltkontakte definieren
int schaltKontakt1 = 8;
int schaltKontakt2 = 9;
//Strings initialisieren
String passwort;
String kontrolle;
//Konfig von SoftwareSerial
SoftwareSerial zugangSerial(2,3);
//Setup
void setup() {
  //Pins initialisieren
  pinMode(schaltKontakt1, OUTPUT);
  pinMode(schaltKontakt2, OUTPUT);
  //Passwort setzen
  passwort = String("wert");
  //SoftwareSerial initialisieren
  zugangSerial.begin(38400);
  //HardwareSerial initialisieren
  Serial.begin(9600);
  //Passwort zu Testzwecken ausgeben
  Serial.println(passwort);

}
//loop
void loop() {
  //Wenn etwas übertragen werden kann...
  if (zugangSerial.available()){
    //Kurze Info schreiben
    Serial.println("aktiv");
    //Zeichen auslesen
    kontrolle = String(zugangSerial.readString());
    //SoftwareSerial auslesen
    Serial.println(kontrolle);
    //Kontrolle ob die Strings übereinstimmen
    if (kontrolle.equals(passwort)){
      //Kurze Meldung ob Passwort stimmt
      Serial.println("korrekt");
      //Türkontakte kurz auf und zu machen
      digitalWrite(schaltKontakt1, HIGH);
      digitalWrite(schaltKontakt2, HIGH);
      delay(500);
      digitalWrite(schaltKontakt1, LOW);
      digitalWrite(schaltKontakt2, LOW);
    }
    else{
      //Fals Passwort falsche kurze Rückmeldung
      zugangSerial.println("Zurgiff verweigert");
    }
  }

}

Jetzt habe ich aber das Problem, dass egal welches Passort ich setze oder eingebe er mir immer den Zugriff verweigert. Ich habe auch schon probiert das Passwort nicht über Bluetooth einzugeben sondern ihm im Code das Passwort und die Kontrolle zu setzen. Das hat auch funktioniert. Also ich glaube das ich beim auslesen der Daten vom Bluetooth Modul irgendetwas falsch mache, nur leider nicht was.
Ich hoffe mir kann jemand helfen und sage im voraus schon mal Danke!

Tommy56

Dann lass Dir doch mal alles was von Bluetooth kommt als HEX auf Seriell ausgeben, damit Du auch die Steuerzeichen siehst.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Rentner

Hallo,

ich tippe auf ein unterscheidliches Endzeichen hinter dem eigendlichen "Nutztext", das kannst Du so nicht sehen. Ist die Länge beider Strings identisch ? Mal alle zeichen HEX einzeln ausgeben lassen evetuell erst in ein char Array wandeln.


Heinz

allzeittechniker

So, habe gerade den Sketch etwas geändert und mir auch Hex ausgeben lassen. Ich verstehe jetzt das Problem habe aber keine Ahnung wie man das beheben kann. Das original Passwort hat jetzt den HEXWERT:
"HEX: 77 65 72 74" und das übertragene Passwort hat den Wert:
"HEX: 77 65 72 74 D A"

Serenifly

Dann schau die einfach mal die ASCII Tabelle an. Da steht wie üblich ein CR + LF am Ende. Kann man wahrscheinlich mit trim() entfernen

allzeittechniker

Super! Danke für deinen Tipp Serenifly! Die Funktion mit trim() habe ich noch nicht gekannt. Habe soeben eine Zeile hinzugefügt und alles funktioniert. Danke an euch, dass ihr mir geholfen habt! :D

Go Up