Development

Communication / RS-485:

» RS-485 03: Configuration Example

This sketch shows the use of the RS-485 standard, and the use of the main functions of the library.

Required Materials

1 x Waspmote
1 x Battery
1 x RS-485

Notes

- Waspmote must be powered with a battery
- RS-485 does not specify or recommend any communications protocol.
- For a complete communication protocol, please see the Modbus examples
- This example can be executed in Waspmote v12 and Waspmote v15

Code

/*         ------ [RS-485_03] Configuration Example -------- 
 *   
 *  This sketch shows the use of the RS-485 standard, and the use 
 *  of the main functions of the library. This standard defines 
 *  the electrical characteristics of drivers and receivers for
 *  use in digital systems. It does not specify or recommend any 
 *  communications protocol. For a complete communication 
 *  protocol, please see the Modbus examples. 
 *
 *  Copyright (C) 2016 Libelium Comunicaciones Distribuidas S.L. 
 *  http://www.libelium.com 
 *   
 *  This program is free software: you can redistribute it and/or modify 
 *  it under the terms of the GNU General Public License as published by 
 *  the Free Software Foundation, either version 2 of the License, or 
 *  (at your option) any later version. 
 *   
 *  This program is distributed in the hope that it will be useful, 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 *  GNU General Public License for more details. 
 *   
 *  You should have received a copy of the GNU General Public License 
 *  along with this program. If not, see <http://www.gnu.org/licenses/>. 
 *   
 *  Version:          3.0
 *  Implement0ation:   Ahmad Saad
 */


// Include always this library when you are using the RS-485 functions  
#include <Wasp485.h>

// Number of retires
uint8_t retries = 0;
uint8_t result = -1; 
void setup()
{
  // Power on the USB for viewing data in the serial monitor
  USB.ON();
  // Print hello message
  USB.println(F("Hello, this is RS-485 communication configuration example"));
  delay(100);

  // Powers on the module and assigns the SPI in socket0
  while ((result !=0) & (retries < 5)) {
    retries ++;
    result = W485.ON();
    delay(1000);
  }

  if ( result == 0) {
    USB.println(F("RS-485 module started successfully"));
  } 
  else {
    USB.println(F("RS-485 did not initialize correctly"));
  }

  delay(100);

  // Configure the baud rate of the module
  W485.baudRateConfig(9600);

  // Configure the parity bit as disabled 
  W485.parityBit(DISABLE);

  // Use one stop bit configuration
  W485.stopBitConfig(1);  

  W485.transmission(ENABLE);  
  delay(250);
  W485.send("Waspmote RS-485 module connected to the network");

  delay(250);
  // Disables the transmission
  // Useful when sniffing the bus 
  W485.transmission(DISABLE);  
  delay(250);

 
}


void loop()
{
  // Sniffing the bus. All data will be printed in the serial monitor
  // If data in response buffer 
  if (W485.available()) 
  {
    while (W485.available()) {
      // Read one byte from the buffer 
      char data = W485.read();
      // Print data received in the serial monitor
      USB.print(data ,BYTE);
    }

    USB.print(F("\n"));
  }   

  delay(1);  

}

Output

H#
RS-485 module started successfully
Hello this is RS-485 communication configuration example

Quick Publish: