This pager is under construction. To get things moving faster, contact Thomas Watteyne.
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:
- compile and run OpenWSN in simulation mode, ping a simulated mote, and interact with it over CoAP.
- program a TelosB mote, connect it to your computer, ping it, and interact with it over CoAP.
What to bring?
- a computer running Windows. This page is written with Windows 7 Professional.
- optionally, two TelosB motes to play with real hardware.
Download OpenWSN
OpenWSN is a collection of repositories hosted on GitHub. We will download and use the following:
- https://github.com/openwsn-berkeley/openwsn-fw holds the firmware source code which runs on the (possibly emulated) motes
- https://github.com/openwsn-berkeley/openwsn-sw holds the software source code which runs on your computer
- https://github.com/openwsn-berkeley/coap is a Python module which implements CoAP
Oops!
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:
- right-click on your Desktop, select TortoiseGit > Clone... .
- In the URL, enter https://github.com/openwsn-berkeley/openwsn-fw.git
- repeat for the following URLs:
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....
Running a simulation
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.
Prepare
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.
Oops!
Before you can go on, you need to install mingw
, which gives you all of the build tools to build the firmware:
- Download from http://www.mingw.org/
- Install at
C:\MingGW\
- Add
C:\MinGW\bin
to yourPATH
environment variable Verify you can call the
gcc
command:C:\Users\Thomas>gcc --version gcc (GCC) 4.8.1 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Oops!
Before you can go on, you need to install Python:
- Download Python 2.7.x from https://www.python.org/(NOT Python 3!)
- Add the following directories to your
PATH
environment variable:C:\Python27
C:\Python27\Scripts
Verify you can call
python
:C:\Users\Thomas>python --version Python 2.7.5
- Install the Python setuptools from https://pypi.python.org/pypi/setuptools#installation-instructions. Typically, this means downloading a file called
ez_setup.py
and double-clicking on it. Verify that you can call the
easy_install
command:C:\Users\Thomas>easy_install --version setuptools 1.1.6
Install the
pip
utility:C:\Users\Thomas>>easy_install pip
Verify that you can call the
pip
command:C:\Users\Thomas>pip --version pip 1.4.1 from c:\python27\lib\site-packages\pip-1.4.1-py2.7.egg (python 2.7)
Install the OpenWSN Python dependencies (from the
openwsn-sw\
directory on your Desktop):C:\Users\Thomas\Desktop\openwsn-sw> pip install -r requirements.pip
Install SCons, the build environment:
C:\Users\Thomas\Desktop\openwsn-sw> pip install scons
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.
Simulate
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.
Oops!
Before you can go on, you need to install a TAP virtual interface:
- TODO Thomas
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!
Open http://127.0.0.1:8080/ to see the web interface of OpenWSN.
Open the "Topology" tab:
- left click on a mote to move it around
- right-click on two motes to connect them with a wireless link
- left-click on a link to change its PDR (packet delivery ratio)
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!
Ping a mote
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