Basics of Contiki-OS and Using It for Wireless Sensor Network Applications
Total Page:16
File Type:pdf, Size:1020Kb
Basics of Contiki-OS and using it for Wireless Sensor Network Applications Shantanoo Desai prepared for: Prof. Dr. Anna Förster Sustainable Communication Networks University of Bremen 20th November 2015 1 Outline CONTIKI-OS Contiki in a nutshell Requirements Getting Started Initial Steps File Structure in Contiki Terminal Basics First Program in Contiki: Hello-World Programming using Terminal Hello-World files Getting Output Understanding codes in Contiki Programming a Sensor Node TelosB Sensor Node Connecting the TelosB to Contiki-OS Hello-World program on TelosB Cooja Simulator in Contiki-OS Hello-World Simulation with Cooja Adding Sensor Nodes to Cooja Mote Output in Cooja References 2 Contents of this section CONTIKI-OS Contiki in a nutshell Requirements 3 What is Contiki? CONTIKI-OS in a nutshell: • Complete environment for programming Sensor Nodes • Has everything for getting started in making Applications • In-built simulator called COOJA • Large pool of sensor compatibility e.g. TelosB, Zolertia Z1 4 Requirements Requirements before we begin: • VMware Virtual Player • VMware Workstation 12 Player (recent) • Instant Contiki • Instant Contiki version 2.7/3.0 LOST??? - refer to this : www.contiki-os.org/start.html and follow the steps. 5 Contents of this section Getting Started Initial Steps File Structure in Contiki Terminal Basics 6 Getting Started • Open VMWare player and click on ‘Open a Virtual Machine’ (Don’t Worry ! if it looks different for Windows or MAC-OS! this is for Ubuntu.) 7 Getting Started (contd.) • Navigate to your Instant Contiki 2.7 folder and select the “.vmx” file • After booting of the virtual machine, Login with password: user Figure: First look of Contiki-OS 8 File Structure in Contiki • Click on ‘Places’ and then ‘Home’ folder (top left corner) • target folders: contiki & contiki-2.7 (choose any one and see the folders) Figure: File Structure in Contiki 9 Folders in Contiki and their Usage • apps: applications like webbrowser, telnet etc. • core: source codes for main core of Contiki • core/dev: source codes for devices such has LED, battery sensor, button etc. • core/net: folders for MAC, and RPL routing protocol, IPv6 and IPv4, queuing packets and buffers etc. • cpu: source files for all computational units for sensor nodes • examples: Implementation of applications • tools: general tools for testing applications 10 Terminal basics [fragile] open terminal on the Desktop screen • pwd shows the present working directory • ls lists all the files/folders in the present directory • cd FOLDERNAME to change directory from present to the desired one (example: from home directory to contiki-2.7) • cd .. return to the previous directory • mkdir FOLDERNAME makes a directory in the present working directory • gedit FILENAME if you want to open a GUI based text editor 11 Contents of this section First Program in Contiki: Hello-World Programming using Terminal Hello-World files Getting Output Understanding codes in Contiki 12 Programming Basic: Hello-World Programming using Terminal is Contiki-OS is preferred choice since it makes creation of files, compilation and outputs easier to view and manage. 1. Open terminal, change directory to either contiki or contiki-2.7 1 2. change to the examples folder current directory contiki-2.7/examples/ 3. change to the hello-world folder current directory contiki-2.7/examples/hello-world 1Hint: type cd and type half of the word and press Tab key for the completion 13 Inside the Hello-world folder Files observed in the folder 2 • hello-world.c: simple program in Contiki-OS • Makefile: file to control compilation through terminal • hello-world.csc: simple simulation file using COOJA simulator • README.md: a basic manual for the example 2HINT: use ls command 14 Getting Outputs in Contiki-OS Assuming the present working directory is contiki-2.7/examples/hello-world do the following: • Currently without any sensor node inserted into the USB slots, in Terminal type make and press enter • after processing is done, type ./hello-world.native 3 • Observe the Output "Hello, world" • to terminate program press CTRL+C 3use Tab key instead of typing everything 15 hello-world.c: How does it work? #include "contiki.h" /* For contiki applications */ #include <stdio.h> /* printf() function usage */ /* Contiki application : Declare the PROCESS */ PROCESS(name_of_your_process, "Process Name"); /* Start your PROCESS */ AUTOSTART_PROCESSES(&name_of_your_process); /* Declare what the PROCESS DOES*/ PROCESS_THREAD(name_of_your_process, ev, data) { PROCESS_BEGIN(); /* Begin the PROCESS*/ printf("Hello, world"); PROCESS_END(); /* end the PROCESS */ } 16 Makefile in Contiki Makefile is used to compile the source code into appropriate object files for execution. In the main directory there exists a Makefile.include that is necessary for compilation with or without platforms. # Comments using Pound Sign (#) in Makefile CONTIKI_PROJECT = your-filename/s #Can be more files all: $(CONTIKI_PROJECT) # take all the files current folder is contiki-2.7/examples/hello-world and you want to find the Makefile.include in contiki-2.7 folder and use it here CONTIKI = ../.. include $(CONTIKI)/Makefile.include 17 Contents of this section Programming a Sensor Node TelosB Sensor Node Connecting the TelosB to Contiki-OS Hello-World program on TelosB 18 TelosB Sensor Node Functionalities Figure: TelosB Sensor Node Picture Courtesy: www.wsnblog.com 19 Initial Connectivity check for Sensor node To check connectivity to the Virtual Machine do the following: • Insert the TelosB in USB slot • In the Virtual Machine Player click on the tab ’Virtual Machine’ • scroll to ‘Removable Devices’ and check for TelosB • click on ‘TelosB’ and click on ‘Connect(disconnect from host)’ It is always advisable to perform these steps when connecting/disconnecting sensor nodes to Contiki-OS 20 Hello-World on TelosB In contiki-2.7/examples/hello-world do the following in the Terminal: make TARGET=sky savetarget make motelist make hello-world.upload make login Understanding each line: • the first input will make the directory target only for TelosB Sky node (good to do when using only one type of Sensor node) • the second input will display on which USB port the TelosB is connected • the third input will upload the code onto the TelosB • the last line will create a login to the TelosB • Press RESET button on the TelosB and observe output 21 Output on TelosB connecting to /dev/ttyUSB0 (115200) [OK] Rime started with address 50.0 MAC 32:00:00:00:00:00:00:00 Contiki 2.7 started. Node id is set to 50. CSMA ContikiMAC, channel check rate 8 Hz, radio channel 26 Starting ’Hello world process’ Hello, world 22 Contents of this section Cooja Simulator in Contiki-OS Hello-World Simulation with Cooja Adding Sensor Nodes to Cooja Mote Output in Cooja 23 Running Cooja in Contiki In Terminal: $ cd contiki-2.7/tools/cooja $ ant run 24 Getting Started • Click on File – New Simulation • Give a name for the simulation project, click Create 25 Cooja Environment 26 Adding Sensor Nodes (Motes) in Simulation • Click on MOTES – Add MOTES • In the Create New Mote Type, select Sky Mote • In the Dialog Box that appears, click on Browse and navigate to contiki-2.7/examples/hello-world • select the hello-world.c file and click on Compile button, After that click on Create 27 Adding Sensor Nodes (Motes) in Simulation • after pressing Create, window to add number of Motes in Simulation and their positions appears • add 2 or any number of motes as per wish . 28 Adding Sensor Nodes (Motes) in Simulation • The motes are placed randomly in the Network dialog box. • use the View title-bar option in the Network for adding visual aide to the simulation • Press Start to run simulation 29 Mote Output in Cooja Observe the output in the Mote Output Dialog box . Similar to the output in Terminal with actual Sky mote connected but only difference of MAC address 30 Exploring More in Cooja • Right Click on any mote and go through many options available. Make Projects run in COOJA from Terminal • In the Terminal navigate to the desired project folder which has a ‘.csc’ file in it • in Terminal make TARGET=cooja filename.csc Last Line automatically starts the simulator without having to manually add motes. 31 REFERENCES for better in-depth understanding for Programming in CONTIKI • Contiki-WIKI: https://github.com/contiki-os/contiki/wiki • PROCESSES: https://github.com/contiki-os/contiki/wiki/ Processes 32.