läsa av SAMSUNG IR fjärr.

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

läsa av SAMSUNG IR fjärr.

Inlägg av squiz3r »

Hej. Jag har byggt en motagare med en 33KHz IR-modul sammt en PIC och lite kringelektronik. Sen byggde jag en fjärkontroll till den, men den lyckas jag inte få nån bra räckvid på. Men nog om det.. Nu tänkte jag istället försöka läsa av en fjärrkontroll från SAMSUNG. Jag vill bara läsa av 3 av knapparna, men när jag kollade på oscilloscopet så va den en jätte lång signal, och jag har googlat lite men kan inte hitta någon bra info om vilka bitar som är data.. Så det kanske är någon här som vet vad som är vad, eller har en bra länk?

Bild från oscilloscopet: (varje ruta i rut nätet är 5ms lång, och signalen är ju inverterad eftersom jag tog den från en ir-modul)
Bild

Tacksam för snabb hjälp!

Mvh
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Har ingen aning vad samsung använder för protokoll men har du kollat på denna sida om något stämmer in http://www.sbprojects.com/knowledge/ir/ir.htm

Annars kanske det är enklare att ta någon annan fjärr med känt protokoll.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

micke.prag
Inlägg: 79
Blev medlem: 22 juni 2006, 16:11:17
Ort: Lund
Kontakt:

Inlägg av micke.prag »

Jag har inte tittat så noga själv men lirc-projektet har ju rätt mycket dokumenterat
http://www.lirc.org
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Startkondition och sedan innebär kort hög puls etta och kort hög puls en nolla. Det är väl inga problem att dekoda? Lite beroende på uC och programmeringsvana finns det ett antal olika sätt att lösa detta på. CCP är en bra variant på PIC. Läs av alla pulslängder och dekoda dem efteråt är enklast. interupsrutin som går på interupt on change och som där läser av timer och skriver ner eller dekodar omdelbart är lite stökigare, men förbrukar färre register och är effektivare om än lite stökigare att skriva.


Det går faktist att skriva detta i högnivå språk till och med så länge språket har någon capture funktion. OM du letar lite på forumet så finns det (för ungefär 2,5-3 år sedan) ett inlägg där jag dekodade en fjärrkontroll i basic så visst tusan går det!
Användarvisningsbild
Icecap
Inlägg: 26662
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

"sedan innebär kort hög puls etta och kort hög puls en nolla"???
OK, det blir ju mycket enklare då.... :wink:
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Icecap: Tänkte också på det :P

Tack för alla tipps och länkar! Jag har gämfört signalerna under oscilliscopet nu ett tag och jag tar en lite "gen väg" och skiter i vad som är vad i koden, utan kollar bara på sakerna som ändrar sig.

Tyvär har jag en välldigt kort deadline, så jag får nog hoppa över de lite mer proffsiga funktionerna som bengt-re tippsade om och köra på ett lite nobigare sätt med mjukvaru-timer m.m :)

Jag håller på nu att försöka göra ett sätt att kolla hur lång pulsen är.

--

Jag testade även räckviden med min SAMSUNG fjärrkontroll, och motagaren såg signalen på ca. 10m hål utan problem. Längre bort än så kunde jag inte komma inne i huset. Men den rävkvidden är helt okej för mig :)

Mvh
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

JO, men finns ju bifas-kodade också och då är det lite stökigare att läsa ut...

Detta är rätt enkelt.

Läs av startkondition

loopa till dess du har en giltig startbit

Capture ettorna stoppa in pulslängden i något regiser
Kolla om timern overflowar -> gå till leta startkondition igen
loopa till dess du har läst av alla bitarna

Tolka bitarna
om mellan xx och xx skriv en nolla
om mellan xx och xx skriv en etta
om inte något av ovanstående - konstatera fel och gå till läs av startkondition

Mata ut resultatet


En fungerande, emn kanske inte vacker kod:
http://elektronikforumet.com/forum/viewtopic.php?t=4749
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Nu tycker jag att jag förkänar en liten paus, (så jag kan hänga lite på EF :D)

Nu har jag kodat den så att den läser av när jag trycker på off knappen (den röda) på fjärrkontrollen och inte bryr sig om de andra två. Helt utan några interrupt eller timer's :P

Nu är det ganska enkelt fixat att göra så den styr ett RC servo åt önskatt håll beroende på vilken av de två andra knapparna jag trycker på :D

Mvh.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Hur gjorde du då! *nyfiken*
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

bengt-re: Inte världens bästa sätt, men ensålänge verkar det fungera :P

För att hitta statbiten väntar jag tills ingånegn blir låg, sen kollar jag med hjälp av en kort pause i en delayloop, sammt en counter (typ: counter = counter + 1) sen när jag hittar en som är tillräckligt lång konstaterar jag att det är startbiten
. Då väntar jag i 19ms och har då hoppat bort till en av bitarna som alltid är en 1'a (på de tre knappar jag vill läsa av), efter att den har blivit låg börjar jag räkna hur många nollor det kommer innan nästa etta (för att veta om det är en etta eller nolla så kollar jag först när den blir hög, sen väntar jag i 0,9ms och kollar sen om den är hög, är den fortfarande hög då så är det en etta, annars är det en nolla. Sen räknar jag antalet nollor med samma counter-princip och sparar i en variabel). Sen tar jag den variabeln minus 6 (decimalt), och om ZERO biten är satt då kan jag konstatera att det var on/off knappen som man tryckte på, och om det inte blir noll får jag fortsätta att kolla bitar på samma vis för att lista ut vilken knapp det var.

När jag har konstaterat att det var on/off knappen som man tryckte på så kollar den i en flagga om den är på eller av nu. Om den är på så stänger den av (noll'ar flaggan) och om den var av så sätter den på (sätter flaggan). Sen i main rutinen så sätter den en LED till samma värde som flaggan. Sen är taken att om den är avstängd (LED'n av och flaggan låg) så ska den inte reagera på någon annan kanpptryckning än on/off knappen.

För att nolla flaggan om den är hög, och sätta den om den var låg från början använde jag först detta kommandot med n fick konstiga fel (den gick bara att sätta på inte av :S)

Kod: Markera allt

btfsc flagga
bcf flagga
btfss flagga
bsf flagga
Men som saggt så fungerade inte det, och efter ett tag kom jag framm till felet. Eftersom den först kollar den första sen efter att den har ändrat (om det ska ändras) så kollar den den andra så kommer den alltid köra den ansra (och sätta flaggan) oavsett vilket värde den hade från början.. Men detta löste jag genom att först spara det i en temporär flagga och sen flytta över det till den flaggan som det ska vara i.

Eftersom den skulle kunna fastna i en loop om det är fel signal, och inte komma ur den på annat sätt än att reseta PIC'en (den regerar ju inte på rätt kod då heller) så ska jag försöka lära mig använda WDT'ern också. Det verkar vara ganska lätt :)

Lite flummigt skrivet, hoppas ni förstår ändå! :D
Mvh
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

;)

Tror jag hajade.... Säger som J Stalin.
"Spelar ingen roll vad katten har för färg så länge den fångar råttor..."

Eller skit samma hur man löser problemen så länge de blir lösta ;)
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

"Spelar ingen roll vad katten har för färg så länge den fångar råttor..."
Mja.. Fast en självlysande färg på katten kanske skrämmer iväg råttorna :lol:

Denna är ju inte riktigt lika stabil som en "riktig" lösning skulle jag gissa :)

Mvh
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Nu är den klar, och verkar fungera bra :D

Jag testade den här inne nu igen, jag kunde gå ca. 15m ifrån den innan en vägg kom ivägen, och där va det inga problem för signalen att nå fram. Men sen testade jag den ute i dagsljuset, och då nådde den bara ca. 9m. Men det duger nog :)

--

Jag funderat på att bygge en sån liten sak som tar emot signalen och sen skickar vidare den, som en "mellan bas", så sätter man den imellan och kan på det viset öka räckvidden :)

Mvh
Användarvisningsbild
Icecap
Inlägg: 26662
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Med ett par Easy Radio-moduler och ett par µC kan du skicka fjärrissignalerna 150-200m...
Skriv svar