S.N.A.P - It's Simple, Generic, Flexible and Free

S.N.A.P - Scaleable Node Address Protocol

S.N.A.P is an free and open network protocol. The protocol was originally developed for the (now obsolete)
PLM-24 based home automation system, back then (~1998) we decided to make it as a generic and flexible
sensor and control network protocol free to use for anyone who wanted.

S.N.A.P can be used in any type of applications where an easy to learn and light weighted network protocol
is needed and it is well suited for education about network protocol basics, DIY's projects with tiny (or big!)
MCU's as well as in commercial products if you are planning on that (see vendor list).


- Easy to learn, use and implement.
- Free and open network protocol.
- Free development tools available.
- Scaleable binary protocol with small overhead.
- Requires minimal MCU resources to implement.
- Up to 16.7 million node addresses.
- Up to 24 protocol specific flags.
- Optional ACK/NAK request.
- Optional command mode.
- 8 different error detecting methods (Checksum, CRC, FEC etc.).
- Can be used in master/slave and/or peer-to-peer.
- Supports broadcast messages.
- Media independent (RF, RS-485, PLC, IR, Inter IC etc.).
- Works with simplex, half-, full- duplex links.
- Header is scaleable from 3-12 bytes.
- User specified number of preamble bytes (0-n).
- Can be used with synchronous or asynchronous communication.

S.N.A.P network protocol documentation.

You can download the S.N.A.P protocol documentation in PDF-format by clicking on the links below.

- S.N.A.P Network Protocol - Ver. 1.00
- SNAPSCII Network Protocol - Ver. 0.94 [Draft]

S.N.A.P development tools.

- S.N.A.P Lab.
- S.N.A.P Test.
- S.N.A.P Protocol Encoder/Decoder DLL.
- S.N.A.P Linux dynamic library.
- S.N.A.P TCP/IP for PalmPilot.
- S.N.A.P Serial for PalmPilot.

More to come...

S.N.A.P related links.

- S.N.A.P vendor list.
- Request your own S.N.A.P Vendor ID#.
- S.N.A.P DLL bug report form.
- S.N.A.P Linux library bug report form.
- Harry Zachrisson - Author of S.N.A.P DLL etc.
- Carl Walkers S.N.A.P - Linux home page.
- RepRap desktop 3D printer.

User supplied S.N.A.P examples.

We had some requests for Arduino examples lately so if you have a example for Arduino to share it would
be appreciated by the Arduino community.

Below is examples and other code submitted by S.N.A.P users. If you have any code that you would like to
share with others feel free to e-mail them to us and we will add it to the list. Likwise if you have any projects
using S.N.A.P, send us e-mail and we will link to it on this page. All credits and copyright goes to the original
authors of respectively example.

Filename Author Description
SNAPAVR.ZIP Mike Eitel AVR example using a 90S8515 and STK200 development kit
SNAP-IO.ZIP Claus Kuehnel BASCOM-AVR example turning simple LED ON/OFF
SNAP-MON.ZIP Claus Kuehnel BASCOM-AVR example displays S.N.A.P packets on LCD
PICTOOLS.ZIP Emiliano Castricini Implement S.N.A.P in PIC assembler includes Windows 9x utility
AVRSNAP01.ZIP Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
AVRSNAP02.ZIP Göran Nordahl Interrupt driven node that implements S.N.A.P in AVR-assembler
AVRSNAP03.ZIP Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
AVRSNAP04.ZIP Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
C-HEADER.ZIP Frits Senders C-header file for SNAP.DLL 1.10
CC139.ZIP Colin O'Flynn Source code and PCB to S.N.A.P article in Circuit Cellar #139
GCC01.ZIP Colin O'Flynn CHKSUM, CRC8 and CRC16 routines in AVR-GCC
c++_snap.tar.gz Carl Walker Linux C++ S.N.A.P Classes and example code
snap_python.zip Stefan Blanke Python module for S.N.A.P protocol
- - Share anything you may have for others to use...

S.N.A.P examples.

Below is a list of examples currently available for download. The S.N.A.P examples includes schematics
and well documented source code so they should give you an easy start. In most examples there are room
for much improvement and possibility to add more functionallity, we wanted to keep it as simple as possible
for easy understanding.

WIP = Work In Progress

Filename MCU Ver. Description
SNAP-001.ZIP BS1-IC 1.02 Turn a LED on and off
SNAP-002.ZIP BS1-IC 1.02 Lampdimmer node for PLM-24
SNAP-003.ZIP BS1-IC 1.02 Domestic AC current meter with PLM-24
SNAP-004.ZIP BS1-IC 1.02 Simple temperature node for PLM-24
SNAP-005.ZIP BS1-IC 1.02 Simple light measuring node for PLM-24
SNAP-006.ZIP BS1-IC 1.02 Air quality node for PLM-24
SNAP-007.ZIP BS1-IC 1.02 Simple humidity node for PLM-24
SNAP-008.ZIP BS1-IC 1.02 Simple 4-bit input node for PLM-24
SNAP-009.ZIP BS1-IC 1.02 WakeUp alarm node for PLM-24
SNAP-010.ZIP BS1-IC 1.02 Four channel plant moisture sensor I
SNAP-011.ZIP BS2-IC 1.02 Turn a LED on and off
SNAP-012.ZIP BS2-IC 1.02 Shows how to implement background tasks
SNAP-013.ZIP BS2-IC 1.02 PLM-24 to X-10 Gateway
SNAP-014.ZIP BS2-IC 1.02 8-bit parallel input node for PLM-24
SNAP-015.ZIP BS2-IC WIP Programmable light monitor node for PLM-24
SNAP-016.ZIP 89C2051 1.02 Turn a LED on and off
SNAP-017.ZIP BS2-IC 1.02 IR detector alarm node for PLM-24
SNAP-018.ZIP BS2-IC 1.02 Four channel relay node with local control
SNAP-019.ZIP BS2-IC 1.02 1-8 zones security system node for PLM-24
SNAP-020.ZIP BS2-IC WIP DCF-77 atomic clock node for PLM-24
SNAP-021.ZIP BS2-IC 1.02 Fire alarm node for PLM-24
SNAP-022.ZIP BS1-IC 1.02 1-channel 8-bit A/D converter node
SNAP-023.ZIP 89C2051 1.02 Simple 16 x 1 LCD terminal node for PLM-24
SNAP-024.ZIP 89C2051 1.02 Simple 16 x 1 LCD info node for PLM-24
SNAP-025.ZIP 89C2051 1.02 S.N.A.P packet spy node for PLM-24
SNAP-026.ZIP BS2-IC 1.00 Testprogram for S.N.A.P Serial for PalmPilot
- - - Share anything you may have for others to use...

S.N.A.P mailing list or forum?

If there is enough interest we will set it up... Let us know if a discussion forum would be prefered over a
mailing list, send a e-mail to snap@hth.com and let us know what you would prefer.

We welcome any feedback and suggestions.

Copyright © 1998-2015 by HTH All rights reserved. PLM-24 and S.N.A.P are trademarks of HTH. Other
brands and product names are trademarks or registered trademarks of their respective holders.

This page was last updated 150727 and accessed times - webmaster@hth.com