LoRA RFM server and client(ultrasonic sensor)

Bluetooth, XBee, RF......

LoRA RFM server and client(ultrasonic sensor)

Postby kelvinswee94 » Sat Dec 16, 2017 9:07 am

Hi,
I have tried to setup LoRa RFM attached with ultrasonic sensor(client) and send notification to another LoRA RFM(server).
My objective of this setup is when there is an object pass through the ultrasonic sensor, the client is able to send notification to the server.
Problem faced:
The object is detected and the notification is sent by client. But the server didn't receive anything.

Here is the client code:
CODE: SELECT_ALL_CODE
#include <SPI.h>
#include <RH_RF95.h>
 
#define RFM95_CS 10
#define RFM95_RST 7
#define RFM95_INT 2
#define node_id "B"
 
// Change to 434.0 or other frequency, must match RX's freq!
#define RF95_FREQ 915.0
 
// Singleton instance of the radio driver
RH_RF95 rf95(RFM95_CS, RFM95_INT);
const int trigPin = 9;
const int echoPin = 8;
const int ledPin = 6;
long duration;
int distance;
int safetyDistance;
void setup()
{
  pinMode(RFM95_RST, OUTPUT);
  digitalWrite(RFM95_RST, HIGH);
   pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  pinMode(ledPin, OUTPUT);
 while (!Serial);

  Serial.begin(9600);
  delay(100);
 
  Serial.println("Arduino LoRa TX Test!");
 
  // manual reset
  digitalWrite(RFM95_RST, LOW);
  delay(10);
  digitalWrite(RFM95_RST, HIGH);
  delay(10);
 
  while (!rf95.init()) {
    Serial.println("LoRa radio init failed");
    while (1);
  }
  Serial.println("LoRa radio init OK!");
 
  // Defaults after init are 434.0MHz, modulation GFSK_Rb250Fd250, +13dbM
  if (!rf95.setFrequency(RF95_FREQ)) {
    Serial.println("setFrequency failed");
    while (1);
  }
  Serial.print("Set Freq to: "); Serial.println(RF95_FREQ);
 
  // Defaults after init are 434.0MHz, 13dBm, Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on
 
  // The default transmitter power is 13dBm, using PA_BOOST.
  // If you are using RFM95/96/97/98 modules which uses the PA_BOOST transmitter pin, then
  // you can set transmitter powers from 5 to 23 dBm:
  rf95.setTxPower(23, true);

   
}
 
int16_t packetnum = 0;  // packet counter, we increment per xmission
 
void loop() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);

  // Calculating the distance
  distance = duration * 0.034 / 2;

  safetyDistance = distance;
  if (safetyDistance <= 10) {

    digitalWrite(ledPin, HIGH);
    Serial.print("Distance: ");
    Serial.println(distance);
    delay(1000);
    Serial.println("Sending to rf95_server");
  // Send a message to rf95_server
 
  String radiopacket = "data to you #";
  radiopacket += String(packetnum++);
  radiopacket += " from ";
  radiopacket += node_id;
 
  Serial.print("Sending ");
  Serial.println(radiopacket); delay(10);
  rf95.send((uint8_t*)(radiopacket.c_str()), radiopacket.length()+1);
 
  Serial.println("Waiting for packet to complete..."); delay(10);
  rf95.waitPacketSent();
  // Now wait for a reply
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);
 
  Serial.println("Waiting for reply...");
  delay(10);
  if (rf95.waitAvailableTimeout(1000))
  {
    // Should be a reply message for us now   
    if (rf95.recv(buf, &len))
   {
      Serial.print("Got reply: ");
      Serial.println((char*)buf);
      Serial.print("RSSI: ");
      Serial.println(rf95.lastRssi(), DEC);   
    }
    else
    {
      Serial.println("Receive failed");
    }
  }
  else
  {
    Serial.println("No reply, is there a listener around?");
  }
   
  }
  else {

    digitalWrite(ledPin, LOW);
  }

  // Prints the distance on the Serial Monitor

}



And here is the code for server:
CODE: SELECT_ALL_CODE
#include <SPI.h>
#include <RH_RF95.h>

#define RFM95_CS 10
#define RFM95_RST 7
#define RFM95_INT 2

// Change to 434.0 or other frequency, must match RX's freq!
#define RF95_FREQ 915.0

// Singleton instance of the radio driver
RH_RF95 rf95(RFM95_CS, RFM95_INT);

void setup()
{   
  pinMode(RFM95_RST, OUTPUT);
  digitalWrite(RFM95_RST, HIGH);

  while (!Serial);
  Serial.begin(9600);
  delay(100);

  Serial.println("Arduino LoRa RX Test!");
 
  // manual reset
  digitalWrite(RFM95_RST, LOW);
  delay(10);
  digitalWrite(RFM95_RST, HIGH);
  delay(10);

  while (!rf95.init()) {
    Serial.println("LoRa radio init failed");
    while (1);
  }
  Serial.println("LoRa radio init OK!");

  // Defaults after init are 434.0MHz, modulation GFSK_Rb250Fd250, +13dbM
  if (!rf95.setFrequency(RF95_FREQ)) {
    Serial.println("setFrequency failed");
    while (1);
  }
  Serial.print("Set Freq to: "); Serial.println(RF95_FREQ);

  // Defaults after init are 434.0MHz, 13dBm, Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on

  // The default transmitter power is 13dBm, using PA_BOOST.
  // If you are using RFM95/96/97/98 modules which uses the PA_BOOST transmitter pin, then
  // you can set transmitter powers from 5 to 23 dBm:
  rf95.setTxPower(23, false);
}

void loop()
{
  if (rf95.available())
  {
    // Should be a message for us now   
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
   
    if (rf95.recv(buf, &len))
    {
      RH_RF95::printBuffer("Received: ", buf, len);
      Serial.print("Got: ");
      Serial.println((char*)buf);
      Serial.print("RSSI: ");
      Serial.println(rf95.lastRssi(), DEC);
     
      // Send a reply
      uint8_t data[] = "received with thanks";
      rf95.send(data, sizeof(data));
      rf95.waitPacketSent();
      Serial.println("data received");
    }
    else
    {
      Serial.println("Receive failed");
    }
  }
}


And the attachment shows the serial output for both client and server. COM 5 is server and COM 3 is client.
Anyone know what is the problem?
Thanks
Attachments
Untitled.png
kelvinswee94
Novice
 
Posts: 16
Joined: Wed Nov 15, 2017 4:19 pm

Re: LoRA RFM server and client(ultrasonic sensor)

Postby kelvinswee94 » Sun Dec 17, 2017 4:24 pm

Problem solved. My LoRA RFM shield is broken.
kelvinswee94
Novice
 
Posts: 16
Joined: Wed Nov 15, 2017 4:19 pm


Return to Wireless Device

Who is online

Users browsing this forum: No registered users and 31 guests

cron