Femtoduino – the smallest Arduino clone available

An Italian guy (Fabio Varesano) has designed and built the smaller Arduino clone available:

It has almost the size of a Bluetooth module. Really great work and the most importantly, Fabio shares all essential resources so that one can build Femtoduino. The schematics are based on the Arduino Pro Mini by Sparkfun.

Now, Internet/Web of Things is much closer to hobbyists with projects that can be more pervasive and easily deployed!

Check the video link below to see also it’s size against an Arduino Uno board:

Femtoduino

More information and links to schematics and instructions here.

**You can pre-order one here!**

 

Presentation about Cloud Platforms and Open Hardware

I have just given a lecture at the IEEE UCG Student Branch about Free/Open Cloud Platforms and interaction with Open Hardware. Open Hardware is great but communication with free and Open Cloud platforms is even better since it provides numerous opportunities for data management, automations and many more…imagination is your only limit!

Browse through the slides below and feel free to contact me for any questions.

The Book has been (finally) released!

Dear Arduino and IoT fans,

The time has come! The book has been finally released and you can purchase it right away through Createspace eBookStore. Soon it will also be available on Amazon and other online stores and bookstores worldwide!

You might also have noticed the new url address: buildinginternetofthings.com has replaced arduino-sensors-cloud.com

I would like to thank those you have sent emails expressing their interest in the book, the publication process and have sent constructive comments about the new site’s structure and layout.

I always remain at your disposal for questions, ideas, suggestions and corrections about the Book. All figures (full color and best available resolution) have also been added on the site for your convenience. The source code for each project will be added very shortly.

More info here: http://www.buildinginternetofthings.com/

You can also add my twitter account for direct news about IoT and Arduino updates: @BuildingIoT

Charalampos

PS: You do not need to subscribe to the new site. If for any reason you wish to be removed from this list, just reply to this message, replacing the subject with the word ‘remove’.

Using Breakout to connect your Arduino with the Internet (through your PC)

Breakout is a great tool that makes easier the communication of your Arduino board with the Internet (and thus Cloud platforms) using your computer as an intermediate node.

As also presented in Chapter 07 of the Book, connecting your Arduino to the Internet through your computer requires developing a small Java-Processing-bases application and using the Firmata library on the Arduino.

Breakout simplifies the process enabling us to create functional web-based interfaces to the physical world. To use it you need the following:

  • An Arduino board (Uno, Fio, Mega, Pro Mini, Duemilanove, etc).

Operation System:

  • Mac OS X 10.6 or higher
  • Windows 7 or higher
  • Ubuntu 11.10 64-bit

Prerequisites:

  • Java Runtime Environment version 1.6 or higher must be installed.

Web Browser:

  • Chrome version 14 or higher
  • Firefox version 7 or higher
  • Safari version 5 or higher

Mobile Web Browsers:

  • Safari
  • Firefox version 7 or higher
  • Chrome Beta (for Android 4.0 or higher)
Once you have downloaded and installed the latest version of Breakout you can prepare your Arduino board by uploading the Firmata sketch (File -> Examples -> Firmata -> StandardFirmata).
Start the Breakout Server (Doubleclick on the installation icon) and connect to your board. No need for extra coding on your computer!
Communication with your board can now be performed through your browser by using standard HTML and JavaScript code.
To access your board remotely you need enable remote access to the Breakout server (public IP or port forwarding at your router and also make sure the port – default is 8887 is accessible).
Breakout comes with various examples demonstrating all kinds of functionality. The hello_world.html contains the following code:
<!DOCTYPE html>
<html>
<head><meta charset=utf-8 />
<style type="text/css">
.text {
font-family: "Arial";
font-size: 22px;
color: #00AEEF;
padding-left:20px;
}
</style><title>Hello World!</title>

<script src="../../dist/Breakout.js"></script>
<script src="../libs/jquery-1.7.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

// dependencies:
// declare these variables so you don't have
// to type the full namespace
var IOBoard = BO.IOBoard;
var IOBoardEvent = BO.IOBoardEvent;
var Button = BO.io.Button;
var ButtonEvent = BO.io.ButtonEvent;
var LED = BO.io.LED;
var Oscillator = BO.generators.Oscillator;

// set to true to print debug messages to console
BO.enableDebugging = true;

// replace "localhost" with the IP address of the computer
// the IOboard is connected to in order to load pages on a
// phone or tablet (eg. "192.168.2.3", 8887)
var ard = new IOBoard("localhost", 8887);
var onboardLED;
var fadeLED;

// listen for the IOBoard READY event which indicates the IOBoard
// is ready to send and receive data
ard.addEventListener(IOBoardEvent.READY, onReady);

function onReady(event) {

// remove the event listener because it is no longer needed
ard.removeEventListener(IOBoardEvent.READY, onReady);

// create a new LED
// params: IOBoard, reference to the pin object the LED is attached to
onboardLED = new LED(ard, ard.getDigitalPin(13));
// blink the on for 2 seconds then off for 2 seconds 100 times
// params: interval (how often the blink lasts), number of times to blink (0 = forever)
onboardLED.blink(2000, 100);

// create a new LED
fadeLED = new LED(ard, ard.getDigitalPin(11));
// use a sine wave to fade the led on and off every second
// params: interval, times (0 = forever), waveform to apply
fadeLED.blink(1000, 0, Oscillator.SIN);

// create a new button
// params: IOBoard, Pin, buttonMode
var button01 = new Button(ard, ard.getDigitalPin(2), Button.PULL_DOWN);
// listen for button press and release events
button01.addEventListener(ButtonEvent.PRESS, onButtonPress);
button01.addEventListener(ButtonEvent.RELEASE, onButtonRelease);

}

function onButtonPress(event) {
// get a reference to the button object that fired the event
var btn = event.target;
$('#button').html("button: pin = " + btn.pinNumber + " pressed");
}

function onButtonRelease(event) {
// get a reference to the button object that fired the event
var btn = event.target;
$('#button').html("button: pin = " + btn.pinNumber + " released");
}

});

</script>

</head>
<body>

<img src="images/hw_schematic.png"/>
<p class="text">The led attached to pin 11 should fade on and off<br>
every second and the on-board LED should toggle <br>
on for 2 seconds and off for 2 seconds 100 times.</p>
<div id="button" class="text">button:</div>

</body>
</html>​

and looks like this:

 

The LED attached on your Arduino should start blinking right away!

 

 

 

Internet of Things Camera by Adafruit

Lady Ada from Adafruit Industries has combined an Eye-Fi memory card (SD memory card combined with a WiFi transceiver), a serial JPEG Camera and an Arduino UNO to make an IoT-enabled Camera!

 

 

 

 

 

 

 

 

 

 

The camera can be programmed via the appropriate sketch to upload images at any interval (or external trigger) to your computer, mobile phone or any of the social photo sharing sites that the Eye-Fi supports.

More information here.

Major announcement about the Book

Dear friends,

There has been a major update about the book release. Apress has decided on January 30th due to a number of reasons to cancel the book publication process. Their official claim was that the book does not mesh in with their Arduino line. After looking for some alternative publishers I have decided to self-publish the book through the Amazon’s CreateSpace service.

The chapters have been converted to the appropriate format and are ready to published. The book can be purchased in both hardcover and electronic formats from Amazon, CreateSpace eStore, bookstores, other online retail, libraries and academic institution. Same content, different title, lower price!

The only thing that delays the new release is the official contract-copyright release by Apress which is expected in the following days. By the time this happens the book will become immediately available for purchase under the new title. I will keep you updated about the progress.

If you have pre-ordered any copies of the previous title please cancel your purchase.

My apologies for any inconvenience caused,

Charalampos

Internet of Things

Teaser and short movie by European Research Cluster on the Internet of Things:
[youtubegallery]
Internet of Things Europe – The movie|http://www.youtube.com/watch?v=nDBup8KLEtk
Internet of Things Europe – Teaser N° 2: The Pillbox|http://www.youtube.com/watch?v=RTdRUwl9JsA
Internet of Things Europe – Teaser N° 3: Traffic|http://www.youtube.com/watch?v=lkIXHzcU5XA
Internet of Things Europe – Teaser N° 4: Student|http://www.youtube.com/watch?v=kq8wcjQYW90
[/youtubegallery]

Build your own Cloud-based Internet of Things!

Big Thanks to my friends in Jelastic (a PaaS Cloud solution) for hosting a short tutorial on how to use their Cloud hosting service for developing an IoT application.

The tutorial presents all essential steps for configuring the Cloud environment and building a J2EE application that can receive sensor readings and visualize them!

For this setup I have used Tomcat and MySQL.

A similar example is presented in the book that utilizes Google App Engine instead.

To send sensor data to the Cloud application all you need to do is instruct your Arduino to invoke a simple web request like this one:

http://sensorcloud.jelastic.servint.net/add?sensor=temp&value=20

The following Arduino code uses the Ethernet Library to do so:

 

#include <SPI.h>

#include <Ethernet.h>

// Enter a MAC address for your controller below.
byte mac[] = {  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
char serverName[] = "arduino.jelastic.servint.net";
// Initialize the Ethernet client library
EthernetClient client;

void setup() {
// start the serial library:
Serial.begin(57600);
//start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
}

}

void loop() {

int temperature = analogRead(0);
String s = String(temperature,DEC);

if (client.connect(serverName, 80)) {
// Make a HTTP request:
client.println("GET /add?sensor=temp&value="+s+" HTTP/1.0");
client.println("Host:arduino.jelastic.servint.net");
client.println();
client.stop();
}

delay(60000);
}

To visualize the data just invoke http://sensorcloud.jelastic.servint.net/?sensor=temp in your browser. You should get a graph like the following:

Updates…

First of all I would like to thank all the people that have contacted me so far about the book, asked about the release date, sent comments and suggested me useful information about IoT platforms!

Some updates on the site:

1) The Table of Contents has been completed by adding the structure of chapters 9 and 10. Now you can get a very good idea of what you can learn from the book and what projects you can built with instructions found within the chapters.

2) I have added links to Yaler, a platform for enabling you to contact your Arduino remotely even behind network firewalls and NATs, and to Exosite, an additional Cloud-based sensor data and device management.

Again I would like to invite you to point out platforms and tools for the IoT and Cloud-based management of sensor data!