Ciao a tutti , ho un problema , voglio far comunicare due Arduino con due moduli HC-12 , penso che i collegamenti siano fatti correttamente perché mi succede questo , allora attivo l Arduino trasmittente , attivo l Arduino ricevente collegato al PC cosi da poter stampare nella seriale il risultato per vedere cosa riceve , parte funziona tutto riceve correttamente , questo per 1 minuto poi si blocca e non riceve più niente,
stacco tutto riattacco e non funziona , ci riprovo la sera senza cambiare niente e riparte sempre per poco meno di 1 minuto poi si ri-blocca...
ho provato ad usare i comandi AT per impostare entrambi nel Canale 1 ma non cambia niente , inoltre dopo i comandi AT in teoria l HC-12 dovrebbe rispondermi OK nella seriale invece non ritorna niente .
I collegamenti li ho fatti banali , senza condensatori o resistenze .
posto i due codici arduino , mi date una mano ??????
***** TRASMITTENTE ********
#include <SoftwareSerial.h>
//definisco pin RX e TX da Arduino verso modulo Radio
#define RADIO_TX_PIN 9 //Dig Pin TX Radio
#define RADIO_RX_PIN 10 // Dig Pin RX Radio
#define boudrateRadio 9600
#define boudrateSerial 115200
SoftwareSerial serialRadio(RADIO_TX_PIN, RADIO_RX_PIN); // RX, TX ARDUINO TX RX Radio
String commands;
void setup() {
// define pin modes for tx, rx:
pinMode(RADIO_TX_PIN, INPUT);
pinMode(RADIO_RX_PIN, OUTPUT);
pinMode(11,OUTPUT);
serialRadio.begin(9600);
digitalWrite(11, LOW); // enter AT command mode
serialRadio.print(F("AT+C001"));
delay(100);
digitalWrite(11, HIGH); // enter transparent mode
}
void loop() {
//
commands="@1000|1000|1000|0|0|0|0|0|100|100|!";
serialRadio.print(commands);
delay(5000);
//
}
***** RICEVENTE ********
#include <SoftwareSerial.h>
//definisco pin RX e TX da Arduino verso modulo Radio
#define RADIO_TX_PIN 10 //Dig Pin TX Radio
#define RADIO_RX_PIN 9 // Dig Pin RX Radio
#define boudrateSerial 115200
#define boudrateRadio 9600
String commands;
char recivebite;
bool endtrx;
char messageReceived[10];
SoftwareSerial serialRadio(RADIO_TX_PIN, RADIO_RX_PIN); // RX, TX ARDUINO TX RX Radio
void setup() {
// define pin modes for tx, rx:
pinMode(RADIO_TX_PIN, INPUT);
pinMode(RADIO_RX_PIN, OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(boudrateSerial);
Serial.println("Serial monitor available... OK");
Serial.print("Serial link available... ");
serialRadio.begin(boudrateRadio);
if (serialRadio.isListening()) {
Serial.println("OK");
} else {
Serial.println("NOK");
}
//test HC-12
Serial.print("HC-12 available... ");
digitalWrite(11, LOW); // enter AT command mode
serialRadio.print(F("AT+C001"));
delay(100);
digitalWrite(11, HIGH); // enter transparent mode
while (serialRadio.available()) {
Serial.write(serialRadio.read());
}
Serial.println();
Serial.println("initialization done.");
//
endtrx=false;
//
messageReceived[0]='M';
messageReceived[1]='A';
messageReceived[2]='T';
messageReceived[3]='T';
messageReceived[4]='E';
messageReceived[5]='O';
}
void loop() {
//
while ((serialRadio.available()>0) && (!endtrx)) {
recivebite=char(serialRadio.read());
// Serial.print(recivebite);
// delay(10);
if(recivebite=='@')
{
commands="";
endtrx=false;
}else
{
if(recivebite=='!')
{
endtrx=true;
}else
{
commands += recivebite;
}
}
}
//
if(endtrx)
{
Serial.println("");
if(commands.length()==33)
{
Serial.println(commands+"OK");
}else
{
Serial.println(commands+"NO");
}
}
commands="";
endtrx=false;
delay(50); // Wait for a while
}