Problema comunicazione con moduli 433MHz della radiocontrolli

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 :disappointed_relieved:

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..

Osservando il datasheet del TX vedo che il pin 1 è Data In e non è l'antenna come compare nel disegno.

Hai un link alla libreria così posso vedere il codice del costruttore?

Perché il pin D12?

Dunque qui c'è il costruttore:

class RH_ASK : public RHGenericDriver
{
public:
    /// Constructor.
    /// At present only one instance of RH_ASK per sketch is supported.
    /// \param[in] speed The desired bit rate in bits per second
    /// \param[in] rxPin The pin that is used to get data from the receiver
    /// \param[in] txPin The pin that is used to send data to the transmitter
    /// \param[in] pttPin The pin that is connected to the transmitter controller. It will be set HIGH to enable the transmitter (unless pttInverted is true).
    /// \param[in] pttInverted true if you desire the pttin to be inverted so that LOW wil enable the transmitter.
    RH_ASK(uint16_t speed = 2000, uint8_t rxPin = 9, uint8_t txPin = 10, uint8_t pttPin = 10, bool pttInverted = false);

Senza specificare alcun parametro la velocità sarà 2000, txPin è il pin 10, mentre per rxPin è il 9.

Quindi sulla Mega devi usare il pin 10 e sulla UNO il pin 9.

Ciao.

1 Like

Buongiorno Maurotec, ti ringrazio per la risposta.

Osservando il datasheet del TX vedo che il pin 1 è Data In e non è l'antenna come compare nel disegno

Hai ragione, ma in realtà i collegamenti che ho fatto erano giusti, ho sbagliato a non cambiare numeri pin nel disegno.

Seguendo le tue indicazioni, ho lasciato predefinito i pin e cambiato i collegamenti (txPin = 10 e rxPin = 9). Niente da fare.. ho pensato anche di avere delle schede arduino guaste ma le ho cambiate...stessa situazione. Non funziona.
Ho controllato le alimentazioni dei moduli ed è tutto nella norma :smirk:

EDIT:
Entrando ancora più in paranoia, vorrei accertarmi che ho orientato correttamente dall'alto il trasmettitore. Essendo perfettamente rettangolare, può anche essere che ho usato il pin 1 per il pin 3, il 2 per il 4 ecc...sbagliando quindi orientamento (di 180°).
questo è il disegno preso dal datasheet:
datasheet pin tx
e questa è la foto che ho cercato di farla al meglio per capire se è il giusto orientamento:


ho riscritto i valori di due componenti cosi da farvi capire che sono di fronte e li leggo con il giusto orientamento...può essere questo il problema?

per il ricevitore, invece, è impossibile che ho sbagliato l'orientamento perchè da datasheet è facilmente intuibile quali sono i pin di appartenenza orientando la scheda nel lato componenti
datasheet pin rx

A me pare evidente che pin 1 e 4 sono a bordo scheda in alto, mentre nella foto 2 e 3 risultano a bordo scheda.
Risultano invertiti:

Giusto         Sbagliato
4                   2
2                   4
1                   3
3                   1

Ho usato in passato moduli di questa azienda e devo dire che sono ottimi ma non per principianti.

Ciao.

1 Like

Grazie Maurotec, fortuna non ho rotto il trasmettitore..ora funziona che è una meraviglia :smile:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.