Reverse engineering: USB kontrollerade hemautomation hacka (15 / 19 steg)

Steg 15: programvara



Innan chip tas bort från bakbord, den behöver några program.

Mjukvaran är skriven i C och utifrån ett exempel projekt från mål utveckling V-USB-lib. Detta är en stor bit av programvara, och det är gratis och öppen källkod för personlig/icke-kommersiellt bruk.

http://www.obdev.at/Products/vusb/index.html

Jag tänker inte gå in i detalj på hur programvaran fungerar. Reverse engineering är betoningen av detta Instructable. Här är den korta versionen:

Du behöver två program att göra detta arbete. Ett program på datorn och firmware för mikrokontroller.

Mikrokontroller:

Faktiska RF överföringarna görs genom en avbrott rutin. Jag använder en timer avbryta eftersom detta är det enklaste sättet att få exakt timing. På timer avbryta läser från en global buffert där fördröjningstiderna lagras. Jag lagra inte på/av status för RF sändaren sedan på och av alltid suppleanter. Jag börjar med en off puls, då alternativa på och av pulser.

Bufferten innehåller 42 värden. Det finns 21 bitar som skall överföras, och alla har en låg period och en hög tid. Denna konfiguration är inte mycket RAM effektiv, men ATmega8 har gott. Jag ska handla RAM för koden läsbarhet i stället för att oanvända ram!

Bufferten fylls av funktionen send_rf_frame (nätverk, nyttolast). Fyller i rätt timings i matrisen rf buffert, börjar med den startbit, följt av 12 bitar nätverks-id och 8 bitar av nyttolasten + kontrollsumma. När bufferten är fylld återställs variabeln buffert position till 0, så att avbryta rutin kommer att börja arbeta från bit 0 i bufferten.

När data skickas till mikrokontroller med USB, kallas funktionen usbFunctionSetup(). Detta är en funktion som du skapar och där du sätter din inkommande USB-kod.

Beroende på begäran skickas från datorn, kan du göra olika saker inuti funktionen. Jag har två begäran typer konfigurerad, set_network_id och send_command.

Set_network_id begäran bara tar 12 bit nätverks-id skickas från datorn och lagras i en global heltalsvärde.

Send_command begäran kallar send_rf_frame() och passerar den mottagna kommandobyte till den. Efter det tar avbryta rutin över.

Inuti main () loop:
usbPoll(); har att kallas varje några millisekunder (10 eller 50, inte säker) för USB att fungera korrekt.
Efter det är gjort, kontrolleras den analoga motsvarigheten. Om pumpen laddningsspänningen är för låg, startas avgift pumpen. Om det är på den önskad spänningen, är avgift pumpen avstängd.

Slutligen, en status LED är satt till ON om flaggan rf_busy är aktiv.

Dator:

På den dator sidan ändrade jag också exemplet som tillhandahålls av syfte utveckling. Jag lade till lite kod för att tolka argument på kommandoraden. Jag skrev också en funktion för att skapa den payload byten. Det tar argument som lampa nummer, på/av, TV-sändning.

Datorprogram använder libusb för att kommunicera med mikrokontroller.

Jag skapade också ett litet php-script för att ringa commandline programmet när du trycker på knappar på en webbsida. Öppna webbsidan på din Android/iPhone och kontrollera lamporna! : D

Se Steg
Relaterade Ämnen

USB hacka genom Reverse Engineering

USB är ett mycket komplext protokoll, mycket mer komplicerat än seriell eller parallell, SPI och I2C även. USB används bara två trådar men de används inte som "få" och "överföra" som följetong. Snarare, data är dubbelriktad och differe...

Reverse Engineering: RGB LED-lampa med IR fjärrkontroll

vi köpte 20 av dessa RGB LED-lampor för en fest på jobbet, men jag var lite besviken med funktionerna färg bleknar de. Så jag bestämde mig att ta en apart, reverse engineer IR-protokollet, och se om det hade fler funktioner än de som är tillgängliga...

USB kontrollerade mini lavalampor

detta instructable beskriver byggnaden av en USB powered och kontrollerade uppsättning lavalampor från ett USB-tangentbord och två tycker Geek USB lavalampor med ett enkelt transistor relä byta krets drivs av tangentbord lysdioder. Det visar ett enke...

Reverse Engineering ett elstängsel laddare

Reverse engineering något kan vara en bra form av både underhållning och utbildning. Jag har ofta köpt något bara för att tillgodose demontera dem för att avgöra hur de fungerar och hur de är utformade. Längs vägen kan du lära dig en hel del, förbätt...

Live Reverse Engineering

Jag började i elektronik före tillkomsten av internet och mest solida state komponenter, så får datablad och scheman inte var lätt för mig. Idag med tillverkar att göra anpassade ICs och LCD-skärmar för allt från telefoner till TV-spel, tinkers att b...

Reverse Engineering

många av ledamöterna här på Instructables fråga om datablad eller pin outs av en enhet eller display-svar, tyvärr du skränande alltid få ett datablad och scheman, i dessa fall du har bara ett val bakåtkompilering.Reverse engineering är en färdighet s...

Göra en arbetande nyckel från skrot genom reverse engineering ett lås

har du förlorat alla nycklar för ditt lock och behöver göra en ny nyckel från grunden? Låssmeden saknar en nyckel tomt som passar din lås kilspår? Ta en metall fil, några skrot plåt, och Läs vidare för en grov & tumla hemmafixare nyckel att göra guid...

Billiga Arduino kontrollerade ljus Sockets - Reverse Engineering RF

Smart glödlampor kostar din förstfödda barn. Vilket är synd, eftersom smarta lampor låsa upp enorm potential för hemautomation, energibesparingaroch alla typer av coola projekt.Om bara fanns det ett sätt att kontrollera dina lampor utan att bryta ban...

Telefon kontrollerade hemautomation via Wifi

mitt hem huvudsakliga funktion är att ge mig och för min familj en säker plats, och jag vill bara göra mitt hus lite lite säkrare och smartare med hjälp av en LinkIt utveckling styrelsen, som är en av de bästa styrelse som jag såg, men jag ska skriva...

USB-nav, power hack

för att kunna använda en extern hårddisk med Pi du behöver extern ström. Med detta hack kommer du att kunna driva både Pi och HDD med USB-hubb.Uppdatering: driver gamla telefon används för tjudrad Internet.Steg 1: Samla delarUSB-hub: http://pages.eba...

USB-power source hacka

Hej alla,i detta instructable jag kommer att dela med dig en av mina favorit saker att göra. hacka en USB-port för att använda med min växt armar eller hyllor. Jag rekommenderar detta till alla som arbetar med strömsnål elektronik/program. dess helt...

Alien USB drivar - SUGRU hacka

USB-enheter, enheter tumme, minnen - oavsett du kallar dem är mycket användbara, men väldigt tråkigt och mycket svårt att säga ifrån varandra (särskilt om alla i office/huset har flera!)Så jag bestämde mig med lite sugru jag kunde göra min samling av...

USB-drivna Hub hacka för Raspberry Pi extern hårddisk

Steg 1: IntroHejJag fick nyligen en Raspberry Pi att använda som en HTPC kör Raspmc.Men kom in i problem där Rpi ger inte tillräckligt med kraft för buss på dess USB-portar att driva en 2,5-tums extern hårddisk.Så jag bestämde mig att lägga till en e...

Reverse engineering luftkonditioneringen IR Remote control protocol

Hej, detta är min första instructable, hoppas du gillar den.För att få in elektronik jag valde ett hemautomation projekt: ett system som tillåter mig att kontroll och program både luftkonditionering enheter i min lägenhet. I detta instructable jag vi...

USB-laddning kabel Hack

ta ut en USB-enhet via USB utan behov av dataöverföring.När det gäller min Sansus e280 gör det mig att spela musik som den laddar.Detta omfattar två data leder på någon USB-kabel.Steg 1: Samla objekt Behöver du:MP3-spelare eller anordning av oroAntec...

USB-drivna VMU hacka

Inledning:Så, du älskar din gamla Dreamcast VMU, men nyligen dess varit satt, samlar damm. Det chomps genom batterier och dunka på en stor 4 x AA-batteri adapter inte löser det problemet heller.Vad göra? Tja, efter dessa få, enkla och lätt att följa...

PCB Reverse Engineering använder GIMP

det finns bara några artiklar eller guider som visar hur du kan återföra ingenjör ett kretskort med en jpg eller png bild som du har eller du ta för en PCB. Jag försökt den som nämns på denna webbplats, men jag har inte lyckats att.Syftet med bakåtko...

Reverse Engineering en liten förstärkare

Min andra Instructables på bakåtkompilering är på komponenter som du inte kan få datablad och Stifttilldelningar för. Jag bakåtkompilera ett par går runt stiger ombord en vecka, små som dessa ta mig ungefär en dag att vända ingenjör och band för dera...

Reverse Engineering att emulera bläckpatroner för skrivare Epson

för de senaste två åren, jag har planer på att bygga själv en 3D-skrivare från vissa gamla bläckstråleskrivare som jag hade samlat under årens lopp. Men inte förrän två veckor sedan hade jag faktiskt började arbeta på den.Skriva ut en kemikalie på en...