Wireless Inventors Shield RFD21815

Ik heb een project gemaakt met het Wireless Inventors Shield RFD21815.
Hierbij meer info over dit shield.
http://www.opensourcerf.com/rfd21815/RFD21815%20wireless%20inventors%20shield%20manual.pdf
De shield werkt op zich perfect en is makkelijk te programmeren.

De documentatie vermeldt een reikwijdte van 150 meter.
Bij mij werkt de zender/ontvanger echter hooguit 20 meter...

Misschien is het probleem dat ik de onboard antenne gebruik en geen externe antenne?
Er staat iets van Ext Ant op de PCB ...
Maar ik vind nergens documentatie hierover en mijn mails naar de fabrikant blijven onbeantwoord.

Iemand ervaring met deze shield ?
Is een externe antenne een oplossing ?
Welke soort antenne moet dit zijn ? Lengte ? Materiaal ?
Hoe aansluiten ?
Andere oplossingen ?

Bedankt voor alle suggesties.

Thx,
Chris

Kreeg antwoord van RF Digital:

150 meter range is outdoor line of sight test. Indoor range will usually be less because there are a lot of obstacles and objects which will reflect, deflect and absorb RF energy.
You cannot connect an external antenna to the Inventors Shield. The best thing you can do is keep the antenna area clear of any objects on both ends.

Iemand enig idee hoe ik mijn project kan 'redden'. Zelf een repeater ertussen bouwen met een Arduino en een extra RF shield ? Andere oplossingen ?

chris_van_roey:
Iemand enig idee hoe ik mijn project kan 'redden'. Zelf een repeater ertussen bouwen met een Arduino en een extra RF shield ? Andere oplossingen ?

Misschien als ik zou weten wat de bedoeling is.
Met vriendelijke groet.
Jantje

De bedoeling:
De zender:

  • een Arduino meet de status van een aantal poorten (met reed contacten)
  • bij een verandering in status van één van de poorten, wordt deze verzonden door de Wireless Inventors Shield
    De ontvanger:
  • een tweede Arduino luistert constant of hij een bericht binnenkrijgt
  • op basis van een binnenkomend bericht laat hij een groene of rode (open of toe) led branden voor elke poort
    Indien gewenst kan ik ook beide sketches sturen...
    Het probleem is nu dat die RF signalen blijkbaar niet ver gaan als er obstructies zijn. Hier is er 1 (betonnen weliswaar) muurtje tussen en de 15 m kunnen niet overbrugd worden.
    Alles is af en getest en werkt... maar... niet om de nodige afstand te overbruggen.
    Externe antennes zijn op de shield volgens de fabrikant niet mogelijk.
    EN nu ben ik aan het einde van mijn latijn :wink:

Sketch van de zender:

/* HARDWARE

  • Arduino Uno Rev 3
  • Wireless Inventors Shield RFD21815
  • 2 Magnetic contact reed
  • 1 gele LED
  • 1 weerstand 10 KOhm
    */

/* BELANGRIJKE OPMERKING
Voor programmering via USB, zet Serial switch SW2 op SW
Om de zender te laten werken, zet Serial switch SW2 op HW
*/

/* HANDLEIDING
Zie programma Ontvanger
*/

int magnIn1 = 2 ;
int magnIn2 = 3 ;
int led = 13 ;
int magnStatus1 = 5 ;
int vorigeStatus1 = 0 ;
int magnStatus2 = 5 ;
int vorigeStatus2 = 0 ;
int beginBoodschap = 9 ;

void setup() {
Serial.begin(9600) ;
pinMode(magnIn1,INPUT) ;
pinMode(magnIn1,INPUT) ;
pinMode(led,OUTPUT) ;
Serial.println("Hallo. Ontvangt U mij? Over.");
}

void loop() {
while(Serial.available() == 0) {
// doe niets tot bevestiging ontvanger
}
for(int i=0; i<10; i++) {
digitalWrite(led,HIGH) ;
delay(100) ;
digitalWrite(led,LOW) ;
delay(100) ;
}

while(true) { // eeuwige loop
vorigeStatus1 = magnStatus1 ;
magnStatus1 = digitalRead(magnIn1) ;
if (magnStatus1 != vorigeStatus1) { // verandert poort 1 van status?
digitalWrite(led,HIGH) ;
Serial.print(beginBoodschap);
Serial.write(1) ;
Serial.write(magnStatus1) ; // stuur '911' bij poort toe en '910' bij poort open
delay(1000) ;
digitalWrite(led,LOW) ;
}
vorigeStatus2 = magnStatus2 ;
magnStatus2 = digitalRead(magnIn2) ;
if (magnStatus2 != vorigeStatus2) { // verandert poort 2 van status?
digitalWrite(led,HIGH) ;
Serial.print(beginBoodschap);
Serial.write(2) ;
Serial.write(magnStatus2) ; // stuur '921' bij poort toe en '920' bij poort open
delay(1000) ;
digitalWrite(led,LOW) ;
}
}
}

Sketch van de ontvanger:

/* HARDWARE

  • Arduino Uno Rev 3
  • Wireless Inventors Shield RFD21815
  • 2 groene LED's, 2 rode LED's
  • 4 weerstanden 220 Ohm
    */

/* BELANGRIJKE OPMERKING
Voor programmering via USB, zet Serial switch SW2 op SW
Om de zender te laten werken, zet Serial switch SW2 op HW
*/

/* HANDLEIDING
Zet eerst de ontvanger aan.
Wanneer de 4 leds branden is de ontvanger klaar.
Zet dan de zender aan.
De ontvanger laat de 4 leds 'draaien' om aan te duiden dat hij de zender gehoord heeft.
De zender laat de gele led 1 sec (10x) pinken om aan te duiden dat hij de ontvanger gehoord heeft.
Vervolgens geeft de ontvanger permanent de status van beide poorten aan:

  • een rode led duidt aan dat de garagepoort toe is
  • een groene led duidt aan dat de garagepoort open is
    Op de zender gaat de gele led 1 sec branden wanneer hij een poortverandering naar de ontvanger stuurt
    */

int karakterIn = 0 ;
int poort = 0 ;
int openToe = 0 ;
int beginBoodschap = 57 ; // dit is ASCII voor '9'
int rodeLedPoort1 = 8 ;
int groeneLedPoort1 = 9 ;
int rodeLedPoort2 = 10 ;
int groeneLedPoort2 = 11 ;

void setup() {
Serial.begin(9600) ;
pinMode(rodeLedPoort1, OUTPUT) ;
pinMode(groeneLedPoort1, OUTPUT) ;
pinMode(rodeLedPoort2, OUTPUT) ;
pinMode(groeneLedPoort2, OUTPUT) ;
digitalWrite(rodeLedPoort1, HIGH) ; // zet 4 leds aan als boodschap gebruiker opstart ontvanger
digitalWrite(groeneLedPoort1, HIGH) ;
digitalWrite(rodeLedPoort2, HIGH) ;
digitalWrite(groeneLedPoort2, HIGH) ;
}

void loop() {
while(Serial.available() == 0) {
// doe niets tot ontvangst
}
// blink 4 leds als boodschap gebruiker zender gehoord
digitalWrite(rodeLedPoort1, LOW) ; // zet 4 leds uit
digitalWrite(groeneLedPoort1, LOW) ;
digitalWrite(rodeLedPoort2, LOW) ;
digitalWrite(groeneLedPoort2, LOW) ;
for(int i=0; i<10; i++) {
digitalWrite(rodeLedPoort1, HIGH) ;
delay(100) ;
digitalWrite(rodeLedPoort1, LOW) ;
digitalWrite(groeneLedPoort1, HIGH) ;
delay(100) ;
digitalWrite(groeneLedPoort1, LOW) ;
digitalWrite(groeneLedPoort2, HIGH) ;
delay(100) ;
digitalWrite(groeneLedPoort2, LOW) ;
digitalWrite(rodeLedPoort2, HIGH) ;
delay(100) ;
digitalWrite(rodeLedPoort2, LOW) ;
delay (100);
}
Serial.print("Ik hoor iets"); // laat aan zender weten dat je hem hoorde

while(true) { // eeuwige loop
if(Serial.available() > 2) { // kijk of er een poortboodschap is
karakterIn = Serial.read() ;
if(karakterIn == beginBoodschap) {
poort = Serial.read() ;
openToe = Serial.read() ;
if(poort == 1) {
digitalWrite(rodeLedPoort1, openToe) ;
digitalWrite(groeneLedPoort1, !openToe) ;
}
if(poort == 2) {
digitalWrite(rodeLedPoort2, openToe) ;
digitalWrite(groeneLedPoort2, !openToe) ;
}
}
}
}
}

Ik weet geen oplossing jouw probleem maar dit valt mij wel op in jouw sketch

void setup() {
Serial.begin(9600) ;
pinMode(magnIn1,INPUT) ;
pinMode(magnIn1,INPUT) ;
pinMode(led,OUTPUT) ;
Serial.println("Hallo. Ontvangt U mij? Over.");

2 maal pinMode(magnIn1,INPUT) ?

Als alles werkt zoals het bedoeld was, dan zit het probleem niet in je sketches.
Je zegt dus dat je probleem is dat de gewenste afstand niet overbrugd kan worden.
Daar is niet veel aan te doen.
Het is namelijk voor dit soort apparaten niet toegestaan om de antenne te veranderen en daardoor een grotere reikwijdte te behalen.
Dat zal ongetwijfeld ook de reden zijn waarom je er helemaal geen andere antenne aan kunt hangen.
Het enige wat ik me kan voorstellen, is dat je het antenne signaal bundelt, en zo beter richt.
Een paar jaar geleden werden zo WiFi bereiken vergroot, alhoewel dat strikt gezien ook niet is toegestaan.

Men deed dat door een Pringles verpakking (een kartonnen koker met een laagje metaal aan de binnenkant) te voorzien van een antennetje en zo een straalzender antenne te bouwen.
Trefwoord daarvoor is "cantenna".
Dit kun je dus ook doen met bijvoorbeeld een soepblik, en hoe langer dat blik is, des te beter richt je het signaal.
Je moet dan wel precies weten waar je twee zenders/ontvangers staan ten opzichte van elkaar.
Dus als het een of twee mobiele oplossingen betreft, zul je daar een probleem mee hebben.
En natuurlijk is het niet gezegd dat dit een echte verbetering zal brengen.

IMHO Daar OP spreekt over een betonnen muur ertussen zal een cantenna ook niet veel uitmaken.
Een betere plaatsing van de antennes kan een heel groot verschil maken. Als de shield "normaal" 150 meter aan kan zou een reflecterend oppervlak ook een oplossing kunnen zijn.
Als alternatief kan je een internetverbinding gebruiken om die 15 meter te overbruggen. Of gewoon een kabeltje trekken om een signaal over te sturen? Ik weet wel niet welk soort protocol je nodig hebt om 15 meter te overbruggen.
Met vriendelijke groet
Jantje