- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 33

Thema: Bluetooth BLE 4.0 - CC41-a zu HM-10 umwandeln

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Nachdem ich gesehen habe, dass es das CC2540 auch als einzelnen IC von TI gibt, dachte ich, dass es nicht schaden kann, mit so nem Mosul mal rumzuspielen.
    Vom HC-06 bin ich gewohnt, dass man es einfach anschließt (Strom, Masse und RX/TX) und man es dann einfach nach der Eingabe des Standardpassworts (1234) nutzen kann.

    Beim CC2540 hingegen kann ich das Bluetoothmodul nicht mit meinem Smartphone koppeln.
    Das Modul (wird grade nur mit Stom versorgt, die RX/TX-Leitungen sind nicht verbunden, aber auch wenn sie verbunden sind, ändert sich nichts an dem Verhalten) gibt sich als CC41-A zu erkennen. Beim Koppeln vom Galaxy S4 aus (Android 5.0.1, Bluetooth 4.0) bekommen ich nur "Fehler - Kopplung von CC41-A abgelehnt".
    Hat jemand zufällig Erfahrungen mit dem Modul/Chip?
    Ich such jetzt schon seit ner Stunde im Netz aber ich habe das Problem noch nirgends gefunden.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Alter
    60
    Beiträge
    540
    welches modul hast du oder nackten chip?
    gibt es keine anleitung für dieses modul?
    das leben ist hart, aber wir müssen da durch.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Ich hab von aus das Bucht das Modul: 171988143980
    Anleitungen hab ich schon einige gefunden und ausprobiert.
    Ich vermute fast, dass es momantan am Pegal hapert. Mein Nano möchte auf 5V kommunizieren, das HS-10 auf 3,3V. In einigen Tutorals wird das Modul dennoch einfach so an den Arduino angeschlossen und funktioniert (ist ja beim HC-05 nichts anderes).
    Ich hab mir jetzt mal n paar Pegalwandler auf Basis des BSS138 bestellt. Sollte ich das HS-10 schon gegrillt haben, kann ich von Glück reden, dass ich zwei bestellt hatte

    Wenn ich AT sende, antwortet das Modul nicht mit OK, sondern mit einer Kette von Zahlen. Ich dachte zunächst, dass ich vllt. RX/TX vertauscht hätte, aber wenn ich das (softwareseitig, da ich SoftSerial verwende) vertauscht, bekomme ich immer -1 zurückgegeben statt der Zahlenfolge.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Alter
    60
    Beiträge
    540
    ich würde sagen du hast die falsche baudrate/geschwindigkeit.
    das leben ist hart, aber wir müssen da durch.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Danke für den Tip. Damit werd ich gleich mal rumspielen.
    Ansonsten habe ich mir vorhin auch mal einen Pegelwandler besorgt, damit ich den Chip nicht grille, falls ich es nicht schon getan habe

    //Edit: Gibt es eigentlich ne Art Faustformel zur Berechnung der richtigen Baud-Rate? Bzw. woraus setzt sich die Rate eigentlich zusammen?

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Hmmm....also bisher hab ich mit dem Ändern der Baudrate keinen Erfolg gehabt.
    Die Ausgabe sieht immer noch wie folgt aus:
    Code:
    Send something in serial-monitor or in bluetooth-terminal
    Here we go
    69
    82
    82
    79
    82
    61
    50
    48
    49
    13
    10
    69
    82
    82
    79
    82
    61
    49
    48
    49
    13
    10
    -1
    -1
    -1
    -1
    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial softSerial(2, 3);    // RX, TX
    
    void setup()
    {
        Serial.begin(9600);
        softSerial.begin(115200);
        delay(100);
        softSerial.println("U,9600,N");  // Temporarily Change the baudrate to 9600, no parity
        // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
        softSerial.begin(9600);  // Start bluetooth serial at 9600
         
        Serial.println("Send something in serial-monitor or in bluetooth-terminal");
        delay(1000);
    
        softSerial.println("AT");
        delay(1000);
        softSerial.println("AT+NAMEfunnylilbluetooththing");
        Serial.println("Here we go");
        delay(500);
    
        // Reset all settings.
        softSerial.write("AT+RENEW");
        delay(300);  
    
        //AT+ROLE1 = slave
        //AT+ROLE0 = is master
        softSerial.write("AT+ROLE1");
        delay(300);
    
        //AT+PASSxxxxxx sets the password xxxxxx (6 characters)
        softSerial.write("AT+PASS000001"); 
        delay(300);
    
        //The work mode only works for the Master HM-10.
        //AT+MODE0 = Transmission Mode
        //AT+MODE1 = Remote Control Mode
        //AT+MODE2 = Modes 0 + 1
        softSerial.write("AT+MODE0"); 
        delay(300);
    
        //AT+IMME0 = wait until "AT+START" to work
        //AT+WORK1 = connect right now
        softSerial.write("AT+IMME0");
        delay(300);
    
        softSerial.write("AT+BAUD9600");
        delay(300);
    
        //AT+START = AT+WORK
        softSerial.write("AT+START"); 
        delay(300);
    }
    
    void loop()
    {
        if (softSerial.available())
            softSerial.print("AT");
            delay(500);
            Serial.println(softSerial.read());
        if (Serial.available())
            softSerial.println(Serial.read());
    }

    Ich wär momentan froh, wenn ich einfach auf ein AT ein OK bekommen würde...

    //Edit: Der Chip auf meinem Modul ist übrigens ein CC2541.

    - - - Aktualisiert - - -

    Komisch....jetzt spuckt mir das HM-10 ein OK aus mit diesem Code:
    Code:
    #include <SoftwareSerial.h>
    //SoftwareSerial softSerial(6, 5);    // RX, TX HC-05
    SoftwareSerial softSerial(2, 3);    // RX, TX HM-10
    
    void setup()
    {
        Serial.begin(9600);
        softSerial.begin(9600);  // Start bluetooth serial at 9600
        Serial.println("Send something...");
        delay(300);
    
        softSerial.println("AT");
        delay(300);
    /*    softSerial.write("AT+ROLE0");
        delay(300);
        softSerial.write("AT+PASS000001"); 
        delay(300);
    
        softSerial.write("AT+MODE2"); 
        softSerial.write("AT+WORK1");
        delay(300);
    */
    }
    
    void loop()
    {
        if (softSerial.available())
            Serial.write(softSerial.read());
        if (Serial.available())
            softSerial.write(Serial.read());
    }
    Blöd nur, dass ich es bluetoothseitig vom Smartphone oder PC nicht finden kann.

    - - - Aktualisiert - - -

    Finally it works!

    Code:
    #include <SoftwareSerial.h>
    //SoftwareSerial softSerial(6, 5);    // RX, TX HC-05
    SoftwareSerial softSerial(2, 3);    // RX, TX HM-10
    
    void setup()
    {
        Serial.begin(9600);
        softSerial.begin(9600);  // Start bluetooth serial at 9600
        Serial.println("Send something...");
        delay(300);
    
        Serial.println("AT");
        softSerial.println("AT");
        delay(500);
        
        Serial.println("AT+NAMEansgar");
        softSerial.println("AT+NAMEansgar");
        delay(500);
    
        Serial.println("AT+PASS000001");
        softSerial.println("AT+PASS000001"); 
        delay(500);
        
    
        Serial.println("AT+ROLE0");
        softSerial.println("AT+ROLE0");
        delay(500);
    
        Serial.println("AT+MODE2");
        softSerial.println("AT+MODE2");
        delay(500);
        
        Serial.println("AT+WORK1");
        softSerial.println("AT+WORK1");
        delay(500);
    }
    
    void loop()
    {
        if (softSerial.available())
            Serial.write(softSerial.read());
        if (Serial.available())
            softSerial.write(Serial.read());
    }

    liefert im Serial-Monitor folgendes zurück:
    Code:
    Send something...
    AT
    AT+NAMEansgar
    AT+PASS000001
    AT+ROLE0
    AT+MODE2
    AT+WORK1
    OK
    +NAME=ansgar
    OK
    +PASS=000001
    OK
    +ROLE=0
    OK
    (die Ausgabe ist war was durcheinander....aber hauptsche es funktioniert erstmal! Jetzt weiß ich immerhin, dass ich den Chip nicht mit 5V gegrillt habe )

    Probleme hat das softSerial.write() gemacht, wobei ich gestern getestet hatte, ob alles mit write() oder print() funktioniert. Scheinbar ist wirklich ein println() nötig!

    - - - Aktualisiert - - -

    Arrrrgh....doch nicht.
    Er hat kurzzeitig reagiert auf die AT-Commands.
    Aber nun nicht mehr. Jetzt bekomme ich keine Antwort mehr vom Modul.
    Also habe ich mal mein Austauschmodul angeklemmt....und da bekomme ich mit exakt dem selben Code wieder so ne komische Zahlenabfolge.
    Ich werd jetzt mal die Delays hochschrauben und sehen, obs daran liegt.

    //Edit: Infos zum HM-10 gibts übrigens hier: http://www.jnhuamao.cn/showNews.asp?id=87
    Geändert von Cysign (04.12.2015 um 01:02 Uhr)

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Ich vermute langsam, dass das eine Modul nen Defekt aufweist.
    Beim zweiten Modul kann ich die AT-commands senden und erhalte auch als Feedback ein OK.

    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial softSerial(10, 11);
                          // RX, TX
    void setup()
    {
    Serial.begin(9600);
    softSerial.begin(9600);
    Serial.println("Taraaaa");
    delay(30);
    
    softSerial.println("AT"); //OK if it's connected properly
    delay(30);
    
    softSerial.println("AT+BAUD4"); //  Sets Baud to 9600
    delay(30);
    
    softSerial.println("AT+NAMEBRUNO");  // set name
    delay(30);
    
    softSerial.println("AT+ROLE1"); // ROLE1 slave - ROLE0 master
    delay(30);
    
    //softSerial.println("AT+MODE0"); // transmission mode, master only
    //delay(30);
    
    softSerial.println("AT+PASS000001");  // set password
    delay(30);
    
    //softSerial.println("AT+IMME0"); // wait for AT+START to work
    //delay(30);
    
    //softSerial.println("AT+START"); // start
    //delay(30);
    
    }
    
    void loop()
    {
      if (softSerial.available())
        Serial.write(softSerial.read());
      if (Serial.available())
        softSerial.write(Serial.read());
    }
    liefert mir soweit folgendes zurück:
    Code:
    Taraaaa
    OK
    +BAUD=4
    OK
    +NAME=BRUNO
    OK
    +ROLE=1
    O
    +PASS=000001
    OK
    Geändert von Cysign (12.01.2016 um 01:24 Uhr)

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi Cysign,

    zunächstmal großes lob und danke für die von dir zur verfügung gestellten informationen, so fiel es mir etwas leichter mit den gestern angekommenen (fertigen) HM-10 modulen zu experimentieren. Eigentlich CC41-A modulen. Das wusste ich bei der bestellung noch nicht.

    Das mit den baudraten war schon mal ein ganz wichtiger hinweis zum wiederbeleben...

    ich habe das hier (die zuordnung von 1-9 und der baudraten) gefunden- da passt es jetzt:

    1---1200 / 2---2400 / 3---4800 / 4---9600 / 5---19200 / 6---38400 / 7---57600 / 8---115200 / 9---230400 / default:4---9600

    was bei mir an den original modulen funktioniert hat:

    at
    at+role
    at+addr
    at+pass
    at+inq (nur bei master)
    at+conn1 (die lfd.nr. des gefundene slaves)

    beim abfragen so wie es da steht, beim ändern mit dem parameter direkt anschliessend

    at+pair funktioniert nicht, das heisst, die module finden sich nach abschalten nicht wieder. Schade

    übrigens funktioniert die abfrage/eingabe in dem IDE terminalfenster, wenn die verd... baudrate stimmt...

    Ob ich das mit dem aufspielen der HM-10 firmware machen möchte weiss ich nicht. Ich weiss nicht ob sich der aufwand wirklich lohnt, abgesehen davon habe ich linux, da ist vieles in der richtung sowieso noch schwieriger...

    Eine frage noch: wie erkenne ich die "echten" HM-10? Am preis? An was anderem? Ich bräuchte zumindest eines, um mit den EZ-link von adafruit kommunizieren zu können (auch upload zum arduino) - und das ging mit dem CC41 nicht, die haben sich einfach nicht gefunden...
    gruß inka

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo,

    bei weiteren versuchen habe ich festgestellt, dass beide module inzwischen auf die abfrage "AT+ADDR" mit "+ADDR=00:00:00:00:00:00" antworten. Andere abfragen bzw. änderungen bei ROLE, BAUD usw. funktionieren, änderungen sind auch möglich, allerdings wird bei "AT+INQ" kein slave gefunden. RESET, bzw. RENEW bewirken keine änderung der adresse. Kennt das jemand? Wie ist das mit der adresse zu beheben?
    gruß inka

Ähnliche Themen

  1. DC in Drehstrom umwandeln
    Von Devil im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 25.06.2011, 11:52
  2. +/-10V zu Differentialausgang umwandeln
    Von Andal im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 20.10.2008, 18:47
  3. .exe in .c umwandeln?
    Von Römer im Forum Software, Algorithmen und KI
    Antworten: 10
    Letzter Beitrag: 20.03.2007, 12:26
  4. 12V in 5V umwandeln
    Von LinuxFan im Forum Elektronik
    Antworten: 19
    Letzter Beitrag: 13.06.2005, 10:03
  5. PocktetPC mit Bluetooth & Bluetooth-Adapter
    Von Biene im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 7
    Letzter Beitrag: 17.01.2005, 11:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress