mercoledì 24 novembre 2021

Costruiamo una ricevente 433Mhz con Arduino




Cerchiamo di capire il codice che lascerò poco più sotto per il ricevitore..

Come per il codice del trasmettitore, includiamo la libreria RC-Switch ed istanziamo un oggetto RC-Switch per poter utilizzare i metodi della libreriaRC-Switch. Per il ricevitore dobbiamo anche inizializzare una linea seriale in modo da poter visualizzare i dati ricevuti nel nostro monitor seriale. Quindi  impostiamo la velocità di trasmissione su 9600 bit al secondo ed usiamo il LED integrato per visualizzare quando vengono ricevuti i dati RF. 

L’unica proprietà dell’oggetto RC-Switch che dobbiamo impostare è il pin collegato al moduloricevitore. Dopodiché siamo pronti per iniziare a ricevere i dati in modo da  poter abilitare l’interrupt del ricevitore utilizzando il metodo.enableReceive(). 

Questo completa il ciclo di Setup. Nel nostro ciclo principale stiamo sostanzialmente aspettando la ricezione di dati RF controllando continuamente se sono disponibili dati validi con il metodo.available () appropriatamente denominato. Il metodo.available () restituirà vero solo se sono stati ricevuti dati validi. 

Tali dati hanno una certa combinazione di bit e sono inviati prima di ogni pacchetto permettendo alla libreria RC-Switch di discriminare il rumore dal pacchetto corretto di dati. Una volta che il metodo.available () ritorna vero, accendiamo il nostro LED per mostrare che i dati sono stati ricevuti, stampiamo i dati ricevuti e la lunghezza dei bit nel nostro monitor seriale, chiamiamo il metodo.resetAvailable () che cancella i dati ricevuti dai buffer permettendoci di ricevere nuovi dati e infine spegniamo il nostro LED.


Il Ricevitore RF 433 che utilizzeremo nel progetto è l’RXB6 e funziona ottimamente con la libreria appena utilizzata. La differenza è che ha una sensibilità notevolmente maggiore ed opportunamente collegato ad una antenna permette di captare segnali lontani con più efficacia.

                                 

Codice:
// include the RC-Switch library
#include <RCSwitch.h>
// instantiate an RC-Switch object
RCSwitch mySwitch = RCSwitch();
// rename the primary serial line
#define debug_Serial Serial
// Pin 2 to receive data on (Interrupt 0)
#define RX_PIN 0 
// use the Leonardo’s onboard LED to display data being received
#define LED_PIN 13
void setup() {
 // set led pin as an output
 pinMode(LED_PIN, OUTPUT);
 // make sure led pin is low 
 digitalWrite(LED_PIN, LOW);
 // enable the serial line used for debugging
 debug_Serial.begin(9600);
 delay(100);
 // enable the RC-Switch receiver pin and start checking for RF data
 mySwitch.enableReceive(RX_PIN); 
}
void loop() {
 // if data is available
 if(mySwitch.available()) {
 // turn on LED to show that data has been received
 digitalWrite(LED_PIN, HIGH);
 // display the received data on the debug serial line
 debug_Serial.print(“Received value:);
 debug_Serial.println(mySwitch.getReceivedValue());
 debug_Serial.print(“Bit Length:);
 debug_Serial.println(mySwitch.getReceivedBitlength()); 
 // this should be called right after receiving data
 mySwitch.resetAvailable();
 // turn the led off again
 digitalWrite(LED_PIN, LOW);
 }
}

1 commento:

  1. Fun88 Casino Review - Vie Casino
    Join Fun88 Casino and get 100% up to £100 Welcome bet365 Bonus when you join today. Get up 1xbet to £100 welcome bonus at fun88 soikeotot Vie Casino.

    RispondiElimina