Area SX srl - Informatica e Microelettronica
0
Torna a: Home Page Soluzioni Wireless Bluetooth Interfaccia Bluetooth per Basicx 24 con il modulo UARTDNG101

Interfaccia Bluetooth per Basicx 24 con il modulo UARTDNG101

Data di pubblicazione: 24-04-2005 | Versione Italiana  | (No English Version)The English version of this article does not exists
Parole chiave: - BlueTooth - BX24 - How-To -

In quest'articolo vedremo come, utilizzando il modulo UARTDNG101, è semplice e veloce implementare una connessione seriale wireless Bluetooth, tra un BasicX-24 ad un dispositivo dotato d'interfaccia Bluetooth, come ad esempio: un PC, un palmare o uno smart phone.

Il Bluetooth insieme all Wi-Fi è una tecnologia di tipo wireless in grado di far comunicare tra loro più dispositivi senza l'ausilio di cavi. Mentre la prima è orientata principalmente al mondo networking, il Bluetooth si sta diffondendo sempre di più nella comunicazione tra piccoli elettrodomestici di vario genere e categoria: dai PC ai palmari ai telefonini fino a alla domotica.

Il modulo UARTDNG101, come visibile dalla foto, è composto da un piastrino di ridotte dimensioni (44x33 mm) su cui alloggia tutta l'elettronica necessaria per la gestione della comunicazione Bluetooth.

In pratica, quello che andremo a realizzare è un semplice dispositivo con quattro linee d'uscita collegate, a scopo didattico, ad altrettanti LED, controllabile attraverso una connessone seriale incapsulata in una comunicazione radio Bluetooth, da un PC o un cellulare dotati d'interfaccia Bluetooth.

Il circuito elettrico da realizzare è molto semplice, oltre ai due moduli, richiede soltanto uno stabilizzatore di tensione e sei LED con relativi resistori per la limtazione di corrente.
I LED D4 e D5 hanno emtrambe la funzione di indicare lo stato della connessione Bluetooth.Mentre D5 lampeggia quando non connesso e resta fisso in presenza di connessione, D4 resta spento e si attiva soltanto a connessione avvenuta. La linea 28 del UARTDNG101 oltre a pilotare il transistor del LED D4, è collegata alla linea PC7 del BX 24, in questo modo è possibile, da firmware, sapere se è attiva una connessione Bluetooth e leggere o inviare valori sulla linea seriale.
Di seguito è riportato lo schema elettrico:

Alimentando il circuito dovremmo vedere lampeggiare il LED D5. A questo punto possiamo caricare, attraverso il tool di sviluppo NetMedia (scaricabile gratuitamente dal sito web http://www.basicx.com), il firmware in basic contenuto nel file Bluetooth&BX24.zip e riportato di seguito:

Option Explicit

Public Const InputBufferSize As Integer = 50
Public InputBuffer(1 To InputBufferSize) As Byte
Public Const OutputBufferSize As Integer = 50
Public OuputBuffer(1 To OutputBufferSize) As Byte
'-----------------------------------------------
'Funzioni per la comunicazione con la seriale
'-----------------------------------------------
'FUNZIONE PER INVIARE UNA STRINGA
Public Sub PutStr( _
   ByVal Tx As String)
   Call PutQueueStr(OuputBuffer, Tx)
End Sub
'FUNZIONE PER RICEVERE UN BYTE
Public Sub GetByte( _
    ByRef Value As Byte, _
    ByRef Success As Boolean)
    Success = StatusQueue(InputBuffer)
    If (Success) Then
        Call GetQueue(InputBuffer, Value, 1)
    Else
        Value = 0
    End If
End Sub
'FUNZIONE PER RICEVERE UNA STRINGA
Public Function GetStr( _
    ByVal BufferSize As Integer, _
    ByVal Delay_read As Single) As String
    Dim Key As Byte
    Dim Success As Boolean
    Dim I As Integer
    Dim Value As string
    Call Delay(Delay_read)
    Value=""
    For I = 1 To BufferSize
        Call GetByte(Key, Success)
        if(Success) then
     Value=Value & chr(Key) 
        End if
    Next 
    GetStr =  Value
End Function
'FUNZIONE CHE CONVERTE DA BYTE AI PIN
Sub Put2Bits (ByVal bByte As Byte, _
 ByVal MSBbit As Byte)
  Dim bMask As Byte
  Dim bCount As Byte
  bMask = bx00001000
  For bCount = 0 to 3 'Put most significant bits first
    Call PutPin(MSBbit + bCount, ((bByte And bMask)Mask))
    bMask = bMask 2
  Next
End Sub
'FUNZIONE PER LA CONVERSIONE STRINGA BYTE
Function Str2byte (ByVal stringa As string) As byte
  Dim TmpSng As Single
  Dim Success As Boolean 
  Call ValueS(stringa, TmpSng, Success)
  Str2byte = Cbyte(TmpSng) 
End Function
'-----------------------------------------------
'FINE Funzioni per la comunicazione con la seriale
'-----------------------------------------------
'---------------------------------------------------
'PROGRAMMA PRINCIPALE
'---------------------------------------------------
Public Sub Main()
    'Parametri della seriale
    Const PortNumber As Byte = 3  
    Const TxPin As Byte = 20
    Const RxPin As Byte = 19
    Const BaudRate As Long = 9600
    'Varie
    Const LED_RED As Byte = 25
    Const LED_CONNECT As Byte = 26
    Const DELAY_SEND As single  = 0.1
    'VARIABILI
    Dim i as byte
    Dim buffer As String
    Dim tmpInt as integer
    Dim cmd As String * 1
    Dim line as String * 1
    Dim state as string * 1
    Dim line_state(4) as byte
    Dim tmpByte as byte
    dim enabled as boolean
    'CONFIGURA LA SERIALE SW
    Call OpenQueue(InputBuffer, InputBufferSize)
    Call OpenQueue(OuputBuffer, OutputBufferSize)
    Call DefineCom3(RxPin, TxPin, bx0000_1000) 'Setta la seriale come inverted, no parity, 8 bits.   
    Call OpenCom(PortNumber, BaudRate, InputBuffer, OuputBuffer)
    Debug.Print "Bluetooth"
    Debug.Print "Dev By DeSantiX.iT"
    line_state(1) = 0
    line_state(2) = 0
    line_state(3) = 0
    line_state(4) = 0
    'LOOP
    Do
      Call PutPin(LED_RED, 0)
      If(GetPin(5)=1) Then
        Call PutPin(LED_CONNECT, 0)
        buffer = ""
        buffer = GetStr(InputBufferSize, 0.01)
        tmpInt = Len(buffer)
        If(tmpInt>2) then
           debug.print buffer
           cmd = mid(buffer,1,1)
           line = mid(buffer,2,1)
           state = mid(buffer,3,1)
           If ((asc(cmd) = asc("L")) and (Str2byte(line) >=0) And ((Str2byte(state) = 1) Or (Str2byte(state) = 0))) then
             line_state(Str2byte(line))=Str2byte(state)
             Call PutPin((Str2byte(line) + 9), Str2byte(state))
           End if
           tmpByte =0
           For i=1 to 4  
              tmpByte =  tmpByte + (line_state(i) * cbyte(pow(2.0, csng(i-1))) )     
           Next   
           If(tmpByte > 9)then
              buffer =  cstr(tmpByte)
           Else
              buffer = "0" & cstr(tmpByte)
           End if 
           call PutStr(buffer)
        End if
    Else 
      Call PutPin(LED_CONNECT, 1)
    End if
    Call Delay(DELAY_SEND)
    Call PutPin(LED_RED, 1)
    Call Delay(0.1)
  Loop
End Sub

Terminato il download del firmware, passiamo ad analizzare come avvine la connessione Bluetooth con un PC.
Requisito fondamentale, che quest'ultimo sia dotato di un interfaccia Bluetooth, in caso contraio è possibile, con poca spesa, implementarne una di tipo USB.

Al termine dell'installazione del device, se è statanecessaria, cliccando sull'icona presente nella task bar di Windows:

Si aprirà la finestra "Risorse di rete Bluetooth" con la quale, cliccando su "Cerca periferiche nell'intervallo", sarà possibile cercare i dispositivi presenti nelle vicinanze del nostro PC, in un raggio di 10 metri circa.

Una volta individuato il dispositivo con nome "eikon-dev" assegnato di default al modulo UARTDNG101 (per modificare i parametri del modulo è necessario usare la DEVBOARDBT), cliccandoci sopra con il tasto sinisto del mouse vengono mostati i servizi forniti dal device remoto. Scrutando tra quelli forniti dal modulo UARTDNG101 troviamo soltanto il servizio SPP (Serial Port Profile) slave:

Cliccando con il tasto destro del mouse, apparirà un menù con evidenziata la voce "Connetti a porta seriale Bluetooth". Cliccando su quest'ultima, verrà aviata la procedura d'autenticazione della connessione Bluetooth detta PERING. Sull'iconcina, presente sulla try bar, apparirà una nuvoletta che ci richiederà d'inserire il codice PIN che dovrà combaciare con quello fornito dal dispositivo Slave. Nel nostro caso il modulo UARTDNG101 è in grado di ritornare il PIN settato di default 1234. Valore quest'ultimo che andrà digitato nella finesta di Windows:

A PERING terminato, ci apparirà un'altra finestra in cui viene comunicata la porta COM assegnata dal sistema alla connessione Bluetooth. Da questo momento tutto quello che trasmetteremo sulla porta seriale, lo ritroveremo sulla linea RX del modulo UARTDNG101 e viceversa.

Il software client d'esempio, scritto in Visual Basic, i cui sorgenti sono presenti nel file Bluetooth&BX24.zip scaricabile da quest'articolo, usa l'ormai famoso MSCOMM.
Infatti, come precedentemente detto, una volta instaurata la connessione Bluetooth possiamo lavorare come se avessimo una connessione fisica tra i due dispositivi.

Ad ogni pressione di uno dei tasti ON - OFF viene aperta una connessione seriale (es: COM6) ed inviata una stringa di comando al modulo BX con la seguente sintassi:

L[linea 0 - 3][stato 0 - 1]

Ad esempio per accendere il LED commegato al PIN 9 del Basicx dovremo inviare, sulla seriale Bluetooth, la stringa:

L01

A comando eseguito, il BX24 ritorna lo stato attuale di tutte le linee.

Es:
01 (solo il primo led acceso)
03 (led 1 e 2 accesi)

Ricevuta la risposta dal micro, il software in VB aggiorna lo stato dei led virtuali presenti sul form e chiude la connessione seriale, rilasciando così la risorsa radio del modulo UARTDNG101 che si mette in attesa di una nuova connessione Bluetooth.

L'esempio appena visto è una dimostrazione paratica di quanto è semplice implementare uno stack Bluetooth usando l'UARTDNG101, ed effettuare una connessione seriale tra un microprocessore ed un computer senza l'ausilio del solito cavo. L'uso di una tecnologia wireless Bluetooth permette di realizzare apparati con i quali è possibile comunicare, ad esempio per settare impostazione o parametri di configurazione, senza dover effettuare connessioni fisiche e senza aprire il contenitore dove questi alloggiano.

Sorgente d'esempio per BasicX24 e Visual Basic Bluetooth&BX24.zip
Datasheet modulo UARTDNG101
Datasheet DEVBOARD

Segnala questo articolo: 



Parole chiave: - BlueTooth - BX24 - How-To -

Data di pubblicazione: 24-04-2005Hits: 53519
I marchi citati sono propriet� dei titolari dei relativi diritti. Le caratteristiche tecniche e i prezzi riportati sono indicativi e soggetti a variazioni senza preavviso. Le foto non hanno valore contrattuale. Nonostante accurate verifiche, il presente documento pu� contenere prezzi o specifiche errati. Area SX si scusa in anticipo e si impegna ad evitare tali imprecisioni.

 Area SX store
In questa sezione puoi ordinare direttamente i prodotti descritti in questo articolo
UARTDNG200;BX24;BX24-BUNDLE5;BX35;BXDB;BXDS;UARTDNG101;DEVBOARDBT;BX24P;LCD+20X4;LCD16X2S;LCDX;SX18-BX24;SX18-BX24-Bundle
Tutti i prezzi indicati sono espressi in Euro con IVA e spese di trasporto escluse. I prezzi si riferiscono al singolo pezzo
DescrizioneCodicePrezzo
Per maggiori informazioniMicrocontrollore BasicX BX 24
Il BX24P è un potente microcontrollore programmabile in Basic, un linguaggio molto simile al Visual Basic. Dotato di 16 linee di I/O di cui 8 configurabili come ingressi AD a 10bit, multitasking, gestione matematica in virgola mobile, orologio di sistema, ecc.In ridottissime dimensioni il BX24P racchiude un completo sistema ideale per sviluppare velocemente le proprie applicazioni.
Il nuovo microprocessore BasicX 24P oltre a supportare un range di temerature industriale(da -40°C a +85°C), è nettamente più performate, infatti rispetto al modello precedente è ben il 29% più veloce e arriva ad eseguire fino a 83.000 istruzioni al secondo.


Prodotto compliant RoHs
BX24
Chiamare lo 06.99.33.02.57 per informazioni e prezzo del prodotto

Questo prodotto richiede un contatto diretto

Chiamare lo (+39)06.99.33.02.57 oppure inviare una email ad [email protected] per ulteriori informazioni
Per maggiori informazioniPer maggiori informazioni
 

Rivenditori Social Contatti Condizioni
Area SX s.r.l
Via Stefano Longanesi 25
00146 Roma

Tel: +39.06.99.33.02.57
Fax: +39.06.62.20.27.85
P.IVA 06491151004
Condizioni di vendita
Procedura di rientro in garanzia
Condizioni per i rivenditori