1. decembra, 2019

Uporaba malih VF sprejemnikov in oddajnikov v Arduino okolju

ha 300x80 - 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.

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.

Sprejemni modul
Testno vezje Arduino ploščice in oddajnika vidite na sliki 6.
Testni program za oddajnik, glej program 1.

Vezje sprejemnika

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:

 

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); 
} 
} 
}
Tags: