|
|
Line 7: |
Line 7: |
| The network is assumed to consist of standard Tmote Sky motes powered by two AA batteries. | | The network is assumed to consist of standard Tmote Sky motes powered by two AA batteries. |
| | | |
− | <div style="margin-left:2em; margin-top:1em;">
| + | '''HTML code is disabled in this wiki; the Tool is not available''' |
− | <html>
| |
− | <style type="text/css">
| |
− | .title {
| |
− | font-size: 100%;
| |
− | text-align: left;
| |
− | padding-top: 1em;
| |
− | }
| |
− | .cat1 {
| |
− | padding-top: 1em;
| |
− | padding-left: 2em;
| |
− | text-align: right;
| |
− | vertical-align: bottom;
| |
− | }
| |
− | .cat2 {
| |
− | padding-left: 2em;
| |
− | text-align: right;
| |
− | vertical-align: bottom;
| |
− | }
| |
− | .data {
| |
− | vertical-align: bottom;
| |
− | padding-left: 0.5em;
| |
− | }
| |
− | .output {
| |
− | font-size: 120%;
| |
− | }
| |
− | </style>
| |
− | | |
− | <form id=input_form action="" onSubmit="docalc(); return false;">
| |
− | <table>
| |
− | <tr> <th class=title style="padding-top:0"> Input parameters <td>
| |
− | | |
− | <tr> <td class=cat2> Communication period: <td class=data> <input name=period_gateway type=text size=8 value=5> seconds between messages sent by a mote to its gateway
| |
− | | |
− | <tr> <td class=cat2> Total number of motes: <td class=data> <input name=num_motes type=text size=8 value=10> count
| |
− | <tr> <td class=cat2> Total number of gateways: <td class=data> <input name=num_gateway type=text size=8 value=1> count
| |
− | | |
− | <tr> <th class=title> Network properties <td class=data> <input type=submit value="Calculate"> <input type=reset value="Reset">
| |
− | | |
− | <tr> <td class=cat1> Network lifetime: <td class=data> <span id=lifetime class=output>...</span> months
| |
− | <tr> <td class=cat2> Required duty cycle: <td class=data> <span id=dutycycle class=output>...</span>%
| |
− | | |
− | </table>
| |
− | </form>
| |
− | | |
− | <script type="text/javascript">
| |
− | <!--
| |
− | | |
− | function get_input(d) {
| |
− | var f = document.getElementById('input_form');
| |
− | d.period_gateway = 1*f.period_gateway.value;
| |
− | d.num_motes = 1*f.num_motes.value;
| |
− | d.num_gateway = 1*f.num_gateway.value;
| |
− | }
| |
− | | |
− | function set_output(d) {
| |
− | | |
− | var f = [ 'lifetime', 'dutycycle' ];
| |
− | var s = [];
| |
− | | |
− | s.lifetime = (d.lifetime).toFixed(2);
| |
− | s.dutycycle = (100*d.dutycycle_unbounded).toFixed(0);
| |
− | s.duty_app = (100*d.duty_app).toFixed(2);
| |
− | s.used_app = (100*d.used_app).toFixed(0);
| |
− | s.min_period = (d.min_period).toFixed(2);
| |
− | s.gateway_load = (d.gateway_load).toFixed(1);
| |
− | | |
− | for (i=0; i<f.length; i++) {
| |
− | p = f[i];
| |
− | e = document.getElementById(p).innerHTML = s[p];
| |
− | }
| |
− | }
| |
− | | |
− | function calculate(d) {
| |
− | | |
− | d.ML = 1.0 / d.period_local;
| |
− | d.MG = 1.0 / d.period_gateway;
| |
− | | |
− | d.NA = 1;
| |
− | d.NG = Math.max( d.num_motes / d.num_gateway, Math.min( d.num_hood, d.num_motes ) );
| |
− | d.NL = Math.min( d.NA+d.num_hood, d.NG );
| |
− | d.NH = Math.min( 4*d.NL, d.NG );
| |
− | d.NB = Math.max( d.NL - d.NA, 0 );
| |
− | d.NC = Math.max( d.NH - d.NL, 0 );
| |
− | d.ND = Math.max( d.NG - d.NH, 0 );
| |
− | | |
− | d.message_load = d.ML*d.NL + d.MG*d.NB + 2*d.MG*d.NC + 3*d.MG*d.ND;
| |
− | d.duty_app = d.message_load / d.channel_capacity;
| |
− | d.dutycycle_unbounded = Math.max( d.duty_app, d.duty_min/100.0 )/d.max_network_usage;
| |
− | d.dutycycle_unbounded = Math.ceil( d.dutycycle_unbounded * 100 ) / 100;
| |
− | d.dutycycle = Math.min( d.dutycycle_unbounded, 1 );
| |
− | d.used_app = d.duty_app / d.dutycycle;
| |
− | d.avg_current = d.cur_active*d.dutycycle + d.cur_sleep*(1-d.dutycycle)/1000;
| |
− | d.lifetime = (d.energy / d.avg_current) / (24*365.25/12);
| |
− | d.min_period = 1.0/( d.dutycycle * d.channel_capacity );
| |
− | d.gateway_load = (d.ML*d.NL + d.MG*d.NG) * d.dutycycle / d.dutycycle_unbounded;
| |
− | }
| |
− | | |
− | function docalc() {
| |
− | var d = [];
| |
− | d.channel_capacity = 100; //messages per second
| |
− | d.max_network_usage = 0.9; //maximum network usage, leave the rest for dropped packets, etc
| |
− | d.period_local = 15; //seconds between messages sent from each mote to its neighborhood
| |
− | d.num_hood = 8; //radio neighborhood size
| |
− | d.cur_active = 20; //active current, mA
| |
− | d.cur_sleep = 10; //sleep current, uA
| |
− | d.energy = 2600; //energy, mAh
| |
− | d.duty_min = 0; //minimum duty cycle
| |
− | | |
− | get_input(d);
| |
− | calculate(d);
| |
− | set_output(d);
| |
− | }
| |
− | | |
− | docalc();
| |
− | | |
− | -->
| |
− | </script>
| |
− | </html>
| |
− | </div>
| |
Delta is an application distributed with Boomerang that demonstrates a simple form of low power mesh networking. Delta is by default configured for fast response times in small networks, suitable for quick demonstrations.
Delta application lifetime estimation tool
This tools uses a mathematical communication model of the Delta application to help understand the impact of communication rate, network size, and number of gateways on the estimated lifetime and required duty cycle of a Delta network. A small set of parameters are exposed suitable for users wanting to change the report rate and duty cycle of the Delta application.
The network is assumed to consist of standard Tmote Sky motes powered by two AA batteries.
HTML code is disabled in this wiki; the Tool is not available