- 433 MHz HF-Sender- und Empfangsmodul:
- Bedarf an Encoder und Decoder:
- Erforderliche Komponenten:
- Schaltplan:
- Code Erläuterung:
Hallo allerseits, heute werden wir in diesem Projekt das RF-Empfänger- und -Sendermodul mit dem PIC-Mikrocontroller verbinden und drahtlos zwischen zwei verschiedenen pic-Mikrocontrollern kommunizieren.
In diesem Projekt werden wir folgende Dinge tun: -
- Wir werden PIC16F877A für den Sender und PIC18F4520 für den Empfängerbereich verwenden.
- Wir werden Tastatur und LCD mit dem PIC-Mikrocontroller verbinden.
- Auf der Senderseite werden wir die Tastatur mit dem PIC verbinden und die Daten übertragen. Auf der Empfängerseite empfangen wir die Daten drahtlos und zeigen an, welche Taste auf dem LCD gedrückt wird.
- Wir werden Encoder- und Decoder-IC verwenden, um 4-Bit-Daten zu übertragen.
- Die Empfangsfrequenz beträgt 433 MHz, wenn ein billiges RF TX-RX-Modul verwendet wird, das auf dem Markt erhältlich ist.
Bevor wir uns mit den Schaltplänen und Codes befassen, sollten wir uns mit der Funktionsweise des HF-Moduls mit Encoder-Decoder-ICs vertraut machen. Lesen Sie auch die folgenden zwei Artikel, um zu erfahren, wie Sie LCD und Tastatur mit dem PIC-Mikrocontroller verbinden:
- LCD-Schnittstelle mit PIC-Mikrocontroller über MPLABX und XC8
- 4x4-Matrix-Tastaturschnittstelle mit PIC-Mikrocontroller
433 MHz HF-Sender- und Empfangsmodul:
Dies sind die Sender- und Empfängermodule, die wir im Projekt verwenden. Es ist das billigste verfügbare Modul für 433 MHz. Diese Module akzeptieren serielle Daten in einem Kanal.
Wenn wir die Spezifikationen der Module sehen, ist der Sender für einen Betrieb von 3,5 bis 12 V als Eingangsspannung ausgelegt und die Sendedistanz beträgt 20 bis 200 Meter. Es sendet im AM-Protokoll (Audio Modulation) mit einer Frequenz von 433 MHz. Wir können Daten mit einer Geschwindigkeit von 4 KB / S und einer Leistung von 10 mW übertragen.
Im oberen Bild sehen wir die Pinbelegung des Sendermoduls. Von links nach rechts sind die Pins VCC, DATA und GND. Wir können die Antenne auch hinzufügen und an der im obigen Bild angegebenen Stelle löten.
Für die Empfängerspezifikation hat der Empfänger eine Nennspannung von 5 V Gleichstrom und 4 mA Ruhestrom als Eingang. Die Empfangsfrequenz beträgt 433,92 MHz mit einer Empfindlichkeit von -105 dB.
Im obigen Bild sehen wir die Pinbelegung des Empfängermoduls. Die vier Pins sind von links nach rechts, VCC, DATA, DATA und GND. Diese beiden mittleren Stifte sind intern verbunden. Wir können einen oder beide verwenden. Es ist jedoch eine gute Praxis, beide zum Verringern der Rauschkopplung zu verwenden.
Eines wird im Datenblatt nicht erwähnt: Der variable Induktor oder POT in der Mitte des Moduls wird für die Frequenzkalibrierung verwendet. Wenn wir die gesendeten Daten nicht empfangen konnten, besteht die Möglichkeit, dass die Sende- und Empfangsfrequenzen nicht übereinstimmen. Dies ist eine HF-Schaltung, und wir müssen den Sender auf den perfekten Sendefrequenzpunkt einstellen. Ebenso wie der Sender verfügt auch dieses Modul über einen Antennenanschluss. Wir können Draht in gewickelter Form für einen längeren Empfang löten.
Die Übertragungsreichweite hängt von der an den Sender gelieferten Spannung und der Länge der Antennen auf beiden Seiten ab. Für dieses spezielle Projekt haben wir keine externe Antenne und 5 V auf der Senderseite verwendet. Wir haben mit 5 Metern Entfernung nachgesehen und es hat perfekt funktioniert.
RF-Module sind sehr nützlich für die drahtlose Kommunikation über große Entfernungen. Hier wird eine grundlegende HF-Sender- und Empfängerschaltung gezeigt. Wir haben viele Projekte mit dem RF-Modul durchgeführt:
- HF-gesteuerte Haushaltsgeräte
- Bluetooth-gesteuertes Spielzeugauto mit Arduino
- HF-ferngesteuerte LEDs mit Raspberry Pi
Bedarf an Encoder und Decoder:
Dieser HF-Sensor hat einige Nachteile: -
- Einwegkommunikation.
- Nur ein Kanal
- Sehr störende Störungen.
Aufgrund dieses Nachteils haben wir Encoder- und Decoder- ICs, HT12D und HT12E, verwendet. D steht für Decoder, der auf der Empfängerseite verwendet wird, und E steht für Encoder, der auf der Senderseite verwendet wird. Diese ICs bieten 4 Kanäle. Auch aufgrund des Codierens und Decodierens ist der Rauschpegel sehr niedrig.
Im obigen Bild ist links HT12D der Decoder und rechts HT12E der Encoder. Beide ICs sind identisch. A0 bis A7 werden für die spezielle Codierung verwendet. Wir können Mikrocontroller-Pins verwenden, um diese Pins zu steuern und Konfigurationen festzulegen. Die gleichen Konfigurationen müssen auf der anderen Seite angepasst werden. Wenn beide Konfigurationen korrekt und übereinstimmend sind, können wir Daten empfangen. Diese 8 Pins können an Gnd oder VCC angeschlossen oder offen gelassen werden. Unabhängig von den Konfigurationen, die wir im Encoder vornehmen, müssen wir die Verbindung auf dem Decoder anpassen. In diesem Projekt werden wir diese 8 Pins sowohl für den Codierer als auch für den Decodierer offen lassen. 9 und 18 Pin sind VSS bzw. VDD. Wir können den VT- Pin in verwendenHT12D als Benachrichtigungszwecke. Für dieses Projekt haben wir es nicht verwendet. Der TE- Pin dient zum Aktivieren oder Deaktivieren des Übertragungsstifts.
Der wichtige Teil ist der OSC- Pin, an dem Widerstände angeschlossen werden müssen, um den Codierer und Decodierer in Schwingung zu versetzen. Der Decoder benötigt eine höhere Schwingung als der Decoder. Normalerweise beträgt der Encoder-Widerstandswert 1 Meg und der Decoder-Wert 33 KB. Wir werden diese Widerstände für unser Projekt verwenden.
Der DOUT- Pin ist der RF-Transmitter-Daten-Pin am HT12E und der DIN- Pin im HT12D wird zum Verbinden des RF-Modul-Daten-Pins verwendet.
In HT12E ist AD8 bis AD11 ein Vierkanaleingang, der über das HF-Modul konvertiert und seriell übertragen wird. In HT12D geschieht genau das Gegenteil, die seriellen Daten werden empfangen und decodiert, und wir erhalten einen 4-Bit-Parallelausgang über die 4 Pins D8 bis D11.
Erforderliche Komponenten:
- 2 - Brotbrett
- 1 - LCD 16x2
- 1 - Tastatur
- HT12D- und HT12E-Paar
- RX-TX RF-Modul
- 1- 10K voreingestellt
- 2 - 4,7 k Widerstand
- 1- 1M Widerstand
- 1- 33k Widerstand
- 2- 33pF Keramikkondensatoren
- 1 - 20 MHz Kristall
- Bergsticks
- Nur wenige einadrige Drähte.
- PIC16F877A MCU
- PIC18F4520 MCU
- Ein Schraubendreher zur Steuerung des Frequenztopfs muss vom menschlichen Körper isoliert sein.
Schaltplan:
Schaltplan für die Senderseite (PIC16F877A):
Wir haben PIC16F877A zum Senden verwendet. Die Hex-Tastatur ist über den PORTB und die 4 Kanäle über die letzten 4 Bits von PORTD verbunden. Weitere Informationen zum Anschließen der 4x4 Matrix-Tastatur finden Sie hier.
Pin wie folgt aus-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Schaltplan für die Empfängerseite (PIC18F4520):
In der obigen Abbildung ist die Empfängerschaltung dargestellt. Das LCD ist über PORTB angeschlossen. Wir verwenden internen Oszillator von PIC18F4520 für dieses Projekt. Die 4 Kanäle sind auf die gleiche Weise wie zuvor in der Senderschaltung verbunden. Weitere Informationen zum Verbinden von 16x2-LCD mit PIC-Mikrocontroller finden Sie hier.
Dies ist die Senderseite -
Und Empfängerseite in separatem Steckbrett -
Code Erläuterung:
Der Code besteht aus zwei Teilen, einem für den Sender und einem für den Empfänger. Sie können den vollständigen Code hier herunterladen.
PIC16F877A Code für HF-Sender:
Wie immer müssen wir zuerst die Konfigurationsbits im pic-Mikrocontroller setzen, einige Makros definieren, einschließlich Bibliotheken und Kristallfrequenz. Der AD8-AD11- Port des Encoders ic ist bei PORTD als RF_TX definiert. Sie können den Code für alle im vollständigen Code überprüfen, der am Ende angegeben ist.
Wir haben zwei Funktionen verwendet, void system_init (void) und void encode_rf_sender (char data).
Das system_init wird für die Pin-Initialisierung und die Tastaturinitialisierung verwendet. Die Tastaturinitialisierung wird über die Tastaturbibliothek aufgerufen.
Die Tastatur - Port ist auch in dem definierten keypad.h. Wir haben das PORTD als Ausgabe mit TRISD = 0x00 erstellt und den RF_TX- Port als 0x00 als Standardstatus festgelegt.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }}
Im encode_rf_sender haben wir den 4-Pin-Status abhängig von der gedrückten Taste geändert. Wir haben 16 verschiedene Hex-Werte oder PORTD- Zustände erstellt, abhängig von ( 4x4) 16 verschiedenen Tasten.void encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; if (data == '2') RF_TX = 0x20; if (data == '3') …………... …. ….
In der Haupt- Funktion erhalten wir zuerst die Tastatur - Taste gedrückt Daten mit switch_press_scan () Funktion und speichert die Daten in Schlüsselvariable.Danach haben wir die Daten mit der Funktion encode_rf_sender () codiert und den PORTD- Status geändert.
PIC18F4520- Code für HF-Empfänger:
Wie immer setzen wir zuerst die Konfigurationsbits in PIC18f4520. Es unterscheidet sich ein wenig von PIC16F877A. Sie können den Code in der angehängten Zip-Datei überprüfen.
Wir haben die LCD-Header-Datei hinzugefügt. Definiert die D8-D11- Port-Verbindung des Decoder-IC über PORTD mithilfe der # Define RF_RX PORTD- Leitung. Die Verbindung ist dieselbe wie im Abschnitt Encoder. Die Deklaration des LCD-Anschlusses erfolgt ebenfalls in der Datei lcd.c.
#einschließen
Wie bereits erwähnt, verwenden wir den internen Oszillator für den 18F4520. Wir haben die Funktion system _ init verwendet, bei der wir das OSCON- Register des 18F4520 konfiguriert haben, um den internen Oszillator auf 8 MHz einzustellen. Wir setzen auch das TRIS- Bit sowohl für LCD-Pins als auch für Decoder-Pins. Als HT - 12D Ausgang an bietet D8-D11 - Ports, müssen wir die konfigurieren PORTD als Eingang den Ausgang zu empfangen.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL aktivieren, Max Prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Letzte 4 Bit als Eingabebit. }}
Wir konfiguriert ist, das OSCON Register bei 8 MHz, ebenfalls hergestellt Port B als Ausgang und Port D als Eingang.
Die folgende Funktion wird unter Verwendung der exakten umgekehrten Logik ausgeführt, die im vorherigen Senderabschnitt verwendet wurde. Hier erhalten wir den gleichen Hex-Wert von Port D und anhand dieses Hex-Wertes identifizieren wir, welcher Schalter im Senderbereich gedrückt wurde. Wir können jeden Tastendruck identifizieren und das entsprechende Zeichen an das LCD senden.
void rf_analysis (vorzeichenloses Zeichen recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……. ….. …… ………..
Die lcd_data wird von der gerufenen lcd.c Datei.
In der Hauptfunktion initialisieren wir zuerst das System und das LCD. Wir haben ein variables Byte genommen und den von Port D empfangenen Hex-Wert gespeichert. Dann können wir mit der Funktion rf_analysis das Zeichen auf dem LCD drucken.
void main (void) { vorzeichenloses Zeichenbyte = 0; system_init (); lcd_init (); während (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); Byte = RF_RX; rf_analysis (Byte); lcd_com (0xC0); } return; }}
Bevor wir es laufen lassen, haben wir die Schaltung abgestimmt. Zuerst haben wir die Taste ' D ' auf der Tastatur gedrückt. Das 0xF0 wird also kontinuierlich vom HF-Sender übertragen. Wir haben dann die Empfängerschaltung eingestellt, bis auf dem LCD das Zeichen ' D ' angezeigt wird. Manchmal ist das Modul vom Hersteller richtig eingestellt, manchmal nicht. Wenn alles richtig angeschlossen ist und der Wert der Taste auf dem LCD nicht gedrückt wird, besteht die Möglichkeit, dass der HF-Empfänger nicht eingestellt ist. Wir haben den isolierten Schraubendreher verwendet, um falsche Abstimmungsmöglichkeiten aufgrund unserer Körperinduktivität zu verringern.
Auf diese Weise können Sie das RF-Modul an den PIC-Mikrocontroller anschließen und mithilfe des RF-Sensors drahtlos zwischen zwei PIC-Mikrocontrollern kommunizieren.
Sie können den vollständigen Code für Sender und Empfänger hier herunterladen. Überprüfen Sie auch das unten stehende Demonstrationsvideo.