buona sera,
vorrei trasmettere e ricevere dei dati con due moduli hc-12. ho usato questi esempi:
ho usato due arduino uno originali.
ho collegato come da disegno, ma i moduli sembrano proprio non funzionare!!
allora ne ho comprati altri due da un altro venditore "tancredi".
ma tutto uguale!!
collegando direttamente i pin TX-RX dei due arduino (senza i moduli hc12) la trasmissione funziona.
come posso provare il funzionamento dei singoli moduli? possibile che non ne funziona neanche uno?? sembrano non rispondere neanche a :
HC12.write("AT+DEFAULT");
delay(1000);
while (HC12.available() > 0) {
Serial.write(HC12.read());
}
non dovrebbe rispondere qualcosa?
grazie in anticipo per le risposte.
come ti dice nid69ita, segui qualche altra guida, e dimentica quella da te linkata, ma proprio dimenticala
quello che la ha scritta non aveva le idee ben chiare: tenta di dare comandi AT "senza" collegare il pin di SET
Esattamente, che schema hai usato? ma non dirci quello che volevi fare, dicci quello che hai fatto!
tieni comunque conto che di quei moduli ne ho usati un badile pieno e tutti i problemi si possono descrivere con una riga vuota
grazie per le risposte. ho letto la guida e la differenza fondamentale a parte i pin usati, accenna a l'utilizzo dei due moduli con una distanza minima di 1,5metri !! io li ho messi a 10 cm...forse sarà quello.. comunque nel pomeriggio seguo la guida passo passo e vi faccio sapere.
buona giornata
eccomi qui.
ho seguito la guida che mi avete indicato alla lettera. ho ricontrollato anche tutte le saldature e i collegamenti.
due pc, su ognuno ho collegato un arduino uno (alimentati esternamente)con il modulo hc12 ed il relativo condensatore (da 100uF).alla distanza di due metri, caricato il codice e aperto il monitor seriale, ho provato ad inviare qualcosa ma NULLA!!!
non riesco a capire dove sbaglio. come faccio ad inviare comandi diretti AT per vedere il funzionamento del singolo modulo?
grazie e buona serata
Primo, non ci siamo, ti ho chiesto i collegamneti, non una generica rassicurazione che hai seguito la guida
se tu avessi seguito la guida adesso andrebbe, ergo da qualche parte NON hai seguito la guida
dove? lo sai tu, e non ce lo dici, perchè non parli dei collegamenti
secondo, se vuoi dare dei comandi AT basta portare basso il pin SET del modulo HC05
se leggi il datasheet trovi che se porti basso (metti a massa) il pin SET a modulo acceso va in modo AT con i parametri di comunicazione attualmente impostati
se invece prima metti a massa il pin SET e poi dai corrente al modulo va in modo AT con dei parametri di default, che trovi nel datasheet
quindi adesso che si fa?
linki esattamente quale guida hai seguito, ci dici che collegamenti hai fatto e come, metti i codici dei due arduino
se fai questo si va avanti, altrimenti no
ok!!
ricomincio.
la guida che ho seguito è questa:
i collegamenti dei due moduli con arduino uno:
Hc-12 ----- arduino
Vcc 5V
GND GND
RXD pin 4
TXD pin 5
Set pin 6
tra il VCC e GND del modulo ho collegato un condensatore elettrolitico da 100uF 25v , positivo su Vcc e negativo su GND.
ho collegato due alimentatori esterni da 12V 1A per ciascun arduino.
su due diversi computer con cavo usb ho caricato lo stesso codice:
#include <SoftwareSerial.h>
const byte HC12RxdPin = 4; // Recieve Pin on HC12
const byte HC12TxdPin = 5; // Transmit Pin on HC12
SoftwareSerial HC12(HC12TxdPin,HC12RxdPin); // Create Software Serial Port
void setup() {
Serial.begin(9600); // Open serial port to computer
HC12.begin(9600); // Open serial port to HC12
}
void loop() {
if(HC12.available()){ // If Arduino's HC12 rx buffer has data
Serial.write(HC12.read()); // Send the data to the computer
}
if(Serial.available()){ // If Arduino's computer rx buffer has data
HC12.write(Serial.read()); // Send that data to serial
}
}
aperto i corrispettivi monitor seriale ed ho provato ad inviare singole lettere e numeri, ma non ricevo nulla su arduino opposto..
ho anche provato il tutto scollegando il pin Set.
i due moduli si trovano ad una distanza di circa 1,5mt.
se volete invio qualche foto.
adesso provo ad inviare comandi AT.
grazie
Da come lo descrivi sembra corretto
Ora si tratta di capire il problema...
Ora prova che costa poco è girate tra loro tx ed rx su tutti e due le macchine (sempre tenete lo stesso cablaggio)
se ha le gambe va, altrimenti rimetto a posto e proviamo in at mode
Per passare in at
Spegni tutto, metti at a massa, pin gnd di arduino
Accendi e prova qualche comando at
Riferiscono al datasheet, at è maiuscolo
ho invertito i due pin TX e RX su tutte e due le macchine ma nulla.
ho risistemato messo il set a massa e inviato comandi AT e mi ha risposto!! su entrambi le macchine.
ok, devi settare i modi di conunicazione dei due modulini HC12 nella stessa maniera
facile che sono su canali differenti o con differenti FUmode, o magari differenti velocità o simili
credo, ma controlla che sia così sul DS, che esista il comando AT+DEFAULT, che mette ai parametri di default i moduli
NON toccare più i cablaggi tx e Rx, che vanno bene così
è solo un problema di configurazione dei moduli, coi comandi AT metti a posto.....
esco a cena, spero di NON tornare (capiscimi, è san valentino), casomai a dopo
ok ho inviati AT*DEFAULT e ha risposto OK+DEFAULT su entrambi i moduli, staccato il pin SET dalla massa e resettato ma nulla!! ho anche fatto la prova mettendo il set sul pin 6 di arduino e mandandolo in HIGH ma nulla..
buona serata
Ma non erano 4 i moduli che avevi?
Vabbe comunque, rimangono poche prove
Allontanati di alcuni metri. Non si sa mai...
Come sono le antenne? Se ricordo bene te le danno da saldare, come anche i pin di ingresso
casomai fai una foto, che cerchiamo di capire....
buona sera.
i moduli sono 4 ma con i comandi AT ne ho provati solo due quando ho visto che funzionavano non li ho piu toccati. le antenne come i pin li ho saldati io. le antenne sono perpendicolari con i moduli e parallele tra loro ad una distanza di circa due metri. ora faccio un paio di foto e le posto.
VI aggiorno!! Ho utilizzato un nuovo arduino (commerciale) per un modulo e in questo momento non avendo a disposizione il secondo computer ho modificato il codice trasmettendo una Sting in continuazione ed è arrivato il miracolo!! il secondo arduino collegato al computer riceve questa String !! adesso non so se dipende da arduino il computer o altro, faro ulteriori prove e vi faccio sapere.
il codice che ho modificato solo sul un arduino è questo:
#include <SoftwareSerial.h>
const byte HC12RxdPin = 4; // Recieve Pin on HC12
const byte HC12TxdPin = 5; // Transmit Pin on HC12
const byte setPin = 6;
String valoreString = "1 - prova invio String.";
int valoreInt = 12345;
SoftwareSerial HC12(HC12TxdPin, HC12RxdPin); // Create Software Serial Port
void setup() {
Serial.begin(9600); // Open serial port to computer
HC12.begin(9600); // Open serial port to HC12
pinMode(setPin, OUTPUT); // imposto il pin collegato al SET di HC12 come OUPUT
digitalWrite(setPin, HIGH);
}
void loop() {
if (HC12.available()) { // If Arduino's HC12 rx buffer has data
Serial.write(HC12.read()); // Send the data to the computer
}
if (Serial.available()) { // If Arduino's computer rx buffer has data
HC12.write(Serial.read()); // Send that data to serial
}
HC12.println(valoreString);
delay (3000);
HC12.write("2 - prova invio write.");
delay (3000);
HC12.println(valoreInt);
delay (3000);
}
Che strano....
devi guardarci dentro nelle impostazioni del monitor seriale o cose simili, perchè se riceve quando arduino trasmette di suo, significa che:
arduino 1 trasmette,
arduino 2 riceve,
PC su arduino 2 riceve da seriale
manca quindi PC su arduino 1 trasmette su seriale...................