Sunday, December 20, 2009

Atmel Smart RF

First step: figure out what I'm going to use for wireless.

I need to keep in mind the goals: use as many Atmel components as possible, keep cost low, and minimize power consumption.

My design centers around wireless sensors, so I figured in my proposal that I'd use Atmel Smart RF parts. The 433MHz ATA5428 transceivers looked attractive. Very cheap, low power, Atmel AVR friendly, really good range, and my sensors won't need much throughput so 10-20Kbps is fine. I thought that perhaps the result might be a really cheap radio design for hackers that don't need all the features of Xbee or Zigbee or WiFi. I was hoping the cost could be under $10 DIY for a radio that could send small bits of information like temperature or on/off commands. Like the JeeNode, but with an Atmel radio.

But last night, I started looking for design information on those parts, maybe some demo boards I could use or at least replicate the RF section, and some example code. After a couple hours on the web, I believe that Atmel has discontinued that particular part, but left the information about it on their web site.

Options

It looks like Atmel has bet heavily on Zigbee. Lots of good info, modules, design data on 2.4GHz and 915MHz radios supporting Zigbee or 6LoWPAN.

Zigbee is way more complex than I need. In addition to the transceiver chip, it takes a fairly robust AVR with at least 50K Flash dedicated to Zigbee protocol. While that would boost my Atmel chip count, I would have problems with cost and to a lesser extent power.

6LoWPAN, IP over wireless, is interesting for building an "Internet of things", but that isn't my goal. Lower processing requirements than Zibgee, and it would be cool to use IP stacks. I'm concerned about power and maturity.

If the brand new, single-chip RF plus AVR ATmega128RFA1 part was available, I might go for that. But then again, I've only got 30 days, not a good time to be playing with brand new technology and a device I can't even order yet.

The Raven boards look interesting. A "scaled back" 802.15.4 MAC and Zigbee. No mesh, no security. I could live with that. $99 gets me two boards plus a USB stick. That would really help accelerate my design if I could go with a pre-packaged setup like that. But on closer examination, it has two processors on it. ATmega3290P and ATmega1284P. One of those is dedicated to talking to the radio and holds the MAC and Zigbee protocols. It talks serially to the other uC which is where the application would reside. All I need to do is read a sensor once in a while and blink an LED. Overkill.

There is some code called "TAT", only 2KB, that gives low-level access to the RF transceiver. That seems more in line with what I need. But it does mean I'd have to create a very simple MAC to send and receive packets on top of it.

I might be able to take the RF12 driver code from JeeNode and adapt it to work with the AT85RF212, but I'll have to spend some time looking at the code and the chip spec to work that out. Having the TAT code in front of me will help.

First day's results

I've decided that I'd like to use the AT86RF212 radio. It uses 915MHz, so the range would be 2X the 2.4GHz Smart RF parts. 1.8-3.6 VCC, so it will run on a pair of AAA or a Lithium battery for a very long time. 1Mbps max throughput is overkill for my sensors, so I'll run it much slower, which should improve range even more. Whole home coverage is important.

More investigation is needed. I still have to research the AVRFreaks boards to see what folks there may have done with Atmel Smart RF. Maybe something will turn up. But I can't spend too much more time on research. The schedule is just too short.

Otherwise, I think I'll dig into the AT86RF212 interface spec, download the TAT code and RF12 code, and see if I can convince myself I can make an merge of those that will work.

Fallback plan will be to use the Raven design and hope that the use of lots of Atmel parts trumps cost, complexity, and power. Not your usual engineering design tradeoff.

1 comment:

Unknown said...

I've just started looking at the AT86RF212. Do you have any thoughts / recommendations, or even a minimal circuit?