Zu Produktinformationen springen
1 von 6

Eletechsup Original Factory Official‌ Store

PLL ASK OOK Funk-RF-Funk-LINK-Transceiver-Funktion RX-TX-Module 433 MHz

PLL ASK OOK Funk-RF-Funk-LINK-Transceiver-Funktion RX-TX-Module 433 MHz

SKU:BX005*1+BX011*1

Niedriger Lagerbestand: 8 verbleibend

Normaler Preis $17.98
Normaler Preis $17.98 Verkaufspreis $17.98
Sale Ausverkauft
Versand wird beim Checkout berechnet

PLL ASK OOK drahtlose RF-Funkverbindung, Transceiver-Funktion, Empfangs- und Sende-Module, 433 MHz

 
Menge: 1 Empfangsmodul und 1 Sendemodul. 
 

 

 
 
Typische Anwendungen
 
﹡ Fernsteuerung von Toren
﹡ Schlüssellose Fernbedienung
﹡ Autoalarmsysteme
﹡ drahtlose Sicherheitssysteme
﹡ Automatisierungssysteme
﹡ Fernsteuerungssysteme
 
Empfangsmodul:
 
  
Technische Daten:
      Empfangsmodul-Nr.: BX-RM06 -433 (passend zu unserem Modul BX-TM01 -433 oder BX-TM05 -433) 
      
      Empfängerempfindlichkeit (dBm):-112 ;

Betriebsfrequenz (MHz): 433,92 MHz ;
 
Betriebsspannung (V):  DC 3-5,5 V

Niedriger Stromverbrauch: 3,3 V bei 433,92 MHz, 6,0 mA / 3,3 V bei 315 MHz, 4,8 mA;

         Betriebstemperatur: -40 ℃ ~ +85 ℃
 
      Einschaltmodus bei einem Stromverbrauch von mindestens 50 nA;
     
          Pegelausgabe der RSSI-Signalstärkesimulation;
 
     Gute Unterdrückung der lokalen Oszillatorstrahlung, Empfangsmodul zur gemeinsamen Verwendung (d. h. Single-Input) und die Verwendung beeinträchtigt sich gegenseitig nicht, was die Empfängerreichweite nicht            beeinflusst
 
 
 
Sendemodul:  
 

 

Technische Daten:
Sendemodul-Nr.: BX-TM05 -433
Hohe Ausgangsleistung: +10 dBm;
 
 
 
 
 
 
Niedrige Betriebsspannung: VCC= 1,8 bis 3,6 V;Betriebsfrequenz (MHz): 433,92 MHz ;
Frequenztoleranz: ±50 kHz;Die Reichweite kann mit XLC-RM08 bis zu 300-500 m betragen;Betriebstemperatur: -40℃~+80℃;Kleine Größe mit einer PCB-Größe von: 11x16x5,5 mm;Bitrate: <3 kbps;
Schaltungstyp: PLL; 
 

 

 
 
 
Ausführung von TX433- und RX433-RF-Modulen mit AVR-Mikrocontrollern : 

Manchmal möchte man bei der Entwicklung eingebetteter Systeme auf drahtlose Kommunikation setzen. Möglicherweise möchte man verschiedene Messwerte von entfernt platzierten Sensoren aufzeichnen oder einfach eine Fernbedienung für ein Roboter- oder Autoalarmsystem bauen.

Die Funkkommunikation zwischen zwei AVR-Mikrocontrollern kann einfach sein, wenn spezielle Module verwendet werden. Lassen Sie uns die sehr bekannten RF-Module TX433 und RX433 ausprobieren, die (oder ähnliche) in fast jedem Elektronikgeschäft zu finden sind und ein Paar etwa  6,99 USD kostet.

Die Sender- und Empfängermodule sind so abgestimmt, dass sie bei 433,92 MHz korrekt funktionieren. Der Sender kann mit 1,8-3,6 V Stromversorgungbetrieben werden, während der Empfänger 5 Vakzeptiert. 5 V sind für AVR-Mikrocontroller üblich, daher gibt es keine Probleme bei der Schnittstelle. Die Module benötigen keine zusätzlichen Komponenten – einfach mit Strom versorgen und eine Datenleitung für den Informationsversand verbinden, und schon ist es fertig. Für größere Entfernungen verwenden Sie 30–35 cm Antennen. Die Module verwenden die Amplitudenmodulation (ASK) und eine Bandbreite von 1 MHz.

Ich habe zwei separate Schaltungen für Tests auf Atmega8-Mikrocontrollern konstruiert.

 
 
Für den Test habe ich ein Prototyping-Board und ein Breadboard verwendet.
 
Wie Sie sehen können, habe ich eine LED zur Anzeige der RF-Aktivität verwendet. Gut, genug von der Hardware – eigentlich gibt es dazu nichts mehr zu sagen – die Schaltungen sind einfach.

Kommen wir zum Softwareteil. Die Funkübertragung ist etwas komplizierter als die kabelgebundene Kommunikation, weil man nie weiß, welche Funksignale in der Luft vorhanden sind. Daher ist es wichtig, wie das übertragene Signal kodiert wird. Und hier gibt es viele Möglichkeiten: Verwenden Sie eine Hardware-Kodierung wie USART oder schreiben Sie Ihre eigene basierend auf einer von vielen Kodierungsmethoden wie NRZ, Manchester usw. In meinem Beispiel habe ich das AVR-USART-Modul verwendet, um Datenpakete zu bilden. Hardware-Encoder lösen viele Probleme wie Synchronisation, Start und Stopp sowie verschiedene Signalprüfungen. Aber solange ich mich damit beschäftigte, konnten Sie sich nicht auf ein reines USART-Signal verlassen. Hier können Sie tatsächlich improvisieren, indem Sie verschiedene Prüfungen usw. hinzufügen.

Ich habe beschlossen, 4-Byte-Datenpakete zu bilden, um ein Byte an Informationen zu senden. Diese beinhalten:

  • ein dummy Synchronisationsbyte (10101010);

  • ein Address Byte – falls es weitere Empfänger (oder Sender) gibt;

  • eine Daten Byte;

  • und Prüfsumme , die eigentlich die Summe aus Adresse und Daten ist (Adresse+Daten).

Warum habe ich ein Dummy-Byte am Anfang des Pakets verwendet? Ich habe einfach bemerkt, dass der Empfänger verschiedene Störgeräusche aus der Stromversorgung oder anderen Quellen aufnimmt, wenn der Sender keine Daten überträgt, weil der Empfänger seine Eingangsgewinnung je nach Eingangssignal level anpasst. Das erste Byte stimmt den Empfänger ein, damit er ein normales Signal akzeptiert, danach können Adresse, Daten und Prüfsumme zuverlässiger gelesen werden. Wahrscheinlich können Sie dieses Dummy-Byte bei anderen Übertragungsmodulen weglassen.

Sende-Programm für AVR Atmega8:

 

#include 
#include 
#ifndef F_CPU
//Taktfrequenz der CPU definieren, falls nicht bereits definiert
#define F_CPU 8000000
#endif
//Gewünschte Baudrate festlegen
#define BAUDRATE 1200
//UBRR-Wert berechnen
#define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1)
//Empfängerparameter festlegen
#define SYNC 0XAA//Synchronisationssignal
#define RADDR 0x44
#define LEDON 0x11//Befehl zum Einschalten der LED
#define LEDOFF 0x22//Befehl zum Ausschalten der LED
void USART_Init(void)
{
	//Baudrate festlegen
	UBRRL=(uint8_t)UBRRVAL; //unteres Byte
	UBRRH=(UBRRVAL>>8);	//oberes Byte
	//Datenrahmenformat festlegen: asynchron, keine Parität, 1 Stoppbit, 8 Bit
	UCSRC=(1< 
(0<  
//Sender, Empfänger und Interrupt bei vollständigem Empfang aktivieren
	UCSRB=(1< 
}
void USART_vSendByte(uint8_t u8Data)
{
 //Warten, wenn ein Byte gesendet wird
 while((UCSRA&(1< 
// Daten senden
 UDR = u8Data; 
}
void Send_Packet(uint8_t addr, uint8_t cmd)
{
	USART_vSendByte(SYNC);//Synchronisationsbyte senden	
	USART_vSendByte(addr);//Empfängeradresse senden
	USART_vSendByte(cmd);//Inkrementbefehl senden
	USART_vSendByte((addr+cmd));//Prüfsumme senden
}
void delayms(uint8_t t)//Verzögerung in ms
{
uint8_t i;
for(i=0;i 
_delay_ms(1);
}
int main(void)
{
USART_Init();
while(1)
	{//Endlossendung
	//Befehl zum Einschalten der LED senden
	Send_Packet(RADDR, LEDON);
	delayms(100);
	//Befehl zum Einschalten der LED senden
	Send_Packet(RADDR, LEDOFF);
	delayms(100);
	}
	return 0;
}

 

In meinem Fall habe ich eine UART-Baudrate von 1200 verwendet. Sie kann je nach Entfernung und Umgebung erhöht oder verringert werden. Bei größeren Entfernungen funktionieren niedrigere Baudraten besser, da die Wahrscheinlichkeit für Übertragungsfehler größer ist. Die maximale Bitrate des Senders beträgt 8kbits/s, was etwa 2400 Baud entspricht. Aber was in der Theorie funktioniert, tut sich in der Praxis meistens nicht. Daher war 1200 Baud das Maximum, was ich zuverlässig zum Laufen bringen konnte.

Der Sender sendet dem Empfänger zwei Befehle (LEDON und LEDOFF) mit 100ms Abstand. Der Empfänger erkennt diese Befehle und schaltet die LED je nach erhaltenem Befehl ein oder aus. Auf diese Weise kann ich überwachen, ob die Datenübertragung korrekt funktioniert. Wenn die LED periodisch blinkt, erfolgt die Übertragung fehlerfrei. Wenn die empfangenen Daten fehlerhaft sind, blinkt die LED kürzer.

Programmcode des Empfängers:

 

#include 
#include 
#include 
#ifndef F_CPU
//Taktfrequenz der CPU definieren, falls nicht bereits definiert
#define F_CPU 4000000
#endif
//Gewünschte Baudrate festlegen
#define BAUDRATE 1200
//UBRR-Wert berechnen
#define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1)
//Empfängerparameter festlegen
#define SYNC 0XAA//Synchronisationssignal
#define RADDR 0x44
#define LEDON 0x11//Befehl zum Einschalten der LED
#define LEDOFF 0x22//Befehl zum Ausschalten der LED

void USART_Init(void)

{
	//Baudrate einstellen
	UBRRRL=(uint8_t)UBRRVAL; //unteres Byte
	UBRRH=(UBRRVAL>>8);	//oberes Byte
	//Datenrahmenformat einstellen: asynchroner Modus, keine Parität, 1 Stoppbit, 8 Bit
	UCSRC=(1< 
(0<  
//Sender und Empfänger aktivieren sowie Interrupt bei vollständigem Empfang aktivieren
	UCSRB=(1< 
//Globale Interrupts aktivieren
}
uint8_t USART_vReceiveByte(void)
{
 //Warten, bis ein Byte empfangen wurde
 while((UCSRA&(1< 
// Empfangene Daten zurückgeben
 return UDR;
}
ISR(USART_RXC_vect)
{
	//Variablen definieren
	uint8_t raddress, data, chk;//Senderadresse
	//Empfängeradresse
	raddress=USART_vReceiveByte();
	//Daten empfangen
	data=USART_vReceiveByte();
	//Prüfsumme empfangen
	chk=USART_vReceiveByte();
	//Empfangene Prüfsumme mit der berechneten vergleichen
	if(chk==(raddress+data))//Wenn übereinstimmend, Operationen ausführen
	{
 //Wenn die Senderadresse übereinstimmt
Vollständige Details anzeigen