The Internet of Things

parsimoniousknotNetworking and Communications

Feb 16, 2014 (7 years and 10 months ago)


The Internet of Things
Farha Ali
Department of Mathematics and Computing
Lander University
Greenwood,SC 29649-2099
In this paper,we share our approach and experiences in
teaching a course titled ”The Internet of Things”.The Internet
of Things (IoT) is a vision of a global network infrastructure
connecting physical objects using data capture and commu-
nication capabilities.The IoT comprises three main compo-
nents:embedded sensing devices,communication hardware,
and software.The software is used to collect data observed
by embedded sensing devices and send it to other devices via
the Internet using various communication hardware.The paper
is organized as follows:section I discusses the challenges we
faced and the approach used to effectively teach the course
and section II concludes with a brief overview of the student
feedback and our experiences.
This course was taught to upper level undergraduate stu-
dents.Most courses of this nature are usually taught focusing
mainly on embedded programming or embedded operating
system,our focus was on teaching the course about the com-
ponents of the(IoT).In preparation for the course,we faced
two challenges.The first was how to teach programming in
a traditional embedded programming environment to students
who only have programming experience in languages such as
Java and C++,primarily using Integrated Development Envi-
ronments (IDE).The second challenge was how to teach the
hardware concepts associated with embedded devices,sensors,
and actuators.We tackled one challenge at a time.We started
the class using.NET micro framework [1] for programming a
Netduino Plus [2].Netduino Plus is an open source electronics
platform that uses the.NET Micro Framework.It features a
32-bit microcontroller and a rich set of hardware capabilities
including the ability to send data using Ethernet.The.NET
Micro Framework combines the ease of high-level coding
with the raw features of microcontrollers.We used the C#
programming libraries.The students were familiar with the
programming environment,syntax,and object-oriented style
of C#;therefore,in the beginning,we focused on hardware
concepts.The first week of class was spent explaining the
architecture and basic components of the IoT.Students were
introduced to the basic concepts of sensors,actuators,mi-
crocontrollers,and communication hardware.We began by
teaching simple input and output operations.Students learned
to control an LED connected to an output pin of the Netduino
Plus by reading an input value of a switch on the Netduino
Plus device.Next,we discussed the concept of sensors.We
began by explaining how sensors work and how an analog
reading on an input pin of the Netduino Plus is translated into
a binary representation using an analog-to-digital converter
(ADC).As an exercise,we asked students to attach a photo-
sensor to an analog input pin and print the sensor readings.The
students were able to observe the change in the ADC values
by changing the amount of light on the photo-sensor.The
next lesson was an introduction to actuators.We connected
an LED to an output pin and asked the students to send a
signal to turn the LED on when the photo-sensor observed a
value lower than a specified threshold.To teach the associated
communication concepts,we started with an explanation of
serial communication among devices and set up a small local
area network by connecting student laptops and Netduino
Plus devices using Ethernet hubs and cables.We discussed
the physical and data link layer concepts in both serial and
Ethernet communications.Next,we introduced the concept
of client/server programming.As an exercise,we asked each
student to develop a web server running on the Netduino Plus.
This web server responded to each request by reporting the
current light value observed by the light sensor.Next,we
introduced the concepts of threads,interrupts,and timers.We
discussed examples using the.NET Micro framework libraries.
We discussed the importance of developing reusable software
components for initializing and servicing timers,interrupts,
threads,and serial communication interface.Students were
asked to run multiple threads and to use timers and interrupts
to read a temperature sensor and a photo-sensor and provide
the readings on a web server.As a homework assignment,
students were tasked with developing a program to send and
read Morse code.
To introduce students to a different hardware platform,we
used the Atmega168 [3] for the remainder of course.The
Atmega168 is a high performance,low-power,8-bit micro-
controller developed by Atmel Corporation.To afford students
the opportunity to use a different programming environment,
we used AVR Studio [5] as the programming environment,
and C as the programming language.The students learned
the trade-offs of using an expensive but easy to use device,
such as the Netduino Plus as opposed to a less expensive
but comparatively harder to program device,such as the
Atmega168.To allow a fair comparison between the two
hardware platforms,most of the previous exercises were
repeated using the Atmega168,with the exception of the
exercise involving the use of the Internet.We discussed the
concept of serial communication using the Atmaga168.As an
exercise,students observed sensor values on one Atmega168
and sent a command,using serial communication,to change
the state of the actuators on another device.Our last lesson
was to teach the concept of radio communication.For this
purpose,we introduced students to the RFM12 transceiver
[4] and associated software.We introduced the concept of a
packet header and payload,through exercises that included
sending packets directed to a specific node,as well as sending
broadcast packets.
To conclude the course,students were asked to submit a
final project using sensors and microcontrollers.The project
was divided into three milestones.The first milestone required
students to submit a proposal.The second milestone required
students to submit a circuit diagram and a feasibility report.
The third milestone required students to submit a final report
and present a project demonstration to the class.To ensure
that the students’ projects were realistic and appropriate,each
milestone provided different deadline.Students were required
to submit a proposal for the first milestone,a feasibility study
and a circuit diagram for the second milestone,and a demo of
the completed project for the third milestone.Feedback was
provided for the work submitted at the end of each milestone.
The submitted projects were quite impressive.One student
used senor readings to control a relay switch that in turn
completed a circuit to control the opacity of a smart film.
Another student developed a home monitoring program using
multi-threaded client/server program.Other projects included a
LED matrix display that changes patterns depending on sensor
values,a galvanic skin response lie detector,and a GPS locator.
This was our first experience teaching a course of this
nature.The student responses was positive,with the majority
of the students recommending this course be offered on a
regular basis.Students learned the importance of software
reuse and used the software components developed in their
final projects.We also find the approach of dividing the course
in two components useful.The main challenge we faced was
the lack of a systematic approach for debugging an embedded
[1] Microsoft,.NET Micro Framework,
platform-support,2013,date of last access
[2] Netduino,Netduino Plus,,2013,
date of last access
[3] Atmega168,Atmega168 datasheet,,
2013,date of last access
[4] Hope RF,RFM12B datasheet,,
2013,date of last access
[5] Atmel,AVR Studio,
2013,date of last access