Buona sera,
Purtroppo non ne sto venendo più a capo con la comunicazione radio tramite 433MHz con Arduino e spero molto che il forum possa darmi una mano come ultima spiaggia
Ho acquistato i seguenti componenti della ditta radiocontrolli:
Trasmettitore (datasheet)
Ricevitore (datasheet)
2x Antenne (datasheet)
2x cavi coassiali SMA
Utilizzo un Arduino Mega come trasmettitore e un Arduino Uno come ricevitore.
Seguendo i datasheet, ho fatto i seguenti collegamenti:
Ho collegato anche le antenne con il polo freddo (calza) a GND e il polo caldo (filo rame) al PIN ANTENNA dei rispettivi moduli ma il problema è sempre lo stesso: il trasmettitore non trasmette nulla e/o il ricevitore non riceve nulla.
Per quanto riguarda i codici ho utilizzato per il trasmettitore:
// ask_transmitter.pde
// -*- mode: C++ -*-
// Simple example of how to use RadioHead to transmit messages
// with a simple ASK transmitter in a very simple way.
// Implements a simplex (one-way) transmitter with an TX-C1 module
// Tested on Arduino Mega, Duemilanova, Uno, Due, Teensy, ESP-12
#include <RH_ASK.h>
#ifdef RH_HAVE_HARDWARE_SPI
#include <SPI.h> // Not actually used but needed to compile
#endif
RH_ASK driver(2000,5);
// RH_ASK driver(2000, 4, 5, 0); // ESP8266 or ESP32: do not use pin 11 or 2
// RH_ASK driver(2000, 3, 4, 0); // ATTiny, RX on D3 (pin 2 on attiny85) TX on D4 (pin 3 on attiny85),
// RH_ASK driver(2000, PD14, PD13, 0); STM32F4 Discovery: see tx and rx on Orange and Red LEDS
void setup()
{
#ifdef RH_HAVE_SERIAL
Serial.begin(9600); // Debugging only
#endif
if (!driver.init())
#ifdef RH_HAVE_SERIAL
Serial.println("init failed");
#else
;
#endif
}
void loop()
{
const char *msg = "hello";
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
delay(200);
}
e per il ricevitore:
// ask_receiver.pde
// -*- mode: C++ -*-
// Simple example of how to use RadioHead to receive messages
// with a simple ASK transmitter in a very simple way.
// Implements a simplex (one-way) receiver with an Rx-B1 module
// Tested on Arduino Mega, Duemilanova, Uno, Due, Teensy, ESP-12
#include <RH_ASK.h>
#ifdef RH_HAVE_HARDWARE_SPI
#include <SPI.h> // Not actually used but needed to compile
#endif
RH_ASK driver;
// RH_ASK driver(2000, 4, 5, 0); // ESP8266 or ESP32: do not use pin 11 or 2
// RH_ASK driver(2000, 3, 4, 0); // ATTiny, RX on D3 (pin 2 on attiny85) TX on D4 (pin 3 on attiny85),
// RH_ASK driver(2000, PD14, PD13, 0); STM32F4 Discovery: see tx and rx on Orange and Red LEDS
void setup()
{
#ifdef RH_HAVE_SERIAL
Serial.begin(9600); // Debugging only
#endif
if (!driver.init())
#ifdef RH_HAVE_SERIAL
Serial.println("init failed");
#else ;
#endif
}
void loop()
{
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)) // Non-blocking
{
int i;
// Message with a good checksum received, dump it.
driver.printBuffer("Got:", buf, buflen);
}
}
ho provato anche a cambiare i pin DATA del trasmettitore e ricevitore modificando la stringa:
RH_ASK driver;
in (trasmettitore):
RH_ASK driver(2000,5);
e in (ricevitore):
RH_ASK driver(2000,6);
niente da fare.
Per la doppia seriale utilizzo Tera term ma ho notato che anche dall'IDE di Arduino non funziona nulla.
Ho provato anche ad alimentare separatamente i due arduino e a non farli alimentare tutti e due con il PC...niente da fare..
Controllo e ricontrollo i cavi ma è tutto ok come da datasheet. I codici sono poi negli esempi della libreria RadioHead (ask_receiver e ask_transmitter)...e allora non so più cosa fare... è davvero frustrante non riuscire a fare comunicare nulla nonostante abbia acquistato degli ottimi moduli da una ditta italiana..