Uporaba malih VF sprejemnikov in oddajnikov v Arduino okolju
V članku vam bomo predstavili, kako uporabiti male VF sprejemnike in oddajnike za izdelavo daljinskega krmiljenja.
Za pravilno delovanje programa boste potrebovali knjižnico RadioHead library, ki jo snamete na spletnem mestu [1] in [2], glej sliko 1. Razzipajte datoteko in jo kopirajte v Arduino mapo s knjižnicami, glej sliko 2. Zdaj bi že lahko odprli RadioHead primer programa, glej sliko 3. Oddajni modul vidimo na sliki 4.
- Slika 1: RadioHead knjižnica
- Slika 2: Mapa z Arduino knjižnicami
- Slika 3: Primer Arduino programa
Na sliki 4 vidite, da je za anteno uporabljen kar kos žičke. Najbolje je, da za anteno uporabite žičko, ki je dolga ¼ valovne dolžine radijskega signala. V našem primeru oddajamo na frekvenci 433 MHz, kar pomeni, da je valovna dolžina radijskega signala 0,692m (300.000 km/s/433 MHz). Dolžina antene naj bo ¼ valovne dolžine, kar znese 17 cm. Na voljo imate tudi spletni kalkulator, ki ga najdete na spletnem naslovu [3]. Uporabite enako dolžino žičke tako za oddajnik kot tudi za sprejemnik.
- Slika 4: Majhen VF oddajnik za področje 433 MHz
- Slika 5: Majhen VF sprejemnik za področje 433 MHz
Sprejemni modul
Testno vezje Arduino ploščice in oddajnika vidite na sliki 6.
Testni program za oddajnik, glej program 1.
Vezje sprejemnika
- Slika 6: Testno vezje Arduino in oddajnika
Testni program sprejemnika, glej program 2.
In rezultat
Kot rezultat si lahko ogledate video posnetek na strani avtorja. V kolikor boste želeli spremeniti kodo programa tako, da oddajnik vašega kolega ne bi odpiral vaših vrat, si v spremenljivki “message” v oddajnem in sprejemnem programu zamislite drugačno kodo. Zdaj je ta koda nastavljena enostavno na črko a.
Želimo vam uspešno programiranje v Arduino okolju.
Vir:
- http://www.airspayce.com/mikem/arduino/RadioHead/index.html – (1)
- http://www.airspayce.com/mikem/arduino/RadioHead/RadioHead-1.81.zip – (2)
- http://www.onlineconversion.com/frequency_wavelength.htm – (3)
- https://trgovina.svet-el.si/wp-content/uploads/2019/11/TLP434A_TX.pdf – (4)
- https://trgovina.svet-el.si/wp-content/uploads/2019/11/RLP434A_Data.pdf – (5)
- https://www.hackster.io/taunoerik/radio-frequency-transmitter-receiver-module-with-arduino-af01e4
Hackster Inc.
Avtor: Tauno Erik
2019_280_35
www.hackster.io
program 1
#include <RH_ASK.h> #include <SPI.h> constchar *message = »«; int button = 2; RH_ASK driver; voidsetup(){ Serial.begin(9600); // Debugging only if (!driver.init()){ Serial.println(»init of receiver failed«); } pinMode(button,INPUT); } voidloop(){ if (digitalRead(button) == HIGH){ message=«a«; driver.send((uint8_t *)message, strlen(message)); // send the message driver.waitPacketSent(); // Wait until the whole message is gone Serial.println(message); Serial.println(strlen(message)); delay(2000); } else{ //Serial.println(»Low«); } }
program 2
#include <RH_ASK.h> #include <SPI.h> RH_ASK driver; //pin 12 // RH_ASK driver(2000, 2, 4, 5); // ESP8266: do not use pin 11 int ledPassive = 5; //standby light int ledActive = 7; //green LED's voidsetup() { pinMode(ledPassive,OUTPUT); pinMode(ledActive,OUTPUT); Serial.begin(9600); // Debugging only if (!driver.init()) Serial.println(»init of receiver failed«); } voidloop() { digitalWrite(ledPassive,HIGH); noTone(8); digitalWrite(ledActive,LOW); uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]; uint8_t buflen = sizeof(buf); if (driver.recv(buf, &buflen)) { // if message received for(int i=0;i<sizeof(buf);i++){ Serial.print(char(buf[i])); //test display output } if(buf[0]=='a'){ // and if the first letter in message array is X digitalWrite(ledPassive,LOW); for(int i=0;i<10;i++){ // loop alternates between LED and buzzer digitalWrite(ledActive,HIGH); tone(8, 262); //pin 8 delay(100); } } elseif(buf[0]!='a'){ digitalWrite(ledPassive,HIGH); noTone(8); } } }