Modulul RF transmisie/receptie 433MHz - 2

In acest articol vom folosi cele 2 module pentru a transmite informatiile a 2 (sau chiar mai multi) senzori catre un alt modul Arduino.

Conexiunile sunt identice cu cele din articolul anterior.

In acest exemplu, pentru simplificarea codului sursa, voi simula valorile celor 2 senzori folosind functia random().

Sketchul folosit pentru partea de emisie este cel de mai jos:

#include <RH_ASK.h>
#include <SPI.h> 
int senzor1, senzor2;
String str_senz1, str_senz2, str_out;
RH_ASK rf_driver;

void setup() {
  rf_driver.init();
  Serial.begin(9600);
}

void loop() {
  senzor1 = random(1, 100);
  senzor2 = random(1, 100);
  str_senz1 = String(senzor1);
  str_senz2 = String(senzor2);
  str_out = str_senz1 + "," + str_senz2;
  static char *msg = str_out.c_str();
  rf_driver.send((uint8_t *)msg, strlen(msg));
  rf_driver.waitPacketSent();
  delay(1000);
}

Datele receptionate le vom afisa intr-un terminal serial.

Sketchul folosit pentru a face acest lucru este cel de mai jos:

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

String str_senz1, str_senz2, str_out;
RH_ASK rf_driver;

void setup() {
  rf_driver.init();
  Serial.begin(9600);
}

void loop() {
  uint8_t buf[6];
  uint8_t buflen = sizeof(buf);
  if (rf_driver.recv(buf, &buflen))
    {
      str_out = String((char*)buf);
      for (int i = 0; i < str_out.length(); i++) {
      if (str_out.substring(i, i+1) == ",") {
      str_senz1 = str_out.substring(0, i);
      str_senz2 = str_out.substring(i+1);
      break;
      }
    }
    Serial.print("Senzor 1: ");
    Serial.print(str_senz1);
    Serial.print("  - Senzor 2 : ");
    Serial.println(str_senz2);
    }
}

 

Autentificare