Go Down

Topic: Collegare Arduino al pc tramite bluetooth (Read 491 times) previous topic - next topic

simone91

Ciao a tutti,

spiego brevemente il mio progetto:

Vorre leggere i valori in ingresso di un potenziometro collegato ad arduino, via bluetooth.

Ho acquistato un modulo Bluetooth SH-M08 4.0 e collegato alla scheda.

Il modulo lo trovo da pc ma come faccio per vedere i dati in ingresso senza collegarmi alla porta USB ed utilizzando appunto il bluetooth?

Grazie in anticipo per l' aiuto!

Simone

docdoc

Hai spiegato troppo brevemente... ;)

Arduino quale? "collegato alla scheda" ossia come lo hai collegato fisicamente?
Quale programma (sketch) stai usando su Arduino? Lo puoi postare?
Dici "il modulo lo trovo da pc" quindi intendi che lo vedi e riesci a fare il pairing, ma cosa intendi con "come faccio per vedere i dati in ingresso senza collegarmi alla porta USB ed utilizzando appunto il bluetooth"? Se il PC lo hai connesso via Bluetooth devi avere "qualcosa" sul PC che fa la connessione e manda/riceve i dati previsti.

Spiega meglio, posta il programma attuale e cosa esattamente fai e cosa vuoi fare, così vediamo.
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

zoomx

Devi usare il bluetooth come una seriale che deve essere tra i servizi esposti che ti ritrovi sul PC una volta collegato al modulo.

Poi spari i valori sulla seriale di Arduino che è collegata al modulo. Puoi usare una seriale software.

simone91

#3
Jan 17, 2019, 11:11 pm Last Edit: Jan 18, 2019, 01:26 pm by simone91
Ciao a tutti allora utilizzo una scheda Arduino/Genuino UNO ed il programma che ho messo insieme è questo (non so se sia corretto) :

Code: [Select]
#include <SoftwareSerial.h>
#define BT_TX_PIN 12
#define BT_RX_PIN 11
int encoderPin1 = 2;
int encoderPin2 = 3;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;

int lastMSB = 0;
int lastLSB = 0;

SoftwareSerial bt = SoftwareSerial (BT_RX_PIN, BT_TX_PIN) ;

void setup() {
 // put your setup code here, to run once:
pinMode (BT_RX_PIN, INPUT) ;
pinMode (BT_RX_PIN, OUTPUT ) ;

 Serial.begin(9600);

 bt.begin(9600);

 Serial.begin (9600);

 pinMode(encoderPin1, INPUT_PULLUP);
 pinMode(encoderPin2, INPUT_PULLUP);

 attachInterrupt(0, updateEncoder, CHANGE);
 attachInterrupt(1, updateEncoder, CHANGE);

 
}

void loop() {
 // put your main code here, to run repeatedly:
while (Serial.available()>0)
bt.print (Serial.read() );


while (bt.available() > 0)
 Serial.println(bt.read());
  Serial.println(encoderValue);
}

void updateEncoder(){
 int MSB = digitalRead(encoderPin1); //MSB = most significant bit
 int LSB = digitalRead(encoderPin2); //LSB = least significant bit

 int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
 int sum  = (lastEncoded << 2) | encoded; //adding it to the previous encoded value

 if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
 if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --;

 lastEncoded = encoded;
}


Praticamente il mio problema è che anzichè utilizzare la com3 come connessione seriale vorrei utilzzare il bluetooth e vedere i valori sul mio monitor seriale di Arduino.

Da Pc ho attivato la connessione bluetooth, vedo il mio dispositivo (SH-M08) collegato ad arduino e mi sono "Associato" però da "strumenti" mi da come connessione possibile solo la COM3.

Spero di essermi spiegato sufficentemente bene anche perchè ammetto di non essere ferratissimo in quest' ambito!

Simone

docdoc

Ok (ma per favore sistema il codice, per regolamento devi metterlo tra i tag "code" che trovi andando in modify quindi selezioni il codice e poi premi il pulsantino in alto a sinistra "</>") ora è un poco più chiaro.
Il problema non è Arduino né il modulo. Se tu da PC ti connetti ad un device BT come pensi di poter comunicare con quel device senza usare nessun programma?
Cerca (ed installa) un programma tipo "Bluetooth Serial Terminal" e potrai gestire la tua connessione, e vedere su terminale ciò che Arduino manda sul BT.
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

simone91

Ok grazie mille! Era una cosa basilare in effetti!! A saperlo...

docdoc

#6
Jan 18, 2019, 01:24 pm Last Edit: Jan 18, 2019, 01:25 pm by docdoc
Prego. ma ora MODIFICA il tuo post #3 per conformità al regolamento.

Devi cliccare su "More..." che vedi sotto al post, poi "Modify", seleziona tutto e solo il codice del programma e poi clicca sul pulsante "</>", quindi salva.

Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

simone91

Ok, ecco fatto! Scusa per l' errore e grazie per la dritta!

simone91

Ho scaricato il programma ma non mi trova il bluetooth... Non riesco a capire il perchè!
Per caso devo prima configurare il mio dispositivo sh-m08 in qualche modo?

docdoc

Non credo che ci sia nulla di più da configurare ma non avendo quel modulo (io ho sempre usato solo HC05) non so dirti. Se hai un qualunque programma di esempio con il tuo SH-M08 perché non provi a caricarlo e vedere? Un esempio che lo mette in attesa e una volta connesso ti manda su seriale i caratteri ricevuti da bluetooth penso ci sia...
Io a suo tempo con il HC05 avevo fatto questo come test, se riceve "A" accende il LED, con "a" lo spegne (i test li feci con una piccola app su cellulare):

Code: [Select]
#include <SoftwareSerial.h>
/*
Collegare il modulo BT:
TXD <--> Pin 9 (Rx)
RXD <--> Pin 8 (Tx)
VCC <--> 5V
GND <--> GND

Un LED e resistenza tra massa e positivo e pin 13
*/
#define LED 13
SoftwareSerial HC05(8, 9); // TX, RX

void setup ()
{
  Serial.begin(115200);
  HC05.begin(9600);
  pinMode (LED, OUTPUT);
  Serial.println("INIT");
}
void loop ()
{
  if ( HC05.available() ) {
    char c = HC05.read();
    Serial.print(c);
    Serial.println(" ricevuto");
    if (c == 'A') {
      digitalWrite(LED, HIGH);
      Serial.println("ON");
    }
    if (c == 'a') {
      digitalWrite(LED, LOW);
      Serial.println("OFF");
    }
    delay(100);
  }
}


Ma non avevi detto che il bluetooth di Arduino da PC lo vedevi e lo avevi anche accoppiato? Perché ora dici che non lo trova? E hai quindi caricato quel programma DOPO aver fatto queste cose (ossia il pairing dal PC ad Arduino)?
Ed eventualmente se usassi il cellulare intanto con una app tipo Arduino BT monitor?
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

zoomx

@simone91,
l'adattatore bluetooth sul PC dovrebbe averti creato una o più porte seriali virtuali. Di solito è una sola.
Quando i due bluetooth, quello del PC e quello di Arduino, sono accoppiati i caratteri che Arduino manda dovrebbero apparire su una di queste seriali virtuali.

simone91

Allora il pc mi vede il Bluetooth e lo associa però il programma "bluetooth serial terminal" non me lo trova... Non so se sto perdendo qualche passaggio...
Adesso ho provato a caricare il tuo programma che presumo dovrebbe andare lostesso anche sul mio modulo: sul monitor seriale adesso leggo "INIT" ma si ferma li.
Per l' app ho IOS e da cosa ho capito non ne esistono...

Per zoomx non ho capito dove trovare questa seriale bluetooth

simone91

Aggiorno dicendo che mi sembra che il pc non trovi più il bluetooth! E' possibile che si sia danneggiato?

simone91

Ho fatto una prova con una lampada bluetooth che ho e comunica percui mi viene da pensare che si sia veramente danneggiato! Non riesco a darmi altre spiegazioni

docdoc

Scusa ma se non leggo male, l'SH-M08 è BLE (non Bluetooth "liscio")...
Ma tu hai qualche programma di esempio da usare o no?
Se hai iOS vedi QUI ad esempio.
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

Go Up