This program shows how to search for a specific node inside the XBee's network. Once the node has been found a packet is sent to this node.
Required Materials
1 x Waspmote
1 x Battery
1 x MiniUSB wire
1 x XBee-Digimesh module
Notes
- It is recommended to turn on another XBee module in order to have some module to be scanned. This module must be set to the node identifier defined in this code.
- The battery has to be connected.
- This example can be executed in Waspmote v12
Code
/* * ------ [DM_11] - node search -------- * * Explanation: This program shows how to search for a specific * node inside the XBee's network. Once the node has been found a * packet is sent to this node. * * Copyright (C) 2012 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 3 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 . * * Version: 0.1 * Design: David Gascón * Implementation: Yuri Carmona */#include<WaspXBeeDM.h>// node Id to be searchedchar* node="RECEIVER";// variable to store searched Destination MAC Addressuint8_t mac[8]; // create packet to sendpacketXBee* packet;voidsetup(){ // init USB portUSB.ON();USB.println(F("DM_11 example")); //////////////////////////// 1. XBee set up //////////////////////////// 1.1. init XBeexbeeDM.ON(); // 1.2. set NI (Node Identifier)xbeeDM.setNodeIdentifier("SENDER");// 1.3. save XBee values in memoryxbeeDM.writeValues();}voidloop(){ ////////////////////////////////////////// 2. search node ////////////////////////////////////////if(!xbeeDM.nodeSearch(node, mac)) {USB.print("\nmac:");USB.printHex(mac[0]);USB.printHex(mac[1]);USB.printHex(mac[2]);USB.printHex(mac[3]);USB.printHex(mac[4]);USB.printHex(mac[5]);USB.printHex(mac[6]);USB.printHex(mac[7]); }elseUSB.print("error");USB.println(); ////////////////////////////////////////// 3. send a packet to the searched node ////////////////////////////////////////// 3.1. set packet parameters: packet=(packetXBee*) calloc(1,sizeof(packetXBee)); // memory allocationpacket->mode=UNICAST; // set Unicast mode// 3.2. set Destination parametersxbeeDM.setDestinationParams(packet, mac,"This is a message"); // 3.3. send dataxbeeDM.sendXBee(packet); // 3.4. check TX flagif( !xbeeDM.error_TX ) USB.println("ok");elseUSB.println("error");// 3.5. free memoryfree(packet); packet=NULL; delay(3000); }
Output
E#
DM_11 example
mac:0013A200406C16CE
ok
mac:0013A200406C16CE
ok
mac:0013A200406C16CE
ok
...