Innholdsfortegnelse:

Trådløs kommunikasjon ved bruk av billige 433MHz RF -moduler og Pic -mikrokontrollere. Del 2: 4 trinn (med bilder)
Trådløs kommunikasjon ved bruk av billige 433MHz RF -moduler og Pic -mikrokontrollere. Del 2: 4 trinn (med bilder)

Video: Trådløs kommunikasjon ved bruk av billige 433MHz RF -moduler og Pic -mikrokontrollere. Del 2: 4 trinn (med bilder)

Video: Trådløs kommunikasjon ved bruk av billige 433MHz RF -moduler og Pic -mikrokontrollere. Del 2: 4 trinn (med bilder)
Video: Radiosignaler 2024, November
Anonim
Trådløs kommunikasjon ved bruk av billige 433MHz RF -moduler og Pic -mikrokontrollere. Del 2
Trådløs kommunikasjon ved bruk av billige 433MHz RF -moduler og Pic -mikrokontrollere. Del 2

På den første delen av denne instruksjonsboken demonstrerte jeg hvordan jeg programmerer en PIC12F1822 ved hjelp av MPLAB IDE og XC8 -kompilatoren, for å sende en enkel streng trådløst ved hjelp av billige TX/RX 433MHz -moduler.

Mottakermodulen ble koblet via en USB til UART TTL kabeladapter til en PC, og mottatte data ble vist på RealTerm. Kommunikasjonen ble utført på 1200 baud og maksimal rekkevidde var ca 20 meter gjennom vegger. Mine tester viste at for applikasjoner der det ikke er behov for høy datahastighet og lang rekkevidde, og for kontinuerlig overføring, fungerte disse modulene eksepsjonelt bra.

Den andre delen av dette prosjektet viser hvordan du legger til en PIC16F887 mikrokontroller og en 16 × 2 tegn LCD -modul på mottakeren. På senderen følges dessuten en enkel protokoll med tillegg av noen få innledende byte. Disse byte er nødvendige for at RX -modulen skal justere forsterkningen før den faktiske nyttelasten oppnås. På mottakersiden er PIC ansvarlig for å få og validere dataene som vises på LCD -skjermen.

Trinn 1: Sendermodifikasjoner

Sendermodifikasjoner
Sendermodifikasjoner
Sendermodifikasjoner
Sendermodifikasjoner
Sendermodifikasjoner
Sendermodifikasjoner

På den første delen sendte senderen en enkel streng med noen få ms ved å bruke åtte databiter, en start- og en stoppbit på 1200 bits per sekund. Siden overføringen var nesten kontinuerlig, hadde mottakeren ingen problemer med å justere gevinsten til mottatte data. På den andre delen endres fastvaren slik at overføringen utføres hvert 2,3 sekund. Dette oppnås ved å bruke vakthundens tidsavbrudd (satt til 2,3 sekunder) for å vekke mikrokontrolleren, som settes i hvilemodus mellom hver overføring.

For at mottakeren skal få tid til å finjustere gevinsten, sendes noen få innledende byte med korte LO-tider "(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa)" før de faktiske dataene. Nyttelast indikeres deretter med en start '&' og en stopp '*' byte.

Derfor er den enkle protokollen beskrevet som følger:

(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa) og Hei InstWorld!*

Videre er en 10uF frakobling tantalkondensator lagt til mellom RF-modulens V+ og GND for å kvitte seg med krusningen forårsaket av dc-dc step up-modulen.

Overføringshastigheten forble den samme, men testene mine viste at også på 2400 baud var overføringen effektiv.

Trinn 2: Mottakerendringer: Legger til PIC16F887 og HD44780 LCD

Mottakerendringer: Legger til PIC16F887 og HD44780 LCD
Mottakerendringer: Legger til PIC16F887 og HD44780 LCD
Mottakerendringer: Legger til PIC16F887 og HD44780 LCD
Mottakerendringer: Legger til PIC16F887 og HD44780 LCD
Mottakerendringer: Legger til PIC16F887 og HD44780 LCD
Mottakerendringer: Legger til PIC16F887 og HD44780 LCD

Mottakerdesignet var basert på PIC16F887, men du kan bruke en annen PIC med små modifikasjoner. I prosjektet mitt brukte jeg denne 40 pin μC, da jeg trenger ekstra pins for fremtidige prosjekter basert på denne designen. Utgangen fra RF-modulen er koblet til UART rx-pinnen, mens en 16x2 tegn LCD (HD44780) er koblet til via PORTB-pinner b2-b7 for å vise mottatte data.

Som med del 1, blir mottatte data også vist på RealTerm. Dette oppnås ved å bruke UART tx pin som er koblet via en USB til UART TTL kabeladapter til en PC.

Når du ser på fastvaren, når et UART -avbrudd finner sted, sjekker programmet om mottatt byte er en startbyte ('&'). Hvis ja, begynner det å registrere de påfølgende byte, til en stoppbyte blir fanget ('*'). Så snart hele setningen er oppnådd, og hvis den er i samsvar med den enkle protokollen beskrevet før, sendes den deretter til lcd -skjermen, så vel som til UART tx -porten.

Før mottak av startbyte har mottakeren allerede justert forsterkningen ved å bruke de foregående innledningsbyte. Disse er kritiske for at mottakeren skal fungere jevnt. En enkel kontroll av overkjøring og innramming utføres, men dette er bare en grunnleggende implementering av UART -feilhåndtering.

Når det gjelder maskinvare, er det nødvendig med noen få deler for mottakeren:

1 x PIC16F887

1 x HD44780

1 x RF Rx -modul 433Mhz

1 x 10 μF tantal kondensator (frakobling)

1 x 10 K trimmer (LCD -skriftstyrke)

1 x 220 Ω 1/4 W motstand (LCD -bakgrunnsbelysning)

1 x 1 KΩ 1/4 W

1 x antenne 433Mhz, 3dbi

I praksis fungerte mottakeren eksepsjonelt godt i områder opptil 20 meter gjennom vegger.

Trinn 3: Noen få referanser …

Det er mange blogger på nettet som gir tips om PIC -programmering og feilsøking i tillegg til det offisielle Microschip -nettstedet. Jeg fant følgende veldig nyttig:

www.romanblack.com/

0xee.net/

www.ibrahimlabs.com/

picforum.ric323.com/

Trinn 4: Konklusjoner og fremtidig arbeid

Jeg håper denne instruksen hjalp deg med å forstå hvordan du bruker RF -moduler og Pic -mikrokontrollere. Du kan tilpasse fastvaren til dine egne behov og inkludere CRC og kryptering. Hvis du vil gjøre designet enda mer sofistikert, kan du bruke Microschips Keeloq-teknologi. Hvis applikasjonen din trenger toveis data, må du ha et par TX/RX på begge mikrokontrollerne, eller du kan bruke mer sofistikert transceiver moduler. Ved å bruke denne typen billige 433MHz -moduler kan imidlertid bare halv dupleks kommunikasjon oppnås. Utover dette, for å gjøre kommunikasjonen mer pålitelig, må du ha en form for håndtrykk mellom TX og RX.

På den neste instruksen vil jeg vise deg en praktisk applikasjon der en miljøsensor med temperatur, barometrisk trykk og fuktighet er lagt til på senderen. Her vil de overførte dataene inkludere crc og ha en grunnleggende kryptering.

Sensoren bruker i2c -porten på PIC12F1822, mens implementeringen av både sender og mottaker vil bli avslørt gjennom skjemaer og PCB -filer. Takk for at du leser meg!

Anbefalt: