RF Moduler och Basic Stamp

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
peter555
Inlägg: 6047
Blev medlem: 12 februari 2006, 10:02:22

Inlägg av peter555 »

Med tanke på att de föreslagna kodkretsarna kör NRZ-liknande data så kanske modulerna inte klarar att hantera tex FF eller 00..
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

De moduler är så himla primitiva att de inte har speciella preferenser. Dataslicern brukar oftast ha en tröghet på runt 30 bit eller så, alltså borde man kunde sända upp emot 3 bytes med en UART innan den ballar ut helt.

Man kan även sända en byte, sedan samma byte fast då inverterat och upprepa detta sätt, den totala DC kommer då att bli 50%.

Ska man skicka en preample är 0xAA ett steg på vägen, efter ca: 3-4 st borde DC-nivån i dataslicern vara på plats, grejen är att få synkad det hela sedan, detta kan göras vid att sända ett par 0xFF och för att hålla kvar DC-nivån bör man då även sända ett par 0x00.

OBS: att tiden på 30 bit räknas vid högsta hastigheten som modulerna klarar av och att det INTE får vara vänttid mellan tecken förutom den vanliga stoppbit.

Så dessa moduler och BS ihop kommer som bäst att ge en skakig "förbindelse" som förvisso kan "säkras" vid att köra med preample samt en datablock som innefattar CRC för att kontrollera att data är mottagit rätt.

För att överföra data på ett skapligt säkert sätt bör det alltså finnas ett overhead på minst (4 + 2 + 2 + 2 =) 10 bytes, sedan tillkommer alla databytes som ju ska dubblas (data + den inverterade). Som en del av varje block bör man även sända med ett "antal databytes"-värde för att säkerställa att allting är rätt.

Detta betyder att för att överföra "ABC" bör det alltså sändas:
0xAA 0xAA 0xAA 0xAA // Preample, kan vara fler
0xFF 0xFF // Sync
0x00 0x00 // -Sync
0x03 // Antal databytes
0xFC // Inverterat antal databytes
0x41 // Data 1 'A'
0xBE // Inverterat 'A'
0x42 // Data 2 'B'
0xBD // Inverterat 'B'
0x43 // Data 3 'C'
0xBC // Inverterat 'C'
CRC high
-CRC high // Inverterat värde
CRC low
-CRC low // Inverterat värde

Alltså ett overhead på 13 bytes.

EDIT: Hade det å andra sidan varit "rigtiga" moduler á la LPRS' moduler hade det varit så enkelt att man bara skickade ett antal bytes (upp till 180 med ER400-modulerna) och de kom ut i den "andra ändan" precis som ett seriellt kabel fast då med en kort fördröjning.

Med EDIT: Hade glömt att skriva med de inverterade bytes.
Senast redigerad av Icecap 30 november 2008, 13:53:54, redigerad totalt 1 gång.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Bra sammanfattning, Icecap!
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Kan man inte köra 1: or och 0: or á la onewire protokollet? Dvs man 0:ar först en liten stund och sen antigen behåller man den låg under "perioden" eller sätter den hög för att indikera en etta eller hur man nu vill ha det.

Sen är det väl tyvärr så att de billiga modulerna är billiga av en anledning :?
mikr
Inlägg: 35
Blev medlem: 17 juli 2007, 22:51:29
Ort: Göteborg

Inlägg av mikr »

peter555 skrev:Det är ASK så du borde klara dig utan NRZ och preamble. Vad jag förstår av databladet för mottagaren så vill den ha 4.8 kb/s men du verkar köra 2.4 kb/s.

Funkar programmet med en kabel mellan stamparna ?
1) Jag trodde att genom att gå ner till 2400 så ökade jag sannolikheten att få överföringen att fungera. Stämmer inte det? Har testat även 4800 utan bättre resultat.

2) Har inte testat med kabel i denna applikation. Har dock använt dessa stampar frekvent i andra projekt så jag är ganska säker på att de fungerar. Kan inte testa med kabel just nu eftersom jag är på resande fot.
mikr
Inlägg: 35
Blev medlem: 17 juli 2007, 22:51:29
Ort: Göteborg

Inlägg av mikr »

Icecap skrev:De klarar MAX 4800 baud.

Men räkna INTE med att de fungerar bra! Främst är de rena skitmoduler och ska man ha någon form av "säkerhet" i kommunikationen SKA man köra med preample, CRC och rubbet men till en initial test kan man köra "rått".

Och VARFÖR det inte fungerar? Har du kollat att modulen alls reagerar?

Ett tips är att en seriell utgång är '1' i viloläge, altså MÅSTE man ha preample på för att få liv i det hela, alternativet är att invertera alla sända och mottagna data.
1) Vilka moduler fungerar bra? Du skriver om ett fabrikat i ett annat inlägg. Kan du rekommendera fler? Priset spelar dock en stor roll. Ska presentera projektet i ett separat inlägg.

2) Om jag endast skickar nollor så får jag nollor i mottagaren. Mer än så verkar inte fungera.

3) Kan inget om Preamble... Vad är det bra för?
mikr
Inlägg: 35
Blev medlem: 17 juli 2007, 22:51:29
Ort: Göteborg

Inlägg av mikr »

Jag hade tänkt börja med dessa moduler för att lära mig/testa lite RF. Har aldrig labbat med det tidigare. Att det blev just dessa berodde på att jag råkade vara i affären och att priset var tilltalande.

När/om jag får lite koll på hur det fungerar skulle jag vilja göra en sorts Tally-MUX-applikation enligt följande (ungefär):

En låda med 8 ingångar sänder ut info om huruvida ingångarna är öppna eller slutna (tally eller ej). En mottagare kan ställas in att lyssna på info om en specifik ingång. Om den har tally så lyser en led annars är den släckt.

Detta är grundtanken som säkert kommer att moddas lite men till att börja med vill jag bara kunna skicka ett enkelt meddelande mellan två mcu:er. Sedan gå vidare med säkerhet att meddelandet kommer fram samt hur långt man kan skicka det.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

mikr: Jag har använd LPRS' modulerna till en del saker och är inte besviken!

En tranciever (ER400TRS-2) kostar runt 360:- + moms senast jag kollade, tar man en sändare (ER400TS-2) ligger den runt 140:- + moms och en ren mottagare (ER400RS-2) ligger runt 260:- + moms.

Det finns andra bra moduler men jag blev väldig nöjd med ER400-serien då jag testade den och har inte blivit besviken i de andra projekt jag har använd dom i.

Kjell-modulerna är helt enkelt billigt skit, man kan få dom att fungera mindre uselt med en del trixande men i samband med en BS är man ju redan på trehjulig-cykel-nivå och då hjälper det inte att ha skitmoduler också.

OM PREAMBLE, jag ids inte skriva vad det redan finns 4½ miljon hits på...
mikr
Inlägg: 35
Blev medlem: 17 juli 2007, 22:51:29
Ort: Göteborg

Inlägg av mikr »

Icecap skrev: Kjell-modulerna är helt enkelt billigt skit, man kan få dom att fungera mindre uselt med en del trixande men i samband med en BS är man ju redan på trehjulig-cykel-nivå och då hjälper det inte att ha skitmoduler också.
Point taken! Jag ska titta på LPRS-modulerna istlället. (Om någon annan har fler förslag tar jag tacksamt emot dessa.)
Icecap skrev: OM PREAMBLE , jag ids inte skriva vad det redan finns 4½ miljon hits på...
Det finns till och med en sida för sådanna som mig som frågar först...
http://justfuckinggoogleit.com/ :)
Sorry...
haklu
Inlägg: 36
Blev medlem: 7 augusti 2008, 16:32:33
Ort: Örebro

Inlägg av haklu »

Icecap skrev:haklu: varför vill du använda de kodkretsar? Du skriver ju att det är BS som ska klara biffen eller hur?
Jag tror du blandar ihop oss. Jag kör inte BS, det var trådskaparen. Dessutom vill jag inte att använda dom kodkretsarna. :-) Jag sa bara att det var dom som föreslogs i databladet och att jag råkat titta på oscilloskopbild av en sändning med dylik kodkrets.

Däremot kommer jag nog att använda själva sändaren och mottagaren på grund av att dom duger alldeles utmärkt till mina ändamål. Jag kommer att skicka två-tre byte någon gång i minuten på sin höjd och det är inte ens speciellt kritiskt att dom kommer fram (dock att dom inte kommer fram fel, men det löser jag med checksumma). Känns inte meningsfullt att köra med något dyrare då, eller hur. (Dom var för övrigt ännu billigare på Electrokit än på Kjell.) Jag kommer att koda och avkoda meddelandena själv med en AVR i var ända.

Behövde jag ha en stadig kommunikationslänk skulle jag givetvis välja något annat.
Skriv svar