// RFM69HCW Example Sketch // Send serial input characters from one RFM69 node to another // Based on RFM69 library sample code by Felix Rusu // http://LowPowerLab.com/contact // Modified for RFM69HCW by Mike Grusin, 4/16 // This sketch will show you the basics of using an // RFM69HCW radio module. SparkFun's part numbers are: // 915MHz: https://www.sparkfun.com/products/12775 // 434MHz: https://www.sparkfun.com/products/12823 // See the hook-up guide for wiring instructions: // https://learn.sparkfun.com/tutorials/rfm69hcw-hookup-guide // Uses the RFM69 library by Felix Rusu, LowPowerLab.com // Original library: https://www.github.com/lowpowerlab/rfm69 // SparkFun repository: https://github.com/sparkfun/RFM69HCW_Breakout // Include the RFM69 and SPI libraries: #include #include // Addresses for this node. CHANGE THESE FOR EACH NODE! #define NETWORKID 0 // Must be the same for all nodes #define MYNODEID 2 // My node ID #define TONODEID 1 // Destination node ID // RFM69 frequency, uncomment the frequency of your module: //#define FREQUENCY RF69_433MHZ #define FREQUENCY RF69_915MHZ // AES encryption (or not): #define ENCRYPT true // Set to "true" to use encryption #define ENCRYPTKEY "TOPSECRETPASSWRD" // Use the same 16-byte key on all nodes // Use ACKnowledge when sending messages (or not): #define USEACK true // Request ACKs or not // Packet sent/received indicator LED (optional): #define LED 14 // LED positive pin // Create a library object for our RFM69HCW module: RFM69 radio; void setup() { // Open a serial port so we can send keystrokes to the module: Serial.begin(9600); Serial.print("Node "); Serial.print(MYNODEID,DEC); Serial.println(" ready"); // Set up the indicator LED (optional): pinMode(LED,OUTPUT); pinMode(7,OUTPUT); digitalWrite(LED,LOW); // Initialize the RFM69HCW: radio.initialize(FREQUENCY, MYNODEID, NETWORKID); radio.setHighPower(); // Always use this for RFM69HCW // Turn on encryption if desired: if (ENCRYPT) radio.encrypt(ENCRYPTKEY); } void loop() { static char sendbuffer[62]; static int sendlength = 0; // RECEIVING // In this section, we'll check with the RFM69HCW to see // if it has received any packets: if (radio.receiveDone()) // Got one! { // Print out the information: Serial.print("received from node "); Serial.print(radio.SENDERID, DEC); Serial.print(", message ["); // The actual message is contained in the DATA array, // and is DATALEN bytes in size: for (byte i = 0; i < radio.DATALEN; i++) Serial.print((char)radio.DATA[i]); // RSSI is the "Receive Signal Strength Indicator", // smaller numbers mean higher power. Serial.print("], RSSI "); Serial.println(radio.RSSI); // Send an ACK if requested. // (You don't need this code if you're not using ACKs.) if (radio.ACKRequested()) { radio.sendACK(); Serial.println("ACK sent"); } Blink(LED,10); } } void Blink(byte PIN, int DELAY_MS) // Blink an LED for a given number of ms { digitalWrite(PIN,HIGH); delay(DELAY_MS); digitalWrite(PIN,LOW); }