0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjeUporaba malih VF sprejemnikov in oddajnikov v Arduino okolju

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