module Bluetooth SPBT2632C2A

J'ai un module Bluetooth que j'utilise en "Cable Replacement"
c'est à dire en protocole SPP pour relier un microcontrôleur (ou équivalent) au PC équipé de BT.

http://www.st.com/web/en/catalog/sense_power/FM1968/CL1976/SC1324/PF253470?s_searchtype=keyword#

http://fr.farnell.com/stmicroelectronics/spbt2632c2a-at2/module-bluetooth-class-2/dp/2428785

C'est un module intéressant car il est petit, antenne pcb intégré, pas trop cher (19 USD), bien que sur ebay y a encore des modules moins chers...
et surtout on peut le souder à la main, car il a des pins du type : demi pad
pas comme le module LMX9838 qui est en LGA et donc où on doit avoir un four à refusion pour le souder...

Il s'alimente en 3.3V où même 2.5 V mais est tolérant à 5V sur ses pins RX, TX, RTS, CTS (que j'ai câblé à la masse car je n'utilise pas de contrôle de flux matériel, _je sais, c'est pas bien ;-) mais c'est plus simple : 3 fils suffisent après avec le host.

Il est livré par défaut en 115200 bds
mais j'ai voulu le reprogrammer en 9600 bds en envoyant des commandes AT depuis le host (microcontrôleur dspic)

je ne comprenais pas pourquoi il n'entrait pas en séquence de commande ("Escape sequence" ou séquence d'échappement ne marchait pas)

En fait il faut vraiment envoyer, sans les caractères \r\n ni de " "
^#^$^%
et attendre 2s
puis envoyer des ordres comme le passage par défaut en 9600 bds (c'est ce que je voulais) : AT+AB ChangeDefaultBaud 9600
puis repasser en mode mode Bypass (câble replacement)
alors qd on allume par défaut il est en 9600 (au lieu de 115200) et aussi en mode Bypass, c'est à dire câble replacement


un bout de code, la séquence en commentaire ne doit être faite qu'une seule fois pour sa reprogrammation

void InitUART ()
{
    U1MODE = 0x8000;    // enable UART1, 8 bits, 1 stop bit, no parity, RX normal
    U1STA = 0x0000;
    U1BRG = ((FCY/16)/BAUD) - 1;    // set baud rate
    RXPtr = &InData[0];        // point to first char in receive buffer
    Flags.CheckRX = 0;            // clear rx and tx flags
    _U1RXIF = 0;    // clear interrupt flag
    _U1RXIE = 1;            // enable RX interrupt
    _U1TXIF = 0;        // clear interrupt flag
    Flags.SendTX = 0;
    Flags.SendData = 0;        // clear flag
    SeqComm=SeqCommMax;
    _UTXEN = 1;           // Initiate transmission

//// Reprogram default Baud of    St SPBT2632C2A (ONCE only)
//    TXPtr =&"^#^$^%";
//    SendMsg();
//DelayNmSec(10000);
////    TXPtr =&"AT+AB ChangeBaud 9600\r\n";
//    TXPtr =&"AT+AB ChangeDefaultBaud 9600\r\n";
//    SendMsg();
//    TXPtr =&"AT+AB Bypass\r\n";
//    SendMsg();

-- 

Commentaires

Posts les plus consultés de ce blog

Position du Soleil et SalatTime pour Arduino

RTC, SalatTime et Arduino

Mod DJT FrSky pour Telemetry via Bluetooth / Android Phone