Pages: [1] 2   Go Down
Author Topic: A new,easy to use, RF Mesh Engine.  (Read 9213 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 309
Progress is made by lazy people-H Ford/R Heinlein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A new,easy to use, RF Mesh Engine.

A contractor/customer wanted his mailbox monitored (200 yards away), his outdoor shed door monitored (100 yards away) and his garage door. All mesh nodes required batteries for operation.  

We looked at XBee but found a much better solution by going with Synapse wireless. The RF engines / modules by Panasonic, California Eastern Labs, Synapse RF and the new low powered, high speed RF engine by Atmel, which makes the AVR for the Arudino, is the cat's meow of mesh wireless. All the RF engines are hardware pin and software compatible by the built-in Python language embedded into each RF engine. Over the air programming and troubleshooting is a "SNAP" using the Synapse Portal development and deployment software. The RF engines will last for years, if programmed right, on 2 AA batteries.

Connecting the RF Engine to an Arduino is easy by the 3.3 VDC GPIO pins. (RF GPIO output to Arduino input - 3.3 VDC input is a high). A 3.3 VDC level converted is necessary in the other direction. (Sparkfun)

Synapse Wireless Link: http://www.synapse-wireless.com/
 8-) 8-) 8-)
    
« Last Edit: May 18, 2010, 09:30:15 pm by ArduinoAndy » Logged

"Never trust an Internet bully who insults and makes fun of your level of intelligence."

Chennai, India
Offline Offline
God Member
*****
Karma: 0
Posts: 752
Peace!!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

How is it on the cost when compared to xbees and how easy to get started with?
Logged

Be The Change...

Holland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 439
Arduino likes cookies too
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You need to call for prices....
Oh boy, that can't be good!  :-X
Logged

Middle of the Pacific
Offline Offline
Full Member
***
Karma: 0
Posts: 129
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Looks like they cost from $25 to $40 a piece.

http://www.synapse-wireless.com/?mainID=3&subID=3&type=product&prodID=3

Looks comparable in price but a with a 3 mile range..... 8-)
Logged

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

That looks like just what I need.

What do you think the latency on one of these is?
I want to use them for my UGV control as I haven't managed to bag an RC plane controller yet.
I presume it will be better for my sensor data transfer and being that cheap with 3 mile range, I have to pick a few up.

Mowcius
« Last Edit: May 19, 2010, 05:57:17 am by mowcius » Logged

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
A new,easy to use, RF Mesh Engine.

A contractor/customer wanted his mailbox monitored (200 yards away), his outdoor shed door monitored (100 yards away) and his garage door. All mesh nodes required batteries for operation.  

We looked at XBee but found a much better solution by going with Synapse wireless. The RF engines / modules by Panasonic, California Eastern Labs, Synapse RF and the new low powered, high speed RF engine by Atmel, which makes the AVR for the Arudino, is the cat's meow of mesh wireless. All the RF engines are hardware pin and software compatible by the built-in Python language embedded into each RF engine. Over the air programming and troubleshooting is a "SNAP" using the Synapse Portal development and deployment software. The RF engines will last for years, if programmed right, on 2 AA batteries.

Connecting the RF Engine to an Arduino is easy by the 3.3 VDC GPIO pins. (RF GPIO output to Arduino input - 3.3 VDC input is a high). A 3.3 VDC level converted is necessary in the other direction. (Sparkfun)
You got any more info on what you did/how you did it?

A blog perhaps?

Mowcius
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 309
Progress is made by lazy people-H Ford/R Heinlein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

First the Mailbox RF Mesh Mote:

We took the Synapse RFET Mesh Engine and put a rollerball microswitch (for the mailbox door) in series with the power source - 2 AA battery holder. On mailbox opening, the microswitch provides power to the RFET engine and does a "power on reset". The code sends a message to the portal software and also turns on a digital bit to our Arduino compatible microcontroller. The microcontroller sends this bit to the IO Bridge, on to the internet for display and logging on the IOBridge servers.

The packaging for the Mailbox RF Mesh Mote was 1 1/2" PVC pipe and end caps. We coated the RF engine carrier board with "liquid rubber tape" and put Sorb-it silica gel desiccant bags to remove any moisture in the PVC tube.

Ditto for the Shed RF Mote: Same design, same packaging and software as the Mailbox RF Mesh Mote.  

As for the Garage Door RF Mesh Mote: We gutted the Skylink garage door electronics and put
our Synapse RFET Mesh Mote inside the enclosure. (We got this garage sensor for only $7.00 USD)
The plastic rod has a magnet on it and the old electronics had a magnetic reed switch.
We tore out the reed switch, from the old sensor electronics, and RTV it to the enclosure.
Again, upon activation, the reed switch provides power to the Synapse RF Mesh Mote.
Note: We tie wrapped a 2 cell AA battery holder on to the enclosure mounting bracket.

Sylink Garage Door Sensor Link - for ref. only:
http://www.google.com/imgres?imgurl=http://ecx.images-amazon.com/images/I/31jBnUY7X9L._SL500_.jpg&imgrefurl=http://housealarms.co.cc/skylink-gm-318t-household-alert-garage-door-monitor-sensor/&usg=__Xo0evnSkQq4ShR9TldpEJrWayhw=&h=500&w=368&sz=11&hl=en&start=6&um=1&itbs=1&tbnid=jTOHYj-uffBJDM:&tbnh=130&tbnw=96&prev=/images%3Fq%3Dskylink%2Bgarage%2Bdoor%26um%3D1%26hl%3Den%26sa%3DN%26tbs%3Disch:1


----------------
Python Code:
----------------
Note: Code "framework" was provided free from Synapse.

Code:
"""
Demo of accessing the "pin wakeup" capabilities of different SNAP ports.
This script just blinks an LED, and provides a sleepTest() function.
See also pinWakeup.py in the synapse subdirectory.

This mailbox mote is connected to the mailbox by a microswitch
tied to the power for the RFET. On activation, or door opening,
this mote sends a message to the portal "MailBox Mote 8C:FB Has Mail! "
Also, the mailbox mote in 30 seconds goes back to sleep or by mailbox door closure,
power is again disconnected from the mailbox mote.

Note:
       * To minimize power consumption remove all RS232 jumpers, and use VBAT power input.
       * Default all unused pins to output/low for minimum power consumption.
      
      
      
Battery Capacity:          2700 mAh   (2 @ ~ 1.6 VDC ea. = 3.2 VDC) (RFET Voltage range 2.7 - 3.4 VDC max)
Alseep Current:               0 mA
Awake Current                65 mA + 1 VDC ref. for battery monitor <--- recompute below figures!

Time Asleep seconds:      86400
Time Awake  seconds:         30
Sleep/Wake Cycle seconds: 86430
Average Current mA:        0.03

Battery Life (hours)      105631.45
Days                        4401.31
Months                       146.71
Years                         12.23 <--- shelf life will reduce this!



Author: ArduinoAndy
Date: 4/18/2010
Revision: 1.0.b


"""

from synapse.pinWakeup import *
from synapse.platforms import *

sleepCounter  = 0
secondCounter = 0
BUTTON_PIN    = GPIO_5

portalAddr = '\x00\x00\x01' # hard-coded address for Portal

# Since there are currently no ZIC2410 based SNAP Engines,
# there are currently no GPIO on ZIC2410, just plain IO.
if platform == "ZIC2410":
    LED_PIN = 1
else:
    LED_PIN = GPIO_1
    

@setHook(HOOK_STARTUP)
def start():
    global BUTTON_PIN
    
    # Initialize LED pin as output - GPIO 1
    setPinDir(LED_PIN, True)
    writePin(LED_PIN, False)
    
    # Initialize all non user pins to output/low for minimum power consumption
    setPinDir(GPIO_0, True)
    writePin(GPIO_0, False)
    
    setPinDir(GPIO_2, True)
    writePin(GPIO_2, False)
    
    setPinDir(GPIO_3, True)
    writePin(GPIO_3, False)
    
    setPinDir(GPIO_4, True)
    writePin(GPIO_4, False)
    
    setPinDir(BUTTON_PIN, False)     # Input for Button Pin Tac switch
    setPinPullup(BUTTON_PIN, True)   # Pullup Button Pin switch GPIO 5
    
    setPinDir(GPIO_6, True)
    writePin(GPIO_6, False)
    
    setPinDir(GPIO_7, False)         # Uart 1 Input - connected on 171 board
    #writePin(GPIO_7, True)
    
    setPinDir(GPIO_8, True)          # Uart 1 Output - connected on 171 board
    writePin(GPIO_8, False)
    
    setPinDir(GPIO_9, True)
    writePin(GPIO_9, False)
    
    setPinDir(GPIO_10, True)  
    writePin(GPIO_10, False)
    
    setPinDir(GPIO_11, True)         # Analog 7
    writePin(GPIO_11, False)
    
    setPinDir(GPIO_12, True)         # Analog 6
    writePin(GPIO_12, False)
    
    setPinDir(GPIO_13, True)         # Analog 5
    writePin(GPIO_13, False)
    
    setPinDir(GPIO_14, True)         # Analog 4
    writePin(GPIO_14, False)
    
    setPinDir(GPIO_15, True)         # Analog 3
    writePin(GPIO_15, False)
    
    setPinDir(GPIO_16, True)         # Analog 2
    writePin(GPIO_16, False)
    
    setPinDir(GPIO_17, True)         # Analog 1
    writePin(GPIO_17, False)
    
    setPinDir(GPIO_18, True)         # Analog 0
    writePin(GPIO_18, False)
    
    eventString = "MailBox Mote 8C:FB Has Mail! " # Message sent to Portal on POR from switch off/on from mailbox
    rpc(portalAddr, "logEvent", eventString)
    GPIO_0_ON(); # Turn on status bit to Gator
        
@setHook(HOOK_100MS)
def timer100msEvent(currentMs):
    """On the 100ms tick, pulse the LED"""
    global secondCounter
    global sleepCounter
    pulsePin(LED_PIN, 75, True)
    sleepCounter += 1
    secondCounter += 1
    if secondCounter >= 250: # In 25 seconds
        secondCounter = 0
        #eventString = "Test from 8C:FB "
        #rpc(portalAddr, "logEvent", eventString)
        pass
    
    # In 30 seconds - sleep forever or wakeup on Button pin press GPIO 5
    if sleepCounter >= 300:
        sleepCounter = 0
        GPIO_0_OFF(); # Turn off status bit to Gator
        writePin(LED_PIN, False) # Turn off LED
        sleepTest(0,0,BUTTON_PIN,True)  # power conserving mode 0 , wakeup ticks = 0 - wakeups on button press or POR

def sleepTest(mode, ticks, pin, enable):
    wakeupOn(pin, enable, False)
    sleep(mode, ticks)

def GPIO_0_ON():
    writePin(GPIO_0, True)

def GPIO_0_OFF():
    writePin(GPIO_0, False)
    
 -----------------------------------------------------------------------------------------  
8-) 8-) 8-)
« Last Edit: May 19, 2010, 09:09:27 am by ArduinoAndy » Logged

"Never trust an Internet bully who insults and makes fun of your level of intelligence."

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 309
Progress is made by lazy people-H Ford/R Heinlein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Synapse RF Mesh Design Additional Info.

#1. We bought the Synapse EK2100 development kit ($99.00 USB) which includes the Portal development software and one SN171 RF development protoboard with RF and one USB SNAP Stick which is a USB RF bridge to the PC. In all, this kit contained two RF Mesh Modules. All you need is ~ +3 VDC to power the units if your RF Mesh use is external to the PC.

#2. Some RF Mesh Engines are 3 miles "LOS" - "Line of Sight" This range could be extended by just having many distributed RF mesh engines powered up in the idle state.

#3. We included a battery monitor circuit in our RF Mesh Motes to indicate battery life.
    See Synapse forum for more info.

#4. There is no need for RF Mesh central coordinators in the Synapse RF mesh network.

#5. The nodes are immediately able to communicate with each other.

#6. No PC software required - there is no need for software installed on a PC to coordinate the
nodes, they can think for themselves.

#7. Any node can talk to any other node - There is no central coordinator node with SNAP.

#8. There is a max. buffer packet limitation which you cannot exceed. You cannot send video due to this RF limitation.  
 8-) 8-) 8-)
« Last Edit: May 19, 2010, 11:35:32 am by ArduinoAndy » Logged

"Never trust an Internet bully who insults and makes fun of your level of intelligence."

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
There is a max. buffer packet limitation which you cannot exceed. You cannot send video due to this RF limitation.  
>smiley-sad

But sending images would be ok? 640x480, probably only 320x240

How fast do you think I could send an image?

Mowcius
« Last Edit: May 19, 2010, 10:20:10 am by mowcius » Logged

Chennai, India
Offline Offline
God Member
*****
Karma: 0
Posts: 752
Peace!!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

the python code looks easier than the API part of Xbee but how steep is the learning curve to use this with an arduino(given that i'm at the lowest rung on networks and wireless communication ). perhaps a quick tutorial would help.
Logged

Be The Change...

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
the python code looks easier than the API part of Xbee but how steep is the learning curve to use this with an arduino(given that i'm at the lowest rung on networks and wireless communication ). perhaps a quick tutorial would help.
Indeed that would help.

The xbee can be very easy for simple stuff (just sending serial data) so even just a simple tutorial for this would be very much appreciated.

Mowcius
Logged

Holland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 439
Arduino likes cookies too
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thats a pretty good price, considering what you get and its capabilities.
Nice project =)
Logged

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
"...it was my 12-year old son who set it up"
- Andy Griffis, CEO, StrongWatch Sensor
Just saw this flash up on Synapse Wireless home page so I presume it must be easy!  ;D
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 309
Progress is made by lazy people-H Ford/R Heinlein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
the python code looks easier than the API part of Xbee but how steep is the learning curve to use this with an arduino(given that i'm at the lowest rung on networks and wireless communication ). perhaps a quick tutorial would help.

Download the EK2100 manual and the Synapse Ref. Manual. As for the Python scripts, there are
many to choose from - check the web-site.
BTW - I think they even allow you to download the PC Portal software.

 8-) 8-)
Logged

"Never trust an Internet bully who insults and makes fun of your level of intelligence."

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 309
Progress is made by lazy people-H Ford/R Heinlein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
But sending images would be ok? 640x480, probably only 320x240
How fast do you think I could send an image?
Mowcius

The IEEE 802.15.4 specification limits packet sizes to 127 bytes.

BTW ... All docs, software, scripts, examples, projects, user Q/A can be found under Support /Synapse SNAP forum.
 8-) 8-) 8-)
Logged

"Never trust an Internet bully who insults and makes fun of your level of intelligence."

Pages: [1] 2   Go Up
Jump to: