Trådlös kommunikation mellan två PIC:ar. Hur skall jag g

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Trådlös kommunikation mellan två PIC:ar. Hur skall jag g

Inlägg av jonte_s »

Jag skall för över data mellan två PIC:ar. SändarPICen skall väl bli någon form av fjärrkontroll, som ska kunna styra mottagarPICen, som i sin tur skall styra något (kanske en robot, belysning…).

Det jag undrar är hur jag skall föra över denna information? Till ”vanliga” IR-färrkontroller används ju oftast protokollet RC5. Seriellkommunikation använder väl RS232…?
Vad är skillnaden egentligen mellan dessa två sätt att föra över? Vill någon förklara hur jag skall börja…? Vilket protokoll skall jag koda i? osv...

/Jonas
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

En sak du måste tänka på med IR är att du behöver 38khz, vid använding av en avstämd mottagare(rekomenderas), och hög ström i dioden för nå långt. 38khz går att skapa med PWM:en i en PIC

Lite exempel
http://www.petesworld.demon.co.uk/homeb ... 20Repeater
http://www.rentron.com/Infrared_Communication.htm


Med en pinne och mjukvara så går både RC5 och UART att skapa med denna:
http://www.petesworld.demon.co.uk/homeb ... PICirr.jpg

Två pinnar kommer krävas om du vill köra hårdvaruuarten i sändaren. då blir det något liknande http://www.rentron.com/images/IR2.GIF



Om du bara ska skicka data mellan två PIC:ar så kan du välja det som är lättast att implementera.

Edit: la till avstämd mottagare
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Inlägg av jonte_s »

Tack för länkarna Micke_s.


Men varför använder man inte protokollet RS232 när man för över med IR? Ok. Det går väl kanske och göra, men varför gör "man" inte det? Och varför använder man RS232 mellan datorer...?
Vad är skillnaden mellan tex. RC5, RS232 osv...?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Största skillnaden mellan UART och RC5 är när du synkar.
Uart synkar i början på varje byte.
RC5 synkar på varje bit.
Nackdelen med RC5 är att man tappar bandbredd jfm UART

Kostnad har styrt att de har valt RC5 eftersom det inte krävs lika bra timing.
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Inlägg av jonte_s »

Största skillnaden mellan UART och RC5 är när du synkar.
Uart synkar i början på varje byte.
RC5 synkar på varje bit.
Nackdelen med RC5 är att man tappar bandbredd jfm UART
Hmm. Ok. Det där förstod jag inte riktigt... Att UART (typ som RS232?) synkar, betyder det att den har en "start"-bit och en "stop"-bit?
Men vad menas med att RC5 synkar på varje bit?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

RC5 använder Bi-phase
http://en.wikipedia.org/wiki/Biphase_Mark_Code (ej samma kodning men samma problem)
http://www.sbprojects.com/knowledge/ir/rc5.htm visar också en bild över kodningen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Men varför använder man inte protokollet RS232 när man för över med IR?

Till största delen p.g.a av att RS232 kan ha 8-9 bitar i rad med samma "nivå".
En trådlös (IR, radio, eller vad som helst) vill normalt ska ha nivåbyten
regelbundet. Därför använder man kodning som t.ex Manchester, Bi-phase
eller likande där man alltid har ett nivåbyte i varje överförd "bit". Alltså får
man en kontinuerlig synkning och man underlättar för mottagarens
automatiskta nivåjustering (alltså de filter och förstärkare som sitter i
mottagaren).

Så i princip kan du glömma UART-format för ditt IR data.

Om du kan hitta färdiga rutiner för RC5 eller något annat "färdigt" protokoll
så kan du väl köra det. Annars kan det vara mer effektivt/praktiskt
att hitta på ett litet egen protokoll som passar *dina* behov bättre.
Du har ju fullkontroll på både sändare och mottagare, så du kan köra
hur du vill.
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Inlägg av jonte_s »

Micke_s skrev:RC5 använder Bi-phase
http://en.wikipedia.org/wiki/Biphase_Mark_Code (ej samma kodning men samma problem)
http://www.sbprojects.com/knowledge/ir/rc5.htm visar också en bild över kodningen.
Ahh, nu förstår ja synkningen... Och att man tappar bandbredd med RC5.

Sodjan skrev:Till största delen p.g.a av att RS232 kan ha 8-9 bitar i rad med samma "nivå".
En trådlös (IR, radio, eller vad som helst) vill normalt ska ha nivåbyten
regelbundet. Därför använder man kodning som t.ex Manchester, Bi-phase
eller likande där man alltid har ett nivåbyte i varje överförd "bit". Alltså får
man en kontinuerlig synkning och man underlättar för mottagarens
automatiskta nivåjustering (alltså de filter och förstärkare som sitter i
mottagaren).

Så i princip kan du glömma UART-format för ditt IR data.
Hmm. Ok? Nä, förstår inte varför man inte kan använda RS232 kodning när man för över med IR (trådlöst i allmänhet?), men om man kör med "sladd" så går det.
Jag förstår att Biphase ger lättare synkning, men varför måste man ha det när man kör IR och inte med "sladd"?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Kanske det är dags att du faktisk läser reglerna för detta forum, speciellt detta med att citera....

Att man kan köra med 1 synk /8 bits på kabel och inte på IR är helt enkelt för att IR inte är en "fast" förbindelse, det kan på vilket som helst tidpunkt komma en störning, det kan vara en fluga som flyger mellan sändare och mottagare, en reflex som bländar mottagaren osv.

Vill det sig illa (och det vill det ju ofta :-/) kan mottagaren komma totalt ur synk och spotta helt fel data ut.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jonte, läs om mitt inlägg igen.
Jag tänker inte skriva om samma sak igen...
*Vad* är det som du *måste* förstå?
Är det inte enklare att bara acceptera vad som är allmänt känt?
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Inlägg av jonte_s »

Icecap: Har läst igenom reglerna. Vad missar jag? Ursäkta om jag gör något tokigt, men det vore snällt om du säger vad det är så kan jag sluta med det.
Ok, så det är därför man använder biphase-kodning. Då vet jag, tack!

He he. Jo Sodjan, visst kan jag bara acceptera att det är så, men det skulle vara intressant att veta varför, vilket ju också vid ett annat tillfälle gör att jag själv kan dra slutsater om för/nackdelar med olika protokoll.

I denna länk som Micke_s postade så byggs väl en IR-sändare som använder seriellt protokoll: http://www.rentron.com/Infrared_Communication.htm ???

Ja ja. Ska inte älta detta längre nu. Får använda någon biphase-kodning. Kanske hittar på någon egen variant som Sodjan skrev.
Tänkte bara att det kunde var kul att använda PIC628A:s inbyggda USART för kodningen.
Lär väl bli fler frågor senare...

Tack så mycket för hjälpen tills vidare.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Står ju faktist i inlägget han skrev:
...speciellt detta med att citera....
Man får inte citera senaste inlägget (i sin helhet) helt enkelt för att det är så onödigt och står precis ovanför, däremot är det tillåtet att citera vissa delar för TYDLIGHETENS skull.

Reglerna finns här och nummer ett är brottet :wink:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> I denna länk som Micke_s postade så byggs väl en IR-sändare som använder seriellt protokoll:
> http://www.rentron.com/Infrared_Communication.htm ???

Jo, men där står även bl.a :
Note: Due to the limited response time of the detector module, the maximum
baud-rate is normally around 2400. If you experiment with this project
- you'll see first-hand how increasing the baud-rate will degrade data.
Jag har inte räknat på det, man kolla gärnan om man ligger kvar inom
specen för mottagaren om man kör 8 bitar i rad med samma nivå,
alltså h'00' eller h'FF'...
Skriv svar