S.N.A.P - Scaleable Node Address Protocol |
Simple - Generic - Flexible - Free |
The result was S.N.A.P - a free, open sensor and control network protocol that was as simple, generic and flexible we could make it and at the same time require minimal hardware and software resources as possible. We have used it on various 8-128 pins MCU's, Linux SBC's like the popular Raspberry Pi, BeagleBone and C.H.I.P all the way up to PC's running Windows and Linux.
What can it be used for?
S.N.A.P can be used for any type of applications
where
a lightweight network protocol is needed. It is well
suited for education about network protocol basics or any
control and automation projects
like sensor systems,
Home Automation and the now booming Internet of Things (IoT)
sector. All these often uses
resource limited MCU's and may also use different media
like RF,
PLC, IR, cable etc. and usually they also have limited
bandwidth available for
sending
and
receiving data.
Over the years hundreds of schools, hardware hackers, DIY'ers and companies from around the globe have registered their own Vendor ID - it's 100% free - you can see a list of current Vendor ID's here. If you wan't your own VID for using the S.N.A.P protocol commercially or just to show your support you can find more information here.
- Easy to learn, use and implement. | |
- Free and open network protocol. | |
- Free development tools available. | |
- Scaleable binary protocol with small overhead. | |
- Requires minimal HW and SW 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 (cable, RF, RS-485/422, PLC, IR, Coax, Inter IC etc.). | |
- Can be used with simplex, half- or full-duplex links. | |
- Can be used with synchronous or asynchronous communication. | |
- Protocol header is scaleable from 3-12 bytes. | |
- User specified number of preamble bytes (0-n). |
S.N.A.P Lab | |
S.N.A.P Test | |
S.N.A.P Protocol DLL with Source Code | |
S.N.A.P Linux Shared Library with Source Code | |
S.N.A.P TCP/IP for PalmPilot | |
S.N.A.P Serial for PalmPilot |
Arduino Library.
PHaroZ made an generic Arduino library available. You can find his GitHub page here or download the library below.
Alexandre Giard made a Arduino library available. You can find his GitHub page here or download the library below.
Phyton module.
Stefan Blanke
made a Python module available...You
can download the module below.
User supplied source code examples.
Below are code/libraries submitted by S.N.A.P
users. We had some requests for Parallax Inc. Propeller
examples so if you have any code you would like to share with
others feel free to E-mail us and
we will add it to
the list and link to your web site. Among the examples are a few for
the free version of
BASCOM-AVR
compiler (4 KB limit) by MCS
Electronics and there are free development tools available
for the assembler, C and Arduino examples.
All credits and copyright goes to the original author of respectively example/library.
Filename | Author | Description |
Mike Eitel | AVR example using a 90S8515 and STK200 development kit | |
Claus Kuehnel | BASCOM-AVR example turning simple LED ON/OFF | |
Claus Kuehnel | BASCOM-AVR example displays S.N.A.P packets on LCD | |
Emiliano Castricini | Implement S.N.A.P in PIC assembler includes Windows 9x utility | |
Göran Nordahl | S.N.A.P AVR assembler example for Atmel AT90Sxxxx | |
Göran Nordahl | Interrupt driven node that implements S.N.A.P in AVR-assembler | |
Göran Nordahl | S.N.A.P AVR assembler example for Atmel AT90Sxxxx | |
Göran Nordahl | S.N.A.P AVR assembler example for Atmel AT90Sxxxx | |
Frits Senders | C-header file for SNAP.DLL 1.10 | |
Colin O'Flynn | Source code and PCB to S.N.A.P article in Circuit Cellar #139 | |
Colin O'Flynn | CHKSUM, CRC8 and CRC16 routines in AVR-GCC | |
Carl Walker | Linux C++ S.N.A.P Classes and example code | |
Stefan Blanke | Python module for S.N.A.P protocol | |
arduino-library.zip | Alexandre Giard | Arduino library for S.N.A.P protocol made by Alexandre Giard |
arduino-snap.zip | PHaroZ | Arduino library for S.N.A.P protocol made by PHaroZ |
- | - | Feel free to share anything you may have... |
Examples in BASIC.
Yes, most of the examples are dated and
made for the now obsolete PLM-24
Power Line Modem but technically it was just a half-duplex link and can
be replaced by a regular serial or RF link to get the examples up and
running. We still think they are usable to give a basic - no pun
intended - understanding
and show how to implement a subset of the S.N.A.P protocol in tiny microcontrollers.
In the mid 90's the BASIC Stamp by Parallax Inc. was very popular - kind of the "Arduino of the 90's". BASIC Stamps are still available and used by many electronic hobbyists among others. There are also a PIC BASIC Compiler made by microEngineering Labs. You can download the free Student Edition if you wan't to try out the examples below. Another option is PICAXE by Revolution Education Ltd, even if it's not 100% compatible with the examples below they are easy to adapt.
Examples includes a simple schematic and the code is well documented so it should give an easy start even if you don't have any direct experience with BASIC and intend to use another programming language like C, C++, Pascal, Python etc. We kept it as simple as possible so there are room for much improvements.
Filename | MCU | Ver. | Description |
SNAP-001.ZIP | BS1-IC | 1.02 | Turn a LED on and off |
SNAP-002.ZIP | BS1-IC | 1.02 | Lamp dimmer 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 | Test program for S.N.A.P Serial for PalmPilot |
- | - | - | Feel free to share anything you may have... |
EasyTap.com
- Connecting Things!
Updated 210122 and accessed times