Arduino e comunicazione Bluetooth

Ciao a tutti,

sto lavorando su un progetto a scuola e vorrei poter effettuare una connessione Bluetooth tra un Arduino ed un PC o Cellulare. I ho già ordinato il BTM-182, che vi linko qui sotto:

http://www.sparkfun.com/products/9913

Ho cercato molto su quest'antenna ma non ho trovato niente sulla comunicazione seriale di Arduino. Mi spiego meglio vorrei poter comunicare da PC o Cellulare con Arduino usando come tramite quest'antenna BT. Vorrei sapere se è possibile usare le [u]funzioni standard della Seriale[/u] di Arduino oppure devo usare una libreria esterna come [u]NewSoftSerial[/u]?

Se conoscete dei modi migliori per effettuare la connessione/comunicazione, postateli per piacere, non intendo codice ma idee o librerie. Vi ringrazio in anticipo per la vostra attenzione e per le risposte

nick_bg

Ciao, ti consiglio di utilizzare la NewSoftSerial. Questo ti permette inoltre di uploadare sketch senza dover sconnettere il modulo e/o di usare la seriale standard per debug.

Scusami se divento invadente pitusso, ma tu hai mai usato il bluetooth? Così magari quando arriva il modulo che ho ordinato ti posso chiedere delle dritte su come fare! :-)

Ciao, l'ho già usato, anche se quelli che mi son procurato son modulini a (molto) basso costo e più basilari: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1284987911/0 se riesco a darti una mano, ben venga.

Ciao Pitusso, il modulo è arrivato.

Volevo chiederti se tu hai qualcosa che funziona per il modulo. Io ho provato a usare il codice che si trova nel segunte sito:

http://www.jloganolson.com/?p=490

il codice e la libreria funzionano, almeno nella fase di compilazione non danno errori. Il fatto però è che una volta compilato e lanciato il codice sulla schada Arduino con il modulo attaccato come nel sito non va, cioè se cerco di connettermi con una chiavetta bluetooth dal pc, quest’ultimo non vede il modulo. Quindi volevo chiederti come avevi fatto a poter comunicare tra il modulo e il PC, oppure comunque con qualsiasi altro dispositivo usando sempre l’arduino e il modulo BTM-182.

Grazie in anticipo della tua risposta.

:slight_smile:

Ciao Nick_BG, il modulo (almeno nel mio caso) è visibile da pc (os Debian) e da smartphone (Android e Nokia). La visibilità c'è anche a modulo solo alimentato - ovvero: mi basta alimentarlo, perchè sia visibile. Alla prima connessione, chiede però un pin (1234 o 0000) per il paring.

Quindi, se non vede il modulo del tutto, cercherei di capire se funziona o meno. Esiste un led di controllo ? Se il datasheet sul sito è qeullo giusto, dovresti averne addirittura 3 (link , data, power)!

In quanto al codice: quello specifico che mi hai postato funziona as-is (ho solo dovuto sistemare i doppi apici), ma per iniziare poi provare ad utilizzare anche la Serial (invece della NewSoftSerial) - sempre che prima ti funzioni il modulo!

che progettino vuoi realizzare?

E' un "server" bluetooth che esegue dei calcoli e dopo invia i risultati al computer. Inizialmente vorrei fare questo e dopo svilupparlo ulterirmente. Solo che non riesco a stabilire una connessione fra un Dongle BT che è connesso sul PC ed un modulo BTM-182 che mi è appena arrvitato. Ho visto questo esempio ma non va niente, è il segeunte se ti interessa :

http://www.jloganolson.com/?p=490

Se sei interessato benvenga dell'aiuto anche da parte tua!

Grazie!

[u]PER PITUSSO[/u]

I led non si accendono, ho provato a mettere al 3.3 V di arduino il piedino del modulo e poi la massa normale. Probabilmente non funziona bene...non saprei, lunedì lo provo in laboratorio e poi ti faccio sapere. Pitusso un'altra domanda, la connessione dei piedini del modulo all'alimentazione e al resto è giusta?

GND -> PIN 15 3.3 V -> PIN 14


TX -> PIN 9 RX -> PIN 10 (o viceversa nel caso della comunicazione)

Ciao Nick_BG, innanzitutto guardando il datasheet, si vede che il picco di consumo è di 59 mA; attenzione che 3,3 v di Arduino (della 2009 e sulla carta anche della Uno) è di 50 mA...

Detto questo - si parla di picco, per accenderlo non dovresti avere cmq problemi - i collegamenti che riporti son corretti:

GND -> PIN 15 3.3 V -> PIN 14


TX -> PIN 9 RX -> PIN 10 (o viceversa nel caso della comunicazione)

si, il pin 9 (TX del modulo) andrà collegato al RX di Arduino (o analogo RX di SoftSerial), il pin 10 (RX del modulo) andrà collegato al TX di Arduino (o analogo TX di SoftSerial).

Sempre che il datasheet nel sito sia quello del tuo modulino. Io ti consiglio caldamente di attaccare almeno un led di controllo: pin 28: power status led; presumo vada collegato all'anodo (+) del led. Il catodo del led va collegato al GND (come nel mio modulino). Gli altri led li puoi attaccare al pin 22 e 24, ma senza connessione o scambio dati, a parte il lampeggio all'avvio, non si accenderanno.

Considera che una volta acceso, se alimentato, dovrebbe già essere visibile a pc e smatphone. Puoi eventualmente verificare con un'alimentazione esterna (se hai ali ad hoc, o con regolatore di tensione tipo LP2950).

Controlla con un tester anche eventuali saldature sul modulino...

Puoi postare eventualmente una foto del modulino e delle connessioni con Arduino? Magari c'è qualcosa che non ci siamo detti ma che potrebbe saltare agli occhi..

Il codice che ho provato fino ad adesso è quello che ho trovato con la NSFW (NewSoftware), cioè il seguente:

#include <NewSoftSerial.h>

    #define rxPin 2
    #define txPin 3

    NewSoftSerial BlueTooth(rxPin,txPin);

    void setup()
    {
    BlueTooth.begin(19200); //open serial software

    pinMode(rxPin, INPUT);
    pinMode(txPin, OUTPUT);

    BlueTooth.print("BLAM"); //Communication returns OK
    delay(1000);
    }

    void loop()
    {
    BlueTooth.print("yahoo");
    delay(1000);
    }

I led che mi hai consigliato li saldo in laboratorio. Le saldature vanno bene invece, intendo quelle dei pin dei fili che vanno ad arduino, le ho già controllate con il tester.

il modulo bt è il seguente:


Nell’immagine ho aggiunto i led che mi hai consigliato tu.

Volevo chiederti cosa fosse il punto 1, quello cerchiato. E’ un led oppure qualcos’altro?

Scusate se mi intrometto :slight_smile: sembra un condensatore comunque se è trasparente fai presto a vedere se è un led smd… fai la prova dei diodi e vedi che si accende :slight_smile:

Grazie per l'informazione, non lo sapevo che fosse un condensatore! E' sempre un piacere imparare cose nuove :)

Ho provato a mettere i led, ma non si accendevano, allora ho cercato un pò sul web e ho visto che l'alimentazione al PIN 14 va in comune con il PIN 16, quindi unendoli insieme e alimentando il dispositivo il led nel PIN 28 si accende!

http://atomsoft.wordpress.com/tag/btm-182/

Il problema ora sta nella connessione io cerco di trovarlo e di connetterlo con il Dongle BT al PC, solamente che non riesce a trovarlo. Io non ho provato ad attaccare i piedini della UART_TX e UART_RX all'Arduino, li lascio penzolare in aria, non penso questo causi dei problemi. Che ne pensi Pitusso?

Nick_BG,

Ho provato a mettere i led, ma non si accendevano, allora ho cercato un pò sul web e ho visto che l'alimentazione al PIN 14 va in comune con il PIN 16, quindi unendoli insieme e alimentando il dispositivo il led nel PIN 28 si accende

ottimo! A posteriori leggendo sul datasheet sembra avere un senso:

... pin 14 - VDD - Power - 3.3V or 1.8V Power Supply Input, Positive supply for PIO[3:0] and PIO[11:8] ... pin 16 - VDD USB - Power - 3.3V Power Supply Input for USB/SPI/PCM ports and PIO[7:4] ...

.. anche se la tua prima fonte di ispirazione (jloganolson), nel forum sparkfun, non menzionava il pin 16: http://forum.sparkfun.com/viewtopic.php?f=13&t=25920

Ora, i miei moduli son sicuramente di basso livello, ma son visibili anche solo con l'alimentazione inserita. Un'ipotesi potrebbe essere che sia in undiscoverable mode, ma di default non lo è.. se non lo hai mai usato dovrebbe avere le conf. standard...

Hai considerato anche che il BT dongle del pc potrebbe avere problemi? Hai avuto modo di verificare che funzioni (giusto per escludere le cose più semplici)?

I BT dongle funzionano, infatti ne ho due uno delle Belkin e uno dell Asus

http://www.comparestoreprices.co.uk/images/be/belkin-bluetooth-adapter.jpg

e

http://www.working-well.org/prodimages/Bluetooth_dongle_ASUS.jpg

Tra di loro funzionano, cioè io di solito li utilizzo per trasferire file ed altro, le ho usate anche per un programma in Java, una piccola chat tra due pc usando il bluetooth! Quindi funzionano a meno che hanno una configurazione che devo fare...non so...secondo te sono da configurare?

Nel caso invece fosse il modulo BTM-182 ad aveve problemi di configurazione come potrei configurarlo cioè cambiare i baudrate ed altro? I comandi li so, solo che non so come inviare questi comandi dal pc al modulo connessi via cavo. Potresti aiutarmi su questo per piacere? Grazie!!!

Nick_BG, per quel che riguarda al configurazione dei modulini, devi utilizzare i comandi AT. Dovresti trovare un approfondimento in questo thread: http://arduino.cc/forum/index.php/topic,50252.0.html

Ciao Pitusso, ho letto un pò il therad che mi hai postato e ho visto come fanno a scrivere i commandi, solo che io non riesco a leggere le risposte che mi dà il modulo sulla seriale, esiste qualche modalità di connessione del modulo per programmarlo?

Grazie!

Nick_BG, la programmazione avviene attraverso la connessione seriale.

Il non riuscire a leggere la risposta del comando AT era stato affrontato, nel thread che ti ho girato; in particolare: http://arduino.cc/forum/index.php/topic,50252.msg369603.html#msg369603

Il problema è che io ho già provato a fare il casting in CHAR dei dati ricevuti nell seriale, ma queti dati sono incomprensibili. Un ulteriore quetsione è che il mio modulo non può diventare uno slave-loopback, ma solo slave o master. Anche se riuscissi comunque a trasformarlo in slave, come dice che è di default, non ne ho la certezza che il comando sia andato a buon fine. I comandi elencati nella mia scheda di comandi AT è la seguente:

http://www.sparkfun.com/datasheets/Wireless/Bluetooth/SPP%20AT%20command%20set.pdf

per caso questi comandi sono gli stessi che hai usato anche tu per il tuo modulo?