Context –  Why?

I was first cued into arduino while browsing through Catlin Gabel's Winterim course offerings (Winterim is a one-week, student designed, experiential learning opportunity to that go beyond the curriculum).  The Winterim course catalogue described a week of learning arduino in this manner, "We’ll organize open ended projects where you can try making things such as interactive light-up artwork, toasters that make twitter posts, a garage door controlled by your phone, or a robot servant. You’ll find yourself learning basic programming and circuitry. For those with prior experience, you’ll find an environment to share ideas with many other makers and tinkerers as well as the opportunity to collaborate with other experienced artists, 
programmers and builders to make something you probably never thought you could before."

One of my 9th grade students, who had no prior electronics or programming experience, came back from her Arduino Winterim having built a sensor that flashes when her avocado plant needs to be watered based on the moisture levels in the plant's soil.  How cool is that?

In my opinion, innovation is problem solving.  One of the ways to teach innovation is to teach a huge variety of skills so that students have as many tools as possible to draw from their figurative tool belt as they create solutions to problems.  As the "internet of things" takes off, smart devices will help us monitor and control our home, our safety on the road (Google's driverless cars), and our health.  In short, electronic control systems like arduino will be an essential tool in helping to solve problems related to health, safety and energy efficiency.  I was/am eager and ready to learn more and was fortunate enough to find an introduction to Arduino class at my local makerspace, ADX.

Here's a video that further explains the magic of arduino.


Process:

                                                                              The Sparkfun Arduino Kit

                                                                             The Sparkfun Arduino Kit

1. You need to borrow or purchase an arduino kit and follow the instructions to set it up

2. Go to http://www.arduino.cc/ then click on "downloads" and download the latest version of the arduino open source software

3. Install the arduino software into your applications

4. Attach your arduino kit to your computer via the USB cord

5. Definitions:

  • Arduino: a board with an electronic micro-controller that you connect to your computer that runs on open source software
  • Breadboard: A bread board in filled with holes, called pins, that are used to build circuits between the bread board device and the arduino.  Instructables provides a clear definition here.  It's important to note that the rows in breadboards all connected to the same circuit.
  • Sketches: the software, or programs, written on arduino
  • Sensors: Input -- temperature, motion, touch, etc.
  • Actuators: Output - led, buzzer, motor, etc.

6. The "hello world" equivalent for arduino is running the "blink" sketch.  To do this, you'll want to follow the directions here to set up your circuit using using the exact pin locations shown.  Be sure to have your arduino app open - instead of writing the "blink" sketch yourself, your arduino application comes pre-programmed with sketches that you can run by going to and opening 1) File 2) Examples 3) Basics and 4) Blink  -- this is the beauty of open-source software on arduino.  You can tap into everyone else's learning and programming!

7. Next, our instructor, Bob Gallup, founder of Xobxob reviewed electricity and electronics with us, as those are the forces behind arduino circuits.  Basically, this felt like a trip back to my high school chemistry class - it's basic information, but can seem pretty foreign to someone who has been immersed almost exclusively in history and economics for the last twelve years.  Here's a recap of Bob's highly informative crash course: 

  • Electrons are negative and float in conducive materials  (like metal, not plastic).
  • Electricity = motivated electrons.  Electrons move towards positive forces.
  • Voltage = how motivated the electrons are to move towards positive forces.
  • Current = how many electrons move -- many = larger current (caveat, current flows positive to negative)
  • Electronic components work with electricity to do things
  • A resistor = resists current - can be built into arduino circuits to lessen current (currents are measured in Ohms)
  • A schematic is an abstract representation of a circuit - you can draw in a resister with a zigzag line and a battery with a plus/minus symbol

8. Write your first sketch - this is an easy one to start out with.  You want to open Arduino IDE (interactive development environment) and type in the following sketch: 

pinMode (13, OUTPUT);

digitalWrite (13, HIGH);

delay (1000);

digitalWrite (13, LOW);

Again, open source comes in handy because Arduino provides definitions for all of the programming words used in the arduino programming language here

By looking at this reference guide and then clicking the "verify" green check mark and the "upload" green arrow, you will see that this sketch turns on the LED light.

9. Programming continued: we learned about looping programs to repeat functions, programming variables to simplify the sketch, how to program buttons and switches, and were introduced to potentiometers. 

Failures and learning:

It was humbling to be the slowest learner in a four person classed filled with a computer science professional who works at Intel and two other individuals who use use programming languages in their jobs.  Right away, my arduino application failed to install properly because I needed to install a specific driver for the Sparkfun board that I borrowed.  I told my classmates to go on without me, but one of them kindly responded "no one get's left behind" ... and this was pretty much the theme for the four hour evening class.  Our teacher, Bob, was intentionally ambiguous in his directions because he wanted us to figure things out on our own - I liked that to some extent, but with little electronics or programming experience, this could be frustrating.  It was through failures and learning that I realized that breadboard circuits are wired by row and where you put the pins really matters.  There's so much precision in computer science and programming and I'm used to a world open to subjectivity and variations.   

I failed most in creating my own sketches  - trying to write a sketch to "loop" a program to repeat a blinking LED light and I needed lots of help to make the LED light up three times in a row, quickly, then pause.  It was during this phase of programming, however, that I learned the importance of syntax in writing sketches/programs and I understood the use of variables more concretely.  I learned to always bracket ( { }) my sketches, to use a semicolon (;) after each line of code, to use the phrase void setup ( ) before my brackets, to declare a variable by naming and defining that variable, which is essentially a placeholder for a function.  For example, the variable I defined was a length of time that the LED light would off.  My variable was defined in microseconds.  I did this by writing {int delaylength = 1000; delaylength = 1000) meaning that the word delaylength would act as a variable and represent an integer of 1000 microseconds whenever written in the sketch at hand.  There are lots of different variable types, but I just learned about integers.  I was much less successful at fully understanding the conditional If ( ), then statements in programming, but my classmates told me that this always takes a few go arounds before fully "getting it" - I'm still letting these conditional programming statements seep into my brain as we speak, but I imagine this will make more sense when I learn Python or another programming language in the near future.

Connections: 

I am super interested in the way in which arduino is opensource - the "radical collaboration" in the arduino community is endemic to design thinking and innovation.  This openness is really generative and generous and signals an underlining ethos among innovators and designers.  On the other hand, this openness also represents the lack of value in ideas or sketches alone.  It takes quite a bit of skill and effort to execute an idea or sketch.  Just because you can create a "smart" gallon of milk that alerts you when the expiration date nears, doesn't mean you have a marketable product or business - the arduino community gets that.  It's about execution, not ideas, so let's share ideas and whoever can execute most effectively wins.

I also connected to Bob Galllup, teacher of the class, entrepreneur, life-long learner and founder of Xobxob.  I am going to have Bob teach an arduino class to my "Economics of Innovation" class in the spring of 2015.

Reflection:

The arduino class was a powerful experience in many ways -- it's scary and overwhelming to feel like a fish out of water in a class full of strangers who know more about computers and electronics than I ever will.  At the same time, it's empowering to learn skills completely outside of your comfort zone and to have a few ideas -- in my case, current, voltage, variables -- make sense.  I also really loved Bob's teaching style and will embed his "mini-quizzes" into my own lessons when introducing more difficult concepts.  I'm looking forward to the prospect of working with students on arduino in the Catlin robotics lab in the future.