Inhoudsopgave:

Draadloze communicatie met behulp van goedkope 433MHz RF-modules en Pic-microcontrollers. Deel 2: 4 stappen (met afbeeldingen)
Draadloze communicatie met behulp van goedkope 433MHz RF-modules en Pic-microcontrollers. Deel 2: 4 stappen (met afbeeldingen)

Video: Draadloze communicatie met behulp van goedkope 433MHz RF-modules en Pic-microcontrollers. Deel 2: 4 stappen (met afbeeldingen)

Video: Draadloze communicatie met behulp van goedkope 433MHz RF-modules en Pic-microcontrollers. Deel 2: 4 stappen (met afbeeldingen)
Video: Беспроводная zigbee кнопка для для автоматизаций умного дома - компактная и бюджетная 2024, Juli-
Anonim
Draadloze communicatie met behulp van goedkope 433MHz RF-modules en Pic-microcontrollers. Deel 2
Draadloze communicatie met behulp van goedkope 433MHz RF-modules en Pic-microcontrollers. Deel 2

In het eerste deel van deze instructable demonstreerde ik hoe je een PIC12F1822 programmeert met behulp van MPLAB IDE en XC8-compiler, om een eenvoudige string draadloos te verzenden met behulp van goedkope TX/RX 433MHz-modules.

De ontvangermodule was via een USB naar UART TTL-kabeladapter aangesloten op een pc en de ontvangen gegevens werden weergegeven op RealTerm. De communicatie vond plaats op 1200 baud en het maximale bereik was ongeveer 20 meter door muren. Mijn tests toonden aan dat voor toepassingen waar geen hoge datasnelheid en groot bereik nodig is, en voor continue transmissie, deze modules uitzonderlijk goed presteerden.

Het tweede deel van dit project demonstreert hoe je een PIC16F887 microcontroller en een 16×2 karakter LCD-module op de ontvanger kunt toevoegen. Bovendien wordt op de zender een eenvoudig protocol gevolgd met toevoeging van enkele preample bytes. Deze bytes zijn nodig voor de RX-module om de versterking aan te passen voordat de daadwerkelijke lading wordt ontvangen. Aan de ontvangerzijde is de PIC verantwoordelijk voor het verkrijgen en valideren van de gegevens die op het LCD-scherm worden weergegeven.

Stap 1: Zenderaanpassingen

Zenderaanpassingen
Zenderaanpassingen
Zenderaanpassingen
Zenderaanpassingen
Zenderaanpassingen
Zenderaanpassingen

Op het eerste deel stuurde de zender om de paar ms een eenvoudige string met acht databits, een start- en een stopbit met 1200 bits per seconde. Omdat de transmissie bijna continu was, had de ontvanger geen moeite om de versterking aan te passen aan de ontvangen gegevens. Op het tweede deel wordt de firmware aangepast zodat de verzending elke 2,3 seconden wordt uitgevoerd. Dit wordt bereikt met behulp van de watchdog-timer-interrupt (ingesteld op 2,3 s) om de microcontroller te wekken, die tussen elke transmissie in de slaapstand wordt gezet.

Om de ontvanger de tijd te geven om zijn versterking af te stemmen, worden een paar preambulebytes met korte LO-tijden "(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xfa)" verzonden voordat de eigenlijke gegevens worden verzonden. Payload wordt dan aangegeven met een start-'&' en een stop-'*'-byte.

Daarom wordt het eenvoudige protocol als volgt beschreven:

(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xfa)&Hallo InstWorld!*

Bovendien is er een 10uF ontkoppelings-tantaalcondensator toegevoegd tussen de V+ en GND van de RF-module om de rimpel veroorzaakt door de dc-dc step-up module weg te werken.

De baudrate bleef hetzelfde, maar mijn tests toonden aan dat ook bij 2400 baud de transmissie efficiënt was.

Stap 2: Aanpassingen aan de ontvanger: PIC16F887 en HD44780 LCD toevoegen

Ontvangeraanpassingen: PIC16F887 en HD44780 LCD toevoegen
Ontvangeraanpassingen: PIC16F887 en HD44780 LCD toevoegen
Ontvangeraanpassingen: PIC16F887 en HD44780 LCD toevoegen
Ontvangeraanpassingen: PIC16F887 en HD44780 LCD toevoegen
Ontvangeraanpassingen: PIC16F887 en HD44780 LCD toevoegen
Ontvangeraanpassingen: PIC16F887 en HD44780 LCD toevoegen

Het ontwerp van de ontvanger was gebaseerd op PIC16F887, maar je kunt met kleine aanpassingen een andere PIC gebruiken. In mijn project heb ik deze 40-pins μC gebruikt, omdat ik extra pinnen nodig heb voor toekomstige projecten op basis van dit ontwerp. De uitgang van de RF-module is verbonden met de UART rx-pin, terwijl een 16x2-karakter lcd (HD44780) is verbonden via PORTB-pinnen b2-b7 om de ontvangen gegevens weer te geven.

Net als bij deel 1 worden de ontvangen gegevens ook weergegeven op RealTerm. Dit wordt bereikt met behulp van de UART tx-pin die via een USB naar UART TTL-kabeladapter is aangesloten op een pc.

Kijkend naar de firmware, wanneer een UART-interrupt plaatsvindt, controleert het programma of de ontvangen byte een startbyte ('&') is. Zo ja, dan begint het met het opnemen van de volgende bytes, totdat een stopbyte wordt opgevangen ('*'). Zodra de hele zin is verkregen, en als deze voldoet aan het eerder beschreven eenvoudige protocol, wordt deze naar het lcd-scherm gestuurd, evenals naar de UART tx-poort.

Voorafgaand aan het ontvangen van de startbyte heeft de ontvanger zijn versterking al aangepast met behulp van de voorgaande preambulebytes. Deze zijn cruciaal voor de goede werking van de ontvanger. Er wordt een eenvoudige controle op overschrijding en framingfout uitgevoerd, maar dit is slechts een basisimplementatie voor het afhandelen van UART-fouten.

Qua hardware zijn er een paar onderdelen nodig voor de receiver:

1 x PIC16F887

1 x HD44780

1 x RF Rx-module 433 Mhz

1 x 10 μF tantaalcondensator (ontkoppeling)

1 x 10 K trimmer (helderheid LCD-lettertype)

1 x 220 Ω 1/4 W weerstand (LCD-achtergrondverlichting)

1 x 1 KΩ 1/4 W

1 x Antenne 433Mhz, 3dbi

In de praktijk werkte de ontvangen uitzonderlijk goed in bereiken tot 20 meter door muren.

Stap 3: Een paar referenties…

Er zijn veel blogs op het web die tips geven over PIC-programmering en probleemoplossing naast de officiële Microschip-website. Ik vond het volgende erg handig:

www.romanblack.com/

0xee.net/

www.ibrahimlabs.com/

picforum.ric323.com/

Stap 4: Conclusies en toekomstig werk

Ik hoop dat deze instructable je heeft geholpen te begrijpen hoe je RF-modules en Pic-microcontrollers kunt gebruiken. U kunt uw firmware aanpassen aan uw eigen behoeften en CRC en encryptie toevoegen. Als u uw ontwerp nog geavanceerder wilt maken, kunt u de Keeloq-technologie van Microschip gebruiken. Als uw toepassing bidirectionele gegevens nodig heeft, moet u een paar TX/RX op beide microcontrollers hebben, of u kunt een meer geavanceerde transceiver gebruiken modulen. Met dit soort goedkope 433MHz-modules kan echter alleen half-duplexcommunicatie worden bereikt. Verder zou u, om de communicatie betrouwbaarder te maken, een vorm van handshaking tussen TX en RX moeten hebben.

Op de volgende instructable zal ik je een praktische toepassing laten zien waarbij een omgevingssensor met temperatuur, luchtdruk en vochtigheid op de zender wordt toegevoegd. Hier zullen de verzonden gegevens crc bevatten en een basiscodering hebben.

De sensor zal de i2c-poort van de PIC12F1822 gebruiken, terwijl de implementatie van zowel de zender als de ontvanger zal worden weergegeven via schema's en pcb-bestanden. Bedankt voor het lezen!

Aanbevolen: