PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HM-TRP Transceiver Problem



filth
17.02.2013, 22:02
Hallo,

ich habe zwei dieser Transceiver hier liegen

http://www.octamex.de/shop/datasheet/42995b33c7339cc2710e635a34c16d0c.pdf

und bekomme die nicht richtig zum laufen.
Habe 3.3 V an VCC, GND, Config auf GND, Enable auf GND.

Die LEDs blinken kurz auf, dann fängt der Chip sich sehr schnell an zu erhitzen.
Kennt jemand das Problem, oder habe ich 2 Sonntagsplatinen erwischt? Gibt es grundsätzlich Erfahrungswerte mit dem Teil?

Danke!

skybot
24.02.2013, 09:00
Hey filth ich habe auch zwei von denen in den Himmel geschickt. Der erste hat den Geist bei zu schneller Frequenzumschaltung (alle 5s) aufgegeben und der andere bei zu kurzen Intervallen (3x/s) beim Abrufen des RSSI Wertes. Wenn Deine Module erhitzen sind sie kaputt. Ich habe vom Hersteller erfahren, das die internen Pullups gerne mal den geist aufgeben. Was mir sehr positiv aufgefallen ist sind die Freq. Stabilität, hohe Datenrate, hohe Freq. Trennschärfe. sehr genaue RSSI Werte. UND ein Pluspunkt. Die Firmware des uC der die UART in SPI umsetzt kann angepasst werden. (Stichwort 3DRadio). Alles im allem ein sehr gutes Modul aber leider habe ich auch keine Idee warum die immer wieder den Geist aufgeben. Ich konnte Sie mit einem Firmwareupdate retten. Bei Dir jedoch tippe ich auf kaputt. Meine wurden auch bei Dauerausendung nicht warm. (35 Grad im Sommer). Bin jetzt auf RF4432 umgestiegen da fehlt jedoch die nette UART Schnittstelle.

filth
24.02.2013, 09:13
Hi,

ich habe jetzt 2 neue Module und die laufen problemlos. Vielleicht doch irgendwie 2 Montagsmodelle erwischt.
Die Frequenzumschaltung hast du dann selbst programmiert?

Was sind "sichere" Abfrageintervalle für den RSSI Wert? Hast du da Erfahrungen gemacht?

skybot
24.02.2013, 16:28
Du Glücklicher... ich habe mir zwei http://www.dorji.com/docs/data/DRF4432D20.pdf gekauft. (octamex.de sind keine mehr zu haben)

Zu Deiner Frage:
Ich habe nach meiner Antwort wieder ein wenig gespielt und herausgefunden das der Aufhänger an der Wartezeit liegt zwischen Befehlen und Antwort.
Mit einem Arduino Bord geht das so: (ich hoffe es hilft Dir bei dem Timing Problem)

#define SET_ENABLE 4
#include <Wire.h>
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,10,2); // set the LCD address to 0x20 for a 16 chars and 2 line display

unsigned long previousMillis=0;
unsigned long interval=500;
char *s="S0";
char msg[8]="XXXXXXX";
int rssi=10;
int mittelwert=1;
int messungen=11;

int long f_start=44595000L;
int long f_ende=45000000L;
int long f_step=625L;

long int pll=446081250L;
long int freq=0L;
long int fdev=5000L;
long int f_jetzt=0L;
long int s1;
long int s2;
long int s3;
long int s4;

void setup()
{
pinMode(SET_ENABLE,OUTPUT);
digitalWrite(SET_ENABLE,HIGH);

Serial.begin(9600);
Serial.println("PowerUP");
Serial1.begin(9600);

lcd.init();
lcd.setCursor(0,0);
lcd.print("-Firmware-");
lcd.setCursor(0,1);
lcd.print("SK11022013");
setze_freq(pll);
delay(3000);
}

void setze_freq(long int mhz)
{
freq=mhz-fdev;
s4=freq-freq/256*256;
freq=freq/256;
s3=freq-freq/256*256;
freq=freq/256;
s2=freq-freq/256*256;
s1=freq/256;

digitalWrite(SET_ENABLE,LOW);
delay(200);
//Frequenz setzten
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xD2);
Serial1.write(s1);
Serial1.write(s2);
Serial1.write(s3);
Serial1.write(s4);
delay(200);
//9600 TX
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xC3);
Serial1.write((byte)0x00);
Serial1.write((byte)0x00);
Serial1.write(0x25);
Serial1.write(0x80);
delay(200);
//TX Power 1dBm
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0x96);
Serial1.write(0x01);
delay(200);
//devitation 10KHz
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xA5);
Serial1.write((byte)0xA);
delay(200);
//reciver bandwitch 100KHz
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xB4);
Serial1.write((byte)0x00);
Serial1.write(0x1E);
delay(200);
digitalWrite(SET_ENABLE,HIGH);
}

void loop()
{
f_jetzt=f_start-fdev;
for(int a=0;a<30;a++)
{
setze_freq(f_jetzt);
delay(200);
hole_rssi();
f_jetzt=f_jetzt+f_step;
sende_daten("TESTPAKET");
}
}

void sende_daten(char* daten)
{
lcd.setCursor(8,0);
lcd.print("TX");
int anz=10;
while(anz>0)
{
Serial1.println(daten);
Serial1.println(rssi);
Serial1.flush();
anz--;
}
lcd.setCursor(8,0);
lcd.print("_X");
}

void hole_rssi()
{
digitalWrite(SET_ENABLE,LOW);
delay(100);
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0x78);
delay(120);
digitalWrite(SET_ENABLE,HIGH);
while(Serial1.available()>0)
{
rssi = Serial1.read();
}

Serial.print(f_jetzt+fdev,DEC);
Serial.print(",");
Serial.println(rssi,DEC);

lcd.setCursor(0,0);
lcd.print(rssi,DEC);
lcd.print(" ");
lcd.setCursor(8,0);
lcd.print("_X");
lcd.setCursor(0,1);
lcd.print(f_jetzt+fdev,DEC);
}

skybot
09.03.2013, 00:42
So ich hab jetzt vier weiter Module bei meinen Freunden aus den Niederlanden bekommen (3 Tage).

Ich weis jetzt warum sich das Modul aufhängt. Wenn es im Config Modus gehen soll und dabei der Empfangsbuffer vollgestopft wird, mag es das nicht. Auch wenn dieser vorher ausgelesen wird. Es muss mindestens eine Paketpause von 300ms sein. Nur in diesem Zeitfenster wo keine Daten empfangen werden kann das Modul umgeschaltet werden. Das ist ziemlich blöde. Aber ich habe das sehr ausgiebig mit allen vier Modulen getestet. Ist das Modul im NORMAL Modus macht das nichts. Da kann man ruhig senden wollen.. der schmeißt das in den Puffer und sendet es wenn die Freq. frei ist aus. Das Setzen der Parameter im ConfigModus ist am besten mit Pausen von 200ms zu machen. Dann kommt auch die Antwort vom Modul. Zur Temperatur: sehr Böse Sache. Werden die Quarze unter 18°C / 28°C abgekühlt / erwärmt, schafft das Modul das Nachregeln auch nicht mehr... die Frequenz wandert. Als beste Reichweite mit einer DIAMOND SRH771 habe ich im Freifeld 3km geschafft 9600kbs BW60khz RD105khz 200mW. Das soll es von mir gewesen sein... wenn noch Fragen sind gerne via eMail.

Im Übrigen messe ich mit diesen Modulen unsere eigens errechneten und gebauten Yagi Antennen.

http://www.youtube.com/watch?v=IdZNm3G0eOY
http://www.youtube.com/watch?v=zpEv0Zz19Wk
http://www.youtube.com/watch?v=oS3jSnPWgJs

filth
09.03.2013, 08:26
Das ist natürlich dumm - denn ich nutze beispielsweise einen Sender direkt im Flieger am GPS Sensor. Der spuckt kontinuierlich Daten raus - Pause ist nicht drin, höchstens zwichen 2 Datensätzen