Ciao a tutti oggi ho deciso di creare un piccolo progetto con l'utilizzo del micro controllore Atmega38p.
Io prima di iniziare a far tutto ho testato il mio rn-42 dispositivo bluetooth su un Arduino con la comunicazione sulla porta seriale 0 e 1.
Oggi pero mi sono dedicato a costruirlo io e ho integrato al mio atmega328p il dispostovo rn-42 collegamenti perfetti ma non riesco a farlo comunicare io invio dei dati tramite telefono lui dovrebbe inviarmeli al Arduino e poi lavorarli ma pero tutto ciò non avviene perché sul Arduino funziona e sul atmega328p non funziona?
vi posto il link dello schema: "in più a questo schema io ho il ponticello sulla porta UART del rn-42.
Premetto che non conosco rn-42, ma per analogia con altre apparecchiature, per capire dov'e' il problema faccio un ponte tra rx e tx.
Nel momento che invi un carattere dal telfono al dispositivo, dovresti ritrovartelo pari pari in ricezione, ammesso che il telefono preveda la possibilità di monitorare la ricezione.
Se tutto funziona, allora il problema si sposta su Arduino.
Grazie mille per la risposta ok.
Adesso faccio le prove da te dette ma secondo me il problema e sul atmega328, ma non so perché sul Arduino funziona e sul atmega collegato sui pin 0e1 non funziona, anche sul Arduino il collegamento è sui pin 0 e 1 ma qui funziona.
Non uso il software serial per aggiunta di una porta seriale dato che il caricamento del software lo faccio sul arduino e successivamente, scollego l'atmega 328 e la collego sullo zoccolo da me creato.
Ho visto molte volte problemi con i moduli bluetooth (in generale) funzionati a 3.3v collegati alla seriale di Arduino e ... spesso non vanno.
Mi meraviglia molto che a te andasse ... era probabilmente un puro caso ... il tuo Arduino ha qualche tolleranza in più ... ma se fai una ricerca sul forum ... se ne è parlato decine di volte !
L'unica soluzione è sempre e solo stata ... la SoftwareSerial (... normalmente, per ragioni di compatibilità con tutti i modelli, sui pin 10 e 11) ...
No, devi cambiare pins ... con l'ATmega328P non hai limitazioni, ma se vuoi fare una cosa più generica, come descritto QUI ...
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
Not all pins on the Leonardo support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
... per questo ti dicevo che i più "gettonati" sono il 10 e 11
ma non so perché sul Arduino funziona e sul atmega collegato sui pin 0e1 non funziona, anche sul Arduino il collegamento è sui pin 0 e 1 ma qui funziona
dato che la piedinatura del 328 e' diversa da quella che poi diventa la piedinatura di arduino, non e' che c'e' un errore di montaggio sullo standalone ?
daddi:
Non uso Arduino, sul Arduino lo solo testata.
Apro il baundrate a 9600 e sul Hardware del rn-42 l'ho settato a 9600.
Ma apri il serial monitor sul PC o la seriale su Arduino?
Perché se collegi il bluetooth ai pin 0 e 1 su Arduino e apri il serial monitor hai collegato direttamente il bluetooth al PC senza passare da Arduino, quindi non stai verificando se esso funziona.
Devi usare una seriale software e fare ponte tra le 2 seriali.
Cosi funziona fino al void setup sul mio terminale del telefono in connessione vedo fino a Hello, world? ma poi non entra in serial.available, o non invia i dati non si capisce.
Guarda ... questo è il programma, ultra collaudato, che uso normalmente per fare i test con i moduli bluetooth ...
... prova a vedere se ti funziona ... se non va hai problemi HW.
#include <SoftwareSerial.h>
#define BT_RX 10 // PIN to receive from bluetooth
#define BT_TX 11 // PIN TO transmit to bluetooth
SoftwareSerial btSerial(BT_RX, BT_TX);
void setup()
{
delay (2000);
//
Serial.begin(9600); // Initialize USB Serial port
//
btSerial.begin(9600); // Initialize Bluetooth SoftwareSerial port for selected data speed
//
Serial.println("--- Ports ready ---");
Serial.println("");
//
}
void loop()
{
if (btSerial.available() > 0) Serial.write(btSerial.read());
if (Serial.available() > 0) btSerial.write(Serial.read());
}
Tutto quello che scrivi sulla Seriale viene trasmesso dal bluetooth e tutto quello che ricevi dal bluetooth viene trasmesso sulla seriale ..
Guglielmo
Edit : Naturalmente TX bluetooth ---> RX SoftwareSerial, RX bluetooth <--- TX SoftwareSerial
daddi, nel tuo sketch devi mettere le parentesi graffe all'IF all'interno del loop, perché il secondo comando viene sempre eseguito, non è sotto l'IF.
L'indentazione è errata.