RM95 LoRa 868MHz Wireless Module (HCMODU0247)

Wireless and wired modules including Bluetooth, Ethernet, and IR kits.
Post Reply
admin
Site Admin
Posts: 875
Joined: Sun Aug 05, 2012 4:02 pm

RM95 LoRa 868MHz Wireless Module (HCMODU0247)

Post by admin » Tue May 14, 2024 8:55 am

Image


Image

The RM95 module is a wireless communication device based on the LoRa (™) wireless specification. LoRa devices sacrifice data rate for low power and an exceptionally longer range of up to several kilometres. This makes these modules ideal for remote sensor applications where the range of other wireless technologies such as WiFi, Bluetooth etc are insufficient. LoRa devices can pick up very weak signals because of how sensitive they are, and their spread-spectrum technology means that they don’t get easily disrupted by other electrical signals.

Arduino users:
To interface a microcontroller the module has a serial SPI interface and for Arduino users we have written a simple library with a very low memory footprint that makes it easy to send sensor readings or text from one module to another. See this post for example sketches and link to our HCRM95 library.

Optional breakout board:
If you are purchasing the module to use in this way then please consider purchasing our RM95 breakout board that brings the modules pads out to standard 0.1” pitch pin headers. See SKU: HCPROT0104


Please note: RM95 modules are a higher frequency variant of the RM96. As such they are fitted with an IC marked RM96 which operates at the higher 868MHz frequency band.



Key Features:
LoRa(TM) Modem.
Supply voltage: 1.8 to 3.7V
Frequency Band: 868MHz
168 dB maximum link budget.
+20 dBm - 100 mW constant RF output vs. V supply.
+14 dBm high efficiency PA.
Programmable bit rate up to 300 kbps.
High sensitivity: down to -148 dBm.
Bullet-proof front end: IIP3 = -12.5 dBm.
Excellent blocking immunity.
Low RX current of 10.3 mA, 200 nA register retention.
Fully integrated synthesiser with a resolution of 61 Hz.
FSK, GFSK, MSK, GMSK, LoRaTM and OOK modulation.
Built-in bit synchronizer for clock recovery.
Preamble detection.
127 dB Dynamic Range RSSI.
Automatic RF Sense and CAD with ultra-fast AFC.
Packet engine up to 256 bytes with CRC.
Built-in temperature sensor and low battery indicator.
Modue Size:16*16mm




Image


Image

Images shows module mounted on the RM95 breakout board (HCPROT0104) and connected to a 3.3V Pro Micro (HCDVBD0024).


Image

* Please see the documentation of your Arduino for correct SPI MOSI/MISO/SCK pins as these vary depending on the module of Arduino board.


Value Send Example

Sends an incrementing number to the receiver:
This sketch, together with the receive value example will send and receive an incrementing int variable. It demonstrates how to send and receive a single value such as a sensor reading.

  1. #include "HCRM95.h"
  2.  
  3. #define RST_PIN 9                     // Reset pin (RESET)
  4. #define SS_PIN 10                     // Slave select pin (NSS)
  5.  
  6.  
  7. HCRM95 HCRM95;                        // Create an instance of the library
  8.  
  9. int counter = 0;                      // Create an int variable to send
  10.  
  11. void setup()
  12. {
  13.   HCRM95.init(RST_PIN, SS_PIN);       // Init the library
  14. }
  15.  
  16.  
  17.  
  18. void loop()
  19. {
  20.   HCRM95.txSend(counter);             // Send the value
  21.  
  22.   while(!HCRM95.txDone());            // Wait until the module has finished sending
  23.  
  24.   counter++;                          // Inc the counter to send a different number next time
  25.  
  26.   delay(2000);                        // Wait a little before sending again
  27. }

Receive value example

Receives an incrementing number from the transmitter
This sketch, together with the transmit value example will send and receive an incrementing int variable. It demonstrates how to send and receive a single value such as a sensor reading.

  1. #include "HCRM95.h"
  2.  
  3. #define RST_PIN 9                     // Reset pin (RESET)
  4. #define SS_PIN 10                     // Slave select pin (NSS)
  5.  
  6.  
  7. HCRM95 HCRM95;                        // Create an instance of the library
  8.  
  9. void setup()
  10. {
  11.   Serial.begin(9600);
  12.  
  13.   HCRM95.init(RST_PIN, SS_PIN);       // Init the library
  14.  
  15.   HCRM95.mode(MODE_RXCONTINUOUS);     // Put module into continuous RX mode
  16. }
  17.  
  18.  
  19.  
  20. void loop()
  21. {
  22.   int counter;                        // Create an int variable to store the result
  23.  
  24.   while(!HCRM95.rxAvailable());       // Wait for new data
  25.  
  26.   HCRM95.getRx(counter);              // Get the new data
  27.  
  28.   Serial.println(counter);            // Print it out
  29. }

Send text example

Sends an example string of text to the receiver:
This sketch, together with the send text receive example will send and receive a char array containing some text.

  1. #include "HCRM95.h"
  2.  
  3. #define RST_PIN 9                     // Reset pin (RESET)
  4. #define SS_PIN 10                     // Slave select pin (NSS)
  5.  
  6.  
  7. HCRM95 HCRM95;                        // Create an instance of the library
  8.  
  9. void setup()
  10. {
  11.   HCRM95.init(RST_PIN, SS_PIN);       // Init the library
  12. }
  13.  
  14.  
  15. void loop()
  16. {
  17.   char data[] = "Hello!";             // Create a char array containing some text
  18.  
  19.   while(HCRM95.CAD());
  20.  
  21.   HCRM95.txSend(data);                // Send the text
  22.  
  23.   while(!HCRM95.txDone());            // Wait until the module has finished sending            
  24.  
  25.   delay(2000);                        // Wait a little before sending again
  26. }
  27.  

Receive text example

Receives a string of text send by the transmitter:
This sketch, together with the send text example will send and receive a char array containing some text.

  1. #include "HCRM95.h"
  2.  
  3. #define RST_PIN 9                     // Reset pin (RESET)
  4. #define SS_PIN 10                     // Slave select pin (NSS)
  5.  
  6.  
  7. HCRM95 HCRM95;                        // Create an instance of the library
  8.  
  9. void setup()
  10. {
  11.   Serial.begin(9600);
  12.  
  13.   HCRM95.init(RST_PIN, SS_PIN);       // Init the library
  14.  
  15.   HCRM95.mode(MODE_RXCONTINUOUS);     // Put module into continuous RX mode
  16. }
  17.  
  18.  
  19.  
  20. void loop()
  21. {
  22.   char data[10];                      // Create a char array big enough to hold the received text
  23.  
  24.   while(!HCRM95.rxAvailable());       // Wait for new data
  25.  
  26.   HCRM95.getRx(data);                 // Get the new data
  27.  
  28.   Serial.println(data);               // Print it out
  29. }




Image

HCRM95 Library:

viewtopic.php?f=58&t=3122


RM95 Datasheet:
RFM95_96_97_98W_HCMODU0247.pdf



Libraries, example code, and diagrams are provided as an additional free service by Hobby Components and are not sold as part of this product. We do not provide any guarantees or warranties as to their accuracy or fitness for purpose.
You do not have the required permissions to view the files attached to this post.

Post Reply

Return to “Wireless / Wired”