MODULO E32-433T30D



Certamente questo modulo permette di raggiungere distanze molto maggiori di quelle che può raggiungere il modulo a 2.4 GHz presentato qui, non tanto per la differenza di potenza (questo eroga 1W e l'altro eroga 0.5 W) ma per la differenza di frequenza di lavoro; il presente modulo lavora in una banda di frequenza compresa tra 410MHz a 441MHz che permette al segnale di attraversare  gli ostacoli con maggior facilità, per la minore attenuazione, rispetto al modulo funzionante a 2.4 GHz, inoltre a frequenze più basse aumenta l'apertura efficace dell'antenne. Le prove effettuate da me in campo aperto hanno riportato distanze superiori ai 7Km. La prova è stata eseguita in questo modo:
ho posizionato un modulo RTX (che da ora in poi chiamerò fisso) sul terrazzo di casa al mare collegato ad un dipolo di 1/2 con balun onda attaccato ad un asta in PVC a 2 metri dal pavimento del terrazzo, il modulo trasmetteva ogni secondo un dato (valore 1). L'atro modulo (che chiamerò RTX mobile) l'ho posizionato in auto collegato ad uno stilo di 1/4 di onda con base magnetica attaccata al tettino della macchina, ogni secondo, alla ricezione del dato, si illuminava un led indicandomi l'avvenuta ricezione.
Poi mi sono spostato e sono arrivato nei pressi della Ladispoli e il led ha iniziato a lampeggiare con frequenza diversa da 1 secondo indicandomi che il ricevitore stava perdendo il segnale. Nel punto dove non si è più illuminato mi sono fermato e ho trascritto su un foglietto il nome della strada dove mi trovavo. A casa, con Google maps, ho calcolato il percorso ed il risultato è visualizzato nella seguente figura:

Un altro vantaggio di questo modulo è la semplicità con la quale si trasmettono e si ricevono i dati, la comunicazione tra la CPU ed il modulo è infatti seriale (come quella usata da Arduino per collegarsi al serial monitor) e quindi facilmente implementabile tramite le funzioni già conosciute e usate un po' da tutti.
Il modulo ha diversi modi di funzionamento, il più semplice è il "Trasparent Mode" (quello che ho usato io) che viene impostato mettendo a GND due pin nominati MO e M1, in questa modalità i  parametri di default sono:

FREQUENZA: 433MHz
INDIRIZZO: 00H
BIT DI PARITA': 8N1
BOUD RATE SERIALE: 9600
AIR DATA RATE:  2.4Kbps
POTENZA: 30dBm (1W)

In questo modo di funzionamento l'utente ha solo bisogno di inviare e ricevere al/dal modulo  il dato (fino a 58 byte) tramite seriale, molto semplice direi.

Gli unici problemi che ho riscontrato in questo modulo sono due; il primo è che il modulo è il particolarmente sensibile al disadattamento dell'antenna, basta un SWR di tre per farlo comportare in maniera strana quando l'antenna è vicina a oggetti metallici; smette di trasmettere e  inficia di radio frequenza a 433 MHz i segnali digitali di Arduino tanto da  sprogrammarlo, si scalda tanto e assorbe molto di più di quando è adattato tanto da scaricare la batteria in pochi minuti di trasmissione. Ho cercato sia in rete che sul data sheet informazioni a tal riguardo ma non ho trovato nulla per renderlo meno sensibile all'SWR. Per renderlo meno suscettibile ai disadattamenti di antenna le soluzioni migliori sono, usare un ampio piano di massa, non far passare fili che trasportano segnali veloci sotto al modulo (ovvero sotto il lato opposto allo chassis metallico), non disporre la scheda Arduino sotto il modulo, mettere condensatori ceramici da 100n all'ingresso e all'uscita del regolatore a 5V, usare i fili della seriale, che collegano Arduino con il  modulo, il più possibile corti e portarli con la propria massa accostati l'un l'altro (piattina). Meglio in assoluto usare una buona antenna.
Il secondo problema è che la seriale del modulo fornisce e accetta solo 3.3V (si rischia  di bruciarlo inviandogli tensioni maggiori) mentre Arduino  fornice e  accetta 5V, per ovviare a questo fastidioso problema basta interporre delle resistenze ed un diodo sulla linea seriale, vedremo dopo come si fa.

Per chi si preoccupasse di non riuscire a discriminare i diversi moduli ricevitori collegati ad un unico trasmettitore per il  fatto che nel "Trasparent Mode" l'indirizzo è fisso  e quindi uguale per tutti, dico che è sempre possibile  farlo inviando dei dati univoci ai ricevitori, tramite una semplice "if" il programma del ricevitore è i  grado di capire se il dato in arrivo è di appartenenza al ricevitore in oggetto oppure no, se affermativo esegue le operazioni riguardanti quel ricevitore se no si rimette in ascolto senza fare nulla.

Per fare ulteriori  prove,  nella maniera più comoda e pratica possibile,  ho messo l'elettronica in piccole scatoline porta oggetti. Qui sotto la foto del RTX mobile:

Per l'RTX fisso ho utilizzato una antenna di 1/4 di onda con calamita attaccata alla base in modo di fissarla su qualsiasi superficie metallica che funga da piano di massa (porte in ferro, frigorifero, lavatrice...), tenete conto che la calamita è collegata elettricamente alla calza del cavo in modo di dare continuità (direttamente se la superfice metallica non è isolata o tramite accoppiamento capacitivo se il metallo è verniciato) tra la calza del cavo e il piano di massa, ad esempio, nella foto, che segue l'ho attaccata sul trapano a colonna e nella successiva su un pannello in ferro:



Sotto la foto del RTX fisso ancora non montato nella scatoletta ma collegato all'antenna suddetta:


Sotto ancora l'RTX fisso nella scatoletta cablato ma ancora non verniciato e successivamente l'antenna completata:



Dopo le prove di collegamento a distanza per rendere il sistema più utile ho dotato l'RTX fisso di pulsante, led e buzzer e l'RTX mobile di led e buzzer. Quando si preme il pulsante l'RTX fisso (fintanto che non si preme il pulsante l'RTX  fisso è  in ascolto e in attesa della pressione del tasto in void loop, quindi continuamente  in RX) commuta in TX e  invia il dato (sempre di valore 1) al mobile e subito dopo si rimette in ascolto in attesa di eventuali messaggi in arrivo,  l'RTX mobile  ricevuto il dato e assicuratosi che è di valore 1, trasmette (commuta in TX) un dato di valore 1, subito dopo illumina il led e fa suonare il buzzer per 500mS. Finito questo ciclo torna in ascolto (commuta in RX). L'RTX fisso ricevuta la risposta controlla se il dato ricevuto è di valore 1 e se affermativo illumina il suo led e fa suonare il suo buzzer per 500mS e il ciclo si ripete premendo di nuovo il pulsante.

PROGRAMMA RTX FISSO
#include <SoftwareSerial.h>
SoftwareSerial loraSerial(3, 2);
int input;
void setup()
{
  pinMode(6, INPUT_PULLUP);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  loraSerial.begin(9600);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  delay(500);           
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  loraSerial.write(1);
}
void loop()

  if(digitalRead(6) == 0)
  {
     loraSerial.write(1);
     while(digitalRead(6) == 0);
     delay(300);
  }  
  if(loraSerial.available() > 1)
  {
    input = loraSerial.read(); 
    if(input == 1)
    {
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
        delay(100);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
     }
     loraSerial.flush();
  }
}


#include <SoftwareSerial.h>
Include la libreria SoftwareSerial.h


SoftwareSerial loraSerial(3, 2);
Crea l'oggetto "lora" (potete mettere qualsiasi nome a vostro piacimento per l'oggetto).
Il primo numero nella parentesi (3) indica il pin di Arduino che riceverà i dati seriali (dal modulo), mentre il secondo numero (2) indica il pin di Arduino che trasmetterà i dati seriali (verso il modulo)


int input;
Crea una variabile "input" di tipo intero


pinMode(6, INPUT_PULLUP);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);

Imposta il pin 6 di Arduino come ingresso con pullup (pulsante)
Imposta il pin 4 di Arduino come uscita (led)
Imposta il pin 5 di Arduino come uscita (buzzer)

loraSerial.begin(9600);

Imposta la comunicazione seriale a 9600 boud


digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(500);           
digitalWrite(4, LOW);
digitalWrite(5, LOW);

Sequenza per accendere e far suonare il buzzer per 500 mS

loraSerial.write(1);

Invia il primo dato (valore 1) al ricevitore. Se quest'ultimo è acceso suona il suo buzzer e si illumina il suo led. E' un semplice controllo di funzionamento del sistema all'accensione.


if(digitalRead(6) == 0)
  {
     loraSerial.write(1);
     while(digitalRead(6) == 0);
     delay(300);
  }  

Se il pulsante viene premuto l'RTX fisso invia il dato di valore 1 tramite la funzione loraSerial.write(1);.
Con while(digitalRead(6) == 0); il programma attende che il pulsante sia rilasciato.
Al rilascio del pulsante il programma attende ancora 300 mS per proseguire (questo tempo ha la funzione di anti rimbalzo del pulsante).


if(loraSerial.available() > 1)
  {
    input = loraSerial.read(); 
    if(input == 1)
    {
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
        delay(100);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
    }
     loraSerial.flush();
  }
Se è disponibile un dato (spedito in risposta dall'RTX mobile) viene eseguito il corpo della "if". L'istruzione input = loraSerial.read(); salva nella variabile "input" il valore letto.
La "if" successiva confronta il valore contenuto nella variabile "input", se è 1 esegue il suo corpo dove ci sono le istruzioni per fare illuminare il led e suonare il buzzer per 100 mS.
La funzione  loraSerial.flush(); serve per svuotare il buffer della ricezione (è opzionale).


PROGRAMMA RTX MOBILE
#include <SoftwareSerial.h>
SoftwareSerial loraSerial(3, 2);
int input;
void setup()
{
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  loraSerial.begin(9600);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  delay(500);           
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);   
}
void loop()
{
  if(loraSerial.available() > 1)
  {
    input = loraSerial.read(); 
    if(input == 1)
    {
        loraSerial.write(1);  
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
        delay(500);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);            
    }
   loraSerial.flush();
  }
}
Il programma dell'RTX MOBILE è simile a quello dell'RTX FISSO con le seguenti differenze:
non spedisce il dato all'accensione
non ha la parte delle istruzioni relative alla gestione del pulsante
il tempo ON del led e del buzzer dura un po' di più (500mS).

COLLEGAMENTI


NOTE SUL CABLAGGIO
Come avevo anticipato all'inizio il modulo è molto sensibile al disadattamente dell'antenna, quando l'SWR si avvicina a 3 il modulo inizia a dare segni di sofferenza e in certe situazioni può sprogrammare arduino o scaricare la batteria in tempi record. Dato che, soprattutto per il mobile che si tiene in mano, l'influenza degli oggetti vicini all'antenna  possono aumentare ulteriormente  l'SWR conviene  curare il cablaggio per rendere meno suscettibile l'TRX all'SWR. Dopo diversi tentativi sono riuscito a stilare una serie di accortezze da tenere in conto per la realizzazione del ricetrasmettitore.


1) La massa deve partire dalla batteria e collegare in ordine, il regolatore 7805, il modulo e infine Arduino con un filo con diametro di almeno 0.5 mm (non usare filo wire-rap).
2) I condensatori devono stare il più possibile vicino al regolatore, all'ingresso VIN di Arduino e all'ingresso VCC del modulo.
3) le linee seriali devono collegare Arduino al modulo in piattina (non mostrate nel disegno) ognuna con la propria massa che deve anche essere collegata ai terminali M0 e M1 (non collegarla al terminale GND del         modulo).
4) Non fate correre i fili della seriale sotto il modulo.
5) Sull'RTX mobile la scheda di rame deve essere collegata solo al connettore sma dell'antenna.
6) Dal terminate del deviatore debbono partire due fili (sempre di 0.5 mm di diametro) uno per alimentare  l'ingresso del regolatore, l'altro per alimentare l'ingresso VIN di Arduino come rappresentato in figura.

NOTE SULLE RESISTENZE E SUL DIODO
Le linee di Arduino lavorano a 5V mentre quelle del modulo a 3.3V. Occorre inserire dei componenti passivi per poter adattare il modulo con Arduino. Sul pin 2 di Arduino esce il segnale seriale per inviare i dati al pin RX del modulo, nella seguente figura è rappresentato lo schema a blocchi:


Quando il segnale seriale è a 5V dopo il partitore va a 3.3V,  la resistenza R di pullup interna al modulo è anch'essa collegata ai 3.3V per cui è come se non ci fosse. Il diodo non ha effetto dato che è inversamente polarizzato quando il segnale seriale è alto.
Quando il segnale seriale va basso si crea una partizione della 3.3V tra la resistenza R interna al modulo e il parallelo della serie delle resistenze con quella da 1K collegata al pin 2 di Arduino. Il risultato è che il livello del segnale della seriale non va a zero ma si ferma a circa 1V (linea rossa). Questo livello potrebbe essere eccessivo per essere interpretato dal modulo come zero. Inserendo il diodo come in figura il livello scende a 0.7V che è un livello molto vicino allo zero volt.
Nella seguente figura è  rappresentato lo schema a blocchi relativo alla ricezione del dato da parte di Arduino:


Questa volta i dati vengono inviati dal modulo ad Arduino, questi dati hanno un livello di 3.3V e devono essere adattati al livello che accetta Arduino ovvero 5V. Per ottenere questa traslazione basta una resistenza di pullup esterna collegata ai 5V di Arduino. Più è bassa questa resistenza e più il livello si avvicina ai 5V, un valore di 4K7 va bene dato che lo fa arrivare a 4.9V.

ANTENNE
Come le casse acustiche sono il cuore degli amplificatori audio l'antenna lo è per i ricetrasmettitori.
Nel complesso ho utilizzato più tempo a trovare un'antenna adatta per i due moduli che a costruire  l'insieme del sistema. Ho iniziato a effettuare misurazioni per ottenere sia l'impedenza che l'S.W.R. dell'antenna che avrei usato per l'RTX mobile.
Prima di fare misure sulle antenne occorre isolare per la RF tutte le parti metalliche dello strumento di misura (compreso il tratto di cavo coassiale collegato all'antenna) facili "preda" delle linee di forza dei campi elettrici generati dall'antenna, occorre quindi inserire un balun il più vicino possibile al connettore dell'antenna in prova. Nella figura è raffigurata la misura, tramite NanoVna, effettuata sul cavo per determinare l'impedenza presentata dalla sua calza  avvolta su un tubetto di ferrite (di quelli che si trovano inseriti sui cavi RS232 o su quelli delle vecchie scarter):



Con sole tre spire il cavo ha presentato una impedenza di 158 + j 282 ohm (senza ferrite la impedenza era 50 + j 30 ohm), non elevatissima ma sufficiente per isolare il cavo e il NanoVna dall'antenna sotto misurazione.


La seguente figura rappresenta la misura effettuata su antenna stilo commerciale per 433 MHz e piano di massa limitato al solo modulo (ne avevo uno guasto e l'ho usato per fare questa misurazione).


Con questa antenna e il modesto piano di massa offerto dal modulo ho misurato un S.W.R di 4.54, molto alto. Vedi foto sotto:


Allora ho tagliato una basetta di rame grande come la scatoletta che avrebbe dovuto contenente il modulo e l'elettronica  e ho rieseguito le misure, vedi foto sotto:



L'S.W.R si è abbassato 2.91, migliorato ma non di tantissimo, vedi foto sotto.



Non soddisfatto del risultato ho sfilato il cappuccio dello stilo e al posto della sua antenna ho messo un filo di rame lungo un po' più che 1/4 d'onda. Poi l'ho tagliato, tenendo sott'occhio in NanoVna, fino ad ottenere un S.W.R. buono, ora è pari a 1.05. Vedi foto sotto:



Qui sotto la lettura:



Per l'RTX fisso ho pensato ad una antenna lunga 1/4 d'onda con piano di massa esteso. Il piano di massa potrebbe essere la superficie di un frigo, di una lavatrice, di una porta metallica e così via. Qui sotto è  raffiguratale l'antenna montata su un pannello con lunghezza dei lati maggiore di 1/4 d'onda e la piccola calamita:



Qui sotto ancora l'S.W.R. e il diagramma di smith, l'antenna è molto stabile anche toccando la piastra metallica:



S.W.R. 1.1 e impedenza quasi 50 ohm.

 MISURE CON ANALIZZZATORE DI SPETTRO TINYSA

Per concludere lo studio di questo fantastico modulo ho voluto effettuare misure di campo elettrico a distanza, tramite TinySa, emesso da tutte le antenne analizzate.  Le antenne sono state sistemate tutte alla stessa altezza e sostituendole di volta  in volta ho misurato il campo ad una distanza di 10 metri. Qui sotto i risultati e le foto delle misure:

Antenna a stilo commerciale, -23.9 dBm:


Antenna a stilo fatta da me, -22.4 dBm:


Antenna 1/4 d'onda su pannello metallico di ampia superficie, -20.4 dBm:



Come potevamo aspetarci la migliore è l'ultima.

Software

Ciao
Fabio

    HOME