|Author||Felix Russu, modified by Charles-Henri Hallard|
An Implementation of HopeRF RFM69 RF module, based on Felix RFM69 for Moteino
This content is provided by the library maintainer and has not been validated or approved.
By Felix Rusu (firstname.lastname@example.org)
RFM69 library for RFM69W, RFM69HW, RFM69CW, RFM69HCW (semtech SX1231, SX1231H)
###New version compatible with Spark Core
Based on Original Library created by Felix, I added the following features:
- Compile and works on Spark Core
- added setIRQ(pin) to be able to set IRQ attached pin
- added setBaudRate(rate) to change speed (I.E. setBaudRate(60000) to 60Kbps (default library is setup for 55555)
- remove lockup in initialize function if RFM69 is not found (timed out) now initialize returns true if module was found
The examples folder has not been modified and thus may not compile for Spark Core, but changing them is straigth forward
##License GPL 3.0, please see the License.txt file
##Features Among others, this is a set of features implemented in this library:
- easy to use API with a few simple functions for basic usage
- 255 possible nodes on 256 possible networks
- 61 bytes max message length (limited to 61 to support AES hardware encryption)
- customizable transmit power (32 levels) for low-power transmission control
- sleep function for power saving
- automatic ACKs with the sendWithRetry() function
- hardware 128bit AES encryption
- hardware preamble, synch recognition and CRC check
- digital RSSI can be read at any time with readRSSI()
- interrupt driven
- tested on Moteino R3, R4, R4-USB (ATMega328p)
- works with RFM69W, RFM69HW, RFM69CW, RFM69HCW, Semtech SX1231/SX1231H transceivers
- promiscuous mode allows any node to listen to any packet on same network
I consider this an initial beta release, it could contain bugs, but the provided Gateway and Node examples should work out of the box. Please let me know if you find issues.
Copy the content of this library in the "Arduino/libraries/RFM69" folder.
To find your Arduino folder go to File>Preferences in the Arduino IDE.
See this tutorial on Arduino libraries.
###MISC / possible issues
- The library and examples are continuously improved as bugs and stability issues are discovered. Be sure to check back often for changes.
- Moteino boards are loaded with fuses that will delay startup. This means that other boards like Duemilanove/UNO might need a delay() in the setup() function before doing anything - to allow the transceiver to power up.
##Blog writeup http://lowpowerlab.com/blog/2013/06/20/rfm69-library/
- I have spent a lot of time developing this library for RFM69W/HW transceivers. I made it open source because I believe a lot of people can benefit from this new powerful transceiver. I hope people will also contribute and build on my work
- I have long researched alternative transceivers for RFM12B which is still an excellent transceiver but it is much lower output power and has limited built in features which need to be implemented in firmware (PREAMBLE, SYNC, CRC, packet engine, encryption etc).
- I wanted a transceiver that could still be very small, easy to use, but have the longer range that I wanted
- RFM69 comes in 2 variants that have the same layout/connections: RFM69W (13dBm, 45mA TX) and RFM69HW (20dBm, 130mA TX)
- I have tested open-air range on these transceivers (the W only) in various combinations.
- I am happy to say that a range of upwards of 350m can be achieved. I went to local parks and in very large parking spaces and I ran out of space, so more than 350m is possible. Some users reported upwards of 500m by lowering the bitrate, and a forum user reported 1.5miles at 1.2Kbps: see http://lowpowerlab.com/forum/index.php/topic,112.msg288.html and http://lowpowerlab.com/moteino/#antennas
- The caveat with these higher RF power units is that they need more DC power when they transmit. For battery powered motes, you will need to keep them powered down and only transmit periodically. Use the sleep() function to put the radios in low power mode and use the LowPower or Narcoleptic libraries to power down your arduino
##License GPL 3.0. See License.txt file.