- Vereiste componenten:
- RF-module:
- Werkende uitleg:
- Circuit uitleg:
- WiringPi Library installeren in Raspberry Pi:
- Programmering Toelichting:
In deze sessie gaan we een RF Remote Control ontwikkelen met Raspberry Pi, waarmee je de Devices draadloos kunt bedienen. Met deze RF-afstandsbediening kunnen we de apparaten aan- en uitschakelen. We hebben eerder veel projecten ontwikkeld met behulp van een RF-module zoals een RF-gestuurde robot, een handgebaren-gestuurde robot enz. Controleer ze om de werking van de RF-module te begrijpen.
Vereiste componenten:
Zenderzijde:
- RF-zender (ASK hybride zender)
- HT12E IC
- 4 drukknoppen
- 750k weerstand
- 9 Volt batterij
Ontvangerzijde:
- Raspberry Pi
- 16x2 LCD
- 10K POT
- Broodplank
- 1K weerstand (vijf)
- 33K weerstand
- HT12D IC
- RF-ontvanger (ASK hybride ontvanger)
- LEDs (vijf)
- 10K weerstand (vier)
- Verbindingsdraad
- Stroomvoorziening
RF-module:
Dit is een ASK hybride zender- en ontvangermodule die werkt op een frequentie van 433 MHz. Deze module heeft een kristalgestabiliseerde oscillator voor een nauwkeurige frequentieregeling voor het beste bereik. Daar hebben we voor deze module maar één externe antenne nodig.
Deze module is zeer kostenefficiënt waar RF-communicatie met een groot bereik vereist is. Deze module verzendt geen gegevens via UART-communicatie van pc of microcontroller rechtstreeks omdat er veel ruis is bij deze frequentie en de analoge technologie. We kunnen deze module gebruiken met behulp van encoder- en decoder-IC's die gegevens uit de ruis halen.
Het bereik van de zender is ongeveer 100 meter bij maximale voedingsspanning en voor 5 volt is het bereik van de zender ongeveer 50-60 meter met behulp van een eenvoudige draad van een enkele code 17 cm lengte antenne.
RF-zenderfuncties:
- Frequentiebereik: 433 Mhz
- Uitgangsvermogen: 4-16dBm
- Ingangsspanning: 3 tot 12 volt dc
Pin Beschrijving van RF Tx:
- GND - Aarding
- Data In - Deze pin accepteert seriële data van de encoder
- Vcc - +5 Volt moet op deze pin worden aangesloten
- Antenne - Een ingepakte verbinding met deze pin voor een juiste overdracht van gegevens
RF-ontvangerfuncties:
- Gevoeligheid: -105dBm
- IF-frequentie: 1 MHz
- Laag energieverbruik
- Stroom 3,5 mA
- Voedingsspanning: 5 volt
Pin Beschrijving van RF Rx:
- GND - Aarde
- Data In - Deze pin geeft seriële outputgegevens aan de decoder
- Data In - Deze pin geeft seriële outputgegevens aan de decoder
- Vcc - +5 Volt moet op deze pin worden aangesloten
- Vcc - +5 Volt moet op deze pin worden aangesloten
- GND - Aarde
- GND - Aarde
- Antenne - Een ingepakte verbinding met deze pin voor een juiste ontvangst van gegevens
Werkende uitleg:
Het werken aan dit project is heel eenvoudig. In dit project hebben we vier knoppen aan de zenderzijde (dient als afstandsbediening) gebruikt om de vier LED's aan de ontvangerzijde te bedienen. Wanneer we op een van de vier knoppen drukken, codeert Encoder IC het signaal en stuurt het naar de RF-zender en de RF-zender verzendt het in de omgeving. Nu ontvangt de RF-ontvanger het verzonden signaal en decodeert het met behulp van Decoder IC HT12D en stuurt de 4-bits uitvoer naar de Raspberry Pi. Vervolgens leest Raspberry Pi deze bits en voert een gerelateerde taak uit en gloeit de respectieve LED. Een zoemer piept een seconde wanneer een toets wordt ingedrukt. Een 16x2 LCD-scherm wordt ook gebruikt om de 'AAN of UIT'-status van alle LED's weer te geven.
In dit project hebben we vier LED's alleen voor demonstratiedoeleinden gebruikt, we kunnen elke taak activeren door op de respectieve knop bij 'RF Remote' te drukken. Zoals we ook AC-huishoudelijke apparaten kunnen aansluiten in plaats van LED's, met behulp van het relais en die apparaten draadloos kunnen bedienen met dezelfde 'RF-afstandsbediening'. Dus ditzelfde circuit kan werken als een op RF gebaseerd huisautomatiseringsproject met Raspberry Pi. We hebben eerder veel Home Automation-projecten ontwikkeld die worden aangestuurd met Bluetooth, DTMF, GSM enz., U kunt hier alles bekijken Home Automation-projecten.
Circuit uitleg:
Het circuit van deze Raspberry Pi RF-afstandsbediening is eenvoudig en bevat een Raspberry Pi-bord, drukknop en LCD, RF-paar en encoder / decoder IC. Raspberry Pi bestuurt het LCD-scherm, leest de invoer en verzendt de uitvoer overeenkomstig de invoer. We hebben hier Raspberry Pi 3 gebruikt, maar elk Raspberry-model zou moeten werken. Het circuit is verdeeld in twee delen, het ene is het RF-ontvangercircuit en het andere is het RF-zendcircuit. Beide circuits worden getoond in onderstaand diagram.
In het ontvangergedeelte zijn LCD-pin rs, en, d4, d5, d6, d7 aangesloten op bedrading Pi GPIO Pin 11, 10, 6, 5, 4, 1 in 4-bit-modus. De RF-ontvanger ontvangt het signaal van de RF-zender en de HT12D IC decodeert het. D8, D9, D10, D11 van HT12D decoder IC zijn direct aangesloten op bedrading Pi GPIO pin 25, 24, 23 en 22. Output LEDs zijn aangesloten op bedrading Pi GPIO pin 26, 27, 28 en 29. Een zoemer wordt ook gebruikt voor alert op toets ingedrukt bij bedrading Pi GPIO 0.
Het RF-zendcircuit bevat de HT12E Encoder IC en 4 drukknoppen om de 4 LED's te bedienen. In Encoder en Decoder IC zijn alle adreslijnen met aarde verbonden.
WiringPi Library installeren in Raspberry Pi:
Net als in Python importeren we import RPi.GPIO als IO- headerbestand om de GPIO-pinnen van Raspberry Pi te gebruiken, hier in C-taal moeten we bedradingPi-bibliotheek gebruiken om de GPIO-pinnen in ons C-programma te gebruiken. We kunnen het installeren door onderstaande commando's een voor een te gebruiken, je kunt dit commando uitvoeren vanaf Terminal of vanaf sommige SSH-clients zoals Putty (als je Windows gebruikt). Doorloop onze handleiding Aan de slag met Raspberry Pi voor meer informatie over het gebruik en configureren van de Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd bedradingPi git pull oorsprong cd bedradingPi./build
Test de installatie van de WiringPi-bibliotheek, gebruik onderstaande commando's:
gpio -v gpio readall
Programmering Toelichting:
Allereerst voegen we header-bestanden toe en definiëren we pinnen voor LCD, en initialiseren vervolgens enkele variabelen en pinnen voor het opnemen van invoer en LED-indicaties.
# omvatten
Hierna geven we richting aan alle gebruikte GPIO-pinnen in ongeldige setup () -functies.
void setup () {if (bedradingPiSetup () == -1) {clear (); print ("Kan niet starten"); setCursor (0,1); print ("bedradingPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT); pinMode (led3, OUTPUT); pinMode (led4, OUTPUT);……………….
In code hebben we de digitalRead- functie gebruikt om de output van Decoder te lezen en digitalWrite om de output naar LED of apparaat te sturen.
…………….. while (1) {setCursor (0,0); print ("D1 D2 D3 D4"); if (digitalRead (d1) == 0) {flag1 ++; setCursor (0,1); if (flag1% 2 == 1) {print ("ON"); digitalWrite (led1, HIGH); }……………..
Hier zijn nog enkele functies die in dit project zijn gebruikt.
Functie void lcdcmd wordt gebruikt voor het verzenden van een opdracht naar het LCD-scherm en de void-schrijffunctie wordt gebruikt voor het verzenden van gegevens naar het LCD-scherm.
Functie void clear () wordt gebruikt om het LCD-scherm leeg te maken , void setCursor wordt gebruikt om de cursorpositie in te stellen en void print voor het verzenden van string naar LCD.
Functie ongeldig begin wordt gebruikt om het LCD-scherm te initialiseren in 4-bits modus en leegte zoemer () voor het piepen van de zoemer.
Controleer de volledige code voor deze Raspberry RF-afstandsbediening hieronder.