- LiTime Speicher und Akkus         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 33

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

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176

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

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen, für ein aktuelles Projekt Suche ich ein möglichst kleines und energiesparendes Bluetoothmodul.
    Bisher bin ich um ehrlich zu sein hauptsächlich auf die üblichen Verdächtigen HC-05 und HC-06 gestoßen.
    Außerdem habe ich das CC2541 gefunden, welches dank BLE wohl energiesparender zu sein scheint.

    Gibt es denn keine gängigen, kompakteren Module?
    Wenn ich an Intel Curie denke, muss es ja möglich sein, ein Bluetoothmodul samt PCB-Antenne in kleinerer Bauform umzusetzen...

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176
    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.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Alter
    59
    Beiträge
    539
    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.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176
    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.

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

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176
    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?

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176
    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 02:02 Uhr)

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176
    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 02:24 Uhr)

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176
    Oh man...das Modul raubt mir noch den letzten Nerv.
    Nachdem ich nun einige Zeit verschiedene AT-Commands ausprobeiren konnte (keins hat zu einer erfolgreichen Verbindung zum Smartphone geführt), antwortet auch dieses Modul nun nicht mehr.
    Da ich kein bis dato ungenutzten Commands verwendet habe, frage ich mich grade, ob der Speicher auf dem Modul nur eine sehr, sehr begrenzte Anzahl an Writes durchhält.
    Ich denke, ich bewege mich zwischen 50-200 Schreibzugriffen. Eigentlich sollte der verbaute Speicher eher 10000 Schreibzugriffe aushalten, aber anderst kann ich mir das Versagen der beiden Module nicht erklären.

    Ich hab noch drei Ersatzmodule, die ich auf die Breakoutboards der zwei defekten auflöten könnte. Allerdings würde ich lieber gerne die Ursache für das Versagen wissen, bzw. die beiden endlich ordentlich verwenden können.


    //Edit: Ok, da ich weiter kommen wollte, habe ich das Modul auf einem Breakoutboard getauscht.
    Und eben habe ich das schönste AT-Kommando überhaupt rausgefunden:
    AT+HELP

    Das neue Modul reagiert darauf mit folgendem Output:
    Code:
    ********************************************************************
    * Command             Description                       *
    * ---------------------------------------------------------------- *
    * AT                  Check if the command terminal work normally  *
    * AT+RESET            Software reboot                   *
    * AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
    * AT+HELP             List all the commands                   *
    * AT+NAME             Get/Set local device name                    *
    * AT+PIN              Get/Set pin code for pairing                 *
    * AT+PASS             Get/Set pin code for pairing                 *
    * AT+BAUD             Get/Set baud rate                           *
    * AT+LADDR            Get local bluetooth address           *
    * AT+ADDR             Get local bluetooth address           *
    * AT+DEFAULT          Restore factory default               *
    * AT+RENEW            Restore factory default               *
    * AT+STATE            Get current state                   *
    * AT+PWRM             Get/Set power on mode(low power)            *
    * AT+POWE             Get/Set RF transmit power            *
    * AT+SLEEP            Sleep mode                            *
    * AT+ROLE             Get/Set current role.                       *
    * AT+PARI             Get/Set UART parity bit.                     *
    * AT+STOP             Get/Set UART stop bit.                       *
    * AT+START            System start working.               *
    * AT+IMME             System wait for command when power on.       *
    * AT+IBEA             Switch iBeacon mode.                       *
    * AT+IBE0             Set iBeacon UUID 0.                           *
    * AT+IBE1             Set iBeacon UUID 1.                           *
    * AT+IBE2             Set iBeacon UUID 2.                           *
    * AT+IBE3             Set iBeacon UUID 3.                           *
    * AT+MARJ             Set iBeacon MARJ .                           *
    * AT+MINO             Set iBeacon MINO .                           *
    * AT+MEA              Set iBeacon MEA .                           *
    * AT+NOTI             Notify connection event .                    *
    * AT+UUID             Get/Set system SERVER_UUID .                   *
    * AT+CHAR             Get/Set system CHAR_UUID .                   *
    * -----------------------------------------------------------------*
    * Note: (M) = The command support slave mode only.            *
    * For more information, please visit http://www.bolutek.com        *
    * Copyright@2013 www.bolutek.com. All rights reserved.           *
    ********************************************************************
    AT+VERSION liefert
    Code:
    +VERSION=Firmware V3.0.6,Bluetooth V4.0 LE
    Allerdings hätte ich statt "3.0.6" eher sowas wie "540" (oder darunter) erwartet.
    Geändert von Cysign (12.01.2016 um 04:55 Uhr)

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.176
    Okay, beim Rumspielen mit der Baud-Rate habe ich irgendwann keine Reaktion vom Modul mehr bekommen (einfach gar keine Reaktion mehr).
    Also habe ich im Datenblatt des HM-10 nachgesehen, welche Baudraten es gibt.
    Code:
    0    9600
    1    19200
    2    38400
    3    57600
    4    115200
    5    4800
    6    2400
    7    1200
    8    230400
    
    Deafult: 0 (9600)
    Da ich AT+BAUD2 eingegeben hatte, habe ich diese Baudrate natürlich als erstes versucht.
    Erfolgreich 'wiederbeleben' konnte ich mein HM-10 jedoch mit einer Baud von 4800, welche eigentlich mit AT+BAUD5 eingestellt werden sollte.
    Scheinbar liegt hier das Problem, denn auch mein anderes HM-10, welches ich als verloren glaubte, konnte ich mit der selben Baudrate 'wiederbeleben'.

    Also im Arduino
    Code:
    softSerial.begin(4800);
    , dann wieder BAUD4 (9600) einstellen und danach wieder zurück zu
    Code:
    softSerial.begin(9600);
    Allerdings ist es mir nach wie vor nicht geglückt, mein Handy mit dem Modul zu koppeln.


    //Edit: Scheinbar ist die Kommandoliste unter AT+HELP nicht komplett. AT+TYPE kommt dort zum Beispiel gar nicht vor.

    //Edit2: So wies aussieht, ist mein vermeitliches HM-10 gar keins. Bolutek nennt sein Modell nämlich CC-41A. Was die Unterschiede zum HM-10 sind (bis auf den einen optischen) weiß ich noch nicht. Auch ist mir bisher nicht bekannt, ob ich irgendwie die Firmware des HM-10 darauf nutzen kann.

    Laut https://forum.arduino.cc/index.php?topic=334466.0
    Although both modules look very similar, CC-41A requires that AT commands are terminated by LF+CR and there are differences in the command set.

    Interessanter Link zum CC41-A:
    https://rydepier.wordpress.com/2015/...41a-bluetooth/

    Leider funktionieren die hier dokumentierten ATA-Befehlr nicht uneingeschränkt:
    https://halckemy.s3.amazonaws.com/up...GOIH90OKGT.pdf
    Geändert von Cysign (12.01.2016 um 22:34 Uhr)

Seite 1 von 4 123 ... LetzteLetzte

Ähnliche Themen

  1. DC in Drehstrom umwandeln
    Von Devil im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 25.06.2011, 12:52
  2. +/-10V zu Differentialausgang umwandeln
    Von Andal im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 20.10.2008, 19:47
  3. .exe in .c umwandeln?
    Von Römer im Forum Software, Algorithmen und KI
    Antworten: 10
    Letzter Beitrag: 20.03.2007, 13:26
  4. 12V in 5V umwandeln
    Von LinuxFan im Forum Elektronik
    Antworten: 19
    Letzter Beitrag: 13.06.2005, 11: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, 12:15

Berechtigungen

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

LiTime Speicher und Akkus