If you are completely new to OpenWSN, and you are using Windows, read this page first. It will walk you through all the steps to install OpenWSN and explore a number of key features.
In particular you will:
|
OpenWSN is a collection of repositories hosted on GitHub. We will download and use the following:
Before you can go on, you need to install a Git client. Any client will do, but we will use tortoisegit. Once you've installed it, it will integrate nicely with your Windows explorer. |
We will download these repositories side-by-side on your desktop using Git:
You now have:
At any time you can make sure you are running the latest code by right-clicking on each folder, and choosing Git Pull....
Frankly, it's a bit strange to start using OpenWSN with a simulation, since the firmware is really meant (and written) to run on real motes. But, not everyone has hardware, not always the same hardware, etc. So to make things nice and easy, we'll start by simulation. Oh, and the simulated code behaves exactly the same as the real code, so what you see now is what you'll get with real hardware.
Before we can start running a simulation, we need to compile the firmware as a Python extension. This is all explained in the OpenSim page if you want to know what's going on.
Before you can go on, you need to install
|
Before you can go on, you need to install Python:
|
If you are using a 64-bit windows, you can use either 32-bit or 64-bit version of python. Just make sure it was consistent with pywin32 and minGW. That is saying if you choose to use 64-bit python, you also need to choose 64-bit pywin32 (there is 64-bit version pywin32 even it was called --win32) and 64-bit mingw. Likewise, 32-bit python, 32-bit pywin32 and mingw. Or unexpected error could happen. |
To compile the firmware as a Python extension module, type:
C:\Users\Thomas\Desktop\openwsn-fw>scons board=python toolchain=gcc oos_openwsn scons: Reading SConscript files ... ___ _ _ _ ___ _ _ | . | ___ ___ ._ _ | | | |/ __>| \ | | | || . \/ ._>| ' || | | |\__ \| | `___'| _/\___.|_|_||__/_/ <___/|_\_| |_| openwsn.org [...] gcc -shared -o firmware\openos\projects\common\oos_openwsn.pyd firmware\openos\projects\common\03oos_openwsn\03oos_openw sn_obj.o firmware\openos\bsp\boards\python\openwsnmodule_obj.o -LC:\Python27\libs -Lbuild\python_gcc\bsp\boards\python - Lbuild\python_gcc\kernel\openos -Lbuild\python_gcc\drivers -Lbuild\python_gcc\openwsn -lopenstack -lopenos -ldrivers -lb sp -lpython27 -Wl,--out-implib,firmware\openos\projects\common\liboos_openwsn.a scons: done building targets. |
This step compile the complete OpenWSN firmware as a Python extension module (a form of shared library) which the simulation environment can import at run-time.
The extension module is at openwsn-fw\firmware\openos\projects\common\oos_openwsn.pyd
, no need to move it.
You can now start a simulation. Running a simulation just means taking the usual software which runs on your computer (and call "openvisualizer"), but running it in simulation mode. That is, instead of the openvisualizer connecting to real motes, it connects to emulated mote code actually running on you machine.
Before you can go on, you need to install a TAP virtual interface:
|
Start a simulation:
C:\Users\Thomas\Desktop\openwsn-sw\software\openvisualizer>scons runweb --sim scons: Reading SConscript files ... ___ _ _ _ ___ _ _ | . | ___ ___ ._ _ | | | |/ __>| \ | | | || . \/ ._>| ' || | | |\__ \| | `___'| _/\___.|_|_||__/_/ <___/|_\_| |_| openwsn.org scons: done reading SConscript files. scons: Building targets ... Copy("bin\openVisualizerApp\sim_files", "..\..\..\openwsn-fw\firmware\openos\bsp\boards\python\openwsnmodule_obj.h") Mkdir("bin\openVisualizerApp\sim_files\windows") Copy("bin\openVisualizerApp\sim_files\windows\oos_openwsn-x86.pyd", "..\..\..\openwsn-fw\firmware\openos\projects\common \oos_openwsn.pyd") Copy("bin\openVisualizerApp\sim_files", "..\..\..\openwsn-fw\firmware\openos\projects\common\oos_openwsn.pyd") Delete("build\runui\web_files") Mkdir("C:\Users\Thomas\Desktop\openwsn-sw\software\openvisualizer\build\runui") Copy("build\runui\web_files", "bin\openVisualizerApp\web_files") Delete("build\runui\sim_files") Mkdir("C:\Users\Thomas\Desktop\openwsn-sw\software\openvisualizer\build\runui") Copy("build\runui\sim_files", "bin\openVisualizerApp\sim_files") uiRunner(["bin\openVisualizerApp\openVisualizerWeb"], ["bin\openVisualizerApp\openVisualizerWeb.py"]) Child PID is 2692 scons: done building targets. |
That's it, an OpenWSN simulation is now running your computer!
Note As SCons on Windows can be run with scons.bat, you can launch the simulation on another window with the following command :
C:\Users\Thomas\Desktop\openwsn-sw\software\openvisualizer>start cmd.exe /k "scons.bat" runweb --sim
Now, open http://127.0.0.1:8080/ to see the web interface of OpenWSN.
Open the "Topology" tab:
right-click on two motes to connect them with a wireless link
You need to right-click on the red balloon, not the blue rectangle. Confusing, right? Also, to create a link, you need to right-click on both endpoints.
|
Set up the topology to have a chain 1-2-3, and set each PDR to 1.
Back in the "Motes" tab, select mote 0001
and click on the "Toggle" button. You just declare mote 1 to be the root of your network (the DAGroot in RPL parlance, the sink in WSN parlance, the gateway, etc). You can select other motes and see that they quickly become "Synchronized!".
Congratulations, you have built your first OpenWSN simulated network!
By convention (i.e. this is hard-coded in the software), the IPv6 prefix of the simulated network is bbbb:/64
. This means that the IPv6 address of each mote will start with "bbbb::
". The remainder of a mote's IPv6 address is it's MAC address (or EUI-64). You can read this in the web interface (under "EUI-64").
Open a new command prompt to ping mote 2:
C:\Users\Thomas>ping bbbb::1415:92cc:0:2 Pinging bbbb::1415:92cc:0:2 with 32 bytes of data: Reply from bbbb::1415:92cc:0:2: time=101ms Reply from bbbb::1415:92cc:0:2: time=67ms Reply from bbbb::1415:92cc:0:2: time=97ms Reply from bbbb::1415:92cc:0:2: time=91ms Ping statistics for bbbb::1415:92cc:0:2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 67ms, Maximum = 101ms, Average = 89ms |
You can also ping mote 3 which is 3 hops away:
C:\Users\Thomas>ping bbbb::1415:92cc:0:3 Pinging bbbb::1415:92cc:0:3 with 32 bytes of data: Reply from bbbb::1415:92cc:0:3: time=206ms Reply from bbbb::1415:92cc:0:3: time=95ms Reply from bbbb::1415:92cc:0:3: time=153ms Reply from bbbb::1415:92cc:0:3: time=76ms Ping statistics for bbbb::1415:92cc:0:3: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 76ms, Maximum = 206ms, Average = 132ms |
CoAP is a protocol implement on each OpenWSN device, which makes it appear like a web server on the Internet.
By default, an OpenWSN mote implements a CoAP "info" resource which indicate what version of the code is running. You can test that by running the Python test script provided in the firmware:
C:\Users\Thomas\Desktop\openwsn-fw\firmware\openos\openwsn\07-App\rinfo OpenWSN 1.4.1 Python Python Python Done. Press enter to close. |
In simulation mode, the openvisualizer takes care of simulating the wireless medium. You can use Wireshark to take a peek at what goes over this simulated radio space.
Before you can go on, you need to install Wireshark:
|
Start Wireshark on the OpenWSN
interface at address, and configure the filtering for zep
(the ZigBee encapsulation protocol).
For now, you don't see any packets, that's normal:
In the OpenVisualizer's "Event bus" tab, check the "Wireshark debug" box.
You now see all the packets exchanged over the simulated radio environment, exciting!
In the command prompt from where you started the OpenVisualizer, type q
to close it
User experience with real hardware is identical than when using the simulator. Because it is a popular platform, we will use the TelosB mote, although any other supported hardware platform can be used instead.
Before you can go on, you need to install the FTDI driver for your TelosB board
|
When connecting a TelosB board, Windows assigns it a COM port. You can see which in the Device Manager:
Before you can go on, you need to install
|
The build environment allow you to build the firmware and load is on all your boards with a single command (how cool is that?):
C:\Users\Thomas\Desktop\openwsn-fw>scons board=telosb toolchain=mspgcc bootload=COM4,COM5,COM6 oos_openwsn scons: Reading SConscript files ... ___ _ _ _ ___ _ _ | . | ___ ___ ._ _ | | | |/ __>| \ | | | || . \/ ._>| ' || | | |\__ \| | `___'| _/\___.|_|_||__/_/ <___/|_\_| |_| openwsn.org scons: done reading SConscript files. scons: Building targets ... [...] Linking firmware\openos\projects\common\03oos_openwsn_prog.exe msp430-size firmware\openos\projects\common\03oos_openwsn_prog.exe text data bss dec hex filename 43156 0 4006 47162 b83a firmware\openos\projects\common\03oos_openwsn_prog.exe msp430-objcopy --output-target=ihex firmware\openos\projects\common\03oos_openwsn_prog.exe firmware\openos\projects\comm on\03oos_openwsn_prog.ihex msp430-objcopy --output-target=binary firmware\openos\projects\common\03oos_openwsn_prog.exe firmware\openos\projects\co mmon\03oos_openwsn_prog.bin telosb_bootload(["firmware\openos\projects\common\03oos_openwsn_prog.phonyupload"], ["firmware\openos\projects\common\03 oos_openwsn_prog.ihex"]) starting bootloading on COM4 starting bootloading on COM5 starting bootloading on COM6 [...] done bootloading on COM4 done bootloading on COM6 done bootloading on COM5 scons: done building targets. |
Once the motes are programmed, you have the exact same experience as when running a simulated network.
First, start the OpenVisualizer:
C:\Users\Thomas\Desktop\openwsn-sw\software\openvisualizer>scons runweb scons: Reading SConscript files ... ___ _ _ _ ___ _ _ | . | ___ ___ ._ _ | | | |/ __>| \ | | | || . \/ ._>| ' || | | |\__ \| | `___'| _/\___.|_|_||__/_/ <___/|_\_| |_| openwsn.org scons: done reading SConscript files. scons: Building targets ... Delete("build\runui\web_files") Mkdir("C:\Users\Thomas\Desktop\openwsn-sw\software\openvisualizer\build\runui") Copy("build\runui\web_files", "bin\openVisualizerApp\web_files") Delete("build\runui\sim_files") Mkdir("C:\Users\Thomas\Desktop\openwsn-sw\software\openvisualizer\build\runui") Copy("build\runui\sim_files", "bin\openVisualizerApp\sim_files") uiRunner(["bin\openVisualizerApp\openVisualizerWeb"], ["bin\openVisualizerApp\openVisualizerWeb.py"]) Child PID is 4740 scons: done building targets. |
Open http://127.0.0.1:8080/ to see the web interface:
Your TelosB motes turn on their blue LED once synchronized.
You might be tempted to look for a graphical representation of the topology. Unfortunately, this is only implemented in simulation mode. Really want it? Help fix . |
You can ping a mote exactly as you would in the simulator:
C:\Users\Thomas>ping bbbb::1415:9200:12:e63b Pinging bbbb::1415:9200:12:e63b with 32 bytes of data: Reply from bbbb::1415:9200:12:e63b: time=285ms Reply from bbbb::1415:9200:12:e63b: time=276ms Reply from bbbb::1415:9200:12:e63b: time=437ms Reply from bbbb::1415:9200:12:e63b: time=431ms Ping statistics for bbbb::1415:9200:12:e63b: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 276ms, Maximum = 437ms, Average = 357ms |
You can interact with a mote exactly as you would in the simulator. After modifying the rinfo.py
script to communicate with mote bbbb::1415:9200:12:e63b
:
C:\Users\Thomas\Desktop\openwsn-fw\firmware\openos\openwsn\07-App\rinfo>python rinfo.py C:\Users\Thomas\Desktop\openwsn-fw\firmware\openos\openwsn\07-App\rinfo OpenWSN 1.4.1 TelosB MSP430f1611 CC2420 Done. Press enter to close. |
Congratulations! You've now gone through the trouble of installing all of the tools and pieces of OpenWSN. From now on, it's just fun.