Picorover Downlink Transferring Analysis

From TeamFrednetWiki

Revision as of 01:10, 6 September 2009 by WikiSysop (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Trasnceivers Range Test

DCBT-24AX test

We have performed a radiolink test in order to check the module DCBT-24AX. The test has consisted of sending a package and wait for ACK (ACKNOWLEDGEMENT). Enric and me, we start together in the street and increasing the distance between us. We reached up to 70 meters. Beyond we start lose packages.

In the picture we can see a plant view of our university where the radiolink test was done. The DCBT-24AX transceiver was easily programed in 1 hour.--Raulcs 08:21, 19 February 2009 (EST)


eZ430-RF250 test 1

This time we have performed the same radiolink test in order to check the new module eZ430-RF250. The test has consisted of sending packages during one minute. We have counted: the number sent packages, the number of received packages and the number of lost packages. Joshua and me, we start together in the street and increasing the distance between us. We reached up to 70 meters. Beyond we don't receive any package.

In the picture we can see the percent of lost packages vs distance. We spent three week in order to learn and change the source. --Raulcs 13:47, 16 April 2009 (EDT)

Range Total Received Lost %Lost TX power
0 1720 1713 7 0.4% 1 mW
10 1729 1534 195 11.3% 1 mW
20 1729 1700 20 1.2% 1 mW
30 1809 1727 82 4.5% 1 mW
40 2008 1830 178 8.9% 1 mW
50 1785 1751 34 1.9% 1 mW
60 1717 1602 115 6.7% 1 mW
70 1603 637 966 60.3% 1 mW
80 0 0 Inf. 100.0% 1 mW


eZ430-RF250 test 2

We have performed a radiolink test in order to check the real transceiver performances eZ430-RF250 depending on the range and the PicoRover antenna high. First of all both transceivers broadcast its Id number. There are two transceivers in test 2: the one connected to the Laptop PC and the other in the PicoRover. Both are listen each other. The first who receive the other Id number stablish the communication. The PicoRover transceiver sends packets with sequencial number and the Laptop transceiver receives the packets. The Laptop transceiver checks the sequence number and counts lost packets. The Laptop transceiver does this process durind 40 seconds then records the result. Following we present these results for 0 to 70 meters range and for 150 and 1.5 centimeters of antenna high.

In the picture we can see the number of lost packets vs distance. The green line is when the transceiver is on ground about 1.5 cm height; we lost many packages beyond 30 meters. The Blue line shows the transceiver when is at 1.5 meters height and we can see an anomaly due any interference. --Raulcs 13:35, 30 June 2009 (EDT)

Range Received packets
h=150
Lost packets
h=150 cm
Received packets
h=1.5 cm
Lost packets
h=1.5 cm
TX power
0 486 0 486 0 1 mW
10 486 0 486 0 1 mW
20 486 0 471 16 1 mW
30 486 0 149 300 1 mW
40 486 0 44 442 1 mW
50 51 435 0 486 1 mW
60 306 180 0 486 1 mW
70 0 486 0 486 1 mW

eZ430-RF250 Fresnel Zone Analysis

Source: Line of sight and other factors in the Team FREDNET Forum. --AlexC

Keep in mind that for surface communications there are factors that will almost always ensure that you can never reach line of sight radio range unless you take special measures. The most obvious example of such factor is the Fresnel zone.

Also note that an obstacle in your line of sight will not create a complete "radio shadow" behind itself since radio waves will be diffracted as indicated on the attached figure. On the other hand, the obstacle will influence the signal strength even in the clear zone!

Diffraction of radio waves by an obstacle. By AlexC.

When the transceiver is on ground about 1.5 cm height; we lost many packages beyond 30 meters. When the transceiver is at 1.5 meters height we have an anomaly due any interference. These anomalies could be explained in terms of the Fresnel Zone Clearance as commented by AlexC.


where

  • r = radius in metres
  • D = total distance in kilometres
  • f = frequency transmitted in gigahertz.

For a distance of 30 meters and a frequence of 2.4 GHz we have a first Fresnel Zone Radius of 0.97 meters.

First Fresnel Zone Radius vs distance to the Lunar Lander in meters. --Joshua 16:23, 4 July 2009 (EDT)

Range  %Lost
h=1.5 cm
 %Lost
h=1.5 m
@2.4 GHz
@10.8 GHz
0 0% 0% 0.000 0.000
10 0% 0% 0.56 0.264
20 3.3% 0% 0.79 0.373
30 66.8% 0% 0.97 0.456
40 90.9% 0% 1.12 0.527
50 100% 89.5% 1.25 0.589
60 100% 63% 1.37 0.645
70 100% 100% 1.48 0.697

Arduino To Trasnceiver Programing Procedure

I have sent commands from Arduino to the AVR 8-bit RISC ATmega168(i) using SPI at higher than 1Mbps rate. I was able to do the following test as soon as I set the clock frequency at 1.25 MHz which is 1/16 of the 20 MHz clock frequency.

In the picture we can see the Arduino development environment board connected to the desktop and the DCBT-24AX transceiver. It was very easy to program some basic functions to the MCU transceiver the AVR 8-bit RISC ATmega168(i).--Raulcs 08:21, 19 February 2009 (EST)


In the following source code I enable the programing mode in order to write a byte in the Transceiver EEPROM. Then I read this byte from the transceiver EEPROM.

#define DATAOUT 11 /* MOSI */
#define DATAIN  12 /* MISO */ 
#define SPICLOCK  13 /* sck */
#define SLAVESELECT 10 /* ss */
char spi_transfer(volatile char data)
{
    SPDR = data;                    /* Start the transmission */
    while (!(SPSR & (1<<SPIF)))     /* Wait the end of the transmission */
    {
    };
    return SPDR;                    /* return the received byte */
}
void setup()
{
    Serial.begin(9600);
    pinMode(DATAOUT, OUTPUT);
    pinMode(DATAIN, INPUT);
    pinMode(SPICLOCK,OUTPUT);
    pinMode(SLAVESELECT,OUTPUT);
    digitalWrite(SLAVESELECT,HIGH); /* disable device */
    /* SPCR = 01010000 */
    /* interrupt disabled,spi enabled,msb 1st,master,clk low when idle, */
    /* sample on leading edge of clk,system clock/16 rate */
    SPCR = (1 << SPE) | (1 << MSTR) | (1 << 0);
    clr = SPSR;
    clr = SPDR;
    delay(10);
}
void loop()
{
    char c;
    Serial.println("Choose an option");
    Serial.println("1 - Programing Enable");
    Serial.println("2 - Write EEPROM");
    Serial.println("3 - Read EEPROM");
    while(Serial.available() == 0);
    if(Serial.available() > 0)
    {
        c = Serial.read();
    }
    switch (c)
    {
        case '1':
            Serial.println("Option 1");
            /* digitalWrite(SLAVESELECT,LOW); */
            Serial.print("Received: ");
            Serial.print(spi_transfer(0xD7), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0x53), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0x00), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0x00), HEX);
            Serial.println("  ");
            digitalWrite(SLAVESELECT,HIGH);
            break;
        case '2':
            Serial.println("Option 2");
            Serial.print("Received: ");
            Serial.print(spi_transfer(0xD4), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0x0A), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0xAA), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0x04), HEX);      
            Serial.println("  ");
            digitalWrite(SLAVESELECT,HIGH);
            break;
        case '3':
            Serial.println("Option 3");
            Serial.print("Received: ");
            Serial.print(spi_transfer(0xD3), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0x0A), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0xAA), HEX);
            Serial.print("  ");
            Serial.print(spi_transfer(0x00), HEX);      
            Serial.println("  ");
            digitalWrite(SLAVESELECT,HIGH);
            break;
        default: 
            Serial.println("Incorrect option");
    }
}

This test was performed in my desktop using the open source Arduino environment in processing code. I have connected from my desktop to Arduino trough the USB. I have connected from Arduino to the transceiver using SPI and the transceiver connector.--Raulcs 08:07, 3 March 2009 (EST)

Conclusions

Conclusions for the DCBT-24AX transceiver

  • This module seems works well and it is easy to program.
    --Raulcs 08:30, 19 February 2009 (EST)
  • The Arduino platform was easy to use. As soon as I found the clock frequency at 1.25 MHz was very easy to program these three functions, Enable programming mode, Write, Read.
    --Raulcs 08:26, 3 March 2009 (EST)


Conclusions for the eZ430-RF2500 transceiver

  • This module seems works well but it is hard to program. The test was done with 1 mW of transmition power. The module have 63.3 mW of power cost.--Raulcs 13:53, 16 April 2009 (EDT)
  • We have a good known source. We can implement many functions for the PicoSAR or other subsystems.--Raulcs 13:56, 16 April 2009 (EDT)
  • We observed that transceiver range depends on PicoRover antenna height.--Raulcs 13:41, 30 June 2009 (EDT)
  • We observed some interferences independent from the distance as well.--Raulcs 13:41, 30 June 2009 (EDT)



Go back to Portal:Picorover