In acest articol vom folosi un set de module RF pe 433MHz pentru a transmite prin unde radio diferiti parametri intre 2 module Arduino.

    Aceste module sunt foarte ieftine si asigura o transmisie pe distanta de cateva zeci de metri.

    Acest set de module costa 10 lei si se gaseste de cumparat aici.

    Modulele sunt cele din poza de mai jos:

 

    Emitatorul are urmatoarele specificatii:

    Frecventa: 433.92 MHz;

    Tensiune alimentare: 3-12V.

    Receptorul are urmatoarele specificatii:

    Frecventa: 433.92 MHz;

    Modulare: ASK (Amplitude Shift Keying);

    Tensiune alimentare: 5V.

    Pentru a folosi aceste module vom avea nevoie de o librarie suplimentara numita RadioHead.

        Emitatorul

    Vom folosi emitatorul impreuna cu Arduino. Acesta se conecteaza in acest mod:

Emitator     ---        Arduino

ATAD          -          D12

VCC            -          +5V

GND           -           GND

    Sketchul folosit este cel de mai jos:

#include <RH_ASK.h>
#include <SPI.h>
RH_ASK driver;

void setup() {
  Serial.begin(9600);
  if (!driver.init())
    Serial.println("Eroare initializare");
}

void loop() {
  const char *msg = "Salut, ce mai faci?";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
    delay(1000);
}

        Receptorul

    Pentru partea de receptie vom folosi modulul conectat la Arduino in acest mod:

Receptor (nr. pin de la stanga spre dreapta)        ---            Arduino

pin 1                                                                       -             +5V

pin 2 sau 3                                                             -             D11

pin 4                                                                       -              GND

    Informatiile receptionate le vom afisa in terminalul serial.

    Sketchul folosit pentru a receptiona mesajul transmis este urmatorul:

#include <RH_ASK.h>
#include <SPI.h>
RH_ASK driver;

void setup() {
  Serial.begin(9600);
  if (!driver.init())
    Serial.println("Eroare initializare");
}

void loop() {
 uint8_t buf[20];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen))
    {
      int i;
      Serial.print("Mesaj receptionat: ");
      Serial.println((char*)buf);         
    }
}

Nu sunt comentarii

Acest website foloseste cookie-uri pentru o experienta placuta in timpul navigarii.