SL:Waspmote: Unterschied zwischen den Versionen

Aus Doc-Wiki
Zur Navigation springen Zur Suche springen
imported>Abochem
(Die Seite wurde neu angelegt: „== Requirements == Get the Waspmote Technical Guide from here: http://www.libelium.com/development/waspmote/documentation/ The Waspmote IDE (customized Arduino …“)
 
imported>Abochem
K
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
  +
[[Category:Sensorlab]]
  +
== Equipment ==
  +
  +
We have one Waspmote evaluation kit, including four nodes, a USB Gateway, five XBee modules and various sensors and other accessories.
  +
  +
=== TODO ===
  +
  +
Make a list of everything.
  +
 
== Requirements ==
 
== Requirements ==
   
Get the Waspmote Technical Guide from here: http://www.libelium.com/development/waspmote/documentation/
+
Get the Waspmote Technical Guide from here: http://www.libelium.com/development/waspmote/documentation/waspmote-technical-guide/
   
 
The Waspmote IDE (customized Arduino IDE) can be retrieved here: http://www.libelium.com/development/waspmote/sdk_applications
 
The Waspmote IDE (customized Arduino IDE) can be retrieved here: http://www.libelium.com/development/waspmote/sdk_applications
Zeile 20: Zeile 29:
 
To read out data from the Gateway, on Linux <tt>cutecom</tt> can be used. Use <tt>ls /dev/ttyUSB*</tt> to find out the available TTY devices. If you only connect the gateway, it should be the only thing listed.
 
To read out data from the Gateway, on Linux <tt>cutecom</tt> can be used. Use <tt>ls /dev/ttyUSB*</tt> to find out the available TTY devices. If you only connect the gateway, it should be the only thing listed.
   
If the Gateway is not displaying data or receiving from other nodes, make sure that the XBee parameters are set to the same values on the XBee extension boards for all participating nodes. This can be done by e.g. flashing one of the example applications (Examples -> 03. Communication -> XBEE -> XBEE_802 -> _802_01_configure_XBee_parameters) on a node, putting the boards on it one by one and restarting it. This should configure the boards with some compatible set of parameters.
+
If the Gateway is not displaying data or receiving from other nodes, make sure that the XBee parameters are set to the same values on the XBee extension boards for all participating nodes. This can be done by e.g. flashing one of the example applications (Examples -> 03. Communication -> XBEE -> XBEE_802 -> _802_01_configure_XBee_parameters) on a node, putting the boards on it one by one and restarting it. This should configure the boards with some compatible set of parameters. If this program gives errors, try the waspmote factory default program first.
   
 
The correct baud rate to read out packets from the Gateway will depend on the XBEE parameters flashed on the board connected to it. If configured by the example program as above, it should be 115200, otherwise it may be 9600 or 19200 or something else even. Just try it out. Lots of <tt>\x00</tt> or <tt>\0</tt> output means the baud rate is too high, scrambled too short output means it is too low.
 
The correct baud rate to read out packets from the Gateway will depend on the XBEE parameters flashed on the board connected to it. If configured by the example program as above, it should be 115200, otherwise it may be 9600 or 19200 or something else even. Just try it out. Lots of <tt>\x00</tt> or <tt>\0</tt> output means the baud rate is too high, scrambled too short output means it is too low.
   
  +
== Security ==
If you try to use application layer AES encryption, note that Libelium does not provide a decrypt function. TODO: Port our TinyOS AES implementation. It should be faster too.
 
  +
 
If you try to use application layer AES encryption, note that Libelium does not provide a decrypt function. Using hardware encryption by configuring the link layer should work? Not tested yet.
  +
  +
=== TODO ===
  +
  +
Port our TinyOS AES implementation. It should be faster too. It would be nice to have an Arduino implementation anyway.
  +
  +
Alternatively, look into this: http://munacl.cryptojedi.org/atmega.shtml
  +
  +
For key generation, a way to gather entropy is required. This looks somewhat promising:
  +
  +
https://sites.google.com/site/astudyofentropy/project-definition/timer-jitter-entropy-sources/entropy-library
  +
  +
Reading ADC pins however seems to be a bad idea: http://arxiv.org/pdf/1212.3777.pdf
  +
  +
Going by my experience on other AVR based platforms (i.e. IRIS), the cycle counts specified for the Libelium crypto functions in their docs (http://www.libelium.com/development/waspmote/documentation/encryption-programming-guide/) seem kind of off. RSA looks way too fast and AES too slow. That's also something to look into.
  +
  +
== USB Gateway / IRIS interoperability ==
  +
  +
It is possible to use the Waspmote USB Gateway with an XBee PRO S1 module to receive messages from IRIS/... nodes running TinyOS, but it takes a little work. First, the PRO version of the Digi XBee module only supports channels greater than 11, which is the default channel for IRIS nodes, so it is necessary to set the channel when flashing IRIS nodes:
  +
  +
PFLAGS+=-DCC2420_DEF_CHANNEL=0xf
  +
PFLAGS+=-DRF230_DEF_CHANNEL=0xf
  +
  +
This will allow interop between telosb, IRIS and XBee PRO boards. The PAN ID of TinyOS AM packets is 0x22. This has to be set in the XBee module. It also doesn't hurt to set the channel to 0xf to make sure. Finally it is necessary to set the MAC mode to 1 or 2 (802.15.4 mode with or without ACK), otherwise it is not possible to receive messages.
  +
  +
Use <tt>minicom</tt> to connect to the Gateway. Baud rate will probably be 9600, 38400 or 115200. It might take some guessing. Enable local echo (or you won't see what you type) and disable flow control. Type in <tt>+++</tt> quickly (do '''not''' send a line feed after it) and wait for an "OK" response. Once received, you will be in command mode. Please note that it times out after a short while and you will have to use <tt>+++</tt> again if you want to enter more commands. Enter the following commands to get the current PAN ID, channel and MAC mode. Maybe note them down so you can restore them later (e.g. 1234, F, 0). Without patching, TinyOS only supports 8 bit PAN IDs.
  +
  +
atid
  +
atch
  +
atmm
  +
  +
Now set the values you want. Every command should result in another "OK" response.
  +
  +
atid22
  +
atchf
  +
atmm2
  +
  +
Tell the XBee board to apply the settings using the command <tt>atac</tt>. If you want, you can store the current settings to non-volatile memory using <tt>atwr</tt> so that they are not lost when unplugging the board. Finally, <tt>atcn</tt> quits command mode. If you are not sure what to do, try this:
  +
  +
atac
  +
atcn
  +
  +
Now you should be able to use <tt>minicom</tt> or <tt>cutecom</tt> (has a handy hexdump mode) to receive data from TinyOS IRIS nodes.
  +
  +
Some additional info can be found here:
  +
  +
http://cpham.perso.univ-pau.fr/WSN/XBee.html
  +
http://cpham.perso.univ-pau.fr/WSN/iMote-XBee.html
  +
  +
The reference for the XBee PRO boards contains a full list of AT commands, valid channels etc.:
  +
  +
https://www.sparkfun.com/datasheets/Wireless/Zigbee/XBee-Datasheet.pdf
  +
  +
It should also be possible to make Waspmotes talk to IRIS nodes, but some translation between 802.15.4 and <tt>ActiveMessage</tt> will be necessary.
  +
  +
=== TODO ===
  +
  +
Figure out how to send packets that show up on a TinyOS basestation.

Aktuelle Version vom 8. März 2016, 12:51 Uhr

Equipment

We have one Waspmote evaluation kit, including four nodes, a USB Gateway, five XBee modules and various sensors and other accessories.

TODO

Make a list of everything.

Requirements

Get the Waspmote Technical Guide from here: http://www.libelium.com/development/waspmote/documentation/waspmote-technical-guide/

The Waspmote IDE (customized Arduino IDE) can be retrieved here: http://www.libelium.com/development/waspmote/sdk_applications


Getting started and gotchas

Attach one of the rechargeable LiIon batteries to a mote in the three pin white connector towards the middle of the node, next to the three LEDs.

Before using it first, charge using USB for 24h. In contrast with IRIS and CM nodes, for Waspmotes, the battery is required when connecting the node to the PC using USB.

To disconnect a battery, use the plastic pick from the Libelium box. Do not pull on wires. Actually, since the wires look a bit fragile, it may be safer to just always leave the batteries connected.

Each node has two switches, one on the top (where the boards are plugged) and one on the bottom. The top switch is the power switch, the bottom switch is a hibernation switch. You can usually just put them in the same position. Towards the USB connector, the switches are in off position. Towards the middle of the node is on.

To reflash a Waspmote node, it needs to be switched on.

To read out data from the Gateway, on Linux cutecom can be used. Use ls /dev/ttyUSB* to find out the available TTY devices. If you only connect the gateway, it should be the only thing listed.

If the Gateway is not displaying data or receiving from other nodes, make sure that the XBee parameters are set to the same values on the XBee extension boards for all participating nodes. This can be done by e.g. flashing one of the example applications (Examples -> 03. Communication -> XBEE -> XBEE_802 -> _802_01_configure_XBee_parameters) on a node, putting the boards on it one by one and restarting it. This should configure the boards with some compatible set of parameters. If this program gives errors, try the waspmote factory default program first.

The correct baud rate to read out packets from the Gateway will depend on the XBEE parameters flashed on the board connected to it. If configured by the example program as above, it should be 115200, otherwise it may be 9600 or 19200 or something else even. Just try it out. Lots of \x00 or \0 output means the baud rate is too high, scrambled too short output means it is too low.

Security

If you try to use application layer AES encryption, note that Libelium does not provide a decrypt function. Using hardware encryption by configuring the link layer should work? Not tested yet.

TODO

Port our TinyOS AES implementation. It should be faster too. It would be nice to have an Arduino implementation anyway.

Alternatively, look into this: http://munacl.cryptojedi.org/atmega.shtml

For key generation, a way to gather entropy is required. This looks somewhat promising:

https://sites.google.com/site/astudyofentropy/project-definition/timer-jitter-entropy-sources/entropy-library

Reading ADC pins however seems to be a bad idea: http://arxiv.org/pdf/1212.3777.pdf

Going by my experience on other AVR based platforms (i.e. IRIS), the cycle counts specified for the Libelium crypto functions in their docs (http://www.libelium.com/development/waspmote/documentation/encryption-programming-guide/) seem kind of off. RSA looks way too fast and AES too slow. That's also something to look into.

USB Gateway / IRIS interoperability

It is possible to use the Waspmote USB Gateway with an XBee PRO S1 module to receive messages from IRIS/... nodes running TinyOS, but it takes a little work. First, the PRO version of the Digi XBee module only supports channels greater than 11, which is the default channel for IRIS nodes, so it is necessary to set the channel when flashing IRIS nodes:

PFLAGS+=-DCC2420_DEF_CHANNEL=0xf
PFLAGS+=-DRF230_DEF_CHANNEL=0xf

This will allow interop between telosb, IRIS and XBee PRO boards. The PAN ID of TinyOS AM packets is 0x22. This has to be set in the XBee module. It also doesn't hurt to set the channel to 0xf to make sure. Finally it is necessary to set the MAC mode to 1 or 2 (802.15.4 mode with or without ACK), otherwise it is not possible to receive messages.

Use minicom to connect to the Gateway. Baud rate will probably be 9600, 38400 or 115200. It might take some guessing. Enable local echo (or you won't see what you type) and disable flow control. Type in +++ quickly (do not send a line feed after it) and wait for an "OK" response. Once received, you will be in command mode. Please note that it times out after a short while and you will have to use +++ again if you want to enter more commands. Enter the following commands to get the current PAN ID, channel and MAC mode. Maybe note them down so you can restore them later (e.g. 1234, F, 0). Without patching, TinyOS only supports 8 bit PAN IDs.

atid
atch
atmm

Now set the values you want. Every command should result in another "OK" response.

atid22
atchf
atmm2

Tell the XBee board to apply the settings using the command atac. If you want, you can store the current settings to non-volatile memory using atwr so that they are not lost when unplugging the board. Finally, atcn quits command mode. If you are not sure what to do, try this:

atac
atcn

Now you should be able to use minicom or cutecom (has a handy hexdump mode) to receive data from TinyOS IRIS nodes.

Some additional info can be found here:

http://cpham.perso.univ-pau.fr/WSN/XBee.html http://cpham.perso.univ-pau.fr/WSN/iMote-XBee.html

The reference for the XBee PRO boards contains a full list of AT commands, valid channels etc.:

https://www.sparkfun.com/datasheets/Wireless/Zigbee/XBee-Datasheet.pdf

It should also be possible to make Waspmotes talk to IRIS nodes, but some translation between 802.15.4 and ActiveMessage will be necessary.

TODO

Figure out how to send packets that show up on a TinyOS basestation.