SL:Waspmote: Unterschied zwischen den Versionen
imported>Abochem |
imported>Abochem |
||
Zeile 49: | Zeile 49: | ||
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. |
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 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 |
||
+ | atmm1 |
||
+ | |||
+ | 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. |
Version vom 26. Januar 2016, 13:20 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:
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 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 atmm1
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.