Fjärrkontroll till bilen? Ja tack!

Berätta om dina pågående projekt.
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Fjärrkontroll till bilen? Ja tack!

Inlägg av PaNiC »

Jag har bestämt mig för att bygga fjärrstyrning till låset i min bil. Mest för skojs skull och för att jag ändå ska montera in en elektroniklåda med diverse funktioner.

Här är två bilder på fjärrkontrollen:

Bild
Bild

Mikroprocessorn är en AT90S2313. Denna valde jag för att det är den fysiskt minsta (vad jag vet) som har serieport. Det gröna lilla kortet är en sändarmodul från kjell o co som enkelt skickar ut det den tar emot från serieporten på AVRen på radio. Dessvärre var jag lite korkad i mitt val av batterier. CR2032 är alldeles för stora egentligen. Men nu är det gjort och jag giter inte göra om kortet i nuläget iaf.
Iallafall består koden som skickas ut av 31 tecken som bildar sju ord och ett utropstecken. Detta skickas med en skum baudrate som jag inte har orkat räkna ut men som iallafall inte håller sig till någon som helst standard. Detta för att göra det svårare att avlyssna ;). Jag har inte haft möjlighet att kolla om själva sändardelen fungerar dels för att mottagaren inte är klar och dels pga den skumma baudraten.

Så är det. Och det ska bli kul att göra klart resten :).
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Batteri kan väl aldrig vara för stora? :wink:

Hur hade du tänkt göra mottagaren? Är det ett helt eget larm till bilen du håller på att utveckla eller ska du bara "tjuva in" din egen mottagare på ett befintligt larm?
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

hade jag varit dig så hade jag skrivit en liten krypteringsalgoritm så att det är lite säkrare... för i nuläget så är det ju egentligen bara till att lyssna av vad som skickas och sen skicka ut exakt samma för att öppna bilen..
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Mottagaren hade jag tänkt att göra av en ATmega128 fast den är svinaktigt apdyr men jag behöver två serieportar. En till fjärrkontrollen och en till mp3-datorn. Larm och larm. Där har suttit ett larm i bilen och sirenen sitter kvar så man skulle ju egentligen kunna nyttja den :). Främst var detta tänkt att bara tjäna som fjärrstyrning till låset men man kunde ju iofs nyttja elboxen till larm också.

Även om man har en krypteringsalgoritm så är det väl fortfarande bara att spela in och skicka exakt samma? En kompis kom på att man skulle kunna ha dubbelriktad kommunikation och blanda in MD5-hashar och sådant. Det blir lite jobbigt för att inte tala om att fjärrkontrollen blir större i och med mottagaren också. Kommersiella fjärrkontroller är inte säkrare. Jag vet dock inte vad de skickar för något men jag kan inte tänka mig att de är säkrare än att man kan spela in och spela upp..
Men iallafall så är baudraten så pass hög att jag har svårt att tro att valfritt inspelningsdon är tillräckligt exakt för att det ska gå.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

jo, man får fixa till nån frän grej så man inte skickar samma hela tiden, det blir lite meckigt men skulle nog gå..
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Inlägg av gvs »

PaNiC skrev:Mottagaren hade jag tänkt....
Komersiellt fjärrkontroller till bilar är säkrare, kanske inte biltemas men om du köper en ny Volvo så är det andra grejer.
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Är de verkligen säkrare?
Hur fungerar de då?

Man skulle kanske hitta på något annat.

Hmm.. Kanske något så att de koder som använts sparas i mottagarens EEPROM och inte kan användas igen?
Användarvisningsbild
Illuwatar
Inlägg: 2256
Blev medlem: 10 november 2003, 14:44:27
Skype: illuwatar70
Ort: Haninge
Kontakt:

Inlägg av Illuwatar »

Du skulle kunna köra med en kodtabell som är lika i både mottagare och sändare. I denna tabell lagras ett antal koder (antal beror på kodlängd och ledig plats i AVR'en i sändaren). som du slumpmässigt väljer ifrån med ett indexvärde. När du sedan skickar datat du vill kryptera skickar du först en indexsiffra (okrypterad men vald genom slump) som pekar på vald position i tabellen av koder. Därefter sickar du dina datatecken krypterade med den valda koden genom enkel XOR. Efter ett visst antal tecken har sänts slumpar du ut ett nytt index till kodtabellen och upprepar proceduren. Enklaste sättet att fixa slumptal är att använda en av timrarna i AVR'en.

I mottagaren läser du ut indexsiffran (du kan behöva lägga ett slags starttecken innan indexet för att veta vart du ligger i dataströmmen), plockar ut rätt kod ur mottagarens tabell (som är identisk med sändaren) och genom XOR på mottaget data får du tillbaka det du sände i klartext.

Med en metod som denna blir det ganska svårt att avkoda genom att bara lyssna. Kodnyckeln sänds aldrig i luften - den förblir dold i din utrustning. Fler koder i tabellen, längre kodord samt frekventa byten av kod gör det i princip oknäckbart för någon som inte verkligen anstränger sig. Då måste din bil vara något väldigt märkvärdigt om någon skall göra det.

En kodlängd på 8 bitar (256 olika koder) borde räcka - dessutom enklast att programmera för. Då räcker det med två tecken för indexet (0 - FF) samt en startsymbol (ett ascii-tecken som inte används för information eller kan uppstå genom XOR-operationen). Varje ascii-tecken du sänder kör du genom XOR med vald kod. Detta ger tre tecken (bytes) overhead på varje datablock du sänder. Blockstorleken (antal tecken innan ny kod väljs) behöver inte vara så stor - typ 10 tecken åt gången, sedan byt kod.

Det svåraste i detta fall med enväga kommunikation är om det uppstår bitfel. Även om du lägger till checksumma på varje sänt teckenblock så kan mottagaren inte rapportera tillbaka att fel upptäckts och begära omsändning. Så du får helt enkelt lita på att länken fungerar och designa därefter.
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Inlägg av gvs »

Något förenklad beskrivning....

http://auto.howstuffworks.com/remote-entry2.htm

Sammanfattning: bygger på en 40 bitars rullande kod.
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Jag och min kompis har kommit fram till följande:

Vi kommer att bygga det delvis på en 16-bits rullande kod (tack gvs!).
Denna ska påverka en nyckel som vi krypterar trafiken med. Utöver detta
kommer trafiken att involvera en fast nyckel (som givetvis kan ändras manuellt), en MD5-hash och eventuellt AES.

Så för att öppna och inte ha fjärrkontrollen måste man:

1. Veta frekvensen
2. Kunna sända/ta emot AM på den
3. Veta vilken nyckel av 65536 olika möjliga trafiken måste gå med just då
4. Veta den fasta nyckeln
5. Göra en MD5-hash av koden som mottagaren i bilen skickar ut
6. Tolka baudraten som inte följer någon standard.

Givetvis skulle man kunna påverka även den fasta nyckeln med rullande kod. Detta gör det hela lite mer intressant och svårare att knäcka givetvis :).

Vad tror ni om detta?

Illuwatar: Jag tror inte att jag förstod allt. Men med den metoden du beskriver, skulle det inte vara teoretiskt möjligt att spela in vad fjärrkontrollen sänder ut och sedan spela upp för mottagaren?

Edit: Nu behövs ju givetvis både sändare och mottagare. Frågan är om man inte skulle byta ut alla komponenter mot ytmonterade för att spara plats.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Ser nice ut, men om man vill ha något smått är det absolut ytmonterat som gäller. Skulle ta en ytmonterad 8pins PIC (med intern oscillator) i sändaren (eller motsvarande AVR om det finns, noll koll på AVR). Visserligen har de inte serieport i hårdvara, men det behövs inte heller. Sända data seriellt i mjukvara är inte alls svårt, ta emot tillförlitligt är lite svårare men inte speciellt komplicerat.

Bara kör ett timer-interrupt och skifta ut en bit i taget på en pinne...
Skriv svar