NodeJS & Arduino

What, Why and How

Alex Roche

 

@alexHacked

What i'm going to be answering today

What is an Arduino?

Why would I use an Arduino?

What can I use an Arduino for?

How can I get started?

Arduino

What is an Arduino?

Open Source

Microcontroller board with addressable GPIO pins

Various form factors depending on need

Communicates with electronics using GPIO pins

Guh-Pee-Oh What?

General Purpose Input and Output

Can be used to receive and transmit current to electronic components

Can also be used to pass messages to serial input

Are how the Microcontroller talks to the outside world

Pins on the Arduino

Normal pins which can be set high or low

Analogue and PWM Pins

Analogue pins which can read values between 0 and 1023

PWM Pins can be set to values between 0 and 255

S.H.I.E.L.D.S.

Not a comic law enforcement agency (in this case)

Add on to an Arduino which extends functionality

Can be stacked, but some care does need to be taken

S.H.I.E.L.D. Requirements

Plugs to the non-GPIO pins need to reach all shields.

Each shield will have outputs which need to be left unconnected to.

Outputs to the Arduino need to be unique.

Programming an Arduino

Breaks down in to two main types

Code that is compiled to C / C++ and uploaded to the microcontroller

Code that communicates with the board and issues commands

There's HOW Many ?!

Different sizes serve different needs

There's HOW Many ?!

Arduino Uno

There's HOW Many ?!

Arduino Due

There's HOW Many ?!

Arduino Nano

There's HOW Many ?!

Arduino Lilypad

Why the Arduino?

Easy to Use

Works on Linux, Mac and Windows

Large Community

Open Source

Why the Arduino?

Not expensive to use

Lots of starter examples to tinker with

Lots of pre-written libraries

Ideal for Making

What might you learn?

Circuit Design and Electronics

Soldering

Introduction to Programming

Physical Prototyping

Awesome things with

Arduino and NodeJS

Power Glove

By @thieman

Typing Robot

By @tikurahul and @nebrius

Potentiometer and Particles

By @jblanchefr

You had my interest, now you have my attention.

How do I get started?

We use NodeJS

Johnny Five

NodeJS library informed by robotics

Makes turning your arduino in to a robot easy

Noduino

NodeJS library informed by interactive applications

Contains server and client in one codebase

Web pages can access any arduino connected to the computer

Johnny Five

Johnny Five; How?

Pick a directory

 npm install johnny-five 

What does the API look like?

Creating instances of hardware objects and passing initiation properties


							 var servo = new five.Servo(10);
							

servo.min(), servo.max(), servo.center(), move(deg), sweep(deg)

Hello World Example


	var five = require("johnny-five"), button, led, litBool;
	var board = new five.Board();
	board.on("ready", function() {
	//Once the board is ready and the callback fires, your code goes here!
	    litBool = false;
	    led = five.Led(13);
	    button = new five.Button(8);
	    button.on("down", function() {
	        if(litBool == false){
	            led.off();
	        }else{
	            led.on();
	        }
	        litBool = !litBool;
	    });
	    button.on("hold", function() {
	        led.strobe();
	    });
	});

Noduino

What is this madness?

Node Framework for Client Side Arduino

Combines Server and Page in to one framework

Allows Arduino to be connected through the webpage

How?

Upload an Arduino sketch to the Arduino


$ > git clone git@github.com:semu/noduino.git
$ > cd noduino
$ > git submodule update --init
$ > npm install
$ > node app.js
						

What does the API look like?

Creating instances of hardware objects as functions and passing through callbacks


board.withLED(
    {pin: 13}, 
    function(err, LED) {
        //logic here
    }
);
							

Hello World Example


var Noduino = new NoduinoObj(
    {debug: true, 
    host:'http://localhost:8090'},
Connector);

Noduino.connect(function(err, board) {
  if (err) { return console.log(err); }
  board.withLED({pin: 13}, function(err, LED) {
    if (err) { return console.log(err); }
    LED.blink(250);
    LED.on('on', function() }
      console.log('LED is on!');
    });
  });
});

To Recap;

Arduino is an awesome Open Source hardware platform

It's easy to program and the community is amazing

If your Arduino won't do it, find a shield that does

Johnny-Five will serve you well for robotics

Noduino is for a hardware interactive web

People are amazingly friendly

There are many events and places to go to play with the Arduino & NodeJS

Go Create something Awesome!

I've been;

Alex Roche

@alexHacked

NodeJS & Arduino

By Alex Roche

NodeJS & Arduino

  • 5,507