@jfmateos
[quote]
I am thinking about a Wide Area Network of very cheap "motes".
[/quote]
This is called a WSN or Wireless Sensor network, and a hot research topic currently (and over the last few years.), and one of the reasons for building my widgets, all the commercial motes are way too expensive.
[quote]
Some motes would be battery/solar powered, so its transmission activity should be as low as possible to save power. For example, an outside temperature sensor mote could transmit every 30 minutes.
[/quote]
This is one of the reasons I want to uses a slotted TDMA access, so that the transceivers are off most of the time, and only turn one when they are scheduled to Tx or Rx at a known point in time for a specific amount of time.
In my wiki I was looking at a central coordinator to manage TDMA slot allocations, but after a bit of research over the last week I think I've figured a way to de-centralise things somewhat, so a self forming network should be possible without a centralised coordinator.
The biggest issue is going to be the amount of RAM available, mainly for frame buffers and lookup tables, probably will squeeze it in on a 328P but don't know on the 168, once I finish debugging the driver I will moved as much as I can to program mem to save the RAM.
[quote]
The mote´s software should be Arduino based, so anyone could develop his/her own motes without further knowledge (I see you are planning to use a Contiki port... but I don´t know how easy would be for a person with little electronics/programming experience...)
[/quote]
I would like this to run under the Arduino development environment, but I was convinced after speaking with Akabi (who wrote the open freakz zigbee stack) that I should use an event based framework which is the reason I'm now using contiki as it has events and timer framework, as well as the proto-threads which is really needed when doing something like this, else I think it gets too confusing and too hard to maintain.
[quote]
Regarding frequency hopping, I see that the 868Mhz band has a 5kHz resolution. Assuming that there were two couples of motes communicating simultaneously, do you know the difference of frequency that should exist between them? In other words, how many channels can be used with RFM12B?
[/quote]
Really the number of channels available is limited to the data rate being used because this affects both the Tx FSK setting and the Rx bandwidth settings.
Currently I'm using the following in my driver to do the frequency hopping.
simply, the slots frequency is based on the following:
slotchannel = rfm12channel % DRVRMAXCHANNELS];
I've modelled this on a spreadsheet and appears to work well with no overlap of channels, even when offsets are applied across the channel range. So you can in theory have DRVRMAXCHANNELS-1 number of networks all operating at the same time within the same area and without collisions if an offset upto to DRVRMAXCHANNELS-1 is applied to each of the individual networks.
I will also have a lookup table or most probably a sorted list which will represent the link types (broadcast, Tx, Rx) that will be indexed to a slot number.
To do proper frequency hopping then I will change the order of the frequencies in the table below to be more random.
const uint16t rfm12channel[DRVRMAXCHANNELS] =
{
0xA320, // 906.00
0xA42B, // 908.00
0xA536, // 910.00
0xA640, // 912.00
0xA74B, // 914.00
0xA856, // 916.00
0xA960, // 918.00
0xAA6B, // 920.00
0xAB76, // 922.00
0xAC80 // 924.00
};
with the above I've just used the 802.15.4 915Mhz channels as laid out in the standard as a starting point, which is 10 channels on the 915Mhz band (and only 1 in the 868Mhz band), but really I could use any number of frequencies, I may eventually use just 8 channels which is a round nice number for the AVR to handle, but these frequencies can be in any order allocated as channels that are:
1) legal in your country, i.e. you must choose frequencies that are within your ISM band. e.g. even though the RFM12 works in the 433, 828 and 915Mhz bands it may only be legal in your country to use a portion of those bands, as it is here in Australia.
2) make sure that the channel frequencies have enough separation based on the above data rate and Rx bandwidth settings that I mentioned. i.e. if your bandwidth is 400khz then you need separation of at least this (200khz each side of centre frequency of both channels) then a safety margin so that the channels don't interfere with each other, I'm not an RF engineer so there is probably a rule of thumb here.
Remember your data rate will determine your bandwidth, which will determine the number of channels you can have.
Stephen...