Difference between revisions of "Project:Nanode"

From London Hackspace Wiki
Jump to navigation Jump to search
Line 2: Line 2:
  
 
[[File:Nanode_running.jpg|320px|right|thumb|Functioning Nanode!]]
 
[[File:Nanode_running.jpg|320px|right|thumb|Functioning Nanode!]]
 +
 +
==Nanode - a 30 second pitch==
 +
 +
Nanode is an Arduino-like board that has in-built web connectivity.
 +
 +
It allows you to develop web based sensor and control systems.
 +
 +
It costs under £20.
 +
 +
  
 
==Open Source Collaborative Projects==
 
==Open Source Collaborative Projects==

Revision as of 16:16, 15 April 2011

New page for Ken's new project 'Nanode' (formerly 'Ethernet Arduino') For full background and earlier work please see Ethernet Arduino

Functioning Nanode!

Nanode - a 30 second pitch

Nanode is an Arduino-like board that has in-built web connectivity.

It allows you to develop web based sensor and control systems.

It costs under £20.


Open Source Collaborative Projects

The Nanode is possibly the first open source collaborative hardware design project at the London Hackspace- conceived, designed, manufactured and coded by Hackspace members - for Hackspace members. As an exercise in the design and building of a simple but useful microcontroller product, Nanode will introduce minimum cost web connectivity.


About the Nanode - Some Background

The Nanode is a low cost entry device aimed at network and Internet Connectivity projects.

It's name was originally derived from "Networked Arduino Node" as it essentially opens up the possibility of networking Arduino-like devices both to the internet, and locally using a mix of wired and wireless networks.

It has been conceived as an experimental platform, an enabling technology, which will allow applications to be developed at minimum cost and hassle.

It has been designed with low cost hacking in mind and can be built easily for under £20 - so that it will appeal to those on a tight budget.

It uses the popular Arduino environment so will be familiar to many. It also accepts Arduino shields, and a wireless shield based on the popular RFM12 device is planned. This will open up the Nanode to wireless networking and creating bridges between wirless, and wired networks and the Internet.

Nanode consists of a small PCB which has the ATmega328 microcontroller, some glue logic, the ENC28J60 ethernet controller and a Magjack ethernet connector. The board only uses through-hole and DIL conventional components - so that it can be easily assembled by anyone who has basic solderng skills.

It makes an ideal project for a teaching workshop on web connectivity, and as such will appeal to Hackspaces for advanced Arduino workshops.


Yes - but what does it do?

Nanode uses a Ethernet code library developed by Andrew Lindsay. Andrew has provided examples for a Twitter Client (using supertweet.net), a Pachube Publisher and Pachube Subscriber. Andrew has also developed code to allow DNS Client queries and sending UDP packet to a local network.

Nanode can be used as a micro web-server for simple home automation and control, be used to build web connected sensor networks and many other web connected applications.

For those wanting to tinker with M2M applications, two Nanodes can communicate data or commands via a web data service such as Pachube.

Another unique feature is that several Nanodes can be connected together on a multidrop serial bus and used for distributed control tasks, such as energy montoring or home automation. The wired network supplies communications and power and can be made from low cost 4 core telephone cable. Individual Nanodes can communicate via this network back to an ethernet connected "Master" unit. With RS485 driver ICs, the Nanode can be adapted as a DMX lighting controller, MIDI network or other serial control system.

By removing the ethernet controller and Magjack, it becomes a very low cost Arduino "work-alike".

Nanode was inspired by the work of several key contributors.

Tuxgraphics - who wrote the original ENC28J60 code library

JeeNodes - for all things small and node like and routines for the RFM12 wireless

Ciseco - for the idea of stringing nodes together with a simple protocol

And many others, whose work has contributed to this project.


Nanode is an Open Source Project.

London Hackspace Custom Nanode

Here's a first draft of the proposed custom Nanode for the Hackspace. The Big H logo is a bit wonky, but we should be able to correct that with a bitmap import. Roger Light is working on this and other minor layout tweaks.

This new board offers several improvements over the first prototype.

The reset switch is vertically mounted on the edge of the board - so it can be pressed even though there may be a shield fitted.

The LED - again on the board edge, is visible with a shield fitted.

The local serial bus is now a 4 way screw terminal block for very easy hooking up with 4 way telephone cable which supplies 12V power and the Rx/Tx and ground lines. Remote nodes could draw up to 500mA total at 12V for powering actuators, motors etc.

Auto reset now added from serial interface - this uses Pin 6 of the FTDI cable and works with Arduino IDE.

Virtual USB Added. Vusb USB is done in firmware negating the need for a £15 FTDI cable. We then use the same programming tool as Metaboard uses - cool.


A Customised Nanode for the Hackspace

Test Drive a Nanode at the Pachube Hackathon April 8th/9th

The first Nanode prototypes have been built and will be taking part in the Pachube Hackathon. Nanodes have been distributed freely to code developers and interested parties and we will have contributions from London, Newbury, Nottingham and Snowdonia. Some of these will be set up as live feeds of temperature sensor and energy monitoring data, others will be configured to act on this real time data.

Ken I hosted an impromptu Nanode build session at the space on Saturday 2nd April.

There was the opportunity to build up 2 pairs of Nanodes and get them talkng to each other via Pachube. There will be 4 Nanodes available for the Pachube Hackathon, with priority given to LHS members. Even if you are not at the event, but want to play with the Nanode at the space, during that event, let me know.


This first build session went well I had the chance to talk to several people about the Nanode project. Stephen Blomley built up one of the kits on Saturday afternoon, got it talking to Pachube and took it home for more development. Sam Carlisle also started a kit which he finished at 4am Monday morning. He's working on an interesting concept idea called Nanode-HomeHub.

It looks like we will have a first batch of Nanode boards ready in early May. This gives a month to get some application example code running on the first 10 prototypes and develop a Nanode code library.

I will run a weekend workshop timed to co-incide with the arrival of the first kits - a Nanode Build and Application Workshop. Ken

Board waiting list

Elliot has started a Pledge Page so that we can pool component purchasing and get the best price. The cost is £18 per Nanode which is a full kit of parts including pcb.

I would like to do a special London Hackspace branded version with a custom LHS logo on the screenprint. If anyone with EagleCAD experience would like to assist with this artwork please get in touch. As soon as we have this artwork and a minor board update, we can order the next batch. --Ken

Now that we have reached 30 boards, we should consider collecting some money and getting a batch of pcbs ordered from Spirit Electronics. I think that 2 square feet of board will just about fit 40 boards. --Ken

The First Prototypes

Here are the two boards each connected to a network port. The orange and brown wires between the boards is so that they can share the 5V power from the FTDI cable.

Putter and Getter Nanodes

The upper board is the Publisher (Putter) and the lower board is the Subscriber (Getter). Every few seconds the Putter sends a new packet of data up to Pachube feed 8729, and at regular intervals the Getter subscribes to this feed to retrieve the data. In this case the data is a simple comma separated list of 6 arguments, which could be six readings from the ADCs on the Putter device, or a numerical command to which the Getter will respond.

Nanode Version 4

The first batch of Nanodes will be labelled Version 4. This version includes the following enhancements over the prototype:

Custom London Hackspace Logo and the words London Hackspace

Improved 4 way screw terminal connector to connect the power and the local wired serial bus.

Virtual USB and USB connector for programming (like a Metaboard) to eliminate most of the need for a FTDI cable.

On board MAC chip - so that every Nanode has a unique identity. Uses Microchip 11AA02E48 which also has a few bytes of E2 rom. Included in price.

Space to add either a SPI EEPROM or SPI RAM. For storing web pages or HTTP buffer space. About £1 extra to fit.

LED now indicates whether the Nanode is connected to the local serial bus, rather than ethernet chip select!

Yellow and Green Ethernet LEDs now correctly indicate Activity and Link.


Update 14/4/2011.


The final changes are currently being made to the pcb layout and we expect to order these at the end of next week. Because of Easter and the following long bank holiday weekend, we expect pcbs back during the first week of May. We have had a generous sponsorship offer, which will allow us to buy sufficient pcbs for 100 Nanodes, and keep a small stock. After the initial 40 or so kits have been funded, these extra units can be sold towards project funds.

Building a Nanode

The complete step by step build sequence can be found on my blog

Parts List

All parts are readily available. I recommend Cool Components in South London for several of the key items. Interested parties should try to pool component purchasing to access volume discounts.

   * 1 ATmega328 microcontroller (with Arduino bootloader) - CoolComponents £5.00 (£2.81 without bootloader)
   * 1 ENC28J60 ethernet controller - CoolComponents 1.99
   * 1 Magjack  - CoolComponents £1.99 

The remaining parts were found to be considerably cheaper from Rapid Electronics giving a kit cost of £18 if parts are purchased in 10 off. This includes all parts, pcb, shipping and VAT.

   * 1 74AHC125 quad buffer 174-9617
   * 1 16MHz crystal 161-1761
   * 1 25MHz crystal 161-1783
   * 4 22pF ceramic capacitors 114-1760
   * 8 100nF ceramic capacitors 121-6444
   * 2 10nF ceramic capacitors 121-6435
   * 3 10uF electrolytic capacitors 945-1056
   * 1 7805 5V regulator 156-4483
   * 1 78L33 3V3 regulator 146-7768
   * 1 2K resistor 934-1480
   * 4 51ohm 1% resistors 934-3342
   * 3 270 ohm resistors 933-9353
   * 3 10K resistors 933-9060
   * 1 tact switch 181-3689 
   * 2 8 way 0.1" SIL Sockets
   * 2 6 way 0.1" SIL Sockets
   * 1 6 way 0.1" right angle header
   * 1 2.1mm dc jack socket
   * 1 1N4001 diode
   * 1 3mm LED
   * 2 32 pin 0.1" header strips (for optional I/O connectors).   

You will also need:

   * 1 Nanode pcb - available shortly to Hackspace members
   * 1 FTDI USB-serial cable - becoming a standard bit of kit for talking to microcontrollers.
   * or similar USB to serial converter such as Sparkfun/Cool Components 
   * 1 CAT5 network cable to connect to router

Current Build Files

The first prototype Nanode 2j had a couple of minor layout bugs, these have been corrected in 2l. The EagleCAD pcb files have been uploaded to Thingiverse as a starting point, but potential users should read the bug-list on the schematic page.

I've now corrected the pcb errors and made some improvements. The Version 3d files are here on Thingiverse

1. Fixed the incorrect connections on the Magjack

2. Moved the reset switch to edge of board and allow for a vertical switch which can be pressed even if shield is fitted.

3. Moved the LED to board edge so that you can see it

4. The local comms bus and power now comes out on a 4 pin screw terminal for easy-peezy connection

5. Added auto reset capacitor C17 on pin 6 of FTDI connector

6. Added pull-up resistor to /RXEN so that it defaults to FTDI connection

7. Removed surplus connectors

8. Added a H as a place keeper for the proper Hackspace Logo

9. Added text "London Hackspace NANODE 3" and Arbour Wood (c)2011 (My Firm).

10. Improved position of 3V3 decoupling capacitors on ENC28J60

11. Analogue input connector J12 now has GND pin

12. Implemented Virtual USB with connector P7 on end of the pcb - saving cost of FTDI cable!!

14. I think that these would be so cool on blue pcb board with white Hackspace "H" Logo

Nanode: Applications and Brainstorming

This section is for all potential applications and wild ideas of what can be done with the Nanode.

Some other ideas planned or on the wish list: - please feel free to add your own ideas/wishes. If you want to contribute to any of these ideas - go ahead!

1. A low cost, plug-in wireless shield using popular RFM12 wireless module would allow the Nanode to form the basis of wireless networks - as well as have compatability with JeeNodes and some of the CurrentCost Energy Monitoring devices. I'm currently working on this shield layout - Ken

2. Use of virtual USB to eliminate the FTDI cable - implememted on Version 4. Hardware done on V3 and V4 - firmware & bootloader need to be tested.

3. A serial configuration program. Allows the IP address and other configuration parameters of the Nanode to be easily programmed from PC/MAC. Nanodes could be given unique MAC and sub-address. Sam Carlisle and Matt Gaffen worken on this at the Pachube Hackathon.

4. A position for a surface mount SPI memory (either RAM or EE) on the underside of the board to allow web page storage or much needed RAM buffer space. Microchip 23K256 adds 32K RAM for £1. One SMT device as an option should be acceptable to most constructors. Done - on V4, will also work with non-volatile FRAM memory. Provision on V4 for Microchip 11AA02EU48 - unique MAC address from tiny 3 pin chip. - Ken

5. An energy monitoring shield for electricity and gas meter pulse counting - working on this with Glyn Hudson and Trystan Lea of openenergymonitor.org. -Ken

6. Define a simple serial network protocol to allow Nanodes to communicate

7. Improved firmware to allow easy access to and from Pachube for data exchange

8. Firmware to allow MQTT messaging

9. Experiments to define maximum data transfer rates across the various networks

10. Dedicated web forum / wiki for all Nanode co-developers. We've got www.nanode.org - with place keeper for content. Sam Carlisle is on the case :)

As a simple example, a Nanode could read up to 6 analogue sensors, connected to its ADC inputs - such as temperature sensing thermistors or LM35 thermometer ICs. These temperature sensors are located in different rooms of the house, or outside, or on the hot water tank. Between them they give an indication of the state of the home heating. The temperature readings are published up to a Pachube feed, where they can be accessed by other devices. A Nanode subscribing to the feed reads the temperature data as a CSV string, strips out the numerical data and acts on its content. For example controlling a user display, operating relays which control the boiler for heating or hot water as it is required.

The CSV format which Pachube uses is flexible enough to cope with many types of data, or even direct numerical commands. A string of comma separated, numerical commands passed up to Pachube could be simply interpreted by any subscribing Nanodes to perform a specific action. The first number could be the address of the Nanode which you want to command, for example the one which controls the boiler relay.

Openenergymonitor have developed some very low cost Arduino based devices to read electricity and gas meters. One of these will shortly be released as an Arduino shield and could use the Nanode as its connection to the net.

The other main application of the Nanode is in Master/Slave wired networks. Several Nanodes are connected to a wired serial bus and distributed about the environment where they run sensing or control tasks - such as a home automation system or DMX lighting control system. Each slave can be addressed individually by a Master controller, which then connects via its ethernet connection to the web.

Slaves could store sensor readings in RAM (limited to 2K on the '328) and periodically be polled by the Master device to connect to the serial bus and upload its data. Data could be recorded straight off the serial bus using the Openlog serial data logger concept from Sparkfun Electronics. The Openlog code runs nicely on an Arduino fitted with a SDcard shield, so could be run on the Master Nanode. The Master could act as a SDcard based file server or storage to the serially connected slaves.

Questions & Answers & Feedback

If you have any queries - please put them here under the relevant section heading.

HARDWARE

Update 15/4/11 Version 4 is the current Hackspace version.

Roger Light has ported the Hackspace Logo and is making minor tidying operations to the pcb tracking. Layout expected weekend of 22/4/11 and first delivery of boards about 2 weeks later - early May.

We will run a Nanode "Build and Test" workshop at the space about weekend of May 14th.

See Thingiverse for earlier board files.

Is the local bandwidth between two nanodes enough to create an ethernet bridge in software? -- Answer to myself: the multidrop bus is in the range of 9600 baud.

The ATmega328 is not limited to 9600 baud serial. If the distance between nodes is short then 115,200 baud may be possible. You could also connect nodes together with I2C or SPI over short distances. Ken

PCBS & KITS

Can non-members join the PCB batch?

Yes - but note that we are currently only offering a full kit consisting of pcb and all components for £18.00. The first batch of 40 should be available in early May. We will hold a weekend workshop "Nanode Build and Test" session to coincide with the kits arriving.

Bare boards may be available at a later date, but for now the £18 kit is the only option being offered. A small donation to the Hackspace from non-members would be appreciated. Ken

PROGRAMMING

Will the Vusb code fit in the bootloader to allow it's use for programming the board ?

By all accounts, adding Vusb will make the Nanode appear like a Metaboard - which can be programmed by adding their programmer to the toolsuite in the Arduino IDE. Programming should then be a case of picking the Metaboard option. Metaboard Ken

CODE EXAMPLES

There's a 'readpachube' example in Andrew's 1.6 software release, which I presume is the Pachube subscriber. I can't see a publisher though - is that available from somewhere else ?

I have developed a Pachube Publisher and matching Subscriber which allows serial CSV text strings to be sent from one Nanode to another via my Pachube Feeds 9675. If you put a request email to the Hackspace mailing list,I will send you the files. You will need to add your own Pachube API Key. I've more detail on my blog here. Ken


APPLICATIONS

Nanode controlled RGB LED Lamp, with simple serial command interpreter - see my blog here.

6 channel temperature monitoring using Pachube - email Ken via LHS list for code.