Cosa scintilla, perché? 433Mhz Moduli

Ciao a tutti

Oggi vorrei presentarti l'ultimo contributo della serie "Che cosa scintilla lì?" immaginare. Iniziamo con un primitivo collegamento radio tra due UNOs, Usiamo a per questo 433 Mhz set  dal nostro negozio online insieme a due controller. È possibile trovare l'e-book per i moduli radio QUI.Innanzitutto colleghiamo semplicemente i moduli su Unos, come mostrato nella figura:

In generale, non è consigliabile utilizzare i moduli 433Mhz su una breadboard perché il metallo in essi contenuto si disperde o interferisce con il segnale, ma parleremo del problema delle interferenze.

L'idea alla base dei seguenti schizzi è quella di trasmettere un semplice segnale alto tramite i moduli 433Mhz dall'invio all'ONU ricevente. Iniziamo con il codice per il trasmettitore:

int dati = 7;

vuoto configurazione(){
 serial.iniziare(9600);
 pinMode(LED_BUILTIN, USCITA);
 pinMode(5, USCITA); 
 digitalWrite(5, LOW); // Usiamo come GND
 pinMode(6, USCITA);
 digitalWrite(6, ALTA); // Usiamo come VCC
 pinMode(dati, USCITA); 
 digitalWrite(dati, LOW);  // Per i dati
}

vuoto cappio() {            digitalWrite(dati, LOW);   digitalWrite(LED_BUILTIN, LOW);   ritardo(1000);   digitalWrite(dati, ALTA);   digitalWrite(LED_BUILTIN, ALTA);   ritardo(1000);
}

Nei nostri post precedenti abbiamo mostrato come impostare uno stick DVB-T come SDR sul Raspberry e come installare GQRX. Bene, abbiamo superato un po 'questa soluzione e in questo esempio utilizziamo SDR # in Windows.

Come possiamo vedere, il nostro schizzo funziona abbastanza bene e fa quello che dovrebbe. Ora ci occupiamo del codice per il destinatario:

int dati = 5;

vuoto configurazione(){
 serial.iniziare(9600);
 pinMode(LED_BUILTIN, USCITA);
 pinMode(4, USCITA); 
 digitalWrite(4, LOW); // Usiamo come GND
 pinMode(dati, INGRESSO); 
 digitalWrite(dati, LOW);  // Per i dati
 pinMode(7, USCITA);
 digitalWrite(7, ALTA); // Usiamo come VCC
}

vuoto cappio() {     // imposta il LED su alto quando viene ricevuto il segnale   digitalWrite(LED_BUILTIN,Leggi digitale(dati));   ritardo(50);
}

Una volta che il codice è stato trasmesso, dovremmo registrare che il LED interno del ricevitore si illumina per ogni segnale alto dal trasmettitore. Sfortunatamente, questo non funziona affatto, come potresti scoprire quando costruisci questo progetto.

Ci sono molte ragioni per questo, ma non voglio andare più in dettaglio per non andare oltre lo scopo di questo articolo. Pertanto stiamo cercando una libreria che contenga correzioni di errori e possiamo trasmettere in modo affidabile dati più complessi di un segnale primitivo alto-basso. La soluzione a questo problema è il successore di VirtualWire Libary: Radiohead

È possibile utilizzare questa libreria dopo scaricare tramite la funzione "* .zip library" contenuta nell'IDE

Usiamo una versione leggermente modificata di ask_receiver e ask_transmitter per il nostro esempio.

Per non dover cambiare i pin in RH_Ask.h, ricolleghiamo il nostro Unos. I pin predefiniti in Libary sono assegnati come segue:

Modulo 433 Ricevitore ONU Trasmettitore ONU
VCC 5V 5V
GND GND GND
DATI 11 12

 

Il codice per il trasmettitore:

#include <RH_ASK.B>
#include <SPI.B> // Non effettivamente utilizzato ma necessario per la compilazione

RH_ASK autista;

vuoto configurazione()
{     serial.iniziare(9600);     se (!autista.init())          serial.println("init fallito");
}

vuoto cappio()
{     const carbonizzare *msg = "Dati di misurazione"; // messaggio da inviare.     autista.trasmissione((uint8_t *)msg, strlen(msg));     autista.waitPacketSent();     ritardo(200);
}

 

Il codice per il destinatario:

#include <RH_ASK.B>
#include <SPI.B> // Non effettivamente utilizzato ma necessario per la compilazione

RH_ASK autista;

vuoto configurazione()
{     serial.iniziare(9600); // solo debug     se (!autista.init())          serial.println("init fallito");
}

vuoto cappio()
{     uint8_t buf[9]; // Formato del messaggio da ricevere     uint8_t buflen = Sizeof(Buf);     Se (autista.Recv(Buf, &buflen)) Non bloccante     {       Int Ho;       Messaggio con un buon checksum ricevuto, scaricarlo.       Seriale.Stampare("Messaggio: ");       Seriale.println((Char*)Buf);              }
} Im seriellen Monitor des Empf-ngers sehen wir die Ausgabe:

Viel Spass beim Basteln & bis zum n'chsten Mal :)

AmatorialefunkFür arduinoProjekte für anfänger

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN

Prodotti consigliati