Arduino For Teaching Embedded Systems
Arduino For Teaching Embedded Systems
Arduino For Teaching Embedded Systems
1. Introduction
In a recent article at Make online, titled, Why the
Arduino Won and Why Its Here to Stay [1], the author
describes the world of microcontroller development kits and
how the Arduino [2] has captured the hearts of many nonengineers. The question we pose in this paper is, should
the Arduino and related open source projects be used as a
platform to teach embedded systems?
To address this question we first try to establish which
concepts/outcomes do we expect from a undergraduate level
course in embedded systems. We then describe a course
we have taught on embedded systems using the Arduino
Uno, and discuss how the course does or does not satisfy
these various topics. We find that the device as a platform,
though not perfect, has many benefits that help students
build devices that would not, likely, be possible with other
control platforms. This is mainly due to the Arduino community, which consists of not only traditional engineers and
scientists, but has a large contingency of artists and DIY
hobbyists. The size of this community, the basic desire
for users to get something working, and the open sharing
of designs means students have access to a huge base of
knowledge, that they can leverage to build their systems.
We compare this with our experience in the previous year
2. What
Course?
is
an
Embedded
System
Software engineering/reengineering
Teamwork
Components reuse
Human communication - written and spoken
Testing and Validation
Creating models
Project Based Learning (PBL) curricula (which is a version of Problem Based Learning) is becoming the norm
for many engineering fields, business, and medicine [5],
[6], [7] to help deal with the above identified topics in
preparing students for the real-world. PBL pedagogy centers
learning around the activity of the student. An approach
to preparing students to become industrial designers is to
include design projects throughout the curriculum, hence
PBL curriculum. The accreditation agency, ABET, among
other entities, influenced engineering programs into including a major capstone around 1995 to 1997 [7]. For computer
engineering curriculum, lab only courses [8], [9] slowly
evolved to include both labs and final projects. The senior
capstone has been studied to help understand how to prepare
students for this culminating experience [10], [11].
Embedded system courses fit well into PBL curriculum.
The question still remains, what are the specific topics
that should be covered in such a course. The IEEE/ACM
model computer engineering curriculum [12] has an embedded system portion that consists of 11 units (7 core
and 4 electives) with a total of 59 topics and 39 learning
outcomes. The model does provide timelines, but a simple
mathematical calculation leaves approximately 50 minutes
per topic over a one-term 3 credit hour course to cover topics
as complex as DMA transfers and Memory system power
consumption. In other words, embedded systems is a very
large subject matter for a single course.
The reality is a graduate degree in embedded systems
as describe in ARTIST in 2003 [13] will, likely, cover all
the topics in IEEE/ACM model over a number of courses,
but the average computer engineer undergraduate will either
need to extend their embedded system skills when in industry or they will never be involved in the field.
Other scholars have proposed course curriculum for embedded systems and embedded programming [14], [15], [16],
[17], [18]. In all cases, the goal is to teach a common set
of topics and to allow the student to interact with devices in
the lab at both the software and hardware level.
An embedded system course deals with the design and
analysis of the software and hardware for a dedicated
application. In this review, we have identified that there is
no common set of topics to cover for such a course, and
there are a number of approaches to teach students a subset
of these concepts at various depth of coverage.
Its intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments [2].
The basic system consists of a microcontroller with various peripheral interfaces that is programmed by an existing
software platform. This may sound vague, but the Arduino
can come in a number of form factors. For example, the
Arduino Uno consists of an ATmega328 [19] microprocessor, a USB to serial chip, and an AC to DC power
converter. The Uno can either be built by hand or can be
bought premade from a seller such as sparkfun.com for
approximately 35 USD. The Arduino software platform is
written in Java and is based, mainly, on Processing [20] (a
language developed mainly for artists). The IDE is installed
on a machine and then can program the UNO over the USB.
The base IDE includes a number of examples for blinking
LEDs, making noises, etc. The Uno is only one type of
Arduino kit and others exist such as the Nano (for compact
use), the LilyPad (for wearable applications), and Fio (for
wireless communication).
There is not much literature relative to Arduinos being
used in computer science and computer engineering to our
knowledge with the exception of [21]. Buechley et. al. [22]
have described their experiences in building the LilyPad
Arduino and using the device in workshops for K-12 based
students. They noted how the device was successful in attracting females to participate in programming and hardware
design. Also, Balogh [23] has described their Arduino based
robot platform that was used in some lectures in robotic
control and embedded systems in their curriculum. In their
work, they noted the increase in Arduino searches on the
Internet as a key factor in deciding to use the Arduino.
Taking a similar approach, Figure 1 shows the search
trends for the terms arduino, x86, hc11, mips, and nios. What
is remarkable is that Arduino searches are now roughly on
par with x86 searches as of March 2011. This just illustrates
the activity within the Arduino community.
The major benefits for using Arduino in an educational
setting that we have identified are:
Ease of setup - plug and play
Many examples for controlling peripherals - preloaded
in the IDE
Many open source projects to look at
Works on Windows, Linux, and Mac
Low cost hardware - build or purchase prebuilt
Low cost software - free
Low maintenance cost - Destroyed microprocessors can
be replaced for approximately 4 USD
Students can prototype quickly
Can be programmed in an a number of languages
including C
On the other side of the argument, our two major concerns
with using such a system are:
What are the students learning and is this low-level
enough?
Fig. 1
S HOWS THE G OOGLE T RENDS FOR A RDUINO RELATIVE TO OTHER EMBEDDED TERMS
Table 1
T HE LIST OF ACTIVITIES FOR THE STUDENTS
Activity type
Activity Goal
Group Size
Weeks
Arduino
Midterm
Final
Project
1 to 2
1 to 2
2 to 4
4
4
8-12
Yes
Yes
Yes
Class Activity 1
Class Activity 2
Class Activity 3
1 to 2
1 to 2
1 to 2
1
1
1
Possibly
Possibly
Possibly
Presentation 1
Presentation 2
Presentation 3
Present a peripheral
Present an embedded system
Present your final
1 to 2
1-2
1
2
2
1
Yes
No
Yes
real-world engineering.
6. Conclusion
In this work, we have related our experiences in teaching
embedded systems course while providing the students access to the Arduino platform and its open source community.
We described the details of our course and showed how the
Arduino can be used to expose the students to many of the
topics normally included in an embedded system course. The
6.1 Discussion
We are pleased with the inclusion of the Arduino in
our embedded system course. We, however, identify that
the students are still missing two key components of their
embedded system education. The first, as we have identified
already, is coverage of real-time operating systems. To solve
this situation, we, personally, would like to have an additional course on robotics in our department that would allow
us to present this topic in relation to a realistic application.
The second missing topic in our current approach is
software/hardware co-design. This element was included in
the 2010 version of this course since FPGAs were used, but
these concepts are now lacking as more and more of the
students flock to the Arduino. Our belief is that this topic
is a course in itself or can be incorporated into hardware
acceleration or optimization courses. Again, the authors
hope that such a course will be added to our departments
curriculum in the future and are aware of a number of these
courses being taught at the senior/graduate level.
References
[1] J. Provost, Why the arduino won and why its here to stay, Tech.
Rep.
[2] Arduino, Available at http://www.arduino.cc, 2010.
[3] M. Grimheden and M. Trngren, What is embedded systems and
how should it be taught?results from a didactic analysis, ACM
Trans. Embed. Comput. Syst., vol. 4, pp. 633651, August 2005.
[Online]. Available: http://doi.acm.org/10.1145/1086519.1086528
[4] M. J. I. N. Institute, Industriell Programvaruutveckling, Tech. Rep.,
2003.
[5] C. L. Dym, A. M. Agogino, D. D. Frey, and L. J. Leifer, Engineering
design thinking, teaching, and learning, Journal of Engineering
Education, vol. 94, pp. 103120, 2005. [Online]. Available:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.72.1593
[6] J. Macias-Guarasa, J. Montero, R. San-Segundo, A. Araujo,
and O. Nieto-Taladriz, A project-based learning approach to
design electronic systems curricula, Education, IEEE Transactions
on, vol. 49, no. 3, pp. 389 397, 2006. [Online]. Available:
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1668283
[7] A. Dutson, R. H. Todd, S. P. Magleby, and C. D. Sorensen, A
review of literature on teaching engineering design . . . Journal of
Engineering Education, vol. 86, pp. 1728, 1997. [Online]. Available:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.3949
[8] S. Areibi, A first course in digital design using vhdl and
programmable logic, in Frontiers in Education Conference, 2001.
31st Annual, vol. 1, 2001, pp. TIC 1923. [Online]. Available:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.16.3048
[9] K. E. Newman, J. O. Hamblen, S. Member, T. S. Hall, and S. Member,
An introductory digital design course using a low cost autonomous
robot, IEEE Transactions on Education, vol. 45, pp. 289296, 2002.